yum-mirror/slang

Making it easier to work with shaders

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

Yong HeAdd texture tri-linear autodiff example. (#2715)96caba75e

master
762 B25 linesraw
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}