yes
This commit is contained in:
@@ -0,0 +1,156 @@
|
||||
#!amber
|
||||
|
||||
DEVICE_EXTENSION VK_KHR_acceleration_structure
|
||||
DEVICE_EXTENSION VK_KHR_ray_tracing_pipeline
|
||||
DEVICE_EXTENSION VK_KHR_buffer_device_address
|
||||
DEVICE_EXTENSION VK_KHR_pipeline_library
|
||||
DEVICE_FEATURE RayTracingPipelineFeaturesKHR.rayTracingPipeline
|
||||
DEVICE_FEATURE AccelerationStructureFeaturesKHR.accelerationStructure
|
||||
DEVICE_FEATURE BufferDeviceAddressFeatures.bufferDeviceAddress
|
||||
|
||||
SHADER ray_generation raygen1 GLSL
|
||||
#version 460 core
|
||||
#extension GL_EXT_ray_tracing : require
|
||||
layout(location = 0) rayPayloadEXT uint payload;
|
||||
layout(set = 0, binding = 0) uniform accelerationStructureEXT topLevelAS;
|
||||
layout(set = 0, binding = 1, r32ui) uniform uimage2D result;
|
||||
void main()
|
||||
{
|
||||
for (uint i = 0; i < 3; i++)
|
||||
{
|
||||
payload = 0;
|
||||
// Set origin to trigger miss
|
||||
traceRayEXT(
|
||||
topLevelAS, // accelerationStructureEXT topLevel,
|
||||
0u, // uint rayFlags
|
||||
0xFFu, // uint cullMask,
|
||||
0, // uint sbtRecordOffset,
|
||||
0, // uint sbtRecordStride,
|
||||
i, // uint missIndex,
|
||||
vec3(0.0, 0.0, 0.0), // vec3 origin,
|
||||
0.0, // float Tmin,
|
||||
vec3(0.0, 0.0, -1.0), // vec3 direction,
|
||||
0.25, // float Tmax,
|
||||
0 // int payload
|
||||
);
|
||||
imageStore(result, ivec2(i, 0), uvec4(payload, 0u, 0u, 0u));
|
||||
}
|
||||
}
|
||||
END
|
||||
|
||||
SHADER miss miss1 GLSL
|
||||
#version 460 core
|
||||
#extension GL_EXT_ray_tracing : require
|
||||
layout(location = 0) rayPayloadInEXT uint payload;
|
||||
void main()
|
||||
{
|
||||
payload = 1;
|
||||
}
|
||||
END
|
||||
|
||||
SHADER miss miss2 GLSL
|
||||
#version 460 core
|
||||
#extension GL_EXT_ray_tracing : require
|
||||
layout(location = 0) rayPayloadInEXT uint payload;
|
||||
void main()
|
||||
{
|
||||
payload = 2;
|
||||
}
|
||||
END
|
||||
|
||||
SHADER miss miss3 GLSL
|
||||
#version 460 core
|
||||
#extension GL_EXT_ray_tracing : require
|
||||
layout(location = 0) rayPayloadInEXT uint payload;
|
||||
void main()
|
||||
{
|
||||
payload = 3;
|
||||
}
|
||||
END
|
||||
|
||||
SHADER closest_hit closesthit1 GLSL
|
||||
#version 460 core
|
||||
#extension GL_EXT_ray_tracing : require
|
||||
hitAttributeEXT vec3 attribs;
|
||||
layout(location = 0) rayPayloadInEXT uint payload;
|
||||
void main()
|
||||
{
|
||||
}
|
||||
END
|
||||
|
||||
SHADER any_hit anyhit1 GLSL
|
||||
#version 460 core
|
||||
#extension GL_EXT_ray_tracing : require
|
||||
hitAttributeEXT vec3 attribs;
|
||||
layout(location = 0) rayPayloadInEXT uint payload;
|
||||
void main()
|
||||
{
|
||||
}
|
||||
END
|
||||
|
||||
ACCELERATION_STRUCTURE BOTTOM_LEVEL triangles
|
||||
GEOMETRY TRIANGLES
|
||||
-1 -1 1
|
||||
-1 1 1
|
||||
1 1 1
|
||||
END
|
||||
GEOMETRY TRIANGLES
|
||||
1 1 1
|
||||
1 -1 1
|
||||
-1 -1 1
|
||||
END
|
||||
END
|
||||
|
||||
ACCELERATION_STRUCTURE TOP_LEVEL tlas1
|
||||
BOTTOM_LEVEL_INSTANCE triangles
|
||||
END
|
||||
END
|
||||
|
||||
IMAGE img1 FORMAT R32_UINT DIM_2D WIDTH 4 HEIGHT 1 FILL 0
|
||||
|
||||
PIPELINE raytracing my_rtlib_bottom
|
||||
MAX_RAY_PAYLOAD_SIZE 16
|
||||
MAX_RAY_HIT_ATTRIBUTE_SIZE 16
|
||||
BIND ACCELERATION_STRUCTURE tlas1 DESCRIPTOR_SET 0 BINDING 0
|
||||
BIND BUFFER img1 AS storage_image DESCRIPTOR_SET 0 BINDING 1
|
||||
|
||||
FLAGS LIBRARY
|
||||
SHADER_GROUP g_miss3 miss3
|
||||
END
|
||||
|
||||
PIPELINE raytracing my_rtlib
|
||||
USE_LIBRARY my_rtlib_bottom
|
||||
MAX_RAY_PAYLOAD_SIZE 16
|
||||
MAX_RAY_HIT_ATTRIBUTE_SIZE 16
|
||||
BIND ACCELERATION_STRUCTURE tlas1 DESCRIPTOR_SET 0 BINDING 0
|
||||
BIND BUFFER img1 AS storage_image DESCRIPTOR_SET 0 BINDING 1
|
||||
|
||||
FLAGS LIBRARY
|
||||
SHADER_GROUP g_miss2 miss2
|
||||
END
|
||||
|
||||
PIPELINE raytracing my_rtpipeline
|
||||
USE_LIBRARY my_rtlib
|
||||
MAX_RAY_PAYLOAD_SIZE 16
|
||||
MAX_RAY_HIT_ATTRIBUTE_SIZE 16
|
||||
BIND ACCELERATION_STRUCTURE tlas1 DESCRIPTOR_SET 0 BINDING 0
|
||||
BIND BUFFER img1 AS storage_image DESCRIPTOR_SET 0 BINDING 1
|
||||
SHADER_GROUP g_rgen raygen1
|
||||
SHADER_GROUP g_miss1 miss1
|
||||
SHADER_GROUP g_hits anyhit1 closesthit1
|
||||
SHADER_BINDING_TABLE sbt_raygen
|
||||
g_rgen
|
||||
END
|
||||
SHADER_BINDING_TABLE sbt_miss
|
||||
g_miss1
|
||||
g_miss2
|
||||
g_miss3
|
||||
END
|
||||
SHADER_BINDING_TABLE sbt_hit
|
||||
g_hits
|
||||
END
|
||||
END
|
||||
|
||||
RUN my_rtpipeline RAYGEN sbt_raygen MISS sbt_miss HIT sbt_hit 1 1 1
|
||||
|
||||
EXPECT img1 IDX 0 EQ 1 2 3
|
||||
Reference in New Issue
Block a user