Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Normalize view direction in universal #2752

Merged
merged 29 commits into from
Jan 27, 2021
Merged
Show file tree
Hide file tree
Changes from 14 commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
c676d0c
moving out template code into Universal side override
elizabeth-legros Nov 23, 2020
6eda74d
template fixing
elizabeth-legros Nov 23, 2020
dfd8fc0
more fixes
elizabeth-legros Nov 25, 2020
6fa67ad
formatting
elizabeth-legros Nov 25, 2020
876e59e
normalizing both URP and default view direction
elizabeth-legros Nov 25, 2020
401fe27
Merge branch 'master' into sg/normalize-view-direction-shared-code
elizabeth-legros Dec 1, 2020
46a137c
Update CHANGELOG.md
elizabeth-legros Dec 1, 2020
ef57c7b
Update View-Direction-Node.md
elizabeth-legros Dec 1, 2020
802552e
Update View-Direction-Node.md
elizabeth-legros Dec 1, 2020
ec87e21
Update View-Direction-Node.md
elizabeth-legros Dec 1, 2020
92ec5d6
Update View-Direction-Node.md
elizabeth-legros Dec 1, 2020
5f9e33a
Update View-Direction-Node.md
elizabeth-legros Dec 1, 2020
917bb17
made View Vector node to emulate old view direction behavior in Unive…
elizabeth-legros Dec 2, 2020
90fa9c7
Merge branch 'sg/normalize-view-direction-shared-code' of github.com:…
elizabeth-legros Dec 2, 2020
025f6c1
updating code to work with orthographic and perspective, as well as t…
elizabeth-legros Jan 13, 2021
5b1b9fd
merge master
elizabeth-legros Jan 14, 2021
5cd6397
making custom code for update message on view direction node
elizabeth-legros Jan 14, 2021
99bef0b
I am not a fan of uss :)
elizabeth-legros Jan 19, 2021
56b9311
updating info pinging
elizabeth-legros Jan 19, 2021
7644ba5
updating input nodes test to test view direction and view vector
elizabeth-legros Jan 20, 2021
3aa2b19
updating reference images
elizabeth-legros Jan 21, 2021
4144ef1
updating inputnodes on metal osxeditor
elizabeth-legros Jan 22, 2021
1bdf9bd
make sure message still shows with allow deprecated enabled
elizabeth-legros Jan 22, 2021
16fb87e
Update CHANGELOG.md
elizabeth-legros Jan 22, 2021
c9063ac
updating android image
elizabeth-legros Jan 22, 2021
88bbf28
merge master
elizabeth-legros Jan 22, 2021
b16c39f
formatting
elizabeth-legros Jan 22, 2021
3829a67
more formatting
elizabeth-legros Jan 27, 2021
4d7a6aa
Merge branch 'master' into sg/normalize-view-direction-shared-code
elizabeth-legros Jan 27, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions com.unity.render-pipelines.universal/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
- Added a supported MSAA samples count check, so the actual supported MSAA samples count value can be assigned to RenderTexture descriptors.
- Bloom in Gamma color-space now more closely matches Linear color-space, this will mean project using Bloom and Gamma color-space may need to adjust Bloom Intensity to match previous look.
- Autodesk Interactive Shader Graph files and folders containing them were renamed. The new file paths do not have spaces.
- Normalized the view direction in Shader Graph to be consistent across Scriptable Render Pieplines

### Fixed
- Fixed an issue where the 2D Renderer was incorrectly rendering transparency with normal maps on an empty background.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,21 +90,21 @@ public override void GetFields(ref TargetFieldContext context)
var descs = context.blocks.Select(x => x.descriptor);
// Surface Type & Blend Mode
// These must be set per SubTarget as Sprite SubTargets override them
context.AddField(UniversalFields.SurfaceOpaque, target.surfaceType == SurfaceType.Opaque);
context.AddField(UniversalFields.SurfaceTransparent, target.surfaceType != SurfaceType.Opaque);
context.AddField(UniversalFields.BlendAdd, target.surfaceType != SurfaceType.Opaque && target.alphaMode == AlphaMode.Additive);
context.AddField(Fields.BlendAlpha, target.surfaceType != SurfaceType.Opaque && target.alphaMode == AlphaMode.Alpha);
context.AddField(UniversalFields.BlendMultiply, target.surfaceType != SurfaceType.Opaque && target.alphaMode == AlphaMode.Multiply);
context.AddField(UniversalFields.BlendPremultiply, target.surfaceType != SurfaceType.Opaque && target.alphaMode == AlphaMode.Premultiply);
context.AddField(UniversalFields.SurfaceOpaque, target.surfaceType == SurfaceType.Opaque);
context.AddField(UniversalFields.SurfaceTransparent, target.surfaceType != SurfaceType.Opaque);
context.AddField(UniversalFields.BlendAdd, target.surfaceType != SurfaceType.Opaque && target.alphaMode == AlphaMode.Additive);
context.AddField(Fields.BlendAlpha, target.surfaceType != SurfaceType.Opaque && target.alphaMode == AlphaMode.Alpha);
context.AddField(UniversalFields.BlendMultiply, target.surfaceType != SurfaceType.Opaque && target.alphaMode == AlphaMode.Multiply);
context.AddField(UniversalFields.BlendPremultiply, target.surfaceType != SurfaceType.Opaque && target.alphaMode == AlphaMode.Premultiply);

// Lit
context.AddField(UniversalFields.NormalDropOffOS, normalDropOffSpace == NormalDropOffSpace.Object);
context.AddField(UniversalFields.NormalDropOffTS, normalDropOffSpace == NormalDropOffSpace.Tangent);
context.AddField(UniversalFields.NormalDropOffWS, normalDropOffSpace == NormalDropOffSpace.World);
context.AddField(UniversalFields.SpecularSetup, workflowMode == WorkflowMode.Specular);
context.AddField(UniversalFields.Normal, descs.Contains(BlockFields.SurfaceDescription.NormalOS) ||
descs.Contains(BlockFields.SurfaceDescription.NormalTS) ||
descs.Contains(BlockFields.SurfaceDescription.NormalWS));
context.AddField(UniversalFields.NormalDropOffOS, normalDropOffSpace == NormalDropOffSpace.Object);
context.AddField(UniversalFields.NormalDropOffTS, normalDropOffSpace == NormalDropOffSpace.Tangent);
context.AddField(UniversalFields.NormalDropOffWS, normalDropOffSpace == NormalDropOffSpace.World);
context.AddField(UniversalFields.SpecularSetup, workflowMode == WorkflowMode.Specular);
context.AddField(UniversalFields.Normal, descs.Contains(BlockFields.SurfaceDescription.NormalOS) ||
descs.Contains(BlockFields.SurfaceDescription.NormalTS) ||
descs.Contains(BlockFields.SurfaceDescription.NormalWS));
// Complex Lit

// Template Predicates
Expand All @@ -114,17 +114,17 @@ public override void GetFields(ref TargetFieldContext context)
public override void GetActiveBlocks(ref TargetActiveBlockContext context)
{
context.AddBlock(BlockFields.SurfaceDescription.Smoothness);
context.AddBlock(BlockFields.SurfaceDescription.NormalOS, normalDropOffSpace == NormalDropOffSpace.Object);
context.AddBlock(BlockFields.SurfaceDescription.NormalTS, normalDropOffSpace == NormalDropOffSpace.Tangent);
context.AddBlock(BlockFields.SurfaceDescription.NormalWS, normalDropOffSpace == NormalDropOffSpace.World);
context.AddBlock(BlockFields.SurfaceDescription.NormalOS, normalDropOffSpace == NormalDropOffSpace.Object);
context.AddBlock(BlockFields.SurfaceDescription.NormalTS, normalDropOffSpace == NormalDropOffSpace.Tangent);
context.AddBlock(BlockFields.SurfaceDescription.NormalWS, normalDropOffSpace == NormalDropOffSpace.World);
context.AddBlock(BlockFields.SurfaceDescription.Emission);
context.AddBlock(BlockFields.SurfaceDescription.Occlusion);
context.AddBlock(BlockFields.SurfaceDescription.Specular, workflowMode == WorkflowMode.Specular);
context.AddBlock(BlockFields.SurfaceDescription.Metallic, workflowMode == WorkflowMode.Metallic);
context.AddBlock(BlockFields.SurfaceDescription.Alpha, target.surfaceType == SurfaceType.Transparent || target.alphaClip);
context.AddBlock(BlockFields.SurfaceDescription.AlphaClipThreshold, target.alphaClip);
context.AddBlock(UniversalBlockFields.SurfaceDescription.CoatMask, clearCoat);
context.AddBlock(UniversalBlockFields.SurfaceDescription.CoatSmoothness, clearCoat);
context.AddBlock(BlockFields.SurfaceDescription.Specular, workflowMode == WorkflowMode.Specular);
context.AddBlock(BlockFields.SurfaceDescription.Metallic, workflowMode == WorkflowMode.Metallic);
context.AddBlock(BlockFields.SurfaceDescription.Alpha, target.surfaceType == SurfaceType.Transparent || target.alphaClip);
context.AddBlock(BlockFields.SurfaceDescription.AlphaClipThreshold, target.alphaClip);
context.AddBlock(UniversalBlockFields.SurfaceDescription.CoatMask, clearCoat);
context.AddBlock(UniversalBlockFields.SurfaceDescription.CoatSmoothness, clearCoat);
}

public override void GetPropertiesGUI(ref TargetPropertyGUIContext context, Action onChange, Action<String> registerUndo)
Expand Down Expand Up @@ -368,8 +368,8 @@ static class LitPasses
useInPreview = true,

// Template
passTemplatePath = GenerationUtils.GetDefaultTemplatePath("PassMesh.template"),
sharedTemplateDirectories = GenerationUtils.GetDefaultSharedTemplateDirectories(),
passTemplatePath = UniversalTarget.kTemplatePath,
sharedTemplateDirectories = UniversalTarget.kSharedTemplateDirectories,

// Port Mask
validVertexBlocks = CoreBlockMasks.Vertex,
Expand All @@ -396,8 +396,8 @@ static class LitPasses
useInPreview = true,

// Template
passTemplatePath = GenerationUtils.GetDefaultTemplatePath("PassMesh.template"),
sharedTemplateDirectories = GenerationUtils.GetDefaultSharedTemplateDirectories(),
passTemplatePath = UniversalTarget.kTemplatePath,
sharedTemplateDirectories = UniversalTarget.kSharedTemplateDirectories,

// Port Mask
validVertexBlocks = CoreBlockMasks.Vertex,
Expand All @@ -424,8 +424,8 @@ static class LitPasses
lightMode = "UniversalGBuffer",

// Template
passTemplatePath = GenerationUtils.GetDefaultTemplatePath("PassMesh.template"),
sharedTemplateDirectories = GenerationUtils.GetDefaultSharedTemplateDirectories(),
passTemplatePath = UniversalTarget.kTemplatePath,
sharedTemplateDirectories = UniversalTarget.kSharedTemplateDirectories,

// Port Mask
validVertexBlocks = CoreBlockMasks.Vertex,
Expand All @@ -451,8 +451,8 @@ static class LitPasses
lightMode = "Meta",

// Template
passTemplatePath = GenerationUtils.GetDefaultTemplatePath("PassMesh.template"),
sharedTemplateDirectories = GenerationUtils.GetDefaultSharedTemplateDirectories(),
passTemplatePath = UniversalTarget.kTemplatePath,
sharedTemplateDirectories = UniversalTarget.kSharedTemplateDirectories,

// Port Mask
validVertexBlocks = CoreBlockMasks.Vertex,
Expand All @@ -477,8 +477,8 @@ static class LitPasses
lightMode = "Universal2D",

// Template
passTemplatePath = GenerationUtils.GetDefaultTemplatePath("PassMesh.template"),
sharedTemplateDirectories = GenerationUtils.GetDefaultSharedTemplateDirectories(),
passTemplatePath = UniversalTarget.kTemplatePath,
sharedTemplateDirectories = UniversalTarget.kSharedTemplateDirectories,

// Port Mask
validVertexBlocks = CoreBlockMasks.Vertex,
Expand All @@ -503,8 +503,8 @@ static class LitPasses
useInPreview = false,

// Template
passTemplatePath = GenerationUtils.GetDefaultTemplatePath("PassMesh.template"),
sharedTemplateDirectories = GenerationUtils.GetDefaultSharedTemplateDirectories(),
passTemplatePath = UniversalTarget.kTemplatePath,
sharedTemplateDirectories = UniversalTarget.kSharedTemplateDirectories,

// Port Mask
validVertexBlocks = CoreBlockMasks.Vertex,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@ sealed class UniversalTarget : Target, ILegacyTarget
public const string kPipelineTag = "UniversalPipeline";
public const string kLitMaterialTypeTag = "\"UniversalMaterialType\" = \"Lit\"";
public const string kUnlitMaterialTypeTag = "\"UniversalMaterialType\" = \"Unlit\"";
public static readonly string[] kSharedTemplateDirectories = GenerationUtils.GetDefaultSharedTemplateDirectories().Union(new string[]{"Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Templates" }).ToArray();
public const string kTemplatePath = "Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Templates/ShaderPass.template";

// SubTarget
List<SubTarget> m_SubTargets;
Expand Down Expand Up @@ -184,12 +186,12 @@ public override void GetFields(ref TargetFieldContext context)
{
var descs = context.blocks.Select(x => x.descriptor);
// Core fields
context.AddField(Fields.GraphVertex, descs.Contains(BlockFields.VertexDescription.Position) ||
context.AddField(Fields.GraphVertex, descs.Contains(BlockFields.VertexDescription.Position) ||
descs.Contains(BlockFields.VertexDescription.Normal) ||
descs.Contains(BlockFields.VertexDescription.Tangent));
context.AddField(Fields.GraphPixel);
context.AddField(Fields.AlphaClip, alphaClip);
context.AddField(Fields.DoubleSided, twoSided);
context.AddField(Fields.AlphaClip, alphaClip);
context.AddField(Fields.DoubleSided, twoSided);

// SubTarget fields
m_ActiveSubTarget.value.GetFields(ref context);
Expand Down Expand Up @@ -245,7 +247,7 @@ public override void GetPropertiesGUI(ref TargetPropertyGUIContext context, Acti
customEditorGUI = m_CustomGUIField.value;
onChange();
});
context.AddProperty("Custom Editor GUI", m_CustomGUIField, (evt) => {});
context.AddProperty("Custom Editor GUI", m_CustomGUIField, (evt) => { });
}

public bool TrySetActiveSubTarget(Type subTargetType)
Expand Down Expand Up @@ -342,8 +344,8 @@ static class CorePasses
useInPreview = true,

// Template
passTemplatePath = GenerationUtils.GetDefaultTemplatePath("PassMesh.template"),
sharedTemplateDirectories = GenerationUtils.GetDefaultSharedTemplateDirectories(),
passTemplatePath = UniversalTarget.kTemplatePath,
sharedTemplateDirectories = UniversalTarget.kSharedTemplateDirectories,

// Port Mask
validVertexBlocks = CoreBlockMasks.Vertex,
Expand All @@ -368,7 +370,7 @@ static class CorePasses

// Template
passTemplatePath = GenerationUtils.GetDefaultTemplatePath("PassMesh.template"),
sharedTemplateDirectories = GenerationUtils.GetDefaultSharedTemplateDirectories(),
sharedTemplateDirectories = UniversalTarget.kSharedTemplateDirectories,

// Port Mask
validVertexBlocks = CoreBlockMasks.Vertex,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -175,8 +175,8 @@ static class UnlitPasses
useInPreview = true,

// Template
passTemplatePath = GenerationUtils.GetDefaultTemplatePath("PassMesh.template"),
sharedTemplateDirectories = GenerationUtils.GetDefaultSharedTemplateDirectories(),
passTemplatePath = UniversalTarget.kTemplatePath,
sharedTemplateDirectories = UniversalTarget.kSharedTemplateDirectories,

// Port Mask
validVertexBlocks = CoreBlockMasks.Vertex,
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
Pass
{
$splice(PassName)
Tags
{
$splice(LightMode)
}

// Render State
$splice(RenderState)

// Debug
$splice(Debug)

// --------------------------------------------------
// Pass

HLSLPROGRAM

// Pragmas
$splice(PassPragmas)

$splice(DotsInstancingOptions)
$splice(HybridV1InjectedBuiltinProperties)

// Keywords
$splice(PassKeywords)
$splice(GraphKeywords)

// Defines
$SurfaceType.Transparent: #define _SURFACE_TYPE_TRANSPARENT 1
$AlphaClip: #define _AlphaClip 1
$Normal: #define _NORMALMAP 1
$SpecularSetup: #define _SPECULAR_SETUP
$BlendMode.Add: #define _BLENDMODE_ADD 1
$BlendMode.Premultiply: #define _ALPHAPREMULTIPLY_ON 1
$NormalDropOffTS: #define _NORMAL_DROPOFF_TS 1
$NormalDropOffOS: #define _NORMAL_DROPOFF_OS 1
$NormalDropOffWS: #define _NORMAL_DROPOFF_WS 1
$Attributes.normalOS: #define ATTRIBUTES_NEED_NORMAL
$Attributes.tangentOS: #define ATTRIBUTES_NEED_TANGENT
$Attributes.uv0: #define ATTRIBUTES_NEED_TEXCOORD0
$Attributes.uv1: #define ATTRIBUTES_NEED_TEXCOORD1
$Attributes.uv2: #define ATTRIBUTES_NEED_TEXCOORD2
$Attributes.uv3: #define ATTRIBUTES_NEED_TEXCOORD3
$Attributes.color: #define ATTRIBUTES_NEED_COLOR
$Varyings.positionWS: #define VARYINGS_NEED_POSITION_WS
$Varyings.normalWS: #define VARYINGS_NEED_NORMAL_WS
$Varyings.tangentWS: #define VARYINGS_NEED_TANGENT_WS
$Varyings.texCoord0: #define VARYINGS_NEED_TEXCOORD0
$Varyings.texCoord1: #define VARYINGS_NEED_TEXCOORD1
$Varyings.texCoord2: #define VARYINGS_NEED_TEXCOORD2
$Varyings.texCoord3: #define VARYINGS_NEED_TEXCOORD3
$Varyings.color: #define VARYINGS_NEED_COLOR
$Varyings.viewDirectionWS: #define VARYINGS_NEED_VIEWDIRECTION_WS
$Varyings.bitangentWS: #define VARYINGS_NEED_BITANGENT_WS
$Varyings.screenPosition: #define VARYINGS_NEED_SCREENPOSITION
$Varyings.fogFactorAndVertexLight: #define VARYINGS_NEED_FOG_AND_VERTEX_LIGHT
$Varyings.cullFace: #define VARYINGS_NEED_CULLFACE
$features.graphVertex: #define FEATURES_GRAPH_VERTEX
$Universal.UseLegacySpriteBlocks: #define UNIVERSAL_USELEGACYSPRITEBLOCKS
$splice(PassInstancing)
$splice(GraphDefines)
$splice(DotsInstancingVars)

// Includes
$splice(PreGraphIncludes)

// --------------------------------------------------
// Structs and Packing

$splice(PassStructs)

$splice(InterpolatorPack)

// --------------------------------------------------
// Graph

// Graph Properties
$splice(GraphProperties)

// Graph Functions
$splice(GraphFunctions)

// Graph Vertex
$splice(GraphVertex)

// Graph Pixel
$splice(GraphPixel)

// --------------------------------------------------
// Build Graph Inputs

$features.graphVertex: $include("BuildVertexDescriptionInputs.template.hlsl")
$features.graphPixel: $include("SharedCode.template.hlsl")

// --------------------------------------------------
// Main

$splice(PostGraphIncludes)

ENDHLSL
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.