Пример #1
0
    void CreateMaterials()
    {
        if (FXMaterialHBlur == null)
        {
            FXMaterialHBlur           = new Material(FXShaderHBlur);
            FXMaterialHBlur.hideFlags = HideFlags.HideAndDontSave;
        }
        if (FXMaterialVBlur == null)
        {
            FXMaterialVBlur           = new Material(FXShaderVBlur);
            FXMaterialVBlur.hideFlags = HideFlags.HideAndDontSave;
        }

        if (FXMaterialNeon == null)
        {
            FXMaterialNeon           = new Material(FXShaderNeon);
            FXMaterialNeon.hideFlags = HideFlags.HideAndDontSave;
        }

        FXMaterialHBlur.SetFloat("_Shift", shiftOffset);
        FXMaterialVBlur.SetFloat("_Shift", shiftOffset);

        FXMaterialNeon.SetFloat("_GlowCoef", glowCoef);
        FXMaterialNeon.SetFloat("_WhiteCoef", whiteCoef);
        FXMaterialNeon.SetFloat("_WhitePow", whitePow);
    }
Пример #2
0
    void OnRenderImage(RenderTexture source, RenderTexture destination)    //Fonction appelée par unity à chaque fin de rendu. C'est maintenant qu'on fait le post-effet
    {
        CreateMaterials();
        RenderTexture rtEmission = RenderTexture.GetTemporary(Screen.width, Screen.height);
        RenderTexture rtHBlur    = RenderTexture.GetTemporary(Screen.width, Screen.height);
        RenderTexture rtVBlur    = RenderTexture.GetTemporary(Screen.width, Screen.height);

        Graphics.Blit(cameraNeon.rt, rtEmission);

        for (int i = 0; i < nbPass; i++)
        {
            Graphics.Blit(rtEmission, rtHBlur, FXMaterialHBlur); // Horizontal blur
            Graphics.Blit(rtHBlur, rtEmission, FXMaterialVBlur); // Vertical blur
        }

        FXMaterialNeon.SetTexture("_NeonTex", cameraNeon.rt);
        FXMaterialNeon.SetTexture("_BlurredNeonTex", rtEmission);
        Graphics.Blit(source, destination, FXMaterialNeon);

        RenderTexture.ReleaseTemporary(rtEmission);
        RenderTexture.ReleaseTemporary(rtHBlur);
        RenderTexture.ReleaseTemporary(rtVBlur);
    }