diff options
author | Dave Parks <davep@lindenlab.com> | 2013-03-27 21:59:14 -0500 |
---|---|---|
committer | Dave Parks <davep@lindenlab.com> | 2013-03-27 21:59:14 -0500 |
commit | 6300f4f768de13823a754831797cb34022f87b60 (patch) | |
tree | ae847221ee1a68535e58562cb291441489ab0f82 /indra/llprimitive/llmaterial.cpp | |
parent | 7be396cc985c0274ff05b375a8bf27c0e630666a (diff) |
NORSPEC-61 Hook up material parameters to shaders.
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; +} + |