Pass 3rd of the hope to clean it up...

This commit is contained in:
Sam Gateau 2019-09-27 00:29:10 -07:00
parent 24cc302a8b
commit 4d94cbe0d8
5 changed files with 26 additions and 25 deletions

View file

@ -428,7 +428,7 @@ namespace scriptable {
if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::MaterialKey::OPACITY_CUTOFF_VAL_BIT)) { if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::MaterialKey::OPACITY_CUTOFF_VAL_BIT)) {
obj.setProperty("opacityCutoff", FALLTHROUGH); obj.setProperty("opacityCutoff", FALLTHROUGH);
} else if (!material.key.isOpacityCutoff()) { } else if (material.key.isOpacityCutoff()) {
obj.setProperty("opacityCutoff", material.opacityCutoff); obj.setProperty("opacityCutoff", material.opacityCutoff);
} }

View file

@ -26,7 +26,7 @@ scriptable::ScriptableMaterial& scriptable::ScriptableMaterial::operator=(const
roughness = material.roughness; roughness = material.roughness;
metallic = material.metallic; metallic = material.metallic;
scattering = material.scattering; scattering = material.scattering;
alphaCutoff = material.alphaCutoff; opacityCutoff = material.opacityCutoff;
unlit = material.unlit; unlit = material.unlit;
emissive = material.emissive; emissive = material.emissive;
albedo = material.albedo; albedo = material.albedo;
@ -42,7 +42,7 @@ scriptable::ScriptableMaterial& scriptable::ScriptableMaterial::operator=(const
occlusionMap = material.occlusionMap; occlusionMap = material.occlusionMap;
lightMap = material.lightMap; lightMap = material.lightMap;
scatteringMap = material.scatteringMap; scatteringMap = material.scatteringMap;
opacityMode = material.opacityMode; opacityMapMode = material.opacityMapMode;
defaultFallthrough = material.defaultFallthrough; defaultFallthrough = material.defaultFallthrough;
@ -59,11 +59,11 @@ scriptable::ScriptableMaterial::ScriptableMaterial(const graphics::MaterialPoint
model = material->getModel().c_str(); model = material->getModel().c_str();
opacity = material->getOpacity(); opacity = material->getOpacity();
opacityMode = QString(graphics::MaterialKey::getAlphaMapModeName(material->getAlphaMapMode()).c_str()); opacityMapMode = QString(graphics::MaterialKey::getOpacityMapModeName(material->getOpacityMapMode()).c_str());
roughness = material->getRoughness(); roughness = material->getRoughness();
metallic = material->getMetallic(); metallic = material->getMetallic();
scattering = material->getScattering(); scattering = material->getScattering();
alphaCutoff = material->getAlphaCutoff(); opacityCutoff = material->getOpacityCutoff();
unlit = material->isUnlit(); unlit = material->isUnlit();
emissive = material->getEmissive(); emissive = material->getEmissive();
albedo = material->getAlbedo(); albedo = material->getAlbedo();

View file

@ -25,11 +25,12 @@ const float Material::DEFAULT_ALBEDO { 0.5f };
const float Material::DEFAULT_METALLIC { 0.0f }; const float Material::DEFAULT_METALLIC { 0.0f };
const float Material::DEFAULT_ROUGHNESS { 1.0f }; const float Material::DEFAULT_ROUGHNESS { 1.0f };
const float Material::DEFAULT_SCATTERING{ 0.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) { std::string MaterialKey::getOpacityMapModeName(OpacityMapMode mode) {
const std::string names[3] = { "ALPHA_MAP_OPAQUE", "ALPHA_MAP_MASK", "ALPHA_MAP_BLEND" }; const std::string names[3] = { "OPACITY_MAP_OPAQUE", "OAPCITY_MAP_MASK", "OPACITY_MAP_BLEND" };
return names[mode]; return names[mode];
} }
@ -49,7 +50,7 @@ Material::Material(const Material& material) :
_roughness(material._roughness), _roughness(material._roughness),
_metallic(material._metallic), _metallic(material._metallic),
_scattering(material._scattering), _scattering(material._scattering),
_alphaCutoff(material._alphaCutoff), _opacityCutoff(material._opacityCutoff),
_texcoordTransforms(material._texcoordTransforms), _texcoordTransforms(material._texcoordTransforms),
_lightmapParams(material._lightmapParams), _lightmapParams(material._lightmapParams),
_materialParams(material._materialParams), _materialParams(material._materialParams),
@ -71,7 +72,7 @@ Material& Material::operator=(const Material& material) {
_roughness = material._roughness; _roughness = material._roughness;
_metallic = material._metallic; _metallic = material._metallic;
_scattering = material._scattering; _scattering = material._scattering;
_alphaCutoff = material._alphaCutoff; _opacityCutoff = material._opacityCutoff;
_texcoordTransforms = material._texcoordTransforms; _texcoordTransforms = material._texcoordTransforms;
_lightmapParams = material._lightmapParams; _lightmapParams = material._lightmapParams;
_materialParams = material._materialParams; _materialParams = material._materialParams;
@ -120,18 +121,18 @@ void Material::setScattering(float scattering) {
_scattering = scattering; _scattering = scattering;
} }
void Material::setAlphaCutoff(float alphaCutoff) { void Material::setOpacityCutoff(float opacityCutoff) {
alphaCutoff = glm::clamp(alphaCutoff, 0.0f, 1.0f); opacityCutoff = glm::clamp(opacityCutoff, 0.0f, 1.0f);
_key.setAlphaCutoff(alphaCutoff != DEFAULT_ALPHA_CUTOFF); _key.setOpacityCutoff(opacityCutoff != DEFAULT_OPACITY_CUTOFF);
_alphaCutoff = alphaCutoff; _opacityCutoff = opacityCutoff;
} }
void Material::setAlphaMapMode(MaterialKey::AlphaMapMode alphaMode) { void Material::setOpacityMapMode(MaterialKey::OpacityMapMode opacityMapMode) {
_key.setAlphaMapMode(alphaMode); _key.setOpacityMapMode(opacityMapMode);
} }
MaterialKey::AlphaMapMode Material::getAlphaMapMode() const { MaterialKey::OpacityMapMode Material::getOpacityMapMode() const {
return _key.getAlphaMapMode(); return _key.getOpacityMapMode();
} }
void Material::setTextureMap(MapChannel channel, const TextureMapPointer& textureMap) { void Material::setTextureMap(MapChannel channel, const TextureMapPointer& textureMap) {

View file

@ -461,10 +461,10 @@ void RenderPipelines::updateMultiMaterial(graphics::MultiMaterial& multiMaterial
wasSet = true; wasSet = true;
} }
break; break;
case graphics::MaterialKey::ALPHA_CUTOFF_VAL_BIT: case graphics::MaterialKey::OPACITY_CUTOFF_VAL_BIT:
if (materialKey.isAlphaCutoff()) { if (materialKey.isOpacityCutoff()) {
schema._alphaCutoff = material->getAlphaCutoff(); schema._opacityCutoff = material->getOpacityCutoff();
schemaKey.setAlphaCutoff(true); schemaKey.setOpacityCutoff(true);
wasSet = true; wasSet = true;
} }
break; break;
@ -759,7 +759,7 @@ bool RenderPipelines::bindMaterials(graphics::MultiMaterial& multiMaterial, gpu:
// For shadows, we only need opacity mask information // For shadows, we only need opacity mask information
auto key = multiMaterial.getMaterialKey(); 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(); auto& schemaBuffer = multiMaterial.getSchemaBuffer();
batch.setUniformBuffer(gr::Buffer::Material, schemaBuffer); batch.setUniformBuffer(gr::Buffer::Material, schemaBuffer);
if (enableTextures) { if (enableTextures) {

View file

@ -157,10 +157,10 @@ void main(void) {
<@if HIFI_USE_TRANSLUCENT@> <@if HIFI_USE_TRANSLUCENT@>
float cutoff = getMaterialOpacityCutoff(mat); float cutoff = getMaterialOpacityCutoff(mat);
float opacity = getMaterialOpacity(mat) * _color.a; float opacity = getMaterialOpacity(mat) * _color.a;
<$evalMaterialOpacity(albedoTex.a, opacity, matKey, opacity)$>; <$evalMaterialOpacity(albedoTex.a, cutoff, opacity, matKey, opacity)$>;
<$discardInvisible(opacity)$>; <$discardInvisible(opacity)$>;
<@else@> <@else@>
float cutoff = getMaterialAlphaCutoff(mat); float cutoff = getMaterialOpacityCutoff(mat);
float opacity = 1.0; float opacity = 1.0;
<$evalMaterialOpacityMask(albedoTex.a, cutoff, opacity)$>; <$evalMaterialOpacityMask(albedoTex.a, cutoff, opacity)$>;
<$discardTransparent(opacity)$>; <$discardTransparent(opacity)$>;