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 6import MxWeights; 7 8public struct MxLayeredMaterialInstance< 9 let TBsdfCount : int, 10 let TLayerCount : int, 11 TLayeredMaterialData : IMxLayeredMaterialData, 12 TWeightsCalc : IMxLayeredWeightCalculator> : IMaterialInstance 13{ 14 public TLayeredMaterialData data; 15 public TWeightsCalc calculator; 16 public typealias Weights = MxWeights<TBsdfCount>; 17 18 public Weights calculateWeights() 19 { 20 Weights result; 21 calculator.calculateWeights<TBsdfCount, TLayerCount, TLayeredMaterialData>(data, result); 22 return result; 23 } 24 25 [Differentiable] 26 public float3 eval(const MaterialInstanceData miData, const float3 wi, const float3 wo) 27 { 28 float3 albedo; 29 for (uint i = 0; i < 3; i++) albedo[i] = miData.data[i]; 30 31 float3 result = float3(1.f); 32 [ForceUnroll] for (uint i = 0; i < TBsdfCount; i++) result *= albedo; 33 return result; 34 } 35}