Wonder-Technology/Wonder.js

View on GitHub
src/run/rtx_path_tracer/domain_layer/domain/shader/ray_tracing/ray_anyhit_shadow.rahit

Summary

Maintainability
Test Coverage
#version 460
#extension GL_EXT_ray_tracing : enable
#extension GL_EXT_nonuniform_qualifier : enable
#extension GL_GOOGLE_include_directive : enable
#extension GL_EXT_scalar_block_layout : enable
#pragma shader_stage(anyhit)

#include "../common/utils.glsl"

#include "get_hit_shading_data.glsl"

bool _isTransmission(float transmission) { return transmission > 0.0; }

void main() {
  uint instanceIndex = gl_InstanceID;
  uint primitiveIndex = gl_PrimitiveID;

  Vertex v0;
  Vertex v1;
  Vertex v2;

  getVertices(instanceIndex, primitiveIndex, v0, v1, v2);

  BSDFMaterial mat = getMaterial(instanceIndex);

  vec2 uv = getUV(v0, v1, v2);

  vec3 materialDiffuse;
  float materialTransmission;
  float materialIOR;
  getMaterialDiffuseAndTransmissionAndIOR(mat, uv, materialDiffuse,
                                          materialTransmission, materialIOR);

  if (_isTransmission(materialTransmission)) {
    ignoreIntersectionEXT();
  } else {
    terminateRayEXT();
  }
}