コード例 #1
0
ファイル: LightMaterial.cs プロジェクト: HungryBear/rayden
        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);
            }            
        }
コード例 #2
0
ファイル: BaseMaterial.cs プロジェクト: HungryBear/rayden
        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;
            //}
        }
コード例 #3
0
ファイル: LightMaterial.cs プロジェクト: HungryBear/rayden
 public LightMaterial(IValueTexture tex)
 {
     this.emissionTexture = tex;
 }
コード例 #4
0
ファイル: LightMaterial.cs プロジェクト: HungryBear/rayden
 public LightMaterial(SampledSpectrum spd)
 {
     var color = ColorManager.Instance.Convert(spd, SpectrumType.Illuminant);
     emissionTexture = TextureFactory.Instance.CreateConstTexture(color);
 }