diff options
Diffstat (limited to 'src/runtimerender/rendererimpl/qssgvertexpipelineimpl.cpp')
| -rw-r--r-- | src/runtimerender/rendererimpl/qssgvertexpipelineimpl.cpp | 8 |
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"; } |
