Files
Vulkan-CTS-bin/vulkan/amber/ray_tracing/flags-force-non-opaque.amber
2026-05-06 23:44:13 +02:00

81 lines
2.2 KiB
Plaintext

#!amber
DEVICE_EXTENSION VK_KHR_acceleration_structure
DEVICE_EXTENSION VK_KHR_ray_tracing_pipeline
DEVICE_EXTENSION VK_KHR_buffer_device_address
DEVICE_FEATURE RayTracingPipelineFeaturesKHR.rayTracingPipeline
DEVICE_FEATURE AccelerationStructureFeaturesKHR.accelerationStructure
DEVICE_FEATURE BufferDeviceAddressFeatures.bufferDeviceAddress
SHADER ray_generation raygeneration1 GLSL
#version 460 core
#extension GL_EXT_ray_tracing : require
layout(location = 0) rayPayloadEXT int payload;
layout(set = 0, binding = 0) uniform accelerationStructureEXT gScene;
void main()
{
float TMin = 0.1;
float TMax = 10;
vec3 Origin = vec3(0, 0, -2);
vec3 Direction = vec3(0, 0, 1);
// Geometry below is explicitly marked opaque
// Since we force none opaque, we will call AHS
payload = 0;
traceRayEXT(gScene, gl_RayFlagsNoOpaqueEXT, 0xff, 0, 0, 0, Origin, TMin, Direction, TMax, 0);
// In this case instead, we will not call AHS
payload = 1;
traceRayEXT(gScene, gl_RayFlagsNoneEXT, 0xff, 0, 0, 0, Origin, TMin, Direction, TMax, 0);
}
END
SHADER any_hit anyhit1 GLSL
#version 460 core
#extension GL_EXT_ray_tracing : require
layout(location = 0) rayPayloadInEXT int payload;
layout(set = 0, binding = 1, r32i) uniform iimage1D result;
void main()
{
imageStore(result, payload, ivec4(1, 0, 0, 0));
}
END
ACCELERATION_STRUCTURE BOTTOM_LEVEL triangle_blas
GEOMETRY TRIANGLES
0.0 -0.75 1.0
-0.75 0.75 1.0
0.75 0.75 1.0
END
END
ACCELERATION_STRUCTURE TOP_LEVEL triangle_tlas
BOTTOM_LEVEL_INSTANCE triangle_blas
FLAGS FORCE_OPAQUE
END
END
IMAGE outbuf FORMAT R32_SINT DIM_1D WIDTH 2 FILL 0
PIPELINE raytracing my_rtpipeline
MAX_RAY_PAYLOAD_SIZE 16
MAX_RAY_HIT_ATTRIBUTE_SIZE 8
MAX_RAY_RECURSION_DEPTH 1
BIND ACCELERATION_STRUCTURE triangle_tlas DESCRIPTOR_SET 0 BINDING 0
BIND BUFFER outbuf AS storage_image DESCRIPTOR_SET 0 BINDING 1
SHADER_GROUP group_rgen raygeneration1
SHADER_GROUP group_hits anyhit1
SHADER_BINDING_TABLE sbt_raygen
group_rgen
END
SHADER_BINDING_TABLE sbt_hit
group_hits
END
END
RUN my_rtpipeline RAYGEN sbt_raygen HIT sbt_hit 2 1 1
EXPECT outbuf IDX 0 EQ 1 0