From f50fdccd64b0505421cb07b127bbf0bc393a925c Mon Sep 17 00:00:00 2001 From: Jussi Knuuttila Date: Mon, 6 Apr 2020 15:12:18 +0300 Subject: [PATCH] Enable Hybrid V2 DOTS instancing for previously unsupported shader graph passes, try to match behavior when define disabled. --- .../Material/Eye/ShaderGraph/HDEyeSubTarget.cs | 12 ++++++------ .../Fabric/ShaderGraph/HDFabricSubTarget.cs | 12 ++++++------ .../Hair/ShaderGraph/HDHairSubTarget.cs | 18 +++++++++--------- .../Material/PBR/ShaderGraph/PBRSubTarget.cs | 14 +++++++------- .../Editor/ShaderGraph/HDTarget.cs | 2 ++ 5 files changed, 30 insertions(+), 28 deletions(-) diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Eye/ShaderGraph/HDEyeSubTarget.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Eye/ShaderGraph/HDEyeSubTarget.cs index bac16f2c8e5..56fbb0a4a68 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Eye/ShaderGraph/HDEyeSubTarget.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Eye/ShaderGraph/HDEyeSubTarget.cs @@ -63,7 +63,7 @@ public static class EyePasses requiredFields = CoreRequiredFields.Meta, fieldDependencies = CoreFieldDependencies.Default, renderStates = CoreRenderStates.Meta, - pragmas = CorePragmas.InstancedRenderingLayer, + pragmas = CorePragmas.DotsInstancedInV2Only, keywords = CoreKeywords.HDBase, includes = EyeIncludes.Meta, }; @@ -88,7 +88,7 @@ public static class EyePasses structs = CoreStructCollections.Default, fieldDependencies = CoreFieldDependencies.Default, renderStates = CoreRenderStates.BlendShadowCaster, - pragmas = CorePragmas.InstancedRenderingLayer, + pragmas = CorePragmas.DotsInstancedInV2Only, keywords = CoreKeywords.HDBase, includes = EyeIncludes.DepthOnly, }; @@ -113,7 +113,7 @@ public static class EyePasses structs = CoreStructCollections.Default, fieldDependencies = CoreFieldDependencies.Default, renderStates = CoreRenderStates.SceneSelection, - pragmas = CorePragmas.InstancedRenderingLayerEditorSync, + pragmas = CorePragmas.DotsInstancedInV2OnlyEditorSync, defines = CoreDefines.SceneSelection, keywords = CoreKeywords.HDBase, includes = EyeIncludes.DepthOnly, @@ -140,7 +140,7 @@ public static class EyePasses requiredFields = CoreRequiredFields.LitFull, fieldDependencies = CoreFieldDependencies.Default, renderStates = CoreRenderStates.DepthOnly, - pragmas = CorePragmas.InstancedRenderingLayer, + pragmas = CorePragmas.DotsInstancedInV2Only, defines = CoreDefines.DepthMotionVectors, keywords = CoreKeywords.DepthMotionVectorsNoNormal, includes = EyeIncludes.DepthOnly, @@ -167,7 +167,7 @@ public static class EyePasses requiredFields = CoreRequiredFields.LitFull, fieldDependencies = CoreFieldDependencies.Default, renderStates = CoreRenderStates.MotionVectors, - pragmas = CorePragmas.InstancedRenderingLayer, + pragmas = CorePragmas.DotsInstancedInV2Only, defines = CoreDefines.DepthMotionVectors, keywords = CoreKeywords.DepthMotionVectorsNoNormal, includes = EyeIncludes.MotionVectors, @@ -194,7 +194,7 @@ public static class EyePasses requiredFields = CoreRequiredFields.LitFull, fieldDependencies = CoreFieldDependencies.Default, renderStates = CoreRenderStates.Forward, - pragmas = CorePragmas.InstancedRenderingLayer, + pragmas = CorePragmas.DotsInstancedInV2Only, defines = CoreDefines.Forward, keywords = CoreKeywords.Forward, includes = EyeIncludes.ForwardOnly, diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Fabric/ShaderGraph/HDFabricSubTarget.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Fabric/ShaderGraph/HDFabricSubTarget.cs index a66b35aa1a3..45a75ea3669 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Fabric/ShaderGraph/HDFabricSubTarget.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Fabric/ShaderGraph/HDFabricSubTarget.cs @@ -78,7 +78,7 @@ public static class FabricPasses requiredFields = CoreRequiredFields.Meta, fieldDependencies = CoreFieldDependencies.Default, renderStates = CoreRenderStates.Meta, - pragmas = CorePragmas.InstancedRenderingLayer, + pragmas = CorePragmas.DotsInstancedInV2Only, keywords = CoreKeywords.HDBase, includes = FabricIncludes.Meta, }; @@ -103,7 +103,7 @@ public static class FabricPasses structs = CoreStructCollections.Default, fieldDependencies = CoreFieldDependencies.Default, renderStates = CoreRenderStates.BlendShadowCaster, - pragmas = CorePragmas.InstancedRenderingLayer, + pragmas = CorePragmas.DotsInstancedInV2Only, keywords = CoreKeywords.HDBase, includes = FabricIncludes.DepthOnly, }; @@ -128,7 +128,7 @@ public static class FabricPasses structs = CoreStructCollections.Default, fieldDependencies = CoreFieldDependencies.Default, renderStates = CoreRenderStates.ShadowCaster, - pragmas = CorePragmas.InstancedRenderingLayerEditorSync, + pragmas = CorePragmas.DotsInstancedInV2OnlyEditorSync, defines = CoreDefines.SceneSelection, keywords = CoreKeywords.HDBase, includes = FabricIncludes.DepthOnly, @@ -155,7 +155,7 @@ public static class FabricPasses requiredFields = CoreRequiredFields.LitFull, fieldDependencies = CoreFieldDependencies.Default, renderStates = CoreRenderStates.DepthOnly, - pragmas = CorePragmas.InstancedRenderingLayer, + pragmas = CorePragmas.DotsInstancedInV2Only, defines = CoreDefines.DepthMotionVectors, keywords = CoreKeywords.DepthMotionVectorsNoNormal, includes = FabricIncludes.DepthOnly, @@ -182,7 +182,7 @@ public static class FabricPasses requiredFields = CoreRequiredFields.LitFull, fieldDependencies = CoreFieldDependencies.Default, renderStates = CoreRenderStates.MotionVectors, - pragmas = CorePragmas.InstancedRenderingLayer, + pragmas = CorePragmas.DotsInstancedInV2Only, defines = CoreDefines.DepthMotionVectors, keywords = CoreKeywords.DepthMotionVectorsNoNormal, includes = FabricIncludes.MotionVectors, @@ -209,7 +209,7 @@ public static class FabricPasses requiredFields = CoreRequiredFields.LitFull, fieldDependencies = CoreFieldDependencies.Default, renderStates = CoreRenderStates.Forward, - pragmas = CorePragmas.InstancedRenderingLayer, + pragmas = CorePragmas.DotsInstancedInV2Only, defines = CoreDefines.Forward, keywords = CoreKeywords.Forward, includes = FabricIncludes.ForwardOnly, diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HDHairSubTarget.cs b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HDHairSubTarget.cs index 706b34f01ca..b2ddd71c3a0 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HDHairSubTarget.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/Hair/ShaderGraph/HDHairSubTarget.cs @@ -81,7 +81,7 @@ public static class HairPasses requiredFields = CoreRequiredFields.Meta, fieldDependencies = CoreFieldDependencies.Default, renderStates = CoreRenderStates.Meta, - pragmas = CorePragmas.InstancedRenderingLayer, + pragmas = CorePragmas.DotsInstancedInV2Only, keywords = CoreKeywords.HDBase, includes = HairIncludes.Meta, }; @@ -106,7 +106,7 @@ public static class HairPasses structs = CoreStructCollections.Default, fieldDependencies = CoreFieldDependencies.Default, renderStates = CoreRenderStates.BlendShadowCaster, - pragmas = CorePragmas.InstancedRenderingLayer, + pragmas = CorePragmas.DotsInstancedInV2Only, keywords = CoreKeywords.HDBase, includes = HairIncludes.DepthOnly, }; @@ -131,7 +131,7 @@ public static class HairPasses structs = CoreStructCollections.Default, fieldDependencies = CoreFieldDependencies.Default, renderStates = CoreRenderStates.SceneSelection, - pragmas = CorePragmas.InstancedRenderingLayerEditorSync, + pragmas = CorePragmas.DotsInstancedInV2OnlyEditorSync, defines = CoreDefines.SceneSelection, keywords = CoreKeywords.HDBase, includes = HairIncludes.DepthOnly, @@ -158,7 +158,7 @@ public static class HairPasses requiredFields = CoreRequiredFields.LitFull, fieldDependencies = CoreFieldDependencies.Default, renderStates = CoreRenderStates.DepthOnly, - pragmas = CorePragmas.InstancedRenderingLayer, + pragmas = CorePragmas.DotsInstancedInV2Only, defines = CoreDefines.DepthMotionVectors, keywords = CoreKeywords.DepthMotionVectorsNoNormal, includes = HairIncludes.DepthOnly, @@ -185,7 +185,7 @@ public static class HairPasses requiredFields = CoreRequiredFields.LitFull, fieldDependencies = CoreFieldDependencies.Default, renderStates = HairRenderStates.MotionVectors, - pragmas = CorePragmas.InstancedRenderingLayer, + pragmas = CorePragmas.DotsInstancedInV2Only, defines = CoreDefines.DepthMotionVectors, keywords = CoreKeywords.DepthMotionVectorsNoNormal, includes = HairIncludes.MotionVectors, @@ -211,7 +211,7 @@ public static class HairPasses structs = CoreStructCollections.Default, fieldDependencies = CoreFieldDependencies.Default, renderStates = CoreRenderStates.TransparentDepthPrePostPass, - pragmas = CorePragmas.InstancedRenderingLayer, + pragmas = CorePragmas.DotsInstancedInV2Only, defines = CoreDefines.TransparentDepthPrepass, keywords = CoreKeywords.HDBase, includes = HairIncludes.DepthOnly, @@ -238,7 +238,7 @@ public static class HairPasses requiredFields = CoreRequiredFields.LitMinimal, fieldDependencies = CoreFieldDependencies.Default, renderStates = CoreRenderStates.TransparentBackface, - pragmas = CorePragmas.InstancedRenderingLayer, + pragmas = CorePragmas.DotsInstancedInV2Only, defines = CoreDefines.Forward, keywords = CoreKeywords.Forward, includes = HairIncludes.ForwardOnly, @@ -265,7 +265,7 @@ public static class HairPasses requiredFields = CoreRequiredFields.LitFull, fieldDependencies = CoreFieldDependencies.Default, renderStates = CoreRenderStates.ForwardColorMask, - pragmas = CorePragmas.InstancedRenderingLayer, + pragmas = CorePragmas.DotsInstancedInV2Only, defines = CoreDefines.Forward, keywords = CoreKeywords.Forward, includes = HairIncludes.ForwardOnly, @@ -291,7 +291,7 @@ public static class HairPasses structs = CoreStructCollections.Default, fieldDependencies = CoreFieldDependencies.Default, renderStates = CoreRenderStates.TransparentDepthPrePostPass, - pragmas = CorePragmas.InstancedRenderingLayer, + pragmas = CorePragmas.DotsInstancedInV2Only, defines = CoreDefines.ShaderGraphRaytracingHigh, keywords = CoreKeywords.HDBase, includes = HairIncludes.DepthOnly, diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/PBR/ShaderGraph/PBRSubTarget.cs b/com.unity.render-pipelines.high-definition/Editor/Material/PBR/ShaderGraph/PBRSubTarget.cs index 0f3abdee35a..151239b87c5 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/PBR/ShaderGraph/PBRSubTarget.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/PBR/ShaderGraph/PBRSubTarget.cs @@ -66,7 +66,7 @@ static class PBRPasses requiredFields = CoreRequiredFields.LitMinimal, fieldDependencies = CoreFieldDependencies.Default, renderStates = PBRRenderStates.GBuffer, - pragmas = CorePragmas.InstancedRenderingLayer, + pragmas = CorePragmas.DotsInstancedInV2Only, keywords = PBRKeywords.GBuffer, includes = PBRIncludes.GBuffer, }; @@ -91,7 +91,7 @@ static class PBRPasses requiredFields = CoreRequiredFields.Meta, fieldDependencies = CoreFieldDependencies.Default, renderStates = CoreRenderStates.Meta, - pragmas = CorePragmas.InstancedRenderingLayer, + pragmas = CorePragmas.DotsInstancedInV2Only, keywords = PBRKeywords.LodFadeCrossfade, includes = PBRIncludes.Meta, }; @@ -116,7 +116,7 @@ static class PBRPasses structs = CoreStructCollections.Default, fieldDependencies = CoreFieldDependencies.Default, renderStates = PBRRenderStates.ShadowCaster, - pragmas = CorePragmas.InstancedRenderingLayer, + pragmas = CorePragmas.DotsInstancedInV2Only, keywords = PBRKeywords.LodFadeCrossfade, includes = PBRIncludes.DepthOnly, }; @@ -141,7 +141,7 @@ static class PBRPasses structs = CoreStructCollections.Default, fieldDependencies = CoreFieldDependencies.Default, renderStates = PBRRenderStates.SceneSelection, - pragmas = CorePragmas.InstancedRenderingLayerEditorSync, + pragmas = CorePragmas.DotsInstancedInV2OnlyEditorSync, defines = CoreDefines.SceneSelection, keywords = PBRKeywords.LodFadeCrossfade, includes = PBRIncludes.DepthOnly, @@ -168,7 +168,7 @@ static class PBRPasses requiredFields = CoreRequiredFields.LitFull, fieldDependencies = CoreFieldDependencies.Default, renderStates = PBRRenderStates.DepthOnly, - pragmas = CorePragmas.InstancedRenderingLayer, + pragmas = CorePragmas.DotsInstancedInV2Only, defines = CoreDefines.ShaderGraphRaytracingHigh, keywords = PBRKeywords.DepthMotionVectors, includes = PBRIncludes.DepthOnly, @@ -197,7 +197,7 @@ static class PBRPasses // Conditional State renderStates = PBRRenderStates.MotionVectors, - pragmas = CorePragmas.InstancedRenderingLayer, + pragmas = CorePragmas.DotsInstancedInV2Only, defines = CoreDefines.ShaderGraphRaytracingHigh, keywords = PBRKeywords.DepthMotionVectors, includes = PBRIncludes.MotionVectors, @@ -224,7 +224,7 @@ static class PBRPasses requiredFields = CoreRequiredFields.LitMinimal, fieldDependencies = CoreFieldDependencies.Default, renderStates = PBRRenderStates.Forward, - pragmas = CorePragmas.InstancedRenderingLayer, + pragmas = CorePragmas.DotsInstancedInV2Only, defines = CoreDefines.Forward, keywords = PBRKeywords.Forward, includes = PBRIncludes.Forward, diff --git a/com.unity.render-pipelines.high-definition/Editor/ShaderGraph/HDTarget.cs b/com.unity.render-pipelines.high-definition/Editor/ShaderGraph/HDTarget.cs index 529c31e33b2..1ad6541e5f7 100644 --- a/com.unity.render-pipelines.high-definition/Editor/ShaderGraph/HDTarget.cs +++ b/com.unity.render-pipelines.high-definition/Editor/ShaderGraph/HDTarget.cs @@ -455,6 +455,7 @@ static class CorePragmas { { Basic }, { Pragma.MultiCompileInstancing }, + { Pragma.InstancingOptions(InstancingOptions.RenderingLayer) }, #if ENABLE_HYBRID_RENDERER_V2 { Pragma.DOTSInstancing }, { Pragma.InstancingOptions(InstancingOptions.NoLodFade) }, @@ -466,6 +467,7 @@ static class CorePragmas { Basic }, { Pragma.MultiCompileInstancing }, { Pragma.EditorSyncCompilation }, + { Pragma.InstancingOptions(InstancingOptions.RenderingLayer) }, #if ENABLE_HYBRID_RENDERER_V2 { Pragma.DOTSInstancing }, { Pragma.InstancingOptions(InstancingOptions.NoLodFade) },