203 lines
4.4 KiB
Plaintext
203 lines
4.4 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 raygen1 GLSL
|
|
#version 460 core
|
|
#extension GL_EXT_ray_tracing : require
|
|
layout(location = 0) rayPayloadEXT vec3 hitValue;
|
|
layout(set = 0, binding = 0) uniform accelerationStructureEXT topLevelAS;
|
|
void main()
|
|
{
|
|
traceRayEXT(topLevelAS, 0u, 0xFFu, 0, 0, 0, vec3(0.5, 0.5, 0.0), 0.0, vec3(0.0, 0.0, -1.0), 9.0, 0);
|
|
}
|
|
END
|
|
SHADER ray_generation raygen2 GLSL
|
|
#version 460 core
|
|
#extension GL_EXT_ray_tracing : require
|
|
layout(location = 0) rayPayloadEXT vec3 hitValue;
|
|
layout(set = 0, binding = 0) uniform accelerationStructureEXT topLevelAS;
|
|
void main()
|
|
{
|
|
traceRayEXT(topLevelAS, 0u, 0xFFu, 0, 0, 0, vec3(0.5, 0.5, 0.0), 0.0, vec3(0.0, 0.0, -1.0), 9.0, 0);
|
|
}
|
|
END
|
|
|
|
SHADER miss miss1 GLSL
|
|
#version 460 core
|
|
#extension GL_EXT_ray_tracing : require
|
|
layout(location = 0) rayPayloadInEXT vec3 hitValue;
|
|
void main()
|
|
{
|
|
hitValue = vec3(1,0,0);
|
|
}
|
|
END
|
|
|
|
SHADER miss miss2 GLSL
|
|
#version 460 core
|
|
#extension GL_EXT_ray_tracing : require
|
|
layout(location = 0) rayPayloadInEXT vec3 hitValue;
|
|
void main()
|
|
{
|
|
hitValue = vec3(1,0,0);
|
|
}
|
|
END
|
|
|
|
SHADER closest_hit closesthit1 GLSL
|
|
#version 460 core
|
|
#extension GL_EXT_ray_tracing : require
|
|
hitAttributeEXT vec3 attribs;
|
|
layout(location = 0) rayPayloadInEXT vec3 hitValue;
|
|
void main()
|
|
{
|
|
}
|
|
END
|
|
|
|
SHADER closest_hit closesthit2 GLSL
|
|
#version 460 core
|
|
#extension GL_EXT_ray_tracing : require
|
|
hitAttributeEXT vec3 attribs;
|
|
layout(location = 0) rayPayloadInEXT vec3 hitValue;
|
|
void main()
|
|
{
|
|
}
|
|
END
|
|
|
|
SHADER any_hit anyhit1 GLSL
|
|
#version 460 core
|
|
#extension GL_EXT_ray_tracing : require
|
|
hitAttributeEXT vec3 attribs;
|
|
layout(location = 0) rayPayloadInEXT vec3 hitValue;
|
|
void main()
|
|
{
|
|
}
|
|
END
|
|
|
|
SHADER any_hit anyhit2 GLSL
|
|
#version 460 core
|
|
#extension GL_EXT_ray_tracing : require
|
|
hitAttributeEXT vec3 attribs;
|
|
layout(location = 0) rayPayloadInEXT vec3 hitValue;
|
|
void main()
|
|
{
|
|
}
|
|
END
|
|
|
|
SHADER intersection intersection1 GLSL
|
|
#version 460 core
|
|
#extension GL_EXT_ray_tracing : require
|
|
hitAttributeEXT vec3 hitAttribute;
|
|
void main()
|
|
{
|
|
reportIntersectionEXT(0.95f, 0x7Eu);
|
|
}
|
|
END
|
|
|
|
SHADER intersection intersection2 GLSL
|
|
#version 460 core
|
|
#extension GL_EXT_ray_tracing : require
|
|
hitAttributeEXT vec3 hitAttribute;
|
|
void main()
|
|
{
|
|
reportIntersectionEXT(0.95f, 0x7Eu);
|
|
}
|
|
END
|
|
|
|
SHADER callable call1 GLSL
|
|
#version 460 core
|
|
#extension GL_EXT_ray_tracing : require
|
|
layout(location = 0) callableDataInEXT float dummy;
|
|
void main()
|
|
{
|
|
}
|
|
END
|
|
|
|
SHADER callable call2 GLSL
|
|
#version 460 core
|
|
#extension GL_EXT_ray_tracing : require
|
|
layout(location = 0) callableDataInEXT float dummy;
|
|
void main()
|
|
{
|
|
}
|
|
END
|
|
|
|
ACCELERATION_STRUCTURE BOTTOM_LEVEL triangles
|
|
GEOMETRY TRIANGLES
|
|
0.0 -0.75 1.0
|
|
-0.75 0.75 1.0
|
|
0.75 0.75 1.0
|
|
END
|
|
GEOMETRY TRIANGLES
|
|
0.0 -0.75 1.0
|
|
-0.75 0.75 1.0
|
|
0.75 0.75 1.0
|
|
END
|
|
END
|
|
|
|
ACCELERATION_STRUCTURE BOTTOM_LEVEL aabbs
|
|
GEOMETRY AABBS
|
|
-0.5 -0.75 -1.0 0.50 0.75 1.0
|
|
-0.33 -0.75 -1.0 0.33 0.75 1.0
|
|
END
|
|
GEOMETRY AABBS
|
|
-1.50 -1.75 -1.0 1.50 1.75 1.0
|
|
-2.33 -2.75 -2.0 2.33 2.75 2.0
|
|
-3.50 -3.75 -3.0 3.50 3.75 3.0
|
|
END
|
|
END
|
|
|
|
ACCELERATION_STRUCTURE TOP_LEVEL tlas1
|
|
BOTTOM_LEVEL_INSTANCE triangles
|
|
END
|
|
BOTTOM_LEVEL_INSTANCE triangles
|
|
INDEX 0
|
|
OFFSET 1
|
|
FLAGS TRIANGLE_FACING_CULL_DISABLE TRIANGLE_FLIP_FACING FORCE_OPAQUE FORCE_OPACITY_MICROMAP_2_STATE
|
|
TRANSFORM
|
|
1 0 0 0.5
|
|
0 1 0 0.5
|
|
0 0 1 0.3
|
|
END
|
|
END
|
|
BOTTOM_LEVEL_INSTANCE aabbs
|
|
INDEX 0
|
|
OFFSET 1
|
|
MASK 0x0F
|
|
FLAGS
|
|
FORCE_NO_OPAQUE
|
|
DISABLE_OPACITY_MICROMAPS
|
|
1
|
|
END
|
|
END
|
|
END
|
|
|
|
PIPELINE raytracing my_rtpipeline
|
|
BIND ACCELERATION_STRUCTURE tlas1 DESCRIPTOR_SET 0 BINDING 0
|
|
SHADER_GROUP g1 raygen1
|
|
SHADER_GROUP g2 miss1
|
|
SHADER_GROUP g3 anyhit1 closesthit1 intersection1
|
|
SHADER_GROUP g4 raygen2
|
|
SHADER_GROUP g5 miss2
|
|
SHADER_GROUP g6 anyhit2 closesthit2 intersection2
|
|
SHADER_GROUP g7 call1
|
|
SHADER_GROUP g8 call2
|
|
SHADER_BINDING_TABLE sbt1
|
|
g1
|
|
END
|
|
SHADER_BINDING_TABLE sbt2
|
|
g2
|
|
g5
|
|
END
|
|
SHADER_BINDING_TABLE sbt3
|
|
g3
|
|
g6
|
|
END
|
|
END
|
|
|
|
RUN my_rtpipeline RAYGEN sbt1 MISS sbt2 HIT sbt3 1920 1080 1
|