private void DisposeSceneCamera()
    {
        if (m_postProcessing != null)
        {
            DestroyImmediate(m_postProcessing);
        }

        m_sceneCamera          = null;
        m_postProcessing       = null;
        m_appliedToSceneCamera = false;
    }
    private void UpdateSceneCamera()
    {
        if (m_attachedToSceneCamera)
        {
            return;
        }

        if (!ApplyToSceneCamera)
        {
            DisposeSceneCamera();
            return;
        }

        if (m_appliedToSceneCamera)
        {
            return;
        }

        var window = EditorWindow.GetWindow <SceneView>(false, "", false);
        var camera = window ? window.camera : null;

        if (m_sceneCamera && m_sceneCamera != camera)
        {
            DisposeSceneCamera();
        }
        m_sceneCamera = camera;

        if (camera == null)
        {
            return;
        }

        var pp = (PostProcessingBase)camera.GetComponent(GetType());

        if (pp && pp != m_postProcessing)
        {
            DestroyImmediate(pp);
            pp = null;
        }

        if (pp == null)
        {
            pp = (PostProcessingBase)camera.gameObject.AddComponent(GetType());
            pp.m_attachedToSceneCamera = true;
        }

        EditorUtility.CopySerialized(this, pp);
        m_postProcessing = pp;

        m_appliedToSceneCamera = true;
    }
    private void RenderTargetInitializer()
    {
        RenderTextureFormat rtf = openBloom ? PostProcessingBase.ChangeRenderTextureFormat(RenderTextureFormat.RGB111110Float) : RenderTextureFormat.ARGB32;
        string msaalevel        = openMSAA ? "MSAAx4" : "Base";

        renderTarget = new RenderTexture(resolutionWidth[(int)devLevel], resolutionHeight[(int)devLevel], 24, rtf, RenderTextureReadWrite.Linear)
        {
            antiAliasing = openMSAA ? 4 : 1,
            name         = "PostProcessing_" + msaalevel,
            filterMode   = FilterMode.Bilinear,
            wrapMode     = TextureWrapMode.Clamp
        };
        renderTarget.Create();
    }
 void ChangePostEffectType()
 {
     if (lateBloom != openBloom)
     {
         if (openBloom)
         {
             postBase = new PostProcessingBloomBase();
             postBase.Enable(this);
             postBaseDic.Add((int)EffectType.Bloom, postBase);
         }
         else
         {
             blendMat.DisableKeyword("BLOOM");
             blendMat.DisableKeyword("QUALITYBLOOM");
             postBaseDic[(int)EffectType.Bloom].Disable();
             postBaseDic.Remove((int)EffectType.Bloom);
         }
         lateBloom = openBloom;
     }
     if (lateFXAA != openFXAA)
     {
         if (openFXAA)
         {
             blendMat.EnableKeyword("FXAA");
             postBase = new PostProcessingFXAA();
             postBase.Enable(this);
             postBaseDic.Add((int)EffectType.FXAA, postBase);
         }
         else
         {
             blendMat.DisableKeyword("FXAA");
             postBaseDic[(int)EffectType.FXAA].Disable();
             postBaseDic.Remove((int)EffectType.FXAA);
         }
         lateFXAA = openFXAA;
     }
     if (lateDOF != openDepthOfFiled)
     {
         if (openDepthOfFiled)
         {
             postBase = new PostProcessingDepthOfFiledBase();
             postBase.Enable(this, mainCamera);
             postBaseDic.Add((int)EffectType.DepthOfFiled, postBase);
         }
         else
         {
             blendMat.DisableKeyword("DOF");
             blendMat.DisableKeyword("QUALITYDOF");
             postBaseDic[(int)EffectType.DepthOfFiled].Disable(mainCamera);
             postBaseDic.Remove((int)EffectType.DepthOfFiled);
         }
         lateDOF = openDepthOfFiled;
     }
     if (lateLUT != openLUT)
     {
         if (openLUT)
         {
             blendMat.EnableKeyword("LUT");
             postBase = new PostProcessingLUT();
             postBase.Enable(this);
             postBaseDic.Add((int)EffectType.LUT, postBase);
         }
         else
         {
             blendMat.DisableKeyword("LUT");
             postBaseDic[(int)EffectType.LUT].Disable();
             postBaseDic.Remove((int)EffectType.LUT);
         }
         lateLUT = openLUT;
     }
     if (lateMeanBlur != openMeanBlur)
     {
         if (openMeanBlur)
         {
             blendMat.EnableKeyword("MEANBLUR");
             postBase = new PostProcessingMeanBlur();
             postBase.Enable(this);
             postBaseDic.Add((int)EffectType.MeanBlur, postBase);
         }
         else
         {
             blendMat.DisableKeyword("MEANBLUR");
             postBaseDic[(int)EffectType.MeanBlur].Disable();
             postBaseDic.Remove((int)EffectType.MeanBlur);
         }
         lateMeanBlur = openMeanBlur;
     }
     if (lateMotionBlur != openMotionBlur)
     {
         if (openMotionBlur)
         {
             blendMat.EnableKeyword("MOTIONBLUR");
             postBase = new PostProcessingMotionBlur();
             postBase.Enable(this);
             postBaseDic.Add((int)EffectType.MotionBlur, postBase);
         }
         else
         {
             blendMat.DisableKeyword("MOTIONBLUR");
             postBaseDic[(int)EffectType.MotionBlur].Disable();
             postBaseDic.Remove((int)EffectType.MotionBlur);
         }
         lateMotionBlur = openMotionBlur;
     }
     if (lateRediaBlur != openRediaBlur)
     {
         if (openRediaBlur)
         {
             blendMat.EnableKeyword("RADIABLUR");
             postBase = new PostProcessingRadiaBlur();
             postBase.Enable(this);
             postBaseDic.Add((int)EffectType.RediaBlur, postBase);
         }
         else
         {
             blendMat.DisableKeyword("RADIABLUR");
             postBaseDic[(int)EffectType.RediaBlur].Disable();
             postBaseDic.Remove((int)EffectType.RediaBlur);
         }
         lateRediaBlur = openRediaBlur;
     }
     if (lateWideScreen != openWideScreenVignette)
     {
         if (openWideScreenVignette)
         {
             blendMat.EnableKeyword("WINDSCREEN");
             postBase = new PostProcessingWideScreen();
             postBase.Enable(this);
             postBaseDic.Add((int)EffectType.WideScreenVignette, postBase);
         }
         else
         {
             blendMat.DisableKeyword("WINDSCREEN");
             postBaseDic[(int)EffectType.WideScreenVignette].Disable();
             postBaseDic.Remove((int)EffectType.WideScreenVignette);
         }
         lateWideScreen = openWideScreenVignette;
     }
     if (openBloom && openDepthOfFiled)
     {
         blendMat.EnableKeyword("MULTIPASS");
     }
     else
     {
         blendMat.DisableKeyword("MULTIPASS");
     }
     //if (lateSSAO != openSSAO)
     //{
     //    if (openSSAO)
     //    {
     //        blendMat.EnableKeyword("SSAO");
     //        postBase = new PostProcessingSSAO();
     //        postBase.Enable(this,mainCamera);
     //        postBaseDic.Add(EffectType.SSAO, postBase);
     //    }
     //    else
     //    {
     //        blendMat.DisableKeyword("SSAO");
     //        postBaseDic[EffectType.SSAO].Disable(mainCamera);
     //        postBaseDic.Remove(EffectType.SSAO);
     //    }
     //    lateSSAO = openSSAO;
     //}
 }