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; }
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"); }
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(); }