yum-mirror/slang

Making it easier to work with shaders

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

Harsh Aggarwal (NVIDIA)Fix 7723 - Add autodiff tests (#7919)d10732742

master
1.8 KiB48 linesraw
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], stride=4):out,name=outputBuffer
6module "bsdf-sample";
7__include bsdf_auto_rev;
8
9RWStructuredBuffer<float> outputBuffer;
10
11[numthreads(1, 1, 1)]
12void computeMain(uint3 dispatchThreadID: SV_DispatchThreadID)
13{
14    ShadingData sd;
15    sd.N = float3(0, 0, 1);
16    sd.T = float3(1, 0, 0);
17    sd.B = float3(0, 1, 0);
18    sd.V = normalize(float3(0.3, 0.5, 0.8));
19
20    {
21        DifferentialPair<Auto_Bwd_BSDFParameters> dp_params = DifferentialPair<Auto_Bwd_BSDFParameters>(
22            { float3(0.9, 0.6, 0.4), 0.1 },
23            { float3(0, 0, 0), 0 });
24
25        Auto_Bwd_ScatterSample.Differential dOut = { float3(0, 0, 0), 0, float3(1, 0, 0) };
26        __bwd_diff(bsdfGGXSample)(sd, dp_params, dOut);
27
28        outputBuffer[0] = dp_params.d.albedo[0];
29        outputBuffer[1] = dp_params.d.albedo[1];
30        outputBuffer[2] = dp_params.d.albedo[2];
31        outputBuffer[3] = dp_params.d.roughness;
32    }
33
34    {
35        DifferentialPair<Auto_Bwd_BSDFParameters> dp_params = DifferentialPair<Auto_Bwd_BSDFParameters>(
36            { float3(0.9, 0.6, 0.4), 0.1 },
37            { float3(0, 0, 0), 1.0 });
38        DifferentialPair<Auto_Bwd_ScatterSample> dp_result;
39        __fwd_diff(bsdfGGXSample)(sd, dp_params, dp_result);
40
41        outputBuffer[4] = dp_result.p.weight[0];
42        outputBuffer[5] = dp_result.p.weight[1];
43        outputBuffer[6] = dp_result.p.weight[2];
44        outputBuffer[7] = dp_result.d.weight[0];
45        outputBuffer[8] = dp_result.d.weight[1];
46        outputBuffer[9] = dp_result.d.weight[2];
47    }
48}