//using UnityEngine.Rendering; //namespace UnityEngine.PostProcessing //{ // public sealed class FogComponent : PostProcessingComponentCommandBuffer // { // static class Uniforms // { // internal static readonly int _FogColor = Shader.PropertyToID("_FogColor"); // internal static readonly int _Density = Shader.PropertyToID("_Density"); // internal static readonly int _Start = Shader.PropertyToID("_Start"); // internal static readonly int _End = Shader.PropertyToID("_End"); // internal static readonly int _TempRT = Shader.PropertyToID("_TempRT"); // } // const string k_ShaderString = "Hidden/Post FX/Fog"; // public override bool active // { // get // { // return model.enabled // && context.isGBufferAvailable // In forward fog is already done at shader level // && RenderSettings.fog // && !context.interrupted; // } // } // public override string GetName() // { // return "Fog"; // } // public override DepthTextureMode GetCameraFlags() // { // return DepthTextureMode.Depth; // } // public override CameraEvent GetCameraEvent() // { // return CameraEvent.AfterImageEffectsOpaque; // } // public override void PopulateCommandBuffer(CommandBuffer cb) // { // var settings = model.settings; // var material = context.materialFactory.Get(k_ShaderString); // material.shaderKeywords = null; // var fogColor = GraphicsUtils.isLinearColorSpace ? RenderSettings.fogColor.linear : RenderSettings.fogColor; // material.SetColor(Uniforms._FogColor, fogColor); // material.SetFloat(Uniforms._Density, RenderSettings.fogDensity); // material.SetFloat(Uniforms._Start, RenderSettings.fogStartDistance); // material.SetFloat(Uniforms._End, RenderSettings.fogEndDistance); // switch (RenderSettings.fogMode) // { // case FogMode.Linear: // material.EnableKeyword("FOG_LINEAR"); // break; // case FogMode.Exponential: // material.EnableKeyword("FOG_EXP"); // break; // case FogMode.ExponentialSquared: // material.EnableKeyword("FOG_EXP2"); // break; // } // var fbFormat = context.isHdr // ? RenderTextureFormat.DefaultHDR // : RenderTextureFormat.Default; // cb.GetTemporaryRT(Uniforms._TempRT, context.width, context.height, 24, FilterMode.Bilinear, fbFormat); // cb.Blit(BuiltinRenderTextureType.CameraTarget, Uniforms._TempRT); // cb.Blit(Uniforms._TempRT, BuiltinRenderTextureType.CameraTarget, material, settings.excludeSkybox ? 1 : 0); // cb.ReleaseTemporaryRT(Uniforms._TempRT); // } // } //}