https://github.com/shader-slang/slang
Tip revision: 46529df2c4f73a4655bdd79d48004f29374a99a8 authored by Yong He on 06 November 2023, 22:40:38 UTC
Fix ICE when lowering an associatedtype declref from an derived interface. (#3312)
Fix ICE when lowering an associatedtype declref from an derived interface. (#3312)
Tip revision: 46529df
closesthit.slang
// closesthit.slang
//TEST:SIMPLE(filecheck=CHECK): -profile glsl_460+GL_NV_ray_tracing -stage closesthit -entry main -target spirv-assembly
//TEST:SIMPLE(filecheck=CHECK): -stage closesthit -entry main -target spirv-assembly -emit-spirv-directly
struct ReflectionRay
{
float4 color;
};
StructuredBuffer<float4> colors;
layout(shaderRecordNV)
cbuffer ShaderRecord
{
uint shaderRecordID;
}
void main(
BuiltInTriangleIntersectionAttributes attributes,
in out ReflectionRay ioPayload)
{
uint materialID = (InstanceIndex() << 1)
+ InstanceID()
+ PrimitiveIndex()
+ HitKind()
+ shaderRecordID;
float4 color = colors[materialID];
color *= RayTCurrent() - RayTMin();
ioPayload.color = color;
}
// CHECK: OpCapability RayTracing
// CHECK: OpEntryPoint ClosestHitNV %main "main"
// CHECK-DAG: OpDecorate %[[INSTANCE_ID:[A-Za-z0-9_]+]] BuiltIn InstanceId
// CHECK-DAG: OpDecorate %[[INSTANCE_INDEX:[A-Za-z0-9_]+]] BuiltIn InstanceCustomIndexNV
// CHECK-DAG: OpDecorate %{{.*}} BuiltIn PrimitiveId
// CHECK-DAG: OpDecorate %{{.*}} BuiltIn HitKindNV
// CHECK-DAG: OpDecorate %{{.*}} BuiltIn RayTmaxNV
// CHECK-DAG: OpDecorate %{{.*}} BuiltIn RayTminNV
// CHECK-DAG: %ShaderRecord{{.*}} = OpVariable %_ptr_ShaderRecordBufferNV{{.*}} ShaderRecordBufferNV
// CHECK-DAG: %{{.*}} = OpVariable %_ptr_IncomingRayPayloadNV_ReflectionRay{{.*}} IncomingRayPayloadNV
// CHECK-DAG: %{{.*}} = OpLoad %{{u?}}int %[[INSTANCE_ID]]
// CHECK-DAG: %{{.*}} = OpLoad %{{u?}}int %[[INSTANCE_INDEX]]
// CHECK-DAG: %{{.*}} = OpAccessChain %_ptr_ShaderRecordBufferNV_uint %ShaderRecord{{.*}} %int_0
// CHECK-DAG: %{{.*}} = OpAccessChain %_ptr_IncomingRayPayloadNV_v4float %{{.*}} %int_0