Ejemplo n.º 1
0
 internal void Light()
 {
     allLights = LightObject.GetLights();
     DirectionalLights.Clear();
     PointLights.Clear();
     SpotLights.Clear();
     for (int i = 0; i < allLights.Count; i++)
     {
         if (allLights[i].type == LightType.Spot)
         {
             //if (l.cookie == null)
             //    l.cookie = DefaultSpotCookie;
             SpotLights.Add(allLights[i]);
         }
         else if (allLights[i].type == LightType.Point)
         {
             PointLights.Add(allLights[i]);
         }
         else if (allLights[i].type == LightType.Directional)
         {
             DirectionalLights.Add(allLights[i]);
         }
         if (UseAlloyLight)
         {
             allLights[i].light.GetOrAddComponent <AlloyAreaLight>().UpdateBinding();
         }
     }
 }
Ejemplo n.º 2
0
 internal void Light()
 {
     allLights = GameObject.FindObjectsOfType <Light>();
     DirectionalLights.Clear();
     PointLights.Clear();
     SpotLights.Clear();
     for (int i = 0; i < allLights.Length; i++)
     {
         if (allLights[i].type == LightType.Spot)
         {
             /*
              * if (l.cookie == null)
              *  l.cookie = DefaultSpotCookie;
              */
             SpotLights.Add(allLights[i]);
         }
         else if (allLights[i].type == LightType.Point)
         {
             PointLights.Add(allLights[i]);
         }
         else if (allLights[i].type == LightType.Directional)
         {
             DirectionalLights.Add(allLights[i]);
         }
         if (UseAlloyLight)
         {
             allLights[i].GetOrAddComponent <AlloyAreaLight>().UpdateBinding();
         }
     }
 }
Ejemplo n.º 3
0
        internal void Light()
        {
            allLights = LightObject.GetLights();
            DirectionalLights.Clear();
            PointLights.Clear();
            SpotLights.Clear();
            for (int i = 0; i < allLights.Count; i++)
            {
                if (allLights[i].type == LightType.Spot)
                {
                    //if (l.cookie == null)
                    //    l.cookie = DefaultSpotCookie;
                    SpotLights.Add(allLights[i]);
                }
                else if (allLights[i].type == LightType.Point)
                {
                    PointLights.Add(allLights[i]);
                }
                else if (allLights[i].type == LightType.Directional)
                {
                    if (Graphics.Instance.Settings.UsePCSS)
                    {
                        if (null == pcss)
                        {
                            pcss = allLights[i].light.GetOrAddComponent <PCSSLight>();
                        }
                        if (null != pcss)
                        {
                            pcss.enabled = true;
                        }
                    }
                    else
                    {
                        if (null == pcss)
                        {
                            pcss = allLights[i].light.GetComponent <PCSSLight>();
                        }
                        if (null != pcss)
                        {
                            pcss.enabled = false;
                        }
                    }

                    DirectionalLights.Add(allLights[i]);
                }
                if (UseAlloyLight)
                {
                    allLights[i].light.GetOrAddComponent <AlloyAreaLight>().UpdateBinding();
                }
            }
        }
Ejemplo n.º 4
0
        private void InitializeLightingScene()
        {
            //All lighting objects are requires to be in a layer named Lighting
            var lighting = m_level.getLayerByName("Lighting").Items;

            for (int i = 0; i < lighting.Count; ++i)
            {
                Vector3 lightPosition = new Vector3();
                lightPosition.X = lighting[i].Position.X;
                lightPosition.Y = lighting[i].Position.Y;
                lightPosition.Z = 0;

                PointLights.Add(new PointLight()
                {
                    Colour         = Color.Red,
                    LightIntensity = 4,
                    LightRadius    = 50,
                    LightPosition  = lightPosition
                });
            }
        }
Ejemplo n.º 5
0
        private void AddNode(LightNode lightNode)
        {
            Debug.Assert(lightNode.ActualIsEnabled, "Scene query contains disabled nodes.");

            // Ignore light if the reference position is not in the clip geometry.
            if (lightNode.Clip != null && _referencePosition.HasValue)
            {
                bool haveContact = HaveContact(lightNode.Clip, _referencePosition.Value);

                if (lightNode.InvertClip == haveContact)
                {
                    return;
                }
            }

            // ----- Sort by estimated light contribution.

            // All lights except IBL will be sorted by contribution.
            // Note: If we have no reference node, it still makes sense to sort the objects
            // by their contribution. We choose to get the light contribution at the position
            // of each light.
            Vector3F position = _referencePosition ?? lightNode.PoseWorld.Position;

            //lightNode.SortTag = lightNode.GetLightContribution(position, 0.7f);

            // Or simpler: Sort light nodes by distance. --> Use for image-based lights.
            // (We use distance², because it is faster.)
            //float distance = (position - lightNode.PoseWorld.Position).LengthSquared;
            //lightNode.SortTag = -distance;   // minus because we use descending sort.

            if (lightNode.Light is AmbientLight)
            {
                AmbientLights.Add(lightNode);
                lightNode.SortTag = lightNode.GetLightContribution(position, 0.7f);
            }
            else if (lightNode.Light is DirectionalLight)
            {
                DirectionalLights.Add(lightNode);
                lightNode.SortTag = lightNode.GetLightContribution(position, 0.7f);
            }
            else if (lightNode.Light is PointLight)
            {
                PointLights.Add(lightNode);
                lightNode.SortTag = lightNode.GetLightContribution(position, 0.7f);
            }
            else if (lightNode.Light is Spotlight)
            {
                Spotlights.Add(lightNode);
                lightNode.SortTag = lightNode.GetLightContribution(position, 0.7f);
            }
            else if (lightNode.Light is ProjectorLight)
            {
                ProjectorLights.Add(lightNode);
                lightNode.SortTag = lightNode.GetLightContribution(position, 0.7f);
            }
            else if (lightNode.Light is ImageBasedLight)
            {
                ImageBasedLights.Add(lightNode);
                float distance = (position - lightNode.PoseWorld.Position).LengthSquared;
                lightNode.SortTag = -distance; // minus because we use descending sort.
            }
            else
            {
                OtherLights.Add(lightNode);
                lightNode.SortTag = lightNode.GetLightContribution(position, 0.7f);
            }
        }
Ejemplo n.º 6
0
 public void Add(PointLight pointLight)
 {
     PointLights.Add(pointLight);
 }