Exemplo n.º 1
0
        private static Material CreateLightMaterial(Renderer2DData rendererData, Light2D light, bool isVolume)
        {
            var      isPoint = light.isPointLight;
            Material material;

            if (isVolume)
            {
                material = CoreUtils.CreateEngineMaterial(isPoint ? rendererData.pointLightVolumeShader : rendererData.shapeLightVolumeShader);
            }
            else
            {
                material = CoreUtils.CreateEngineMaterial(isPoint ? rendererData.pointLightShader : rendererData.shapeLightShader);

                if (light.overlapOperation == Light2D.OverlapOperation.Additive)
                {
                    SetBlendModes(material, BlendMode.One, BlendMode.One);
                    material.EnableKeyword(k_UseAdditiveBlendingKeyword);
                }
                else
                {
                    SetBlendModes(material, BlendMode.SrcAlpha, BlendMode.OneMinusSrcAlpha);
                }
            }

            if (light.lightType == Light2D.LightType.Sprite)
            {
                material.EnableKeyword(k_SpriteLightKeyword);
            }

            if (isPoint && light.lightCookieSprite != null && light.lightCookieSprite.texture != null)
            {
                material.EnableKeyword(k_UsePointLightCookiesKeyword);
            }

            if (isPoint && light.normalMapQuality == Light2D.NormalMapQuality.Fast)
            {
                material.EnableKeyword(k_LightQualityFastKeyword);
            }

            if (light.normalMapQuality != Light2D.NormalMapQuality.Disabled)
            {
                material.EnableKeyword(k_UseNormalMap);
            }

            return(material);
        }