@@ -37,12 +37,12 @@ internal ShaderFeatures defaultURPAssetFeatures
37
37
ShaderFeatures . MainLight
38
38
| ShaderFeatures . MixedLighting
39
39
| ShaderFeatures . TerrainHoles
40
- | ShaderFeatures . DrawProcedural
41
40
| ShaderFeatures . LightCookies
42
41
| ShaderFeatures . LODCrossFade
43
42
| ShaderFeatures . AutoSHMode
44
43
| ShaderFeatures . DataDrivenLensFlare
45
- | ShaderFeatures . ScreenSpaceLensFlare ;
44
+ | ShaderFeatures . ScreenSpaceLensFlare
45
+ | GetCorrectProceduralKeyword ( ref defaultRendererRequirements ) ;
46
46
47
47
if ( PlayerSettings . allowHDRDisplaySupport )
48
48
defaultFeatures |= ShaderFeatures . HdrGrading ;
@@ -51,23 +51,14 @@ internal ShaderFeatures defaultURPAssetFeatures
51
51
}
52
52
}
53
53
54
- internal RendererRequirements defaultRendererRequirements = new ( )
54
+ internal bool NeedsProceduralKeyword ( ref RendererRequirements rendererRequirements ) => ShaderBuildPreprocessor . NeedsProceduralKeyword ( ref rendererRequirements ) ;
55
+
56
+ internal ShaderFeatures GetCorrectProceduralKeyword ( ref RendererRequirements rendererRequirements )
55
57
{
56
- msaaSampleCount = 1 ,
57
- needsUnusedVariants = false ,
58
- isUniversalRenderer = true ,
59
- needsProcedural = true ,
60
- needsAdditionalLightShadows = false ,
61
- needsSoftShadows = false ,
62
- needsShadowsOff = false ,
63
- needsAdditionalLightsOff = false ,
64
- needsGBufferRenderingLayers = false ,
65
- needsGBufferAccurateNormals = false ,
66
- needsRenderPass = false ,
67
- needsReflectionProbeBlending = false ,
68
- needsReflectionProbeBoxProjection = false ,
69
- renderingMode = RenderingMode . Forward ,
70
- } ;
58
+ return NeedsProceduralKeyword ( ref rendererRequirements ) ? ShaderFeatures . DrawProcedural : ShaderFeatures . None ;
59
+ }
60
+
61
+ internal RendererRequirements defaultRendererRequirements = new ( ) ;
71
62
72
63
public TestHelper ( )
73
64
{
@@ -160,6 +151,22 @@ internal void AssertRendererRequirementsAndReset(RendererRequirements expected,
160
151
161
152
internal void ResetData ( )
162
153
{
154
+ defaultRendererRequirements = new ( ) ;
155
+ defaultRendererRequirements . msaaSampleCount = 1 ;
156
+ defaultRendererRequirements . needsUnusedVariants = false ;
157
+ defaultRendererRequirements . isUniversalRenderer = true ;
158
+ defaultRendererRequirements . needsAdditionalLightShadows = false ;
159
+ defaultRendererRequirements . needsSoftShadows = false ;
160
+ defaultRendererRequirements . needsShadowsOff = false ;
161
+ defaultRendererRequirements . needsAdditionalLightsOff = false ;
162
+ defaultRendererRequirements . needsGBufferRenderingLayers = false ;
163
+ defaultRendererRequirements . needsGBufferAccurateNormals = false ;
164
+ defaultRendererRequirements . needsRenderPass = false ;
165
+ defaultRendererRequirements . needsReflectionProbeBlending = false ;
166
+ defaultRendererRequirements . needsReflectionProbeBoxProjection = false ;
167
+ defaultRendererRequirements . renderingMode = RenderingMode . Forward ;
168
+ defaultRendererRequirements . needsProcedural = NeedsProceduralKeyword ( ref defaultRendererRequirements ) ;
169
+
163
170
urpAsset . mainLightRenderingMode = LightRenderingMode . Disabled ;
164
171
urpAsset . supportsMainLightShadows = false ;
165
172
urpAsset . additionalLightsRenderingMode = LightRenderingMode . Disabled ;
@@ -213,6 +220,7 @@ public void OneTimeSetup()
213
220
public void Setup ( )
214
221
{
215
222
m_TestHelper = new ( ) ;
223
+ m_TestHelper . ResetData ( ) ;
216
224
}
217
225
218
226
[ TearDown ]
@@ -539,7 +547,7 @@ public void TestGetSupportedShaderFeaturesFromRenderer()
539
547
// Initial state
540
548
rendererRequirements = m_TestHelper . defaultRendererRequirements ;
541
549
actual = m_TestHelper . GetSupportedShaderFeaturesFromRenderer ( rendererRequirements , ShaderFeatures . None ) ;
542
- expected = ShaderFeatures . DrawProcedural ;
550
+ expected = m_TestHelper . GetCorrectProceduralKeyword ( ref rendererRequirements ) ;
543
551
m_TestHelper . AssertShaderFeaturesAndReset ( expected , actual ) ;
544
552
545
553
// Procedural...
@@ -559,126 +567,124 @@ public void TestGetSupportedShaderFeaturesFromRenderer()
559
567
rendererRequirements = m_TestHelper . defaultRendererRequirements ;
560
568
rendererRequirements . renderingMode = RenderingMode . Forward ;
561
569
actual = m_TestHelper . GetSupportedShaderFeaturesFromRenderer ( rendererRequirements , ShaderFeatures . None ) ;
562
- expected = ShaderFeatures . DrawProcedural ;
570
+ expected = m_TestHelper . GetCorrectProceduralKeyword ( ref rendererRequirements ) ;
563
571
m_TestHelper . AssertShaderFeaturesAndReset ( expected , actual ) ;
564
572
565
573
rendererRequirements = m_TestHelper . defaultRendererRequirements ;
566
574
rendererRequirements . renderingMode = RenderingMode . ForwardPlus ;
567
575
actual = m_TestHelper . GetSupportedShaderFeaturesFromRenderer ( rendererRequirements , ShaderFeatures . None ) ;
568
- expected = ShaderFeatures . DrawProcedural | ShaderFeatures . ForwardPlus | ShaderFeatures . AdditionalLightsKeepOffVariants ;
576
+ expected = m_TestHelper . GetCorrectProceduralKeyword ( ref rendererRequirements ) | ShaderFeatures . ForwardPlus | ShaderFeatures . AdditionalLightsKeepOffVariants ;
569
577
m_TestHelper . AssertShaderFeaturesAndReset ( expected , actual ) ;
570
578
571
579
rendererRequirements = m_TestHelper . defaultRendererRequirements ;
572
580
rendererRequirements . renderingMode = RenderingMode . Deferred ;
573
581
actual = m_TestHelper . GetSupportedShaderFeaturesFromRenderer ( rendererRequirements , ShaderFeatures . None ) ;
574
- expected = ShaderFeatures . DrawProcedural | ShaderFeatures . DeferredShading ;
582
+ expected = m_TestHelper . GetCorrectProceduralKeyword ( ref rendererRequirements ) | ShaderFeatures . DeferredShading ;
575
583
m_TestHelper . AssertShaderFeaturesAndReset ( expected , actual ) ;
576
584
577
585
// The Off variant for Additional Lights
578
586
rendererRequirements = m_TestHelper . defaultRendererRequirements ;
579
587
rendererRequirements . needsAdditionalLightsOff = false ;
580
588
actual = m_TestHelper . GetSupportedShaderFeaturesFromRenderer ( rendererRequirements , ShaderFeatures . None ) ;
581
- expected = ShaderFeatures . DrawProcedural ;
589
+ expected = m_TestHelper . GetCorrectProceduralKeyword ( ref rendererRequirements ) ;
582
590
m_TestHelper . AssertShaderFeaturesAndReset ( expected , actual ) ;
583
591
584
592
rendererRequirements = m_TestHelper . defaultRendererRequirements ;
585
593
rendererRequirements . needsAdditionalLightsOff = true ;
586
594
actual = m_TestHelper . GetSupportedShaderFeaturesFromRenderer ( rendererRequirements , ShaderFeatures . None ) ;
587
- expected = ShaderFeatures . DrawProcedural | ShaderFeatures . AdditionalLightsKeepOffVariants ;
595
+ expected = m_TestHelper . GetCorrectProceduralKeyword ( ref rendererRequirements ) | ShaderFeatures . AdditionalLightsKeepOffVariants ;
588
596
m_TestHelper . AssertShaderFeaturesAndReset ( expected , actual ) ;
589
597
590
598
// The Off variant for Main and Additional Light shadows
591
599
rendererRequirements = m_TestHelper . defaultRendererRequirements ;
592
600
rendererRequirements . needsShadowsOff = false ;
593
601
actual = m_TestHelper . GetSupportedShaderFeaturesFromRenderer ( rendererRequirements , ShaderFeatures . None ) ;
594
- expected = ShaderFeatures . DrawProcedural ;
602
+ expected = m_TestHelper . GetCorrectProceduralKeyword ( ref rendererRequirements ) ; ;
595
603
m_TestHelper . AssertShaderFeaturesAndReset ( expected , actual ) ;
596
604
597
605
rendererRequirements = m_TestHelper . defaultRendererRequirements ;
598
606
rendererRequirements . needsShadowsOff = true ;
599
607
actual = m_TestHelper . GetSupportedShaderFeaturesFromRenderer ( rendererRequirements , ShaderFeatures . None ) ;
600
- expected = ShaderFeatures . DrawProcedural | ShaderFeatures . ShadowsKeepOffVariants ;
608
+ expected = m_TestHelper . GetCorrectProceduralKeyword ( ref rendererRequirements ) | ShaderFeatures . ShadowsKeepOffVariants ;
601
609
m_TestHelper . AssertShaderFeaturesAndReset ( expected , actual ) ;
602
610
603
611
// Soft shadows
604
612
rendererRequirements = m_TestHelper . defaultRendererRequirements ;
605
613
rendererRequirements . needsSoftShadows = false ;
606
614
actual = m_TestHelper . GetSupportedShaderFeaturesFromRenderer ( rendererRequirements , ShaderFeatures . None ) ;
607
- expected = ShaderFeatures . DrawProcedural ;
615
+ expected = m_TestHelper . GetCorrectProceduralKeyword ( ref rendererRequirements ) ; ;
608
616
m_TestHelper . AssertShaderFeaturesAndReset ( expected , actual ) ;
609
617
610
618
rendererRequirements = m_TestHelper . defaultRendererRequirements ;
611
619
rendererRequirements . needsSoftShadows = true ;
612
620
actual = m_TestHelper . GetSupportedShaderFeaturesFromRenderer ( rendererRequirements , ShaderFeatures . None ) ;
613
- expected = ShaderFeatures . DrawProcedural | ShaderFeatures . SoftShadows ;
621
+ expected = m_TestHelper . GetCorrectProceduralKeyword ( ref rendererRequirements ) | ShaderFeatures . SoftShadows ;
614
622
m_TestHelper . AssertShaderFeaturesAndReset ( expected , actual ) ;
615
623
616
624
// Deferred GBuffer Rendering Layers
617
625
rendererRequirements = m_TestHelper . defaultRendererRequirements ;
618
626
rendererRequirements . needsGBufferRenderingLayers = false ;
619
627
actual = m_TestHelper . GetSupportedShaderFeaturesFromRenderer ( rendererRequirements , ShaderFeatures . None ) ;
620
- expected = ShaderFeatures . DrawProcedural ;
628
+ expected = m_TestHelper . GetCorrectProceduralKeyword ( ref rendererRequirements ) ; ;
621
629
m_TestHelper . AssertShaderFeaturesAndReset ( expected , actual ) ;
622
630
623
631
rendererRequirements = m_TestHelper . defaultRendererRequirements ;
624
632
rendererRequirements . needsGBufferRenderingLayers = true ;
625
633
actual = m_TestHelper . GetSupportedShaderFeaturesFromRenderer ( rendererRequirements , ShaderFeatures . None ) ;
626
- expected = ShaderFeatures . DrawProcedural | ShaderFeatures . GBufferWriteRenderingLayers ;
634
+ expected = m_TestHelper . GetCorrectProceduralKeyword ( ref rendererRequirements ) | ShaderFeatures . GBufferWriteRenderingLayers ;
627
635
m_TestHelper . AssertShaderFeaturesAndReset ( expected , actual ) ;
628
636
629
637
// Deferred GBuffer Accurate Normals
630
638
rendererRequirements = m_TestHelper . defaultRendererRequirements ;
631
639
rendererRequirements . needsGBufferAccurateNormals = false ;
632
640
actual = m_TestHelper . GetSupportedShaderFeaturesFromRenderer ( rendererRequirements , ShaderFeatures . None ) ;
633
- expected = ShaderFeatures . DrawProcedural ;
641
+ expected = m_TestHelper . GetCorrectProceduralKeyword ( ref rendererRequirements ) ; ;
634
642
m_TestHelper . AssertShaderFeaturesAndReset ( expected , actual ) ;
635
643
636
644
rendererRequirements = m_TestHelper . defaultRendererRequirements ;
637
645
rendererRequirements . needsGBufferAccurateNormals = true ;
638
646
actual = m_TestHelper . GetSupportedShaderFeaturesFromRenderer ( rendererRequirements , ShaderFeatures . None ) ;
639
- expected = ShaderFeatures . DrawProcedural | ShaderFeatures . AccurateGbufferNormals ;
647
+ expected = m_TestHelper . GetCorrectProceduralKeyword ( ref rendererRequirements ) | ShaderFeatures . AccurateGbufferNormals ;
640
648
m_TestHelper . AssertShaderFeaturesAndReset ( expected , actual ) ;
641
649
642
650
// Deferred GBuffer Native Render Pass
643
651
rendererRequirements = m_TestHelper . defaultRendererRequirements ;
644
652
rendererRequirements . needsRenderPass = false ;
645
653
actual = m_TestHelper . GetSupportedShaderFeaturesFromRenderer ( rendererRequirements , ShaderFeatures . None ) ;
646
- expected = ShaderFeatures . DrawProcedural ;
654
+ expected = m_TestHelper . GetCorrectProceduralKeyword ( ref rendererRequirements ) ; ;
647
655
m_TestHelper . AssertShaderFeaturesAndReset ( expected , actual ) ;
648
656
649
657
rendererRequirements = m_TestHelper . defaultRendererRequirements ;
650
658
rendererRequirements . needsRenderPass = true ;
651
659
actual = m_TestHelper . GetSupportedShaderFeaturesFromRenderer ( rendererRequirements , ShaderFeatures . None ) ;
652
- expected = ShaderFeatures . DrawProcedural | ShaderFeatures . RenderPassEnabled ;
660
+ expected = m_TestHelper . GetCorrectProceduralKeyword ( ref rendererRequirements ) | ShaderFeatures . RenderPassEnabled ;
653
661
m_TestHelper . AssertShaderFeaturesAndReset ( expected , actual ) ;
654
662
655
663
// Reflection Probe Blending
656
664
rendererRequirements = m_TestHelper . defaultRendererRequirements ;
657
665
rendererRequirements . needsReflectionProbeBlending = false ;
658
666
actual = m_TestHelper . GetSupportedShaderFeaturesFromRenderer ( rendererRequirements , ShaderFeatures . None ) ;
659
- expected = ShaderFeatures . DrawProcedural ;
667
+ expected = m_TestHelper . GetCorrectProceduralKeyword ( ref rendererRequirements ) ; ;
660
668
m_TestHelper . AssertShaderFeaturesAndReset ( expected , actual ) ;
661
669
662
670
rendererRequirements = m_TestHelper . defaultRendererRequirements ;
663
671
rendererRequirements . needsReflectionProbeBlending = true ;
664
672
actual = m_TestHelper . GetSupportedShaderFeaturesFromRenderer ( rendererRequirements , ShaderFeatures . None ) ;
665
- expected = ShaderFeatures . DrawProcedural | ShaderFeatures . ReflectionProbeBlending ;
673
+ expected = m_TestHelper . GetCorrectProceduralKeyword ( ref rendererRequirements ) | ShaderFeatures . ReflectionProbeBlending ;
666
674
m_TestHelper . AssertShaderFeaturesAndReset ( expected , actual ) ;
667
675
668
676
// Reflection Probe Box Projection
669
677
rendererRequirements = m_TestHelper . defaultRendererRequirements ;
670
678
rendererRequirements . needsReflectionProbeBoxProjection = false ;
671
679
actual = m_TestHelper . GetSupportedShaderFeaturesFromRenderer ( rendererRequirements , ShaderFeatures . None ) ;
672
- expected = ShaderFeatures . DrawProcedural ;
680
+ expected = m_TestHelper . GetCorrectProceduralKeyword ( ref rendererRequirements ) ; ;
673
681
m_TestHelper . AssertShaderFeaturesAndReset ( expected , actual ) ;
674
682
675
683
rendererRequirements = m_TestHelper . defaultRendererRequirements ;
676
684
rendererRequirements . needsReflectionProbeBoxProjection = true ;
677
685
actual = m_TestHelper . GetSupportedShaderFeaturesFromRenderer ( rendererRequirements , ShaderFeatures . None ) ;
678
- expected = ShaderFeatures . DrawProcedural | ShaderFeatures . ReflectionProbeBoxProjection ;
686
+ expected = m_TestHelper . GetCorrectProceduralKeyword ( ref rendererRequirements ) | ShaderFeatures . ReflectionProbeBoxProjection ;
679
687
m_TestHelper . AssertShaderFeaturesAndReset ( expected , actual ) ;
680
-
681
-
682
688
}
683
689
684
690
0 commit comments