Skip to content
This repository was archived by the owner on Nov 30, 2020. It is now read-only.

Commit f69425a

Browse files
committed
Remove separate pass from PostProcess Uber shader
y-Flip is now controlled with a uniform
1 parent bd53778 commit f69425a

File tree

4 files changed

+29
-19
lines changed

4 files changed

+29
-19
lines changed

PostProcessing/Runtime/PostProcessLayer.cs

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -781,6 +781,19 @@ void RenderList(List<SerializedBundleRef> list, PostProcessRenderContext context
781781
cmd.EndSample(marker);
782782
}
783783

784+
void ApplyFlip(PostProcessRenderContext context, MaterialPropertyBlock properties)
785+
{
786+
if (context.flip && !context.isSceneView)
787+
properties.SetVector(ShaderIDs.UVTransform, new Vector4(1.0f, 1.0f, 0.0f, 0.0f));
788+
else
789+
ApplyDefaultFlip(properties);
790+
}
791+
792+
void ApplyDefaultFlip(MaterialPropertyBlock properties)
793+
{
794+
properties.SetVector(ShaderIDs.UVTransform, SystemInfo.graphicsUVStartsAtTop ? new Vector4(1.0f, -1.0f, 0.0f, 1.0f) : new Vector4(1.0f, 1.0f, 0.0f, 0.0f));
795+
}
796+
784797
int RenderBuiltins(PostProcessRenderContext context, bool isFinalPass, int releaseTargetAfterUse = -1)
785798
{
786799
var uberSheet = context.propertySheets.Get(context.resources.shaders.uber);
@@ -833,18 +846,19 @@ int RenderBuiltins(PostProcessRenderContext context, bool isFinalPass, int relea
833846
if (!breakBeforeColorGrading)
834847
RenderEffect<ColorGrading>(context);
835848

836-
int pass = 0;
837-
838849
if (isFinalPass)
839850
{
840851
uberSheet.EnableKeyword("FINALPASS");
841852
dithering.Render(context);
842-
843-
if (context.flip && !context.isSceneView)
844-
pass = 1;
853+
ApplyFlip(context, uberSheet.properties);
854+
}
855+
else
856+
{
857+
uberSheet.EnableKeyword("FINALPASS");
858+
ApplyDefaultFlip(uberSheet.properties);
845859
}
846860

847-
cmd.BlitFullscreenTriangle(context.source, context.destination, uberSheet, pass);
861+
cmd.BlitFullscreenTriangle(context.source, context.destination, uberSheet, 0);
848862

849863
context.source = context.destination;
850864
context.destination = finalDestination;
@@ -901,7 +915,8 @@ void RenderFinalPass(PostProcessRenderContext context, int releaseTargetAfterUse
901915

902916
dithering.Render(context);
903917

904-
cmd.BlitFullscreenTriangle(context.source, context.destination, uberSheet, (context.flip && !context.isSceneView) ? 1 : 0);
918+
ApplyFlip(context, uberSheet.properties);
919+
cmd.BlitFullscreenTriangle(context.source, context.destination, uberSheet, 0);
905920

906921
if (tempTarget > -1)
907922
cmd.ReleaseTemporaryRT(tempTarget);

PostProcessing/Runtime/Utils/ShaderIDs.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,5 +146,7 @@ static class ShaderIDs
146146
internal static readonly int VectorscopeBuffer = Shader.PropertyToID("_VectorscopeBuffer");
147147

148148
internal static readonly int RenderViewportScaleFactor = Shader.PropertyToID("_RenderViewportScaleFactor");
149+
150+
internal static readonly int UVTransform = Shader.PropertyToID("_UVTransform");
149151
}
150152
}

PostProcessing/Shaders/Builtins/Uber.shader

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -244,20 +244,11 @@ Shader "Hidden/PostProcessing/Uber"
244244
{
245245
HLSLPROGRAM
246246

247-
#pragma vertex VertDefault
247+
#pragma vertex VertUVTransform
248248
#pragma fragment FragUber
249249

250250
ENDHLSL
251251
}
252252

253-
Pass
254-
{
255-
HLSLPROGRAM
256-
257-
#pragma vertex VertDefaultNoFlip
258-
#pragma fragment FragUber
259-
260-
ENDHLSL
261-
}
262253
}
263254
}

PostProcessing/Shaders/StdLib.hlsl

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -282,11 +282,13 @@ VaryingsDefault VertDefault(AttributesDefault v)
282282
return o;
283283
}
284284

285-
VaryingsDefault VertDefaultNoFlip(AttributesDefault v)
285+
float4 _UVTransform; // xy: scale, wz: translate
286+
287+
VaryingsDefault VertUVTransform(AttributesDefault v)
286288
{
287289
VaryingsDefault o;
288290
o.vertex = float4(v.vertex.xy, 0.0, 1.0);
289-
o.texcoord = TransformTriangleVertexToUV(v.vertex.xy);
291+
o.texcoord = TransformTriangleVertexToUV(v.vertex.xy) * _UVTransform.xy + _UVTransform.zw;
290292
o.texcoordStereo = TransformStereoScreenSpaceTex(o.texcoord, 1.0);
291293
return o;
292294
}

0 commit comments

Comments
 (0)