yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
187ec4444
master
1//DISABLE_TEST:SIMPLE:-target dxil-assembly -entry fragmentMain -profile sm_6_5 -stage fragment -DNV_SHADER_EXTN_SLOT=u0 2 3//TEST:SIMPLE(filecheck=SPIRV):-target spirv-assembly -entry fragmentMain -stage fragment 4//TEST:SIMPLE(filecheck=DXIL):-target dxil-assembly -entry fragmentMain -profile sm_6_5 -stage fragment -DNV_SHADER_EXTN_SLOT=u0 5//TEST:SIMPLE(filecheck=HLSL):-target hlsl -entry fragmentMain -stage fragment 6 7//DISABLED_TEST:SIMPLE:-target spirv-assembly -entry fragmentMain -stage fragment 8//DISABLED_TEST:SIMPLE:-target dxil-assembly -entry fragmentMain -stage fragment 9//DISABLED_TEST:SIMPLE:-target hlsl -entry fragmentMain -stage fragment 10 11uniform Texture2D textures[] : register(t2, space10); 12uniform SamplerState sampler; 13uniform RWStructuredBuffer<uint> outputBuffer; 14 15static Texture2D _getBindlessTexture2d(uint texIdx) 16{ 17 return textures[NonUniformResourceIndex(texIdx)]; 18} 19 20void accumulate(inout uint r, uint u) 21{ 22 r = r ^ u; 23} 24 25void accumulate(inout uint r, bool b) 26{ 27 accumulate(r, uint(b)); 28} 29 30void accumulate(inout uint r, uint2 u) 31{ 32 accumulate(r, u.x); 33 accumulate(r, u.y); 34} 35 36void accumulate(inout uint r, uint3 u) 37{ 38 accumulate(r, u.x); 39 accumulate(r, u.y); 40 accumulate(r, u.z); 41} 42 43void accumulate(inout uint r, TextureFootprint2D f) 44{ 45 accumulate(r, f.anchor); 46 accumulate(r, f.offset); 47 accumulate(r, f.mask); 48 accumulate(r, f.lod); 49 accumulate(r, f.granularity); 50 accumulate(r, f.isSingleLevel); 51} 52 53cbuffer Uniforms 54{ 55 uniform float2 coords; 56 uniform uint granularity; 57}; 58 59void fragmentMain( 60 float v : VARYING) 61{ 62 uint index = uint(v); 63 uint r = 0; 64 65 accumulate(r, _getBindlessTexture2d(index).queryFootprintCoarse(granularity, sampler, coords)); 66 67// SPIRV: Extension "SPV_NV_shader_image_footprint" 68// SPIRV: ImageSampleFootprintNV 69 70// DXIL: struct struct.NvShaderExtnStruct 71 72// HLSL: NvFootprintCoarse 73 74 outputBuffer[index] = r; 75} 76