示例#1
0
        protected override void ReadFromImpl(object obj)
        {
            base.ReadFromImpl(obj);
            Light uo = (Light)obj;

            shadows                  = uo.shadows;
            shadowStrength           = uo.shadowStrength;
            shadowResolution         = uo.shadowResolution;
            layerShadowCullDistances = uo.layerShadowCullDistances;
            cookieSize               = uo.cookieSize;
            cookie                 = ToID(uo.cookie);
            renderMode             = uo.renderMode;
            areaSize               = uo.areaSize;
            lightmapBakeType       = uo.lightmapBakeType;
            type                   = uo.type;
            spotAngle              = uo.spotAngle;
            color                  = uo.color;
            colorTemperature       = uo.colorTemperature;
            intensity              = uo.intensity;
            bounceIntensity        = uo.bounceIntensity;
            shadowCustomResolution = uo.shadowCustomResolution;
            shadowBias             = uo.shadowBias;
            shadowNormalBias       = uo.shadowNormalBias;
            shadowNearPlane        = uo.shadowNearPlane;
            range                  = uo.range;
            flare                  = ToID(uo.flare);
            bakingOutput           = uo.bakingOutput;
            cullingMask            = uo.cullingMask;
            lightShadowCasterMode  = uo.lightShadowCasterMode;
            shadowRadius           = uo.shadowRadius;
            shadowAngle            = uo.shadowAngle;
        }
示例#2
0
        private void Start()
        {
            light = GetComponent <Light>();
            DesiredLightShadowQuality = light.shadows;
            InspectorShadowResolution = light.shadowResolution;
            InitiallyOn = light.enabled;

            //Replace this with your "Player" object
            LODCameras = new List <LightLODCamera>(GameObject.FindObjectsOfType <LightLODCamera>());

            StartCoroutine("AdjustLODQuality");
        }
示例#3
0
        public LightSerializable(Light obj) : base(obj)
        {
            type      = obj.type;
            range     = obj.range;
            spotAngle = obj.spotAngle;

            color           = obj.color;
            intensity       = obj.intensity;
            bounceIntensity = obj.bounceIntensity;

            shadows          = obj.shadows;
            shadowStrength   = obj.shadowStrength;
            shadowResolution = obj.shadowResolution;
            shadowBias       = obj.shadowBias;
            shadowNormalBias = obj.shadowNormalBias;
            shadowNearPlane  = obj.shadowNearPlane;

            cookie      = obj.cookie != null ? new TextureUnion(obj.cookie) : null;
            cookieSize  = obj.cookieSize;
            renderMode  = obj.renderMode;
            cullingMask = obj.cullingMask;
        }
        void castShadow()
        {
            /*
             * rtArray.dimension = TextureDimension.Tex2DArray;
             * rtArray.volumeDepth = 9;
             * rtArray.Create();
             */
            if (shadowResolution == LightShadowResolution.FromQualitySettings)
            {
                shadowResolution = (LightShadowResolution)QualitySettings.shadowResolution;
            }
            int rtSize = (1 << (int)shadowResolution) * 1024;

            shadowmap = new RenderTexture(rtSize, rtSize, 16 /*depth*/, RenderTextureFormat.Shadowmap, RenderTextureReadWrite.Linear);

            shadowmap.useMipMap        = false;
            shadowmap.autoGenerateMips = false;
            shadowmap.filterMode       = FilterMode.Bilinear;
            shadowmap.name             = "StaticShadowmap";
            shadowmap.Create();

            cmr.enabled = false;
            //cmr.targetTexture = shadowmap;

            Shader.SetGlobalTexture("_shadowmap", shadowmap);
            Shader.SetGlobalFloat("_shadowmapEnable", 1);
            foreach (var renderer in FindObjectsOfType <Renderer>())
            {
                //一定要留至少一个对象投射阴影 否则整个阴影流程会被引擎 优化掉 直接跳过我们的静态阴影
                if (renderer.gameObject.CompareTag("staticShadowmap"))
                {
                    renderer.shadowCastingMode = ShadowCastingMode.Off;
                }
            }


            renderShadow();
        }