diff --git a/libraries/entities-renderer/src/RenderableImageEntityItem.cpp b/libraries/entities-renderer/src/RenderableImageEntityItem.cpp index 6638bc0687..20d10c6fd4 100644 --- a/libraries/entities-renderer/src/RenderableImageEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableImageEntityItem.cpp @@ -163,7 +163,7 @@ void ImageEntityRenderer::doRender(RenderArgs* args) { transform = _renderTransform; }); - if (!_visible || !texture || !texture->isLoaded()) { + if (!_visible || !texture || !texture->isLoaded() || color.a == 0.0f) { return; } @@ -214,4 +214,4 @@ void ImageEntityRenderer::doRender(RenderArgs* args) { ); batch->setResourceTexture(0, nullptr); -} \ No newline at end of file +} diff --git a/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp b/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp index 6a0d7b001c..fbc24cb4a5 100644 --- a/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp @@ -270,6 +270,10 @@ void ShapeEntityRenderer::doRender(RenderArgs* args) { } }); + if (outColor.a == 0.0f) { + return; + } + if (proceduralRender) { if (render::ShapeKey(args->_globalShapeKey).isWireframe() || primitiveMode == PrimitiveMode::LINES) { geometryCache->renderWireShape(batch, geometryShape, outColor); diff --git a/libraries/render-utils/src/ShadingModel.slh b/libraries/render-utils/src/ShadingModel.slh index 99aa01cc5e..5af986bd9d 100644 --- a/libraries/render-utils/src/ShadingModel.slh +++ b/libraries/render-utils/src/ShadingModel.slh @@ -222,7 +222,7 @@ void evalFragShadingGloss(out vec3 diffuse, out vec3 specular, } vec3 evalSpecularWithOpacity(vec3 specular, float opacity) { - return specular / opacity; + return specular / mix(1.0, opacity, float(opacity > 0.0)); } <@if not GETFRESNEL0@>