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)) {
obj.setProperty("opacityCutoff", FALLTHROUGH);
} else if (!material.key.isOpacityCutoff()) {
} else if (material.key.isOpacityCutoff()) {
obj.setProperty("opacityCutoff", material.opacityCutoff);
}

View file

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

View file

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

View file

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

View file

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