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); }
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); }