diff options
| author | RunitaiLinden <davep@lindenlab.com> | 2023-04-19 18:15:28 -0500 | 
|---|---|---|
| committer | RunitaiLinden <davep@lindenlab.com> | 2023-04-19 18:15:28 -0500 | 
| commit | aaedacf3f3da9051f9f704eb1d050fcae63d0d3b (patch) | |
| tree | 58ac47d56cf2e98691b9a44e722e8fc2c0e00465 /indra | |
| parent | 45fdba8fd96ed714cbc0120b0a10a4c5b63ea706 (diff) | |
DRTVWR-559 Fix for bad vertex data getting sent to PBR alpha shader (auto alpha mask regression).
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/llface.cpp | 20 | ||||
| -rw-r--r-- | indra/newview/llvovolume.cpp | 1 | 
2 files changed, 14 insertions, 7 deletions
| diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index d7e4632ab0..5554112043 100644 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -1081,21 +1081,27 @@ void LLFace::updateRebuildFlags()  bool LLFace::canRenderAsMask()  { -	if (LLPipeline::sNoAlpha) +	const LLTextureEntry* te = getTextureEntry(); +	if( !te || !getViewerObject() || !getTexture() )  	{ -		return true; +		return false;  	} +    if (te->getGLTFRenderMaterial()) +    { +        return false; +    } + +    if (LLPipeline::sNoAlpha) +    { +        return true; +    } +      if (isState(LLFace::RIGGED))      { // never auto alpha-mask rigged faces          return false;      } -	const LLTextureEntry* te = getTextureEntry(); -	if( !te || !getViewerObject() || !getTexture() ) -	{ -		return false; -	}  	LLMaterial* mat = te->getMaterialParams();  	if (mat && mat->getDiffuseAlphaMode() == LLMaterial::DIFFUSE_ALPHA_MODE_BLEND) diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 9a5719d8b6..a73d149b10 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -5467,6 +5467,7 @@ void LLVolumeGeometryManager::registerFace(LLSpatialGroup* group, LLFace* facep,  		draw_info->validate();  	} +    llassert(info->mGLTFMaterial == nullptr || (info->mVertexBuffer->getTypeMask() & LLVertexBuffer::MAP_TANGENT) != 0);      llassert(type != LLPipeline::RENDER_TYPE_PASS_GLTF_PBR || info->mGLTFMaterial != nullptr);      llassert(type != LLPipeline::RENDER_TYPE_PASS_GLTF_PBR_RIGGED || info->mGLTFMaterial != nullptr);      llassert(type != LLPipeline::RENDER_TYPE_PASS_GLTF_PBR_ALPHA_MASK || info->mGLTFMaterial != nullptr); | 
