yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
bd6dbaf7c
master
1#version 460 2#extension GL_EXT_ray_tracing : require 3#extension GL_EXT_ray_query : require 4layout (row_major )uniform ; 5layout (row_major )buffer ; 6struct SLANG_ParameterGroup_C_0 7{ 8vec3 origin_0 ; 9float tMin_0 ; 10vec3 direction_0 ; 11float tMax_0 ; 12uint rayFlags_0 ; 13uint instanceMask_0 ; 14uint shouldStopAtFirstHit_0 ; 15}; 16 17layout (binding = 2 ) 18layout (std140) uniform _S1 19{ 20vec3 origin_0 ; 21float tMin_0 ; 22vec3 direction_0 ; 23float tMax_0 ; 24uint rayFlags_0 ; 25uint instanceMask_0 ; 26uint shouldStopAtFirstHit_0 ; 27}C_0; 28layout (binding = 0 ) 29uniform accelerationStructureEXT myAccelerationStructure_0; 30 31layout (std430, binding = 1 ) buffer StructuredBuffer_int_t_0 { 32int _data []; 33} resultBuffer_0; 34struct MyProceduralHitAttrs_0 35{ 36int value_0 ; 37}; 38 39bool myProceduralIntersection_0( inout float tHit_0, inout MyProceduralHitAttrs_0 hitAttrs_0) 40{ 41return true; 42} 43 44struct MyRayPayload_0 45{ 46int value_1 ; 47}; 48 49bool myProceduralAnyHit_0( inout MyRayPayload_0 payload_0) 50{ 51return true; 52} 53 54bool myTriangleAnyHit_0( inout MyRayPayload_0 payload_1) 55{ 56return true; 57} 58 59void myTriangleClosestHit_0( inout MyRayPayload_0 payload_2) 60{ 61payload_2. value_1 = 1 ; 62return ; 63} 64 65void myProceduralClosestHit_0( inout MyRayPayload_0 payload_3, MyProceduralHitAttrs_0 attrs_0) 66{ 67payload_3. value_1 = attrs_0. value_0 ; 68return ; 69} 70 71void myMiss_0( inout MyRayPayload_0 payload_4) 72{ 73payload_4. value_1 = 0 ; 74return ; 75} 76 77layout (local_size_x = 1 , local_size_y = 1 , local_size_z = 1 ) in ; 78void main() 79{ 80uint index_0 = gl_GlobalInvocationID. x ; 81rayQueryEXT query_0; 82MyRayPayload_0 payload_5; 83payload_5. value_1 = -1 ; 84rayQueryInitializeEXT((query_0), (myAccelerationStructure_0), (C_0. rayFlags_0 | 512U ), (C_0. instanceMask_0 ), (C_0. origin_0 ), (C_0. tMin_0 ), (C_0. direction_0 ), (C_0. tMax_0 )); 85MyProceduralHitAttrs_0 committedProceduralAttrs_0; 86for (;;) 87{ 88bool _S2 = rayQueryProceedEXT(query_0); 89if (!_S2) 90{ 91break ; 92} 93uint _S3 = (rayQueryGetIntersectionTypeEXT((query_0), false)); 94MyProceduralHitAttrs_0 committedProceduralAttrs_1; 95switch (_S3) 96{ 97case 1U : 98{ 99MyProceduralHitAttrs_0 candidateProceduralAttrs_0; 100candidateProceduralAttrs_0. value_0 = 0 ; 101float tHit_1 = 0.0 ; 102bool _S4 = myProceduralIntersection_0(tHit_1, candidateProceduralAttrs_0); 103if (_S4) 104{ 105bool _S5 = myProceduralAnyHit_0(payload_5); 106if (_S5) 107{ 108rayQueryGenerateIntersectionEXT(query_0, tHit_1); 109MyProceduralHitAttrs_0 _S6 = candidateProceduralAttrs_0; 110if (C_0. shouldStopAtFirstHit_0 != 0U ) 111{ 112rayQueryTerminateEXT(query_0); 113} 114committedProceduralAttrs_1 = _S6; 115} 116else 117{ 118committedProceduralAttrs_1 = committedProceduralAttrs_0; 119} 120} 121else 122{ 123committedProceduralAttrs_1 = committedProceduralAttrs_0; 124} 125break ; 126} 127case 0U : 128{ 129bool _S7 = myTriangleAnyHit_0(payload_5); 130if (_S7) 131{ 132rayQueryConfirmIntersectionEXT(query_0); 133if (C_0. shouldStopAtFirstHit_0 != 0U ) 134{ 135rayQueryTerminateEXT(query_0); 136} 137} 138committedProceduralAttrs_1 = committedProceduralAttrs_0; 139break ; 140} 141default : 142{ 143committedProceduralAttrs_1 = committedProceduralAttrs_0; 144break ; 145} 146} 147committedProceduralAttrs_0 = committedProceduralAttrs_1; 148} 149uint _S8 = (rayQueryGetIntersectionTypeEXT((query_0), true)); 150switch (_S8) 151{ 152case 1U : 153{ 154myTriangleClosestHit_0(payload_5); 155break ; 156} 157case 2U : 158{ 159myProceduralClosestHit_0(payload_5, committedProceduralAttrs_0); 160break ; 161} 162case 0U : 163{ 164myMiss_0(payload_5); 165break ; 166} 167default : 168{ 169break ; 170} 171} 172resultBuffer_0. _data [index_0] = payload_5. value_1 ; 173return ; 174} 175 176