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
675 B25 linesraw
1// A compute shader to build a mip-map layer using box filtering.
2
3cbuffer Uniforms
4{
5    uint dstWidth;
6    uint dstHeight;
7    RWTexture2D dstTexture;
8    RWTexture2D srcTexture;
9}
10
11[shader("compute")]
12[numthreads(16, 16, 1)]
13void computeMain(uint3 threadIdx : SV_DispatchThreadID)
14{
15    uint x = threadIdx.x;
16    uint y = threadIdx.y;
17    if (x >= dstWidth) return;
18    if (y >= dstHeight) return;
19    var val0 = srcTexture[uint2(x * 2, y * 2)];
20    var val1 = srcTexture[uint2(x * 2 + 1, y * 2)];
21    var val2 = srcTexture[uint2(x * 2, y * 2 + 1)];
22    var val3 = srcTexture[uint2(x * 2 + 1, y * 2 + 1)];
23
24    dstTexture[uint2(x, y)] = (val0 + val1 + val2 + val3) / 4;
25}