summaryrefslogtreecommitdiffstats
path: root/tests/vkray/rayquery-closesthit.slang
blob: 06027fd4dae5b72c0218f792d95f2da052b8ae06 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// rayquery-closesthit.slang
//TEST:SIMPLE(filecheck=CHECK): -profile glsl_460+GL_EXT_ray_tracing -stage closesthit -entry main -target spirv-assembly
//TEST:SIMPLE(filecheck=CHECK): -stage closesthit -entry main -target spirv-assembly -emit-spirv-directly

struct IntersectionPayload
{
    float3 triangleVerticeCommitted[3];
    float3 triangleVerticeCandidate[3];
};

RaytracingAccelerationStructure accelerationStructure;

void main(
	BuiltInTriangleIntersectionAttributes 	attributes,
	in out IntersectionPayload 				ioPayload)
{
	RayQuery<RAY_FLAG_NONE> rayQuery;

	uint instanceInclusionMask = 0x00;
	RayDesc rayDesc;
	rayQuery.TraceRayInline(accelerationStructure, RAY_FLAG_NONE, instanceInclusionMask, rayDesc);

	ioPayload.triangleVerticeCommitted = rayQuery.CandidateGetIntersectionTriangleVertexPositions();
	ioPayload.triangleVerticeCandidate = rayQuery.CommittedGetIntersectionTriangleVertexPositions();
}

// CHECK: OpCapability RayQueryKHR
// CHECK: OpCapability RayQueryPositionFetchKHR
// CHECK: OpExtension "SPV_KHR_ray_query"
// CHECK: OpExtension "SPV_KHR_ray_tracing_position_fetch"
// CHECK: OpEntryPoint ClosestHit{{NV|KHR}} %main "main"
// CHECK: OpRayQueryInitializeKHR %rayQuery{{.*}}
// CHECK: OpRayQueryGetIntersectionTriangleVertexPositionsKHR %_arr_v3float_{{u?}}int_3{{.*}} %rayQuery{{.*}} %{{u?}}int_0
// CHECK: OpRayQueryGetIntersectionTriangleVertexPositionsKHR %_arr_v3float_{{u?}}int_3{{.*}} %rayQuery{{.*}} %{{u?}}int_1