Example #1
0
 public void UpdateBackgroundLight()
 {
     if (!bgLightPoked)
     {
         CyclesLight bgLight = new CyclesLight()
         {
             Id       = BackgroundLightGuid,
             UseMis   = true,
             Strength = 1.0f,
             Type     = ccl.LightType.Background,
         };
         AddLight(bgLight);
         bgLightPoked = true;
     }
 }
Example #2
0
 public RhinoLight(Client client, CyclesLight intermediate, Shader existing, string name)
     : base(client, intermediate)
 {
     if (existing != null)
     {
         m_shader = existing;
         m_shader.Recreate();
     }
     else
     {
         m_shader = new Shader(m_client, Shader.ShaderType.Material)
         {
             UseMis = true,
             UseTransparentShadow = true,
             HeterogeneousVolume = false,
             Name = name
         };
     }
 }
Example #3
0
 public RhinoLight(Client client, CyclesLight intermediate, Shader existing, string name) : base(client, intermediate, name, existing)
 {
 }
Example #4
0
 public RhinoLight(Client client, CyclesLight intermediate, Shader existing) : this(client, intermediate, existing, "light")
 {
 }
Example #5
0
 public RhinoLight(Client client, CyclesLight intermediate, Shader existing)
     : this(client, intermediate, existing, "light")
 {
 }
 public LightShaderUpdatedEventArgs(CyclesLight rcLightShader, CclShader cclShader)
 {
     RcLightShader = rcLightShader;
     CclShader = cclShader;
 }
Example #7
0
 /// <summary>
 /// Record light changes
 /// </summary>
 /// <param name="light"></param>
 public void AddLight(CyclesLight light)
 {
     _cqLightChanges.Add(light);
 }
Example #8
0
        /// <summary>
        /// Convert a Rhino light into a <c>CyclesLight</c>.
        /// </summary>
        /// <param name="lg">The Rhino light to convert</param>
        /// <param name="gamma"></param>
        /// <returns><c>CyclesLight</c></returns>
        internal CyclesLight ConvertLight(Rhino.Geometry.Light lg, float gamma)
        {
            var enabled = lg.IsEnabled ? 1.0 : 0.0;

            var spotangle = 0.0;
            var smooth = 0.0;
            var size = 0.0f;
            var strength = (float)(lg.Intensity * _engineSettings.PointlightFactor * enabled);
            var axisu = new float4(0.0f);
            var axisv = new float4(0.0f);
            var useMis = false;
            var sizeU = 0.0f;
            var sizeV = 0.0f;

            var co = RenderEngine.CreateFloat4(lg.Location.X, lg.Location.Y, lg.Location.Z);
            var dir = RenderEngine.CreateFloat4(lg.Direction.X, lg.Direction.Y, lg.Direction.Z);
            var color = RenderEngine.CreateFloat4(lg.Diffuse.R, lg.Diffuse.G, lg.Diffuse.B, lg.Diffuse.A);

            var lt = LightType.Point;
            if (lg.IsDirectionalLight)
            {
                lt = LightType.Distant;
                strength = (float)(lg.Intensity * _engineSettings.SunlightFactor * enabled);
                //size = 0.01f;
            }
            else if (lg.IsSpotLight)
            {
                lt = LightType.Spot;
                spotangle = lg.SpotAngleRadians * 2;
                smooth = 1.0 / Math.Max(lg.HotSpot, 0.001f) - 1.0;
                strength = (float)(lg.Intensity * _engineSettings.SpotlightFactor * enabled);
            }
            else if (lg.IsRectangularLight)
            {
                lt = LightType.Area;

                strength = (float)(lg.Intensity * _engineSettings.ArealightFactor * enabled);

                var width = lg.Width;
                var length = lg.Length;

                sizeU = (float)width.Length;
                sizeV = (float)length.Length;

                size = 1.0f;

                var rectLoc = lg.Location + (lg.Width * 0.5) + (lg.Length * 0.5);

                co = RenderEngine.CreateFloat4(rectLoc.X, rectLoc.Y, rectLoc.Z);

                width.Unitize();
                length.Unitize();

                axisu = RenderEngine.CreateFloat4(width.X, width.Y, width.Z);
                axisv = RenderEngine.CreateFloat4(length.X, length.Y, length.Z);

                useMis = true;
            }
            else if (lg.IsLinearLight)
            {
                throw new Exception("Linear light handled in wrong place. Contact developer [email protected]");
            }

            var clight = new CyclesLight
                {
                    Type = lt,
                    Co = co,
                    Dir = dir,
                    DiffuseColor = color,
                    Size = size,

                    SizeU = sizeU,
                    SizeV = sizeV,

                    AxisU = axisu,
                    AxisV = axisv,

                    UseMis = useMis,

                    SpotAngle = (float)spotangle,
                    SpotSmooth = (float)smooth,

                    Strength = strength,

                    CastShadow = true,

                    Gamma = gamma,

                    Id = lg.Id
                };

            return clight;
        }
Example #9
0
 public static RhinoShader CreateRhinoLightShader(Client client, CyclesLight intermediateLight, Shader existingShader)
 {
     RhinoShader shader = new RhinoLight(client, intermediateLight, existingShader);
     return shader;
 }
Example #10
0
 protected RhinoShader(Client client, CyclesLight intermediateLight)
 {
     m_client = client;
     m_original_light = intermediateLight;
 }
Example #11
0
 /// <summary>
 /// Record light changes
 /// </summary>
 /// <param name="light"></param>
 public void AddLight(CyclesLight light)
 {
     _cqLightChanges.Add(light);
 }
Example #12
0
 protected RhinoShader(Client client, CyclesLight intermediateLight, string name, Shader existing)
 {
     m_client         = client;
     m_original_light = intermediateLight;
     InitShader(name, existing, Shader.ShaderType.Material);
 }
Example #13
0
        public static RhinoShader CreateRhinoLightShader(Client client, CyclesLight intermediateLight, Shader existingShader)
        {
            RhinoShader shader = new RhinoLight(client, intermediateLight, existingShader);

            return(shader);
        }
 /// <summary>
 /// Add a CyclesLight and its shader
 /// </summary>
 /// <param name="l"></param>
 /// <param name="shader"></param>
 public void Add(CyclesLight l, CclShader shader)
 {
     _allShaders.Add(new Tuple <object, CclShader>(l, shader));
 }
Example #15
0
 /// <summary>
 /// Add a CyclesLight and its shader
 /// </summary>
 /// <param name="l"></param>
 /// <param name="shader"></param>
 public void Add(CyclesLight l, CclShader shader)
 {
     _allShaders.Add(new Tuple<object, CclShader>(l, shader));
 }
Example #16
0
        /// <summary>
        /// Convert a Rhino light into a <c>CyclesLight</c>.
        /// </summary>
        /// <param name="lg">The Rhino light to convert</param>
        /// <param name="gamma"></param>
        /// <returns><c>CyclesLight</c></returns>
        internal CyclesLight ConvertLight(Rhino.Geometry.Light lg, float gamma)
        {
            var enabled = lg.IsEnabled ? 1.0 : 0.0;

            var spotangle = 0.0;
            var smooth    = 0.0;
            var size      = 0.0f;
            var strength  = (float)(lg.Intensity * RcCore.It.EngineSettings.PointlightFactor * enabled);
            var axisu     = new float4(0.0f);
            var axisv     = new float4(0.0f);
            var useMis    = true;
            var sizeU     = 0.0f;
            var sizeV     = 0.0f;

            var co    = RenderEngine.CreateFloat4(lg.Location.X, lg.Location.Y, lg.Location.Z);
            var dir   = RenderEngine.CreateFloat4(lg.Direction.X, lg.Direction.Y, lg.Direction.Z);
            var color = RenderEngine.CreateFloat4(lg.Diffuse.R, lg.Diffuse.G, lg.Diffuse.B, lg.Diffuse.A);

            var lt = LightType.Point;

            if (lg.IsDirectionalLight)
            {
                lt       = LightType.Distant;
                strength = (float)(lg.Intensity * RcCore.It.EngineSettings.SunlightFactor * enabled);
                //size = 0.01f;
            }
            else if (lg.IsSpotLight)
            {
                lt        = LightType.Spot;
                spotangle = lg.SpotAngleRadians * 2;
                smooth    = 1.0 / Math.Max(lg.HotSpot, 0.001f) - 1.0;
                strength  = (float)(lg.Intensity * RcCore.It.EngineSettings.SpotlightFactor * enabled);
            }
            else if (lg.IsRectangularLight)
            {
                lt = LightType.Area;

                strength = (float)(lg.Intensity * RcCore.It.EngineSettings.ArealightFactor * enabled);

                var width  = lg.Width;
                var length = lg.Length;

                sizeU = (float)width.Length;
                sizeV = (float)length.Length;

                size = 1.0f;

                var rectLoc = lg.Location + (lg.Width * 0.5) + (lg.Length * 0.5);

                co = RenderEngine.CreateFloat4(rectLoc.X, rectLoc.Y, rectLoc.Z);

                width.Unitize();
                length.Unitize();

                axisu = RenderEngine.CreateFloat4(width.X, width.Y, width.Z);
                axisv = RenderEngine.CreateFloat4(length.X, length.Y, length.Z);

                useMis = true;
            }
            else if (lg.IsLinearLight)
            {
                throw new Exception("Linear light handled in wrong place. Contact developer [email protected]");
            }

            var clight = new CyclesLight
            {
                Type         = lt,
                Co           = co,
                Dir          = dir,
                DiffuseColor = color,
                Size         = size,

                SizeU = sizeU,
                SizeV = sizeV,

                AxisU = axisu,
                AxisV = axisv,

                UseMis = useMis,

                SpotAngle  = (float)spotangle,
                SpotSmooth = (float)smooth,

                Strength = strength,

                CastShadow = lg.ShadowIntensity > 0.0,

                Gamma = gamma,

                Id = lg.Id
            };

            return(clight);
        }
Example #17
0
 public LightShaderUpdatedEventArgs(CyclesLight rcLightShader, CclShader cclShader)
 {
     RcLightShader = rcLightShader;
     CclShader     = cclShader;
 }
Example #18
0
 internal void TriggerLightShaderChanged(CyclesLight rcLightShader, Shader cclShader)
 {
     LightShaderChanged?.Invoke(this, new LightShaderUpdatedEventArgs(rcLightShader, cclShader));
 }