SL-17701: PBR: Add support for gltf Alpha MASK (cutoff)
parent
7bb5315847
commit
7229dfcc59
|
|
@ -76,17 +76,23 @@ VARYING vec2 vary_texcoord1;
|
|||
VARYING vec2 vary_texcoord2;
|
||||
#endif
|
||||
|
||||
uniform float minimum_alpha; // PBR alphaMode: MASK, See: mAlphaCutoff, setAlphaCutoff()
|
||||
|
||||
vec2 encode_normal(vec3 n);
|
||||
vec3 linear_to_srgb(vec3 c);
|
||||
|
||||
const float M_PI = 3.141592653589793;
|
||||
|
||||
void main()
|
||||
{
|
||||
// IF .mFeatures.mIndexedTextureChannels = LLGLSLShader::sIndexedTextureChannels;
|
||||
// vec3 col = vertex_color.rgb * diffuseLookup(vary_texcoord0.xy).rgb;
|
||||
// else
|
||||
vec3 col = vertex_color.rgb * texture2D(diffuseMap, vary_texcoord0.xy).rgb;
|
||||
vec4 albedo = texture2D(diffuseMap, vary_texcoord0.xy).rgba;
|
||||
if (albedo.a < minimum_alpha)
|
||||
{
|
||||
discard;
|
||||
}
|
||||
|
||||
vec3 col = vertex_color.rgb * albedo.rgb;
|
||||
|
||||
#ifdef HAS_NORMAL_MAP
|
||||
vec4 norm = texture2D(bumpMap, vary_texcoord1.xy);
|
||||
|
|
|
|||
|
|
@ -95,6 +95,16 @@ void LLDrawPoolPBROpaque::renderDeferred(S32 pass)
|
|||
for (LLCullResult::drawinfo_iterator i = begin; i != end; ++i)
|
||||
{
|
||||
LLDrawInfo* pparams = *i;
|
||||
LLGLTFMaterial *mat = pparams->mGLTFMaterial;
|
||||
|
||||
// glTF 2.0 Specification 3.9.4. Alpha Coverage
|
||||
// mAlphaCutoff is only valid for LLGLTFMaterial::ALPHA_MODE_MASK
|
||||
F32 min_alpha = -1.0;
|
||||
if (mat->mAlphaMode == LLGLTFMaterial::ALPHA_MODE_MASK)
|
||||
{
|
||||
min_alpha = mat->mAlphaCutoff;
|
||||
}
|
||||
shader->uniform1f(LLShaderMgr::MINIMUM_ALPHA, min_alpha);
|
||||
|
||||
if (pparams->mTexture.notNull())
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1574,6 +1574,7 @@ void LLMaterialEditor::getGLTFMaterial(LLGLTFMaterial* mat)
|
|||
|
||||
mat->mDoubleSided = getDoubleSided();
|
||||
mat->setAlphaMode(getAlphaMode());
|
||||
mat->mAlphaCutoff = getAlphaCutoff();
|
||||
}
|
||||
|
||||
void LLMaterialEditor::setFromGLTFMaterial(LLGLTFMaterial* mat)
|
||||
|
|
@ -1591,6 +1592,7 @@ void LLMaterialEditor::setFromGLTFMaterial(LLGLTFMaterial* mat)
|
|||
|
||||
setDoubleSided(mat->mDoubleSided);
|
||||
setAlphaMode(mat->getAlphaMode());
|
||||
setAlphaCutoff(mat->mAlphaCutoff);
|
||||
}
|
||||
|
||||
void LLMaterialEditor::loadAsset()
|
||||
|
|
|
|||
Loading…
Reference in New Issue