summaryrefslogtreecommitdiff
path: root/indra/llrender
diff options
context:
space:
mode:
Diffstat (limited to 'indra/llrender')
-rw-r--r--indra/llrender/llglslshader.cpp6
-rw-r--r--indra/llrender/llglslshader.h17
2 files changed, 23 insertions, 0 deletions
diff --git a/indra/llrender/llglslshader.cpp b/indra/llrender/llglslshader.cpp
index f6b1ca3741..ecd0c6908b 100644
--- a/indra/llrender/llglslshader.cpp
+++ b/indra/llrender/llglslshader.cpp
@@ -1049,6 +1049,12 @@ void LLGLSLShader::bind()
}
}
+void LLGLSLShader::bind(LLGLSLShader::GLTFVariant variant)
+{
+ llassert(mGLTFVariants.size() == LLGLSLShader::NUM_GLTF_VARIANTS);
+ mGLTFVariants[variant].bind();
+}
+
void LLGLSLShader::bind(bool rigged)
{
if (rigged)
diff --git a/indra/llrender/llglslshader.h b/indra/llrender/llglslshader.h
index 75e1bdfd54..fa01d212e1 100644
--- a/indra/llrender/llglslshader.h
+++ b/indra/llrender/llglslshader.h
@@ -44,6 +44,7 @@ public:
bool hasTransport = false; // implies no lighting (it's possible to have neither though)
bool hasSkinning = false;
bool hasObjectSkinning = false;
+ bool mGLTF = false;
bool hasAtmospherics = false;
bool hasGamma = false;
bool hasShadows = false;
@@ -318,6 +319,22 @@ public:
// this pointer should be set to whichever shader represents this shader's rigged variant
LLGLSLShader* mRiggedVariant = nullptr;
+ // variants for use by GLTF renderer
+ // "this" is considered to be OPAQUE
+ enum GLTFVariant
+ {
+ STATIC_OPAQUE,
+ STATIC_BLEND,
+ RIGGED_OPAQUE,
+ RIGGED_BLEND,
+ NUM_GLTF_VARIANTS
+ };
+
+ std::vector<LLGLSLShader> mGLTFVariants;
+
+ //helper to bind GLTF variant
+ void bind(GLTFVariant variant);
+
// hacky flag used for optimization in LLDrawPoolAlpha
bool mCanBindFast = false;