public void CreateTexturedFog() { fogMode = CurrentFogMode.Textured; //Pick colour of main light Color mainLightColor = Color.white; mainLightColor = EnviroSkyMgr.instance.Components.DirectLight.GetComponent <Light>().color; GameObject groundFogGo = GameObject.Find("Fog Volume [Ground Fog] for Enviro"); DestroyImmediate(groundFogGo); if (groundFogGo == null) { groundFogGo = new GameObject(); groundFogGo.name = "Fog Volume [Ground Fog] for Enviro"; Renderer rend = groundFogGo.AddComponent <MeshRenderer>(); if (rend != null) { rend.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; rend.reflectionProbeUsage = UnityEngine.Rendering.ReflectionProbeUsage.Off; rend.receiveShadows = false; rend.lightProbeUsage = UnityEngine.Rendering.LightProbeUsage.Off; } groundFogGo.AddComponent <FogVolume>(); } //Adjust Fog Settings FogVolume fVolume = groundFogGo.GetComponent <FogVolume>(); if (fVolume != null) { fVolume.transform.position = fogPosition; fVolume.fogVolumeScale = new Vector3(EnviroSkyMgr.instance.Camera.farClipPlane, EnviroSkyMgr.instance.Camera.farClipPlane * 0.2f, EnviroSkyMgr.instance.Camera.farClipPlane); fVolume.FogMainColor = Color.grey; fVolume.Visibility = 800f; fVolume._FogType = FogVolume.FogType.Textured; fVolume.EnableGradient = true; fVolume.bVolumeFog = false; fVolume._BlendMode = FogVolumeRenderer.BlendMode.PremultipliedTransparency; fVolume.EnableInscattering = true; fVolume.InscatteringColor = Color.Lerp(mainLightColor, Color.black, 0.8f); fVolume.VolumeFogInscatteringAnisotropy = 0.59f; fVolume.InscatteringIntensity = 0.07f; fVolume.InscatteringStartDistance = 5f; fVolume.InscatteringTransitionWideness = 300f; fVolume.DrawOrder = 3; fVolume._PushAlpha = 1.0025f; fVolume._ztest = UnityEngine.Rendering.CompareFunction.Always; // Assign Fog for runtime Controls fog = fVolume; CheckCamera(); } }
void Start() { if (EnviroSkyMgr.instance == null) { this.enabled = false; Debug.Log("Deactivated Fog Volume Integration. No EnviroSkyMgr instance in scene!"); return; } myLight = EnviroSkyMgr.instance.Components.DirectLight.GetComponent <Light>(); if (fog == null) { fogMode = CurrentFogMode.None; } }