SPIRV-Cross/reference/shaders-hlsl/comp/rayquery.fxconly.comp
2022-03-15 21:54:29 +03:00

225 lines
6.0 KiB
Plaintext

struct Ray
{
float3 pos;
float tmin;
float3 dir;
float tmax;
};
RWByteAddressBuffer _17 : register(u0);
RWByteAddressBuffer _257 : register(u2);
uniform RaytracingAccelerationStructure rtas;
static RayQuery<RAY_FLAG_NONE> rayQuery;
Ray makeRayDesc()
{
Ray ray;
ray.pos = 0.0f.xxx;
ray.dir = float3(1.0f, 0.0f, 0.0f);
ray.tmin = 0.0f;
ray.tmax = 9999.0f;
return ray;
}
void doSomething()
{
_17.Store(0, 0u);
_17.Store(4, 0u);
}
void comp_main()
{
Ray ray = makeRayDesc();
RayDesc _1ident = {ray.pos, ray.tmin, ray.dir, ray.tmax};
rayQuery.TraceRayInline(rtas, 0u, 255u, _1ident);
float4x3 _mat4x3;
float3x4 _mat3x4;
for (;;)
{
bool _67 = rayQuery.Proceed();
if (_67)
{
uint _71 = rayQuery.CandidateType();
uint candidateType = _71;
switch (candidateType)
{
case 0u:
{
rayQuery.Abort();
float4x3 _79 = rayQuery.CandidateObjectToWorld4x3();
_mat4x3 = _79;
_mat3x4 = transpose(_mat4x3);
rayQuery.CommitNonOpaqueTriangleHit();
bool _87 = rayQuery.CommittedTriangleFrontFace();
if (_87)
{
doSomething();
}
float2 _92 = rayQuery.CommittedTriangleBarycentrics();
if (_92.x == 0.0f)
{
doSomething();
}
int _98 = rayQuery.CommittedInstanceID();
if (_98 > 0)
{
doSomething();
}
int _103 = rayQuery.CommittedInstanceIndex();
if (_103 > 0)
{
doSomething();
}
float3 _108 = rayQuery.CommittedObjectRayDirection();
if (_108.x > 0.0f)
{
doSomething();
}
float3 _114 = rayQuery.CommittedObjectRayOrigin();
if (_114.x > 0.0f)
{
doSomething();
}
int _120 = rayQuery.CommittedPrimitiveIndex();
if (_120 > 0)
{
doSomething();
}
float _125 = rayQuery.CommittedRayT();
if (_125 > 0.0f)
{
doSomething();
}
uint _130 = rayQuery.CommittedInstanceContributionToHitGroupIndex();
if (_130 > 0u)
{
doSomething();
}
break;
}
case 1u:
{
float4x3 _136 = rayQuery.CandidateObjectToWorld4x3();
_mat4x3 = _136;
_mat3x4 = transpose(_mat4x3);
bool _139 = rayQuery.CandidateProceduralPrimitiveNonOpaque();
if (_139)
{
doSomething();
}
float t = 0.5f;
rayQuery.CommitProceduralPrimitiveHit(145);
rayQuery.Abort();
break;
}
}
continue;
}
else
{
break;
}
}
if (_mat3x4[0].x == _mat4x3[0].x)
{
doSomething();
}
uint _157 = rayQuery.CommittedStatus();
uint committedStatus = _157;
switch (committedStatus)
{
case 0u:
{
float4x3 _163 = rayQuery.CandidateWorldToObject4x3();
_mat4x3 = _163;
_mat3x4 = transpose(_mat4x3);
break;
}
case 1u:
{
float4x3 _167 = rayQuery.CommittedWorldToObject4x3();
_mat4x3 = _167;
_mat3x4 = transpose(_mat4x3);
bool _170 = rayQuery.CommittedTriangleFrontFace();
if (_170)
{
doSomething();
}
float2 _174 = rayQuery.CommittedTriangleBarycentrics();
if (_174.y == 0.0f)
{
doSomething();
}
break;
}
case 2u:
{
int _182 = rayQuery.CommittedGeometryIndex();
if (_182 > 0)
{
doSomething();
}
int _187 = rayQuery.CommittedInstanceIndex();
if (_187 > 0)
{
doSomething();
}
int _192 = rayQuery.CommittedInstanceID();
if (_192 > 0)
{
doSomething();
}
float3 _197 = rayQuery.CommittedObjectRayDirection();
if (_197.z > 0.0f)
{
doSomething();
}
float3 _204 = rayQuery.CommittedObjectRayOrigin();
if (_204.x > 0.0f)
{
doSomething();
}
int _210 = rayQuery.CommittedPrimitiveIndex();
if (_210 > 0)
{
doSomething();
}
float _215 = rayQuery.CommittedRayT();
if (_215 > 0.0f)
{
doSomething();
}
break;
}
}
if (_mat3x4[0].x == _mat4x3[0].x)
{
doSomething();
}
uint _230 = rayQuery.RayFlags();
if (_230 > 256u)
{
doSomething();
}
float _236 = rayQuery.RayTMin();
if (_236 > 0.0f)
{
doSomething();
}
float3 _242 = rayQuery.WorldRayOrigin();
float3 o = _242;
float3 _244 = rayQuery.WorldRayDirection();
float3 d = _244;
if (o.x == d.z)
{
doSomething();
}
}
[numthreads(1, 1, 1)]
void main()
{
comp_main();
}