diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/llvovolume.cpp | 9 | 
1 files changed, 8 insertions, 1 deletions
| diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index d1f4fa1c7a..e1335acc17 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -6655,12 +6655,19 @@ U32 LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, LLFace  						LLRenderPass::PASS_NORMSPEC_EMISSIVE,  					}; -					U32 mask = mat->getShaderMask(); +                    U32 alpha_mode = mat->getDiffuseAlphaMode(); +                    if (!distance_sort && alpha_mode == LLMaterial::DIFFUSE_ALPHA_MODE_BLEND) +                    { // HACK - this should never happen, but sometimes we get a material that thinks it has alpha blending when it ought not +                        alpha_mode = LLMaterial::DIFFUSE_ALPHA_MODE_NONE; +                    } +					U32 mask = mat->getShaderMask(alpha_mode);  					llassert(mask < sizeof(pass)/sizeof(U32));  					mask = llmin(mask, (U32)(sizeof(pass)/sizeof(U32)-1)); +                    // if this is going into alpha pool, distance sort MUST be true +                    llassert(pass[mask] == LLRenderPass::PASS_ALPHA ? distance_sort : true);  					registerFace(group, facep, pass[mask]);  				}  			} | 
