From f55c4b8b127065132b2a8630e6c0fcdd27b2c993 Mon Sep 17 00:00:00 2001 From: HifiExperiments Date: Sun, 24 Nov 2019 12:44:42 -0800 Subject: [PATCH] put back stepping in translucent case --- libraries/graphics/src/graphics/MaterialTextures.slh | 7 +++++-- libraries/render-utils/src/model.slf | 6 ++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/libraries/graphics/src/graphics/MaterialTextures.slh b/libraries/graphics/src/graphics/MaterialTextures.slh index 534e1ae869..cb83f7d9cf 100644 --- a/libraries/graphics/src/graphics/MaterialTextures.slh +++ b/libraries/graphics/src/graphics/MaterialTextures.slh @@ -223,10 +223,13 @@ vec3 fetchLightMap(vec2 uv) { } <@endfunc@> -<@func evalMaterialOpacity(fetchedOpacity, materialOpacity, opacity)@> +<@func evalMaterialOpacity(fetchedOpacity, materialOpacityCutoff, materialOpacity, matKey, opacity)@> { // This path only valid for transparent material - <$opacity$> = <$materialOpacity$> * <$fetchedOpacity$>; + <$opacity$> = mix(<$fetchedOpacity$>, + step(<$materialOpacityCutoff$>, <$fetchedOpacity$>), + float((<$matKey$> & OPACITY_MASK_MAP_BIT) != 0)) + * <$materialOpacity$>; } <@endfunc@> diff --git a/libraries/render-utils/src/model.slf b/libraries/render-utils/src/model.slf index 229a6b1907..a6cc82e335 100644 --- a/libraries/render-utils/src/model.slf +++ b/libraries/render-utils/src/model.slf @@ -103,8 +103,9 @@ void main(void) { <$fetchMaterialTexturesCoord0(matKey, _texCoord0, albedoTex)$> <@if HIFI_USE_TRANSLUCENT@> + float cutoff = getMaterialOpacityCutoff(mat); float opacity = getMaterialOpacity(mat) * _color.a; - <$evalMaterialOpacity(albedoTex.a, opacity, opacity)$>; + <$evalMaterialOpacity(albedoTex.a, cutoff, opacity, matKey, opacity)$>; <$discardInvisible(opacity)$>; <@else@> float cutoff = getMaterialOpacityCutoff(mat); @@ -154,8 +155,9 @@ void main(void) { <@endif@> <@if HIFI_USE_TRANSLUCENT@> + float cutoff = getMaterialOpacityCutoff(mat); float opacity = getMaterialOpacity(mat) * _color.a; - <$evalMaterialOpacity(albedoTex.a, opacity, opacity)$>; + <$evalMaterialOpacity(albedoTex.a, cutoff, opacity, matKey, opacity)$>; <$discardInvisible(opacity)$>; <@else@> float cutoff = getMaterialOpacityCutoff(mat);