public void Add(ElementaryBrdf brdf) { for (int i = 0; i < MaxBrdf; i++) { if (brdfs[i] == null) { brdfs[i] = brdf; defaultWeight = 1f / (float)brdfs.Count(b => b != null); brdfWeights =brdfs.Where(b => b != null).Select(b =>defaultWeight).ToArray(); return; } } this.brdfs = brdfs.Union(new[] { brdf }).ToArray(); defaultWeight = 1f / (float)brdfs.Count(b => b != null); brdfWeights = brdfs.Where(b => b != null).Select(b => defaultWeight).ToArray(); }
public AdvancedSurfaceMaterial(ElementaryBrdf brdf) { brdfs = new[] { brdf }; brdfWeights = new float[MaxBrdf]; defaultWeight = 1f; }