diff options
author | Dave Parks <davep@lindenlab.com> | 2013-03-27 22:01:56 -0500 |
---|---|---|
committer | Dave Parks <davep@lindenlab.com> | 2013-03-27 22:01:56 -0500 |
commit | 74b5bfb98f0496a8e1519c4732bb5942e6fcc78a (patch) | |
tree | 8963d2db094d4fb349a31364b907087a48b4bddf /indra/llprimitive/llmaterial.cpp | |
parent | f0c2f99c25a4d73dac75203db881aaebaeeb25f6 (diff) | |
parent | 4f8827d2a8fc37f88d271be20f8fa03b14ec5732 (diff) |
Automated merge with https://bitbucket.org/lindenlab/davep-materials
Diffstat (limited to 'indra/llprimitive/llmaterial.cpp')
-rw-r--r-- | indra/llprimitive/llmaterial.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/indra/llprimitive/llmaterial.cpp b/indra/llprimitive/llmaterial.cpp index f6fd8e557a..7d1ce4ab86 100644 --- a/indra/llprimitive/llmaterial.cpp +++ b/indra/llprimitive/llmaterial.cpp @@ -181,3 +181,36 @@ bool LLMaterial::operator != (const LLMaterial& rhs) const { return !(*this == rhs); } + + +U32 LLMaterial::getShaderMask() +{ //NEVER incorporate this value into the message system -- this function will vary depending on viewer implementation + U32 ret = 0; + + //two least significant bits are "diffuse alpha mode" + ret = getDiffuseAlphaMode(); + + llassert(ret < SHADER_COUNT); + + //next bit is whether or not specular map is present + const U32 SPEC_BIT = 0x4; + + if (getSpecularID().notNull()) + { + ret |= SPEC_BIT; + } + + llassert(ret < SHADER_COUNT); + + //next bit is whether or not normal map is present + const U32 NORM_BIT = 0x8; + if (getNormalID().notNull()) + { + ret |= NORM_BIT; + } + + llassert(ret < SHADER_COUNT); + + return ret; +} + |