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], 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}