yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
11111e573
master
1//TEST_IGNORE_FILE: 2 3__exported import IMaterialInstance; 4__exported import IBSDF; 5 6public struct GlossyBSDF : IBSDF 7{ 8 public float3 albedo; 9 10 public float3 getAlbedo() 11 { 12 return albedo; 13 } 14 15 [ForwardDerivativeOf(getAlbedo)] 16 [TreatAsDifferentiable] 17 public DifferentialPair<float3> __fwd_d_getAlbedo() 18 { 19 return diffPair(albedo, float3(1.f)); 20 } 21 22 [BackwardDerivativeOf(getAlbedo)] 23 [TreatAsDifferentiable] 24 public void __bwd_d_getAlbedo(float3 dOut) 25 { 26 [unroll] 27 for (int j = 0; j < 3; j++) outputBuffer[j + 3] += dOut[j]; 28 } 29 30 [BackwardDifferentiable] 31 public float3 eval(const float3 wiLocal, const float3 woLocal) 32 { 33 float3 a = getAlbedo(); 34 return a * a; 35 } 36}; 37 38public struct GlossyMaterialInstance : IMaterialInstance 39{ 40 public GlossyBSDF bsdf; 41 42 [BackwardDifferentiable] 43 public float3 eval(const float3 wi, const float3 wo) 44 { 45 return bsdf.eval(wi, wo); 46 } 47};