diff options
author | Hans-Kristian Arntzen <post@arntzen-software.no> | 2022-04-19 12:49:22 +0300 |
---|---|---|
committer | Hans-Kristian Arntzen <post@arntzen-software.no> | 2022-04-19 12:49:22 +0300 |
commit | 5b18fb1bcd86414ca1a8cf1ec2b105cfe216981d (patch) | |
tree | 68b43c18f091b98fdb1f0fc239ed5e150a77b043 /reference/opt | |
parent | 779138f39fa33f6fe6dab2e3b21938884f74a4bb (diff) |
MSL: Pass down global RayQuery object to leaf functions.
Diffstat (limited to 'reference/opt')
-rw-r--r-- | reference/opt/shaders-msl/frag/ray-query-object-in-function.spv14.vk.msl24.frag | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/reference/opt/shaders-msl/frag/ray-query-object-in-function.spv14.vk.msl24.frag b/reference/opt/shaders-msl/frag/ray-query-object-in-function.spv14.vk.msl24.frag new file mode 100644 index 00000000..859ace2c --- /dev/null +++ b/reference/opt/shaders-msl/frag/ray-query-object-in-function.spv14.vk.msl24.frag @@ -0,0 +1,45 @@ +#include <metal_stdlib> +#include <simd/simd.h> +#if __METAL_VERSION__ >= 230 +#include <metal_raytracing> +using namespace metal::raytracing; +#endif + +using namespace metal; + +struct main0_out +{ + float4 outColor [[color(0)]]; +}; + +struct main0_in +{ + float4 inPos [[user(locn0)]]; +}; + +fragment main0_out main0(main0_in in [[stage_in]], raytracing::acceleration_structure<raytracing::instancing> topLevelAS [[buffer(0)]]) +{ + main0_out out = {}; + raytracing::intersection_query<raytracing::instancing, raytracing::triangle_data> rayQuery; + rayQuery.reset(ray(float3((in.inPos.xy * 4.0) - float2(2.0), 1.0), float3(0.0, 0.0, -1.0), 0.001000000047497451305389404296875, 2.0), topLevelAS, intersection_params()); + for (;;) + { + bool _88 = rayQuery.next(); + if (_88) + { + continue; + } + else + { + break; + } + } + uint _92 = uint(rayQuery.get_committed_intersection_type()); + if (_92 == 0u) + { + discard_fragment(); + } + out.outColor = in.inPos; + return out; +} + |