aboutsummaryrefslogtreecommitdiffstats
path: root/src/runtimerender/rendererimpl/qssgvertexpipelineimpl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtimerender/rendererimpl/qssgvertexpipelineimpl.cpp')
-rw-r--r--src/runtimerender/rendererimpl/qssgvertexpipelineimpl.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/runtimerender/rendererimpl/qssgvertexpipelineimpl.cpp b/src/runtimerender/rendererimpl/qssgvertexpipelineimpl.cpp
index 830aca17..20add5d6 100644
--- a/src/runtimerender/rendererimpl/qssgvertexpipelineimpl.cpp
+++ b/src/runtimerender/rendererimpl/qssgvertexpipelineimpl.cpp
@@ -181,7 +181,6 @@ void QSSGMaterialVertexPipeline::beginVertexGeneration(const QSSGShaderDefaultMa
if (materialAdapter->usesCustomSkinning()) {
vertexShader.addInclude("skinanim.glsllib");
vertexShader.addUniform("qt_boneTexture", "sampler2D");
- m_hasSkinning = false;
}
if (!materialAdapter->isUnshaded()) {
@@ -310,7 +309,8 @@ void QSSGMaterialVertexPipeline::beginVertexGeneration(const QSSGShaderDefaultMa
if (m_hasMorphing && !hasCustomVertexShader)
vertexShader.append(" qt_vertPosition.xyz = qt_getMorphPosition(qt_vertPosition.xyz);");
- if (m_hasSkinning) {
+ m_needsSkinning = m_hasSkinning && !materialAdapter->usesCustomSkinning();
+ if (m_needsSkinning) {
vertexShader.append(" mat4 skinMat = mat4(1);");
vertexShader.append(" if (qt_vertWeights != vec4(0.0)) {");
vertexShader.append(" skinMat = qt_getSkinMatrix(qt_vertJoints, qt_vertWeights);");
@@ -400,7 +400,7 @@ void QSSGMaterialVertexPipeline::doGenerateVarTangent(const QSSGShaderDefaultMat
{
if (m_hasMorphing)
vertex() << " qt_vertTangent = qt_getMorphTangent(qt_vertTangent);\n";
- if (m_hasSkinning) {
+ if (m_needsSkinning) {
vertex() << " if (qt_vertWeights != vec4(0.0))\n"
<< " qt_vertTangent = (skinMat * vec4(qt_vertTangent, 0.0)).xyz;\n";
@@ -420,7 +420,7 @@ void QSSGMaterialVertexPipeline::doGenerateVarBinormal(const QSSGShaderDefaultMa
{
if (m_hasMorphing)
vertex() << " qt_vertBinormal = qt_getMorphBinormal(qt_vertBinormal);\n";
- if (m_hasSkinning) {
+ if (m_needsSkinning) {
vertex() << " if (qt_vertWeights != vec4(0.0))\n"
<< " qt_vertBinormal = (skinMat * vec4(qt_vertBinormal, 0.0)).xyz;\n";
}