private readonly IValueTexture emissionTexture; // consider option with iwavelengthdependent public LightMaterial(EmissionProfile profile) { if (profile.EmissionTexture != null) { emissionTexture = TextureFactory.Instance.CreateImageTexture((RgbSpectrumTexture) profile.EmissionTexture); } else { var color = ColorManager.Instance.Convert(profile.EmissionSpectra, SpectrumType.Illuminant); emissionTexture = TextureFactory.Instance.CreateConstTexture(color); } }
protected BaseMaterial(MaterialInfo mi, RayEngineScene scene) { this.mi = mi; this.Exponent = mi.Exponent; this.IndexOfRefraction = (ConstWavelengthDependentValue)mi.MediumInfo.IoR; if (mi.DiffuseTexture != null) { Diffuse = TextureFactory.Instance.CreateImageTexture( (RgbSpectrumTexture)scene.Query(mi.MaterialName, TextureType.Diffuse)); } else { Diffuse = TextureFactory.Instance.CreateConstTexture(ref mi.Kd); } if (mi.Specular != null) { Specular = TextureFactory.Instance.CreateImageTexture( (RgbSpectrumTexture)scene.Query(mi.MaterialName, TextureType.Specular)); } else { Specular = TextureFactory.Instance.CreateConstTexture(ref mi.Kr); } if (mi.AlphaTexture != null) { Alpha = TextureFactory.Instance.CreateImageTexture( (RgbSpectrumTexture)scene.Query(mi.MaterialName, TextureType.Alpha)); } var zeroSpectrum = RgbSpectrum.ZeroSpectrum(); var zeroTex = TextureFactory.Instance.CreateConstTexture(ref zeroSpectrum); if (mi.BumpTexture != null && scene.OptTextures.Contains(mi.BumpTexture)) { Bump = TextureFactory.Instance.CreateImageTexture( (RgbSpectrumTexture)scene.Query(mi.MaterialName, TextureType.Bump)); } //else //{ // Bump = zeroTex; //} if (!mi.GlossReflectance.IsBlack()) { Glossy = TextureFactory.Instance.CreateConstTexture(ref mi.Ks); } //else //{ // Glossy = zeroTex; //} if (!mi.Kt.IsBlack()) { Transmission = TextureFactory.Instance.CreateConstTexture(ref mi.Kt); } //else //{ // Transmission = zeroTex; //} if (!mi.Reflectance.IsBlack()) { Reflectance = TextureFactory.Instance.CreateConstTexture(ref mi.Reflectance); } //else //{ // Reflectance = zeroTex; //} }
public LightMaterial(IValueTexture tex) { this.emissionTexture = tex; }
public LightMaterial(SampledSpectrum spd) { var color = ColorManager.Instance.Convert(spd, SpectrumType.Illuminant); emissionTexture = TextureFactory.Instance.CreateConstTexture(color); }