Consolidate alpha retrieval and clip

Signed-off-by: Jeremy Ong <jcong@amazon.com>
monroegm-disable-blank-issue-2
Jeremy Ong 4 years ago
parent 61f915366a
commit 7aace39c2f

@ -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);

@ -8,7 +8,6 @@
#include <Atom/Features/PBR/Surfaces/EnhancedSurface.azsli>
#include <Atom/Features/MatrixUtility.azsli>
#include "StandardGetAlpha.azsli"
void EvaluateEnhancedSurface(
float3 normal,

@ -8,7 +8,6 @@
#include <Atom/Features/PBR/Surfaces/StandardSurface.azsli>
#include <Atom/Features/MatrixUtility.azsli>
#include "StandardGetAlpha.azsli"
void EvaluateStandardSurface(
float3 normal,

@ -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)
{

@ -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;
}

@ -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);

Loading…
Cancel
Save