From 4d94cbe0d891fccf87ac9c2e708c92090bc8c929 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Fri, 27 Sep 2019 00:29:10 -0700 Subject: [PATCH] Pass 3rd of the hope to clean it up... --- .../GraphicsScriptingInterface.cpp | 2 +- .../graphics-scripting/ScriptableModel.cpp | 8 +++--- libraries/graphics/src/graphics/Material.cpp | 27 ++++++++++--------- .../render-utils/src/RenderPipelines.cpp | 10 +++---- libraries/render-utils/src/model.slf | 4 +-- 5 files changed, 26 insertions(+), 25 deletions(-) diff --git a/libraries/graphics-scripting/src/graphics-scripting/GraphicsScriptingInterface.cpp b/libraries/graphics-scripting/src/graphics-scripting/GraphicsScriptingInterface.cpp index ef3172119c..ca9634e365 100644 --- a/libraries/graphics-scripting/src/graphics-scripting/GraphicsScriptingInterface.cpp +++ b/libraries/graphics-scripting/src/graphics-scripting/GraphicsScriptingInterface.cpp @@ -428,7 +428,7 @@ namespace scriptable { if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::MaterialKey::OPACITY_CUTOFF_VAL_BIT)) { obj.setProperty("opacityCutoff", FALLTHROUGH); - } else if (!material.key.isOpacityCutoff()) { + } else if (material.key.isOpacityCutoff()) { obj.setProperty("opacityCutoff", material.opacityCutoff); } diff --git a/libraries/graphics-scripting/src/graphics-scripting/ScriptableModel.cpp b/libraries/graphics-scripting/src/graphics-scripting/ScriptableModel.cpp index 4f656d2d7d..bc610108ec 100644 --- a/libraries/graphics-scripting/src/graphics-scripting/ScriptableModel.cpp +++ b/libraries/graphics-scripting/src/graphics-scripting/ScriptableModel.cpp @@ -26,7 +26,7 @@ scriptable::ScriptableMaterial& scriptable::ScriptableMaterial::operator=(const roughness = material.roughness; metallic = material.metallic; scattering = material.scattering; - alphaCutoff = material.alphaCutoff; + opacityCutoff = material.opacityCutoff; unlit = material.unlit; emissive = material.emissive; albedo = material.albedo; @@ -42,7 +42,7 @@ scriptable::ScriptableMaterial& scriptable::ScriptableMaterial::operator=(const occlusionMap = material.occlusionMap; lightMap = material.lightMap; scatteringMap = material.scatteringMap; - opacityMode = material.opacityMode; + opacityMapMode = material.opacityMapMode; defaultFallthrough = material.defaultFallthrough; @@ -59,11 +59,11 @@ scriptable::ScriptableMaterial::ScriptableMaterial(const graphics::MaterialPoint model = material->getModel().c_str(); opacity = material->getOpacity(); - opacityMode = QString(graphics::MaterialKey::getAlphaMapModeName(material->getAlphaMapMode()).c_str()); + opacityMapMode = QString(graphics::MaterialKey::getOpacityMapModeName(material->getOpacityMapMode()).c_str()); roughness = material->getRoughness(); metallic = material->getMetallic(); scattering = material->getScattering(); - alphaCutoff = material->getAlphaCutoff(); + opacityCutoff = material->getOpacityCutoff(); unlit = material->isUnlit(); emissive = material->getEmissive(); albedo = material->getAlbedo(); diff --git a/libraries/graphics/src/graphics/Material.cpp b/libraries/graphics/src/graphics/Material.cpp index 48ff31e739..ed98b1a1e4 100755 --- a/libraries/graphics/src/graphics/Material.cpp +++ b/libraries/graphics/src/graphics/Material.cpp @@ -25,11 +25,12 @@ const float Material::DEFAULT_ALBEDO { 0.5f }; const float Material::DEFAULT_METALLIC { 0.0f }; const float Material::DEFAULT_ROUGHNESS { 1.0f }; const float Material::DEFAULT_SCATTERING{ 0.0f }; -const float Material::DEFAULT_ALPHA_CUTOFF { 0.5f }; +const MaterialKey::OpacityMapMode Material::DEFAULT_OPACITY_MAP_MODE{ MaterialKey::OPACITY_MAP_OPAQUE }; +const float Material::DEFAULT_OPACITY_CUTOFF { 0.5f }; -std::string MaterialKey::getAlphaMapModeName(AlphaMapMode mode) { - const std::string names[3] = { "ALPHA_MAP_OPAQUE", "ALPHA_MAP_MASK", "ALPHA_MAP_BLEND" }; +std::string MaterialKey::getOpacityMapModeName(OpacityMapMode mode) { + const std::string names[3] = { "OPACITY_MAP_OPAQUE", "OAPCITY_MAP_MASK", "OPACITY_MAP_BLEND" }; return names[mode]; } @@ -49,7 +50,7 @@ Material::Material(const Material& material) : _roughness(material._roughness), _metallic(material._metallic), _scattering(material._scattering), - _alphaCutoff(material._alphaCutoff), + _opacityCutoff(material._opacityCutoff), _texcoordTransforms(material._texcoordTransforms), _lightmapParams(material._lightmapParams), _materialParams(material._materialParams), @@ -71,7 +72,7 @@ Material& Material::operator=(const Material& material) { _roughness = material._roughness; _metallic = material._metallic; _scattering = material._scattering; - _alphaCutoff = material._alphaCutoff; + _opacityCutoff = material._opacityCutoff; _texcoordTransforms = material._texcoordTransforms; _lightmapParams = material._lightmapParams; _materialParams = material._materialParams; @@ -120,18 +121,18 @@ void Material::setScattering(float scattering) { _scattering = scattering; } -void Material::setAlphaCutoff(float alphaCutoff) { - alphaCutoff = glm::clamp(alphaCutoff, 0.0f, 1.0f); - _key.setAlphaCutoff(alphaCutoff != DEFAULT_ALPHA_CUTOFF); - _alphaCutoff = alphaCutoff; +void Material::setOpacityCutoff(float opacityCutoff) { + opacityCutoff = glm::clamp(opacityCutoff, 0.0f, 1.0f); + _key.setOpacityCutoff(opacityCutoff != DEFAULT_OPACITY_CUTOFF); + _opacityCutoff = opacityCutoff; } -void Material::setAlphaMapMode(MaterialKey::AlphaMapMode alphaMode) { - _key.setAlphaMapMode(alphaMode); +void Material::setOpacityMapMode(MaterialKey::OpacityMapMode opacityMapMode) { + _key.setOpacityMapMode(opacityMapMode); } -MaterialKey::AlphaMapMode Material::getAlphaMapMode() const { - return _key.getAlphaMapMode(); +MaterialKey::OpacityMapMode Material::getOpacityMapMode() const { + return _key.getOpacityMapMode(); } void Material::setTextureMap(MapChannel channel, const TextureMapPointer& textureMap) { diff --git a/libraries/render-utils/src/RenderPipelines.cpp b/libraries/render-utils/src/RenderPipelines.cpp index 42ff74476f..518e43a8ec 100644 --- a/libraries/render-utils/src/RenderPipelines.cpp +++ b/libraries/render-utils/src/RenderPipelines.cpp @@ -461,10 +461,10 @@ void RenderPipelines::updateMultiMaterial(graphics::MultiMaterial& multiMaterial wasSet = true; } break; - case graphics::MaterialKey::ALPHA_CUTOFF_VAL_BIT: - if (materialKey.isAlphaCutoff()) { - schema._alphaCutoff = material->getAlphaCutoff(); - schemaKey.setAlphaCutoff(true); + case graphics::MaterialKey::OPACITY_CUTOFF_VAL_BIT: + if (materialKey.isOpacityCutoff()) { + schema._opacityCutoff = material->getOpacityCutoff(); + schemaKey.setOpacityCutoff(true); wasSet = true; } break; @@ -759,7 +759,7 @@ bool RenderPipelines::bindMaterials(graphics::MultiMaterial& multiMaterial, gpu: // For shadows, we only need opacity mask information auto key = multiMaterial.getMaterialKey(); - if (renderMode != render::Args::RenderMode::SHADOW_RENDER_MODE || key.isOpacityMaskMap()) { + if (renderMode != render::Args::RenderMode::SHADOW_RENDER_MODE || (key.isOpacityMaskMap() || key.isTranslucentMap())) { auto& schemaBuffer = multiMaterial.getSchemaBuffer(); batch.setUniformBuffer(gr::Buffer::Material, schemaBuffer); if (enableTextures) { diff --git a/libraries/render-utils/src/model.slf b/libraries/render-utils/src/model.slf index bf3ec82bbc..bacc6b0ab1 100644 --- a/libraries/render-utils/src/model.slf +++ b/libraries/render-utils/src/model.slf @@ -157,10 +157,10 @@ void main(void) { <@if HIFI_USE_TRANSLUCENT@> float cutoff = getMaterialOpacityCutoff(mat); float opacity = getMaterialOpacity(mat) * _color.a; - <$evalMaterialOpacity(albedoTex.a, opacity, matKey, opacity)$>; + <$evalMaterialOpacity(albedoTex.a, cutoff, opacity, matKey, opacity)$>; <$discardInvisible(opacity)$>; <@else@> - float cutoff = getMaterialAlphaCutoff(mat); + float cutoff = getMaterialOpacityCutoff(mat); float opacity = 1.0; <$evalMaterialOpacityMask(albedoTex.a, cutoff, opacity)$>; <$discardTransparent(opacity)$>;