private void OnRenderImage(RenderTexture source, RenderTexture destination)
    {
        RenderTexture output = source;
        RenderTexture temp   = RT.GetFullTemp();

        Graphics.Blit(output, temp);
        if (tvLines)
        {
            tvlinesMaterial.SetFloat("_LineSize", lineSize);
            tvlinesMaterial.SetFloat("_Amount", amount);
            output = RT.GetFullTemp();
            Graphics.Blit(temp, output, tvlinesMaterial);
            temp = output;
        }

        if (tvDistort)
        {
            tvDistortMaterial.SetFloat("_Amount", distortAmount);
            tvDistortMaterial.SetFloat("_Size", distortSize);
            tvDistortMaterial.SetFloat("_Zoom", 1 - zoom);
            output = RT.GetFullTemp();
            Graphics.Blit(temp, output, tvDistortMaterial);
            temp = output;
        }

        if (tvBleed)
        {
            Graphics.Blit(temp, source);
            kawaseMaterial.SetFloat("_Radius", bleedRadius);
            output = RT.GetFullTemp();
            Graphics.Blit(temp, output, kawaseMaterial);
            temp   = output;
            output = RT.GetFullTemp();
            bleedCombineMaterial.SetTexture("_LastTex", source);
            bleedCombineMaterial.SetFloat("_Amount", bleedAmount);
            Graphics.Blit(temp, output, bleedCombineMaterial);
            temp = output;
        }

        Graphics.Blit(output, destination);
    }
Esempio n. 2
0
    private void OnRenderImage(RenderTexture source, RenderTexture destination)
    {
        RenderTexture output = source;
        RenderTexture temp   = RT.GetFullTemp();

        Graphics.Blit(output, temp);

        if (tvColor)
        {
            tvColorMaterial.SetFloat("_Amount", tvColorAmount);
            tvColorMaterial.SetFloat("_GrainAmount", tvColorGrainAmount);
            tvColorMaterial.SetTexture("_Noise", Noise.blueNoise);
            tvColorMaterial.SetVector("_OffsetR", tvColorOffsetR);
            tvColorMaterial.SetVector("_OffsetG", tvColorOffsetG);
            tvColorMaterial.SetVector("_OffsetB", tvColorOffsetB);
            output = RT.GetFullTemp();
            Graphics.Blit(temp, output, tvColorMaterial);
            temp = output;
        }

        if (tvGhost)
        {
            tvGhostMaterial.SetVector("_Displacement", ghostDisplacement);
            tvGhostMaterial.SetFloat("_Amount", ghostAmount * 0.5f);
            output = RT.GetFullTemp();
            Graphics.Blit(temp, output, tvGhostMaterial);
            temp = output;
        }

        if (tvLightStreaks)
        {
            Graphics.Blit(temp, rtLightStreak0);
            tvLightStreakMaterial.SetTexture("_LightStreakTex", rtLightStreak0);

            for (int i = 0; i < tvLightStreaksIterations; i++)
            {
                Graphics.Blit(rtLightStreak0, rtLightStreak1, boxBlurMaterial);
                Graphics.Blit(rtLightStreak1, rtLightStreak0, boxBlurMaterial);
            }

            tvLightStreakMaterial.SetVector("_Treshold", tvLightStreaksTreshold);
            tvLightStreakMaterial.SetFloat("_Amount", tvLightStreaksAmount);
            output = RT.GetFullTemp();
            Graphics.Blit(temp, output, tvLightStreakMaterial);
            temp = output;
        }

        if (tvLines)
        {
            tvLinesMaterial.SetFloat("_LineSize", lineSize);
            tvLinesMaterial.SetFloat("_Amount", linesAmount);
            output = RT.GetFullTemp();
            Graphics.Blit(temp, output, tvLinesMaterial);
            temp = output;
        }

        if (tvDistort)
        {
            tvDistortMaterial.SetFloat("_Amount", distortAmount);
            tvDistortMaterial.SetFloat("_Size", distortSize);
            tvDistortMaterial.SetFloat("_Zoom", 1 - zoom);
            output = RT.GetFullTemp();
            Graphics.Blit(temp, output, tvDistortMaterial);
            temp = output;
        }

        if (tvBleed)
        {
            Graphics.Blit(temp, source);
            boxBlurMaterial.SetVector("_Direction", new Vector2(0f, bleedRadius));
            output = RT.GetFullTemp();
            Graphics.Blit(temp, output, boxBlurMaterial);
            temp   = output;
            output = RT.GetFullTemp();
            bleedCombineMaterial.SetTexture("_LastTex", source);
            bleedCombineMaterial.SetFloat("_Amount", bleedAmount);
            Graphics.Blit(temp, output, bleedCombineMaterial);
            temp = output;
        }

        Graphics.Blit(output, destination);
    }