123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- using System;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.Rendering;
- using UnityEngine.UIElements;
-
- namespace UnityEditor.ShaderGraph
- {
- sealed class PreviewTarget : Target
- {
- static readonly GUID kSourceCodeGuid = new GUID("7464b9fcde08e5645a16b9b8ae1e573c"); // PreviewTarget.cs
-
- public PreviewTarget()
- {
- displayName = "Preview";
- isHidden = true;
- }
-
- public override bool IsActive() => false;
- internal override bool ignoreCustomInterpolators => false;
-
- public override void Setup(ref TargetSetupContext context)
- {
- context.AddAssetDependency(kSourceCodeGuid, AssetCollection.Flags.SourceDependency);
- context.AddSubShader(SubShaders.Preview);
- }
-
- public override void GetFields(ref TargetFieldContext context)
- {
- }
-
- public override void GetActiveBlocks(ref TargetActiveBlockContext context)
- {
- }
-
- public override void GetPropertiesGUI(ref TargetPropertyGUIContext context, Action onChange, Action<String> registerUndo)
- {
- }
-
- public override bool WorksWithSRP(RenderPipelineAsset scriptableRenderPipeline) => true;
-
- static class SubShaders
- {
- public static SubShaderDescriptor Preview = new SubShaderDescriptor()
- {
- renderQueue = "Geometry",
- renderType = "Opaque",
- generatesPreview = true,
- passes = new PassCollection { Passes.Preview },
- };
- }
-
- static class Passes
- {
- public static PassDescriptor Preview = new PassDescriptor()
- {
- // Definition
- referenceName = "SHADERPASS_PREVIEW",
- useInPreview = true,
-
- // Templates
- passTemplatePath = GenerationUtils.GetDefaultTemplatePath("PassMesh.template"),
- sharedTemplateDirectories = GenerationUtils.GetDefaultSharedTemplateDirectories(),
-
- // Collections
- structs = new StructCollection
- {
- { Structs.Attributes },
- { StructDescriptors.PreviewVaryings },
- { Structs.SurfaceDescriptionInputs },
- { Structs.VertexDescriptionInputs },
- },
- fieldDependencies = FieldDependencies.Default,
- pragmas = new PragmaCollection
- {
- { Pragma.Vertex("vert") },
- { Pragma.Fragment("frag") },
- },
- defines = new DefineCollection
- {
- { KeywordDescriptors.PreviewKeyword, 1 },
- },
- includes = new IncludeCollection
- {
- // Pre-graph
- { "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl", IncludeLocation.Pregraph },
- { "Packages/com.unity.render-pipelines.core/ShaderLibrary/Packing.hlsl", IncludeLocation.Pregraph },
- { "Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl", IncludeLocation.Pregraph }, // TODO: put this on a conditional
- { "Packages/com.unity.render-pipelines.core/ShaderLibrary/NormalSurfaceGradient.hlsl", IncludeLocation.Pregraph },
- { "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl", IncludeLocation.Pregraph },
- { "Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl", IncludeLocation.Pregraph },
- { "Packages/com.unity.render-pipelines.core/ShaderLibrary/UnityInstancing.hlsl", IncludeLocation.Pregraph },
- { "Packages/com.unity.render-pipelines.core/ShaderLibrary/EntityLighting.hlsl", IncludeLocation.Pregraph },
- { "Packages/com.unity.shadergraph/ShaderGraphLibrary/ShaderVariables.hlsl", IncludeLocation.Pregraph },
- { "Packages/com.unity.shadergraph/ShaderGraphLibrary/ShaderVariablesFunctions.hlsl", IncludeLocation.Pregraph },
- { "Packages/com.unity.shadergraph/ShaderGraphLibrary/Functions.hlsl", IncludeLocation.Pregraph },
-
- // Post-graph
- { "Packages/com.unity.shadergraph/ShaderGraphLibrary/PreviewVaryings.hlsl", IncludeLocation.Postgraph },
- { "Packages/com.unity.shadergraph/ShaderGraphLibrary/PreviewPass.hlsl", IncludeLocation.Postgraph },
- }
- };
- }
-
- static class StructDescriptors
- {
- public static StructDescriptor PreviewVaryings = new StructDescriptor()
- {
- name = "Varyings",
- packFields = true,
- fields = new[]
- {
- StructFields.Varyings.positionCS,
- StructFields.Varyings.positionWS,
- StructFields.Varyings.positionPredisplacementWS,
- StructFields.Varyings.normalWS,
- StructFields.Varyings.tangentWS,
- StructFields.Varyings.texCoord0,
- StructFields.Varyings.texCoord1,
- StructFields.Varyings.texCoord2,
- StructFields.Varyings.texCoord3,
- StructFields.Varyings.color,
- StructFields.Varyings.screenPosition,
- StructFields.Varyings.instanceID,
- StructFields.Varyings.vertexID,
- StructFields.Varyings.cullFace,
- }
- };
- }
-
- static class KeywordDescriptors
- {
- public static KeywordDescriptor PreviewKeyword = new KeywordDescriptor()
- {
- displayName = "Preview",
- referenceName = "SHADERGRAPH_PREVIEW",
- type = KeywordType.Boolean,
- definition = KeywordDefinition.MultiCompile,
- scope = KeywordScope.Global,
- stages = KeywordShaderStage.All,
- };
- }
- }
- }
|