Esempio n. 1
0
 public static Material IsotropicVolumetric(RGBSpectrum albedo, float density)
 {
     return(new(IDensityProfile.Volumetric(density),
                IAbsorptionProfile.Uniform(albedo),
                IOrientationProfile.Forwards,
                IReflectionProfile.Spherical,
                IEmittanceProfile.None));
 }
Esempio n. 2
0
 public static Material DiffuseParticleCloud(RGBSpectrum albedo, float density)
 {
     return(new(IDensityProfile.Volumetric(density),
                IAbsorptionProfile.Uniform(albedo),
                IOrientationProfile.Uniform,
                IReflectionProfile.Diffuse,
                IEmittanceProfile.None));
 }
Esempio n. 3
0
 public static Material Glossy(RGBSpectrum albedo, float roughness)
 {
     return(new(IDensityProfile.Surface,
                IAbsorptionProfile.Uniform(albedo),
                IOrientationProfile.SurfaceGGX(roughness),
                IReflectionProfile.Specular,
                IEmittanceProfile.None));
 }
Esempio n. 4
0
 public static Material RoughSpecularDiffuseBlend(RGBSpectrum albedo, float specularity, float roughness)
 {
     return(new(IDensityProfile.Surface,
                IAbsorptionProfile.Uniform(albedo),
                IOrientationProfile.SurfaceGGX(roughness),
                IReflectionProfile.Blend((IReflectionProfile.Diffuse, 1f - specularity), (IReflectionProfile.Specular, specularity)),
                IEmittanceProfile.None));
 }
Esempio n. 5
0
 public static Material Specular(RGBSpectrum albedo)
 {
     return(new(IDensityProfile.Surface,
                IAbsorptionProfile.Uniform(albedo),
                IOrientationProfile.Flat,
                IReflectionProfile.Specular,
                IEmittanceProfile.None));
 }
Esempio n. 6
0
 public static Material Emitter(RGBSpectrum spectrum)
 {
     return(new(IDensityProfile.Surface,
                IAbsorptionProfile.BlackBody,
                IOrientationProfile.Flat,
                IReflectionProfile.Diffuse,
                IEmittanceProfile.Uniform(spectrum)));
 }
Esempio n. 7
0
 public static Material SpecularParticleCloud(RGBSpectrum albedo, float density, float roughness)
 {
     return(new(IDensityProfile.Volumetric(density),
                IAbsorptionProfile.Uniform(albedo),
                IOrientationProfile.SurfaceSGGX(roughness),
                IReflectionProfile.Specular,
                IEmittanceProfile.None));
 }
Esempio n. 8
0
        public static ColorRGB8 GetColor8Gamma22(RGBSpectrum color)
        {
            Float fr = Math.Pow(color.R, Idx22) * 255.0f;
            Float fg = Math.Pow(color.G, Idx22) * 255.0f;
            Float fb = Math.Pow(color.B, Idx22) * 255.0f;
            byte  r, g, b;

            if (fr < 0)
            {
                r = 0;
            }
            else if (fr > 255)
            {
                r = 255;
            }
            else
            {
                r = (byte)fr;
            }

            if (fg < 0)
            {
                g = 0;
            }
            else if (fg > 255)
            {
                g = 255;
            }
            else
            {
                g = (byte)fg;
            }

            if (fb < 0)
            {
                b = 0;
            }
            else if (fb > 255)
            {
                b = 255;
            }
            else
            {
                b = (byte)fb;
            }

            return(new ColorRGB8(r, g, b));
        }
Esempio n. 9
0
        public static ColorRGB8 GetColor8(RGBSpectrum color)
        {
            color *= 255;
            byte r, g, b;

            if (color.R < 0)
            {
                r = 0;
            }
            else if (color.R > 255)
            {
                r = 255;
            }
            else
            {
                r = (byte)color.R;
            }

            if (color.G < 0)
            {
                g = 0;
            }
            else if (color.G > 255)
            {
                g = 255;
            }
            else
            {
                g = (byte)color.G;
            }

            if (color.B < 0)
            {
                b = 0;
            }
            else if (color.B > 255)
            {
                b = 255;
            }
            else
            {
                b = (byte)color.B;
            }

            return(new ColorRGB8(r, g, b));
        }
Esempio n. 10
0
 private static string ColorDescription(RGBSpectrum color)
 {
     return(color.R + "," + color.G + "," + color.B);
 }