Skip to content

Commit 9492a62

Browse files
Internal/2022.3/staging
Internal/2022.3/staging
2 parents 5db5bca + 4694a5f commit 9492a62

File tree

6 files changed

+315
-157
lines changed

6 files changed

+315
-157
lines changed

Packages/com.unity.render-pipelines.universal/Editor/ShaderBuildPreprocessor.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -713,7 +713,11 @@ internal static ShaderFeatures GetSupportedShaderFeaturesFromRendererFeatures(re
713713
continue;
714714

715715
// Rendering Layers...
716-
if (rendererRequirements.isUniversalRenderer && rendererFeature.RequireRenderingLayers(isDeferredRenderer, rendererRequirements.needsGBufferAccurateNormals, out RenderingLayerUtils.Event rendererEvent, out _))
716+
if (rendererRequirements.isUniversalRenderer &&
717+
RenderingLayerUtils.RequireRenderingLayers(rendererFeatures,
718+
rendererRequirements.renderingMode,
719+
rendererRequirements.needsGBufferAccurateNormals,
720+
rendererRequirements.msaaSampleCount, out RenderingLayerUtils.Event rendererEvent, out _))
717721
{
718722
usesRenderingLayers = true;
719723
RenderingLayerUtils.CombineRendererEvents(isDeferredRenderer, rendererRequirements.msaaSampleCount, rendererEvent, ref renderingLayersEvent);

Packages/com.unity.render-pipelines.universal/Runtime/RenderingLayerUtils.cs

Lines changed: 12 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -34,65 +34,34 @@ public static void CombineRendererEvents(bool isDeferred, int msaaSampleCount, E
3434
combinedEvent = Combine(combinedEvent, rendererEvent);
3535
}
3636

37-
/// <summary>
38-
/// Returns True if <see cref="UniversalRendererData"/> will require rendering layers texture.
39-
/// </summary>
40-
/// <param name="universalRendererData"></param>
41-
/// <param name="msaaSampleCount">Number of MSAA Samples</param>
42-
/// <param name="combinedEvent">Event at which rendering layers texture needs to be created</param>
43-
/// <param name="combinedMaskSize">The mask size of rendering layers texture</param>
44-
public static bool RequireRenderingLayers(UniversalRendererData universalRendererData, int msaaSampleCount, out Event combinedEvent, out MaskSize combinedMaskSize)
45-
{
46-
combinedEvent = Event.Opaque;
47-
combinedMaskSize = MaskSize.Bits8;
48-
49-
bool isDeferred = universalRendererData.renderingMode == RenderingMode.Deferred;
50-
bool result = false;
51-
foreach (var rendererFeature in universalRendererData.rendererFeatures)
52-
{
53-
if (rendererFeature.isActive)
54-
{
55-
result |= rendererFeature.RequireRenderingLayers(isDeferred, universalRendererData.accurateGbufferNormals, out Event rendererEvent, out MaskSize rendererMaskSize);
56-
combinedEvent = Combine(combinedEvent, rendererEvent);
57-
combinedMaskSize = Combine(combinedMaskSize, rendererMaskSize);
58-
}
59-
}
60-
61-
// Rendering layers can not use MSAA resolve, because it encodes integer
62-
if (msaaSampleCount > 1 && combinedEvent == Event.Opaque && !isDeferred)
63-
combinedEvent = Event.DepthNormalPrePass;
64-
65-
// Make sure texture has enough bits to encode all rendering layers in urp global settings
66-
if (UniversalRenderPipelineGlobalSettings.instance)
67-
{
68-
int count = UniversalRenderPipelineGlobalSettings.instance.renderingLayerMaskNames.Length;
69-
MaskSize maskSize = RenderingLayerUtils.GetMaskSize(count);
70-
combinedMaskSize = Combine(combinedMaskSize, maskSize);
71-
}
72-
73-
return result;
74-
}
75-
7637
/// <summary>
7738
/// Returns True if <see cref="UniversalRenderer"/> will require rendering layers texture.
7839
/// </summary>
7940
/// <param name="universalRenderer"></param>
80-
/// <param name="rendererFeatures">Event at which rendering layers texture needs to be created</param>
81-
/// <param name="msaaSampleCount">Number of MSAA Samples</param>
41+
/// <param name="rendererFeatures">List of renderer features used by the renderer</param>
42+
/// <param name="msaaSampleCount">MSAA sample count</param>
8243
/// <param name="combinedEvent">Event at which rendering layers texture needs to be created</param>
8344
/// <param name="combinedMaskSize">The mask size of rendering layers texture</param>
8445
public static bool RequireRenderingLayers(UniversalRenderer universalRenderer, List<ScriptableRendererFeature> rendererFeatures, int msaaSampleCount, out Event combinedEvent, out MaskSize combinedMaskSize)
46+
{
47+
RenderingMode renderingMode = universalRenderer.renderingModeActual;
48+
bool accurateGBufferNormals = universalRenderer.accurateGbufferNormals;
49+
return RequireRenderingLayers(rendererFeatures, renderingMode, accurateGBufferNormals, msaaSampleCount,
50+
out combinedEvent, out combinedMaskSize);
51+
}
52+
53+
internal static bool RequireRenderingLayers(List<ScriptableRendererFeature> rendererFeatures, RenderingMode renderingMode, bool accurateGbufferNormals, int msaaSampleCount, out Event combinedEvent, out MaskSize combinedMaskSize)
8554
{
8655
combinedEvent = Event.Opaque;
8756
combinedMaskSize = MaskSize.Bits8;
8857

89-
bool isDeferred = universalRenderer.renderingModeActual == RenderingMode.Deferred;
58+
bool isDeferred = renderingMode == RenderingMode.Deferred;
9059
bool result = false;
9160
foreach (var rendererFeature in rendererFeatures)
9261
{
9362
if (rendererFeature.isActive)
9463
{
95-
result |= rendererFeature.RequireRenderingLayers(isDeferred, universalRenderer.accurateGbufferNormals, out Event rendererEvent, out MaskSize rendererMaskSize);
64+
result |= rendererFeature.RequireRenderingLayers(isDeferred, accurateGbufferNormals, out Event rendererEvent, out MaskSize rendererMaskSize);
9665
combinedEvent = Combine(combinedEvent, rendererEvent);
9766
combinedMaskSize = Combine(combinedMaskSize, rendererMaskSize);
9867
}

0 commit comments

Comments
 (0)