yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
f02b08490
master
1//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-shaderobj -output-using-type 2//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-dx12 -shaderobj -output-using-type 3//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-cpu -shaderobj -output-using-type 4//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-vk -shaderobj -output-using-type 5 6struct DiffFunctor : IDifferentiableFunc<float, float> 7{ 8 [Differentiable] 9 float operator()(float p) 10 { 11 return p + 1; 12 } 13} 14 15float apply(IMutatingFunc<float, float> f, float p) 16{ 17 return f(p); 18} 19 20[Differentiable] 21float applyDiff(IDifferentiableFunc<float, float> f, float p) 22{ 23 return f(p); 24} 25 26[Differentiable] 27TR applyDiffGen<TR : IDifferentiable, each TP : IDifferentiable>(IDifferentiableFunc<TR, TP> f, expand each TP p) 28{ 29 return f(expand each p); 30} 31 32//TEST_INPUT:ubuffer(data=[0 3 2 2], stride=4):out,name=outputBuffer 33RWStructuredBuffer<uint> outputBuffer; 34 35[numthreads(1, 1, 1)] 36void computeMain(uint tid: SV_DispatchThreadID) 37{ 38 // CHECK: 4 39 outputBuffer[0] = (uint)apply(DiffFunctor(), 3.0); 40 // CHECK: 1 41 outputBuffer[1] = (uint)fwd_diff(applyDiff)(DiffFunctor(), diffPair(2.0, 1.0)).d; 42 // CHECK: 1 43 outputBuffer[2] = (uint)fwd_diff(applyDiffGen<float, float>)(DiffFunctor(), diffPair(2.0, 1.0)).d; 44}