yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
96caba75e
master
1// A compute shader to convert from a buffer into a mip-map texture. 2cbuffer Uniforms 3{ 4 uint4 mipOffset[16]; 5 uint dstLayer; 6 uint width; 7 uint height; 8 RWStructuredBuffer<float> srcBuffer; 9 RWTexture2D dstTexture; 10} 11 12[shader("compute")] 13[numthreads(16, 16, 1)] 14void computeMain(uint3 threadIdx : SV_DispatchThreadID) 15{ 16 uint x = threadIdx.x; 17 uint y = threadIdx.y; 18 uint dstW = width >> dstLayer; 19 uint dstH = height >> dstLayer; 20 if (x >= dstW) return; 21 if (y >= dstH) return; 22 uint dstOffset = mipOffset[dstLayer / 4][dstLayer % 4] + (y * dstW + x) * 4; 23 var dstVal = float4(srcBuffer[dstOffset], srcBuffer[dstOffset + 1], srcBuffer[dstOffset + 2], srcBuffer[dstOffset + 3]); 24 dstTexture[uint2(x, y)] = dstVal; 25}