yum-mirror/slang

Making it easier to work with shaders

git clone https://git.yummers.dev/yum-mirror/slang

kaizhangNVFeature/initialize list side branch (#6058)9ec6b9168

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