yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
33e8bfd43
master
1//TEST:SIMPLE(filecheck=CHECK): -target spirv -lang slang -D__spirv__ -emit-spirv-directly -profile ds_6_5 -entry main 2 3// CHECK: OpEntryPoint 4 5struct VSSceneIn { 6 float3 pos : POSITION; 7}; 8 9struct PSSceneIn { 10 float4 pos : SV_Position; 11}; 12 13struct HSPerVertexData { 14 PSSceneIn v; 15}; 16 17struct HSPerPatchData { 18 float edges[3] : SV_TessFactor; 19 float inside : SV_InsideTessFactor; 20}; 21 22RaytracingAccelerationStructure AccelerationStructure : register(t0); 23RayDesc MakeRayDesc() 24{ 25 RayDesc desc; 26 desc.Origin = float3(0,0,0); 27 desc.Direction = float3(1,0,0); 28 desc.TMin = 0.0f; 29 desc.TMax = 9999.0; 30 return desc; 31} 32void doInitialize(out RayQuery<RAY_FLAG_FORCE_OPAQUE> query, RayDesc ray) 33{ 34 query.TraceRayInline(AccelerationStructure,RAY_FLAG_FORCE_NON_OPAQUE,0xFF,ray); 35} 36 37[domain("tri")] PSSceneIn main( 38 const float3 bary : SV_DomainLocation, 39 const OutputPatch<HSPerVertexData, 3> patch, 40 const HSPerPatchData perPatchData) 41{ 42 PSSceneIn v; 43 v.pos = patch[0].v.pos * bary.x + patch[1].v.pos * bary.y + patch[2].v.pos * bary.z + perPatchData.edges[1]; 44 45 RayQuery<RAY_FLAG_FORCE_OPAQUE> q; 46 RayDesc ray = MakeRayDesc(); 47 48 q.TraceRayInline(AccelerationStructure,RAY_FLAG_FORCE_OPAQUE, 0xFF, ray); 49 doInitialize(q, ray); 50 51 return v; 52}