yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
9ec6b9168
master
1#pragma pack_matrix(column_major) 2#ifdef SLANG_HLSL_ENABLE_NVAPI 3#include "nvHLSLExtns.h" 4#endif 5 6#ifndef __DXC_VERSION_MAJOR 7// warning X3557: loop doesn't seem to do anything, forcing loop to unroll 8#pragma warning(disable : 3557) 9#endif 10 11struct SLANG_ParameterGroup_C_0 12{ 13float3 origin_0 ; 14float tMin_0 ; 15float3 direction_0 ; 16float tMax_0 ; 17uint rayFlags_0 ; 18uint instanceMask_0 ; 19uint shouldStopAtFirstHit_0 ; 20}; 21 22cbuffer C_0 :register ( b0 ) 23{ 24SLANG_ParameterGroup_C_0 C_0 ; 25} 26RaytracingAccelerationStructure myAccelerationStructure_0 :register ( t0 ); 27 28RWStructuredBuffer < int > resultBuffer_0 :register ( u0 ); 29 30struct MyRayPayload_0 31{ 32int value_0 ; 33}; 34 35MyRayPayload_0 MyRayPayload_x24init_0 ( int value_1 ) 36{ 37MyRayPayload_0 _S1 ; 38_S1 . value_0 = value_1 ; 39return _S1 ; 40} 41 42RayDesc RayDesc_x24init_0 ( float3 Origin_0 , float TMin_0 , float3 Direction_0 , float TMax_0 ) 43{ 44RayDesc _S2 ; 45_S2 . Origin = Origin_0 ; 46_S2 . TMin = TMin_0 ; 47_S2 . Direction = Direction_0 ; 48_S2 . TMax = TMax_0 ; 49return _S2 ; 50} 51 52struct MyProceduralHitAttrs_0 53{ 54int value_2 ; 55}; 56 57MyProceduralHitAttrs_0 MyProceduralHitAttrs_x24init_0 ( int value_3 ) 58{ 59MyProceduralHitAttrs_0 _S3 ; 60_S3 . value_2 = value_3 ; 61return _S3 ; 62} 63 64bool myProceduralIntersection_0 ( inout float tHit_0 , inout MyProceduralHitAttrs_0 hitAttrs_0 ) 65{ 66return true ; 67} 68 69bool myProceduralAnyHit_0 ( inout MyRayPayload_0 payload_0 ) 70{ 71return true ; 72} 73 74bool myTriangleAnyHit_0 ( inout MyRayPayload_0 payload_1 ) 75{ 76return true ; 77} 78 79void myTriangleClosestHit_0 ( inout MyRayPayload_0 payload_2 ) 80{ 81payload_2 . value_0 = int ( 1 ); 82return ; 83} 84 85void myProceduralClosestHit_0 ( inout MyRayPayload_0 payload_3 , MyProceduralHitAttrs_0 attrs_0 ) 86{ 87payload_3 . value_0 = attrs_0 . value_2 ; 88return ; 89} 90 91void myMiss_0 ( inout MyRayPayload_0 payload_4 ) 92{ 93payload_4 . value_0 = int ( 0 ); 94return ; 95} 96 97[ shader ( "compute" )][ numthreads ( 1 , 1 , 1 )] 98void main ( uint3 tid_0 : SV_DispatchThreadID ) 99{ 100uint index_0 = tid_0 . x ; 101MyRayPayload_0 payload_5 = MyRayPayload_x24init_0 ( int ( -1 )); 102RayQuery < 512U > query_0 ; 103query_0 . TraceRayInline ( myAccelerationStructure_0 , C_0 . rayFlags_0 , C_0 . instanceMask_0 , RayDesc_x24init_0 ( C_0 . origin_0 , C_0 . tMin_0 , C_0 . direction_0 , C_0 . tMax_0 )); 104MyProceduralHitAttrs_0 committedProceduralAttrs_0 ; 105MyProceduralHitAttrs_0 _S4 = MyProceduralHitAttrs_x24init_0 ( int ( 0 )); 106for (;;) 107{ 108bool _S5 = query_0 . Proceed (); 109if ( ! _S5 ) 110{ 111break ; 112} 113uint _S6 = query_0 . CandidateType (); 114MyProceduralHitAttrs_0 committedProceduralAttrs_1 ; 115switch ( _S6 ) 116{ 117case 1U : 118{ 119MyProceduralHitAttrs_0 candidateProceduralAttrs_0 = _S4 ; 120float tHit_1 = 0.0 ; 121bool _S7 = myProceduralIntersection_0 ( tHit_1 , candidateProceduralAttrs_0 ); 122if ( _S7 ) 123{ 124bool _S8 = myProceduralAnyHit_0 ( payload_5 ); 125if ( _S8 ) 126{ 127query_0 . CommitProceduralPrimitiveHit ( tHit_1 ); 128MyProceduralHitAttrs_0 _S9 = candidateProceduralAttrs_0 ; 129if (( C_0 . shouldStopAtFirstHit_0 ) != 0U ) 130{ 131query_0 . Abort (); 132} 133committedProceduralAttrs_1 = _S9 ; 134} 135else 136{ 137committedProceduralAttrs_1 = committedProceduralAttrs_0 ; 138} 139} 140else 141{ 142committedProceduralAttrs_1 = committedProceduralAttrs_0 ; 143} 144break ; 145} 146case 0U : 147{ 148bool _S10 = myTriangleAnyHit_0 ( payload_5 ); 149if ( _S10 ) 150{ 151query_0 . CommitNonOpaqueTriangleHit (); 152if (( C_0 . shouldStopAtFirstHit_0 ) != 0U ) 153{ 154query_0 . Abort (); 155} 156} 157committedProceduralAttrs_1 = committedProceduralAttrs_0 ; 158break ; 159} 160default : 161{ 162committedProceduralAttrs_1 = committedProceduralAttrs_0 ; 163break ; 164} 165} 166committedProceduralAttrs_0 = committedProceduralAttrs_1 ; 167} 168uint _S11 = query_0 . CommittedStatus (); 169switch ( _S11 ) 170{ 171case 1U : 172{ 173myTriangleClosestHit_0 ( payload_5 ); 174break ; 175} 176case 2U : 177{ 178myProceduralClosestHit_0 ( payload_5 , committedProceduralAttrs_0 ); 179break ; 180} 181case 0U : 182{ 183myMiss_0 ( payload_5 ); 184break ; 185} 186default : 187{ 188break ; 189} 190} 191resultBuffer_0 [ index_0 ] = payload_5 . value_0 ; 192return ; 193} 194