Consolidate alpha retrieval and clip
Signed-off-by: Jeremy Ong <jcong@amazon.com>
This commit is contained in:
@@ -116,8 +116,7 @@ PSDepthOutput MainPS(VSDepthOutput IN, bool isFrontFace : SV_IsFrontFace)
|
||||
}
|
||||
|
||||
#ifndef MULTILAYER
|
||||
float alpha = GetAlpha(IN.m_uv);
|
||||
MaybeClip(alpha, IN.m_uv);
|
||||
GetAlphaAndClip(IN.m_uv);
|
||||
#endif
|
||||
|
||||
return OUT;
|
||||
|
||||
@@ -11,10 +11,9 @@
|
||||
|
||||
#include "MaterialFunctions/StandardGetObjectToWorld.azsli"
|
||||
#include "MaterialFunctions/StandardGetNormalToWorld.azsli"
|
||||
#include "MaterialFunctions/StandardGetAlpha.azsli"
|
||||
#include "MaterialFunctions/StandardTransformUvs.azsli"
|
||||
#include "MaterialFunctions/EvaluateTangentFrame.azsli"
|
||||
#include "MaterialFunctions/ParallaxDepth.azsli"
|
||||
#include "MaterialFunctions/StandardMaybeClip.azsli"
|
||||
#include "MaterialFunctions/StandardGetAlphaAndClip.azsli"
|
||||
|
||||
#include "DepthPass_WithPS.azsl"
|
||||
|
||||
@@ -39,7 +39,7 @@ COMMON_OPTIONS_DETAIL_MAPS()
|
||||
#include "MaterialFunctions/EnhancedParallaxDepth.azsli"
|
||||
#include "MaterialFunctions/StandardGetNormalToWorld.azsli"
|
||||
#include "MaterialFunctions/StandardGetObjectToWorld.azsli"
|
||||
#include "MaterialFunctions/StandardMaybeClip.azsli"
|
||||
#include "MaterialFunctions/StandardGetAlphaAndClip.azsli"
|
||||
#include "MaterialFunctions/StandardTransformDetailUvs.azsli"
|
||||
#include "MaterialFunctions/StandardTransformUvs.azsli"
|
||||
|
||||
|
||||
@@ -18,10 +18,9 @@
|
||||
|
||||
#include "MaterialFunctions/StandardGetObjectToWorld.azsli"
|
||||
#include "MaterialFunctions/StandardGetNormalToWorld.azsli"
|
||||
#include "MaterialFunctions/StandardGetAlpha.azsli"
|
||||
#include "MaterialFunctions/StandardTransformUvs.azsli"
|
||||
#include "MaterialFunctions/EvaluateTangentFrame.azsli"
|
||||
#include "MaterialFunctions/ParallaxDepth.azsli"
|
||||
#include "MaterialFunctions/StandardMaybeClip.azsli"
|
||||
#include "MaterialFunctions/StandardGetAlphaAndClip.azsli"
|
||||
|
||||
#include "ShadowMap_WithPS.azsl"
|
||||
@@ -152,8 +152,7 @@ PbrLightingOutput ForwardPassPS_Common(VSOutput IN, bool isFrontFace, out float
|
||||
|
||||
// ------- Alpha & Clip -------
|
||||
// TODO: this often invokes a separate sample of the base color texture which is wasteful
|
||||
float alpha = GetAlpha(IN.m_uv);
|
||||
MaybeClip(alpha, IN.m_uv);
|
||||
float alpha = GetAlphaAndClip(IN.m_uv);
|
||||
|
||||
EvaluateEnhancedSurface(IN.m_normal, IN.m_uv, IN.m_detailUv, tangents, bitangents, isFrontFace, displacementIsClipped, surface);
|
||||
|
||||
|
||||
-1
@@ -8,7 +8,6 @@
|
||||
|
||||
#include <Atom/Features/PBR/Surfaces/EnhancedSurface.azsli>
|
||||
#include <Atom/Features/MatrixUtility.azsli>
|
||||
#include "StandardGetAlpha.azsli"
|
||||
|
||||
void EvaluateEnhancedSurface(
|
||||
float3 normal,
|
||||
|
||||
-1
@@ -8,7 +8,6 @@
|
||||
|
||||
#include <Atom/Features/PBR/Surfaces/StandardSurface.azsli>
|
||||
#include <Atom/Features/MatrixUtility.azsli>
|
||||
#include "StandardGetAlpha.azsli"
|
||||
|
||||
void EvaluateStandardSurface(
|
||||
float3 normal,
|
||||
|
||||
+2
-2
@@ -17,8 +17,8 @@ void EvaluateTangentFrame(
|
||||
// The input tangent and bitangent vectors are optional and used to forward data from interpolants
|
||||
float3 IN_tangent,
|
||||
float3 IN_bitangent,
|
||||
float3 OUT_tangent,
|
||||
float3 OUT_bitangent)
|
||||
out float3 OUT_tangent,
|
||||
out float3 OUT_bitangent)
|
||||
{
|
||||
if (DrawSrg::GetTangentAtUv(uvIndex) == 0)
|
||||
{
|
||||
|
||||
+4
-2
@@ -8,10 +8,12 @@
|
||||
|
||||
#include "../MaterialInputs/AlphaInput.azsli"
|
||||
|
||||
float GetAlpha(float2 uvs[UvSetCount])
|
||||
float GetAlphaAndClip(float2 uvs[UvSetCount])
|
||||
{
|
||||
// Alpha
|
||||
float2 baseColorUV = uvs[MaterialSrg::m_baseColorMapUvIndex];
|
||||
float2 opacityUV = uvs[MaterialSrg::m_opacityMapUvIndex];
|
||||
return MaterialSrg::m_opacityFactor * SampleAlpha(MaterialSrg::m_baseColorMap, MaterialSrg::m_opacityMap, baseColorUV, opacityUV, MaterialSrg::m_sampler, o_opacity_source);
|
||||
float alpha = SampleAlpha(MaterialSrg::m_baseColorMap, MaterialSrg::m_opacityMap, baseColorUV, opacityUV, MaterialSrg::m_sampler, o_opacity_source);
|
||||
CheckClipping(alpha, MaterialSrg::m_opacityFactor);
|
||||
return MaterialSrg::m_opacityFactor * alpha;
|
||||
}
|
||||
-14
@@ -1,14 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) Contributors to the Open 3D Engine Project.
|
||||
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include <Atom/Features/PBR/AlphaUtils.azsli>
|
||||
|
||||
void MaybeClip(float alpha, float2 uvs[UvSetCount])
|
||||
{
|
||||
CheckClipping(alpha, MaterialSrg::m_opacityFactor);
|
||||
}
|
||||
@@ -119,8 +119,7 @@ PSDepthOutput MainPS(VertexOutput IN, bool isFrontFace : SV_IsFrontFace)
|
||||
}
|
||||
|
||||
#ifndef MULTILAYER
|
||||
float alpha = GetAlpha(IN.m_uv);
|
||||
MaybeClip(alpha, IN.m_uv);
|
||||
GetAlphaAndClip(IN.m_uv);
|
||||
#endif
|
||||
|
||||
return OUT;
|
||||
|
||||
@@ -11,10 +11,9 @@
|
||||
|
||||
#include "MaterialFunctions/StandardGetObjectToWorld.azsli"
|
||||
#include "MaterialFunctions/StandardGetNormalToWorld.azsli"
|
||||
#include "MaterialFunctions/StandardGetAlpha.azsli"
|
||||
#include "MaterialFunctions/StandardGetAlphaAndClip.azsli"
|
||||
#include "MaterialFunctions/EvaluateTangentFrame.azsli"
|
||||
#include "MaterialFunctions/StandardTransformUvs.azsli"
|
||||
#include "MaterialFunctions/ParallaxDepth.azsli"
|
||||
#include "MaterialFunctions/StandardMaybeClip.azsli"
|
||||
|
||||
#include "DepthPass_WithPS.azsl"
|
||||
|
||||
@@ -32,7 +32,7 @@ COMMON_OPTIONS_EMISSIVE()
|
||||
#include "MaterialFunctions/ParallaxDepth.azsli"
|
||||
#include "MaterialFunctions/StandardGetNormalToWorld.azsli"
|
||||
#include "MaterialFunctions/StandardGetObjectToWorld.azsli"
|
||||
#include "MaterialFunctions/StandardMaybeClip.azsli"
|
||||
#include "MaterialFunctions/StandardGetAlphaAndClip.azsli"
|
||||
#include "MaterialFunctions/StandardTransformUvs.azsli"
|
||||
|
||||
#include "StandardSurface_ForwardPass.azsl"
|
||||
@@ -15,10 +15,9 @@
|
||||
|
||||
#include "MaterialFunctions/StandardGetObjectToWorld.azsli"
|
||||
#include "MaterialFunctions/StandardGetNormalToWorld.azsli"
|
||||
#include "MaterialFunctions/StandardGetAlpha.azsli"
|
||||
#include "MaterialFunctions/StandardGetAlphaAndClip.azsli"
|
||||
#include "MaterialFunctions/StandardTransformUvs.azsli"
|
||||
#include "MaterialFunctions/EvaluateTangentFrame.azsli"
|
||||
#include "MaterialFunctions/ParallaxDepth.azsli"
|
||||
#include "MaterialFunctions/StandardMaybeClip.azsli"
|
||||
|
||||
#include "ShadowMap_WithPS.azsl"
|
||||
@@ -149,8 +149,7 @@ PbrLightingOutput ForwardPassPS_Common(VSOutput IN, bool isFrontFace, out float
|
||||
|
||||
// ------- Alpha & Clip -------
|
||||
// TODO: this often invokes a separate sample of the base color texture which is wasteful
|
||||
float alpha = GetAlpha(IN.m_uv);
|
||||
MaybeClip(alpha, IN.m_uv);
|
||||
float alpha = GetAlphaAndClip(IN.m_uv);
|
||||
|
||||
EvaluateStandardSurface(IN.m_normal, IN.m_uv, tangents, bitangents, isFrontFace, displacementIsClipped, surface);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user