diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/vkray/callable-caller.slang | 23 | ||||
| -rw-r--r-- | tests/vkray/callable-caller.slang.glsl | 67 | ||||
| -rw-r--r-- | tests/vkray/callable-shared.slang | 8 | ||||
| -rw-r--r-- | tests/vkray/callable.slang | 16 | ||||
| -rw-r--r-- | tests/vkray/callable.slang.glsl | 26 |
5 files changed, 140 insertions, 0 deletions
diff --git a/tests/vkray/callable-caller.slang b/tests/vkray/callable-caller.slang new file mode 100644 index 000000000..e423f2bec --- /dev/null +++ b/tests/vkray/callable-caller.slang @@ -0,0 +1,23 @@ +// callable-caller.slang + +//TEST:CROSS_COMPILE: -profile sm_6_3 -stage raygeneration -entry main -target spirv-assembly + +import callable_shared; + +cbuffer C +{ + uint shaderIndex; +}; + +RWTexture2D<float4> gImage; + +void main() +{ + MaterialPayload payload; + payload.albedo = 0; + payload.uv = float2(DispatchRaysIndex().xy) / float2(DispatchRaysDimensions().xy); + + CallShader(shaderIndex, payload); + + gImage[DispatchRaysIndex().xy] = payload.albedo; +} diff --git a/tests/vkray/callable-caller.slang.glsl b/tests/vkray/callable-caller.slang.glsl new file mode 100644 index 000000000..2704e6720 --- /dev/null +++ b/tests/vkray/callable-caller.slang.glsl @@ -0,0 +1,67 @@ +#version 460 + +layout(row_major) uniform; +layout(row_major) buffer; +#extension GL_NV_ray_tracing : require + +struct SLANG_ParameterGroup_C_0 +{ + uint shaderIndex_0; +}; + +layout(binding = 0) +layout(std140) uniform C_0 +{ + uint shaderIndex_0; +}; + +struct MaterialPayload_0 +{ + vec4 albedo_0; + vec2 uv_0; +}; + +layout(location = 0) +rayPayloadNV MaterialPayload_0 p_0; + +layout(rgba32f) +layout(binding = 1) +uniform image2D gImage_0; + +void CallShader_0( + uint shaderIndex_1, + inout MaterialPayload_0 payload_0) +{ + p_0 = payload_0; + executeCallableNV(shaderIndex_1, (0)); + payload_0 = p_0; + return; +} + +void main() +{ + MaterialPayload_0 payload_1; + payload_1.albedo_0 = vec4(0); + + uvec3 _S1 = gl_LaunchIDNV; + vec2 _S2 = vec2(_S1.xy); + + uvec3 _S3 = gl_LaunchSizeNV; + vec2 _S4 = _S2 / vec2(_S3.xy); + + payload_1.uv_0 = _S4; + + uint _S5 = shaderIndex_0; + + MaterialPayload_0 _S6; + _S6 = payload_1; + CallShader_0(_S5, _S6); + payload_1 = _S6; + + uvec3 _S7 = gl_LaunchIDNV; + imageStore( + gImage_0, + ivec2(_S7.xy), + payload_1.albedo_0); + return; +} diff --git a/tests/vkray/callable-shared.slang b/tests/vkray/callable-shared.slang new file mode 100644 index 000000000..09e76aab1 --- /dev/null +++ b/tests/vkray/callable-shared.slang @@ -0,0 +1,8 @@ +// callable-shared.slang +//TEST_IGNORE_FILE: + +struct MaterialPayload +{ + float4 albedo; + float2 uv; +}; diff --git a/tests/vkray/callable.slang b/tests/vkray/callable.slang new file mode 100644 index 000000000..59d42546a --- /dev/null +++ b/tests/vkray/callable.slang @@ -0,0 +1,16 @@ +// callable.slang + +//TEST:CROSS_COMPILE: -profile sm_6_3 -stage callable -entry main -target spirv-assembly + +import callable_shared; + +Texture2D gAlbedoMap; +SamplerState gSampler; + +void main(in out MaterialPayload ioPayload) +{ + ioPayload.albedo = gAlbedoMap.SampleLevel( + gSampler, + ioPayload.uv, + 0); +} diff --git a/tests/vkray/callable.slang.glsl b/tests/vkray/callable.slang.glsl new file mode 100644 index 000000000..9b573a8ab --- /dev/null +++ b/tests/vkray/callable.slang.glsl @@ -0,0 +1,26 @@ +#version 460 + +#extension GL_NV_ray_tracing : require + +layout(binding = 0) uniform texture2D gAlbedoMap_0; +layout(binding = 1) uniform sampler gSampler_0; + +struct MaterialPayload_0 +{ + vec4 albedo_0; + vec2 uv_0; +}; + +callableDataInNV MaterialPayload_0 _S1; + +void main() +{ + vec4 _S2 = textureLod( + sampler2D(gAlbedoMap_0,gSampler_0), + _S1.uv_0, + float(0)); + + _S1.albedo_0 = _S2; + + return; +} |
