コード例 #1
0
 void TryExecuteCommandBuffer <T>(BasePostEffect component, CameraEvent evt)
 {
     if (component.active)
     {
         var cb = GetCommandBuffer <T>(evt, component.GetName());
         cb.Clear();
         component.PopulateCommandBuffer(cb);
     }
     else
     {
         RemoveCommandBuffer <T>();
     }
 }
コード例 #2
0
 void OnDestroy()
 {
     for (int i = 0; i < postEffectList.Count; i++)
     {
         BasePostEffect postEffect = postEffectList[i];
         postEffect.OnDestroy();
     }
     if (renderTextureFactory != null)
     {
         renderTextureFactory.ReleaseAll();
     }
     postEffectList.Clear();
 }
コード例 #3
0
 private void OnDisable()
 {
     for (int i = 0; i < postEffectList.Count; i++)
     {
         BasePostEffect postEffect = postEffectList[i];
         postEffect.OnDisable();
     }
     foreach (var cb in m_CommandBuffers.Values)
     {
         m_Camera.RemoveCommandBuffer(cb.Key, cb.Value);
         cb.Value.Dispose();
     }
     m_CommandBuffers.Clear();
 }
コード例 #4
0
    private bool CheckResources()
    {
        CheckSupport(false);

        for (int i = 0; i < postEffectList.Count; i++)
        {
            BasePostEffect postEffect = postEffectList[i];
            postEffect.CheckShaderAndCreateMaterial();
        }

        if (!isSupported)
        {
            ReportAutoDisable();
        }

        return(isSupported);
    }
コード例 #5
0
    public void OnEnable()
    {
        rendererCamera       = Camera.main;
        isSupported          = true;
        m_CommandBuffers     = new Dictionary <Type, KeyValuePair <CameraEvent, CommandBuffer> >();
        renderTextureFactory = new RenderTextureFactory();
        m_Camera             = gameObject.GetComponent <Camera>();
        PostEffectModelContainer postEffectModel = Resources.Load("PostEffectModelContainer") as PostEffectModelContainer;

        blurEffect = new BlurEffect();
        blurEffect.renderTextureFactory = renderTextureFactory;
        blurEffectModel = postEffectModel.blurEffectModel;
        blurEffect.SetPostEffectModel <BlurEffectModel>(blurEffectModel);

        oldFilmEffect = new OldFilmEffect();
        oldFilmEffect.renderTextureFactory = renderTextureFactory;
        oldFilmEffectModel = postEffectModel.oldFilmEffectModel;
        oldFilmEffect.SetPostEffectModel <OldFilmEffectModel>(oldFilmEffectModel);

        nightVisionEffect = new NightVisionEffect();
        nightVisionEffect.renderTextureFactory = renderTextureFactory;
        nightVisionEffectModel = postEffectModel.nightVisionEffectModel;
        nightVisionEffect.SetPostEffectModel <NightVisionEffectModel>(nightVisionEffectModel);

        ambientOcclusionEffect = new AmbientOcclusionEffect();
        ambientOcclusionEffect.renderTextureFactory = renderTextureFactory;
        ambientOcclusionModel = postEffectModel.ambientOcclusionModel;
        ambientOcclusionEffect.SetPostEffectModel(ambientOcclusionModel);

        postEffectList.Add(blurEffect);
        postEffectList.Add(oldFilmEffect);
        postEffectList.Add(nightVisionEffect);
        postEffectList.Add(ambientOcclusionEffect);

        for (int i = 0; i < postEffectList.Count; i++)
        {
            BasePostEffect postEffect = postEffectList[i];
            postEffect.OnEnable();
        }
        CheckResources();
    }
コード例 #6
0
    void inputs()
    {
        if (Input.GetKeyDown(KeyCode.F1))
        {
            posteffectType      = PosteffecTypes.TROUGH;
            postEffect          = this.GetComponent <Through>();
            postEffect.IsActive = true;
        }
        else if (Input.GetKeyDown(KeyCode.F2))
        {
            posteffectType      = PosteffecTypes.INVERTCOLOR;
            postEffect          = this.GetComponent <InvertColor>();
            postEffect.IsActive = true;

            if (SwitchMode == SwitchModes.MomentaryHumanMode)
            {
                isEffectOn[1] = false;
            }
        }
        else if (Input.GetKeyDown(KeyCode.F3))
        {
            posteffectType      = PosteffecTypes.ZOOM;
            postEffect          = this.GetComponent <Zoom>();
            postEffect.IsActive = true;

            if (SwitchMode == SwitchModes.MomentaryHumanMode)
            {
                isEffectOn[2] = false;
            }
        }
        else if (Input.GetKeyDown(KeyCode.F4))
        {
            posteffectType      = PosteffecTypes.RGBSHIFT;
            postEffect          = this.GetComponent <RGBShift>();
            postEffect.IsActive = true;

            if (SwitchMode == SwitchModes.MomentaryHumanMode)
            {
                isEffectOn[3] = false;
            }
        }
        else if (Input.GetKeyDown(KeyCode.F5))
        {
            posteffectType = PosteffecTypes.GLITCH;
            postEffect.GetComponent <Glitch>();
            postEffect.IsActive = true;

            if (SwitchMode == SwitchModes.MomentaryHumanMode)
            {
                isEffectOn[4] = false;
            }
        }
        else if (Input.GetKeyDown(KeyCode.F6))
        {
            posteffectType      = PosteffecTypes.GRIDFLASH;
            postEffect          = this.GetComponent <GridFlash>();
            postEffect.IsActive = true;

            if (SwitchMode == SwitchModes.MomentaryHumanMode)
            {
                isEffectOn[5] = false;
            }
        }
        else if (Input.GetKeyDown(KeyCode.F7))
        {
            posteffectType      = PosteffecTypes.VERTICALSYMMETRY;
            postEffect          = this.GetComponent <VerticalSymmetry>();
            postEffect.IsActive = true;

            if (SwitchMode == SwitchModes.MomentaryHumanMode)
            {
                isEffectOn[6] = false;
            }
        }
        else if (Input.GetKeyDown(KeyCode.F8))
        {
            posteffectType      = PosteffecTypes.HORIZONTALSYMMETRY;
            postEffect          = this.GetComponent <HorizontalSymmetry>();
            postEffect.IsActive = true;

            if (SwitchMode == SwitchModes.MomentaryHumanMode)
            {
                isEffectOn[7] = false;
            }
        }
        else if (Input.GetKeyDown(KeyCode.F9))
        {
            posteffectType      = PosteffecTypes.MOSAIC;
            postEffect          = this.GetComponent <Mosaic>();
            postEffect.IsActive = true;

            if (SwitchMode == SwitchModes.MomentaryHumanMode)
            {
                isEffectOn[8] = false;
            }
        }
        else if (Input.GetKeyDown(KeyCode.F10))
        {
            posteffectType      = PosteffecTypes.TILE;
            postEffect          = this.GetComponent <Tile>();
            postEffect.IsActive = true;

            if (SwitchMode == SwitchModes.MomentaryHumanMode)
            {
                isEffectOn[9] = false;
            }
        }
        else if (Input.GetKeyDown(KeyCode.F11))
        {
            posteffectType      = PosteffecTypes.FEEDBACK;
            postEffect          = this.GetComponent <Feedback>();
            postEffect.IsActive = true;

            if (SwitchMode == SwitchModes.MomentaryHumanMode)
            {
                isEffectOn[10] = false;
            }
        }
        else if (Input.GetKeyDown(KeyCode.F12))
        {
            posteffectType      = PosteffecTypes.EDGE;
            postEffect          = this.GetComponent <SobelEdge>();
            postEffect.IsActive = true;

            if (SwitchMode == SwitchModes.MomentaryHumanMode)
            {
                isEffectOn[11] = false;
            }
        }

        else if (Input.GetKeyDown(KeyCode.Alpha1))
        {
            posteffectType      = PosteffecTypes.DISTORTION;
            postEffect          = this.GetComponent <Distortion>();
            postEffect.IsActive = true;

            if (SwitchMode == SwitchModes.MomentaryHumanMode)
            {
                isEffectOn[12] = false;
            }
        }

        else if (Input.GetKeyDown(KeyCode.Alpha2))
        {
            posteffectType      = PosteffecTypes.PIXLESORTING;
            postEffect          = this.GetComponent <PixleSorting>();
            postEffect.IsActive = true;

            if (SwitchMode == SwitchModes.MomentaryHumanMode)
            {
                isEffectOn[13] = false;
            }
        }

        else if (Input.GetKeyDown(KeyCode.Alpha3))
        {
            posteffectType      = PosteffecTypes.PINGPONGFLASH;
            postEffect          = this.GetComponent <PingPongFlash>();
            postEffect.IsActive = true;

            if (SwitchMode == SwitchModes.MomentaryHumanMode)
            {
                isEffectOn[14] = false;
            }
        }
        else if (SwitchMode == SwitchModes.HumanMode)
        {
            if (temp != postEffect)
            {
                if (temp != null)
                {
                    temp.IsActive = false;
                }
            }

            temp = postEffect;
        }
    }