mirror of https://github.com/xemu-project/xemu.git
49 lines
1.3 KiB
HLSL
49 lines
1.3 KiB
HLSL
// Run: %dxc -T lib_6_3 -fspv-extension=SPV_NV_ray_tracing
|
|
// CHECK: OpCapability RayTracingNV
|
|
// CHECK: OpExtension "SPV_NV_ray_tracing"
|
|
// CHECK: OpDecorate [[a:%\d+]] BuiltIn LaunchIdNV
|
|
// CHECK: OpDecorate [[b:%\d+]] BuiltIn LaunchSizeNV
|
|
|
|
// CHECK-COUNT-1: [[rstype:%\d+]] = OpTypeAccelerationStructureNV
|
|
RaytracingAccelerationStructure rs;
|
|
|
|
struct Payload
|
|
{
|
|
float4 color;
|
|
};
|
|
struct CallData
|
|
{
|
|
float4 data;
|
|
};
|
|
|
|
//CHECK: %First = OpVariable %_ptr_Private_int Private %int_0
|
|
//CHECK-NEXT: %Second = OpVariable %_ptr_Private_int Private %int_1
|
|
enum Number {
|
|
First,
|
|
Second,
|
|
};
|
|
|
|
//CHECK: [[first:%\d+]] = OpLoad %int %First
|
|
//CHECK-NEXT: OpStore %foo [[first]]
|
|
static ::Number foo = First;
|
|
|
|
[shader("raygeneration")]
|
|
void main() {
|
|
//CHECK: [[second:%\d+]] = OpLoad %int %Second
|
|
//CHECK-NEXT: OpStore %bar [[second]]
|
|
static ::Number bar = Second;
|
|
|
|
uint3 a = DispatchRaysIndex();
|
|
uint3 b = DispatchRaysDimensions();
|
|
|
|
Payload myPayload = { float4(0.0f,0.0f,0.0f,0.0f) };
|
|
CallData myCallData = { float4(0.0f,0.0f,0.0f,0.0f) };
|
|
RayDesc rayDesc;
|
|
rayDesc.Origin = float3(0.0f, 0.0f, 0.0f);
|
|
rayDesc.Direction = float3(0.0f, 0.0f, -1.0f);
|
|
rayDesc.TMin = 0.0f;
|
|
rayDesc.TMax = 1000.0f;
|
|
TraceRay(rs, 0x0, 0xff, 0, 1, 0, rayDesc, myPayload);
|
|
CallShader(0, myCallData);
|
|
}
|