yum-mirror/slang

Making it easier to work with shaders

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

Yong HeSupport visibility control and default to `internal`. (#3380)11111e573

master
992 B47 linesraw
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};