yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
d10732742
master
1//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj -output-using-type 2//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj -output-using-type 3//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj -output-using-type 4 5//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name=outputBuffer 6RWStructuredBuffer<float> outputBuffer; 7 8[BackwardDifferentiable] 9float3 crossImpl(float3 x, float3 y) 10{ 11 return float3(x.y * y.z - y.y * x.z, 12 x.z * y.x - y.z * x.x, 13 x.x * y.y - y.x * x.y); 14} 15 16[numthreads(1, 1, 1)] 17void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) 18{ 19 { 20 let x = float3(-0.51, 0.74, 0.86); 21 let y = float3(1.43, -0.92, 4.36); 22 let dOut = float3(3.41, 6.55, 2.39); 23 var dpx = diffPair(x); 24 var dpy = diffPair(y); 25 __bwd_diff(cross)(dpx, dpy, dOut); 26 outputBuffer[0] = dpx.d[0]; 27 outputBuffer[1] = dpx.d[1]; 28 outputBuffer[2] = dpx.d[2]; 29 outputBuffer[3] = dpy.d[0]; 30 outputBuffer[4] = dpy.d[1]; 31 outputBuffer[5] = dpy.d[2]; 32 33 __bwd_diff(crossImpl)(dpx, dpy, dOut); 34 outputBuffer[6] = dpx.d[0]; 35 outputBuffer[7] = dpx.d[1]; 36 outputBuffer[8] = dpx.d[2]; 37 outputBuffer[9] = dpy.d[0]; 38 outputBuffer[10] = dpy.d[1]; 39 outputBuffer[11] = dpy.d[2]; 40 } 41}