diff options
Diffstat (limited to 'src/runtimerender/Qt3DSRenderCustomMaterialSystem.cpp')
-rw-r--r-- | src/runtimerender/Qt3DSRenderCustomMaterialSystem.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/runtimerender/Qt3DSRenderCustomMaterialSystem.cpp b/src/runtimerender/Qt3DSRenderCustomMaterialSystem.cpp index 62ff5c6..43a7c17 100644 --- a/src/runtimerender/Qt3DSRenderCustomMaterialSystem.cpp +++ b/src/runtimerender/Qt3DSRenderCustomMaterialSystem.cpp @@ -1295,7 +1295,13 @@ struct SMaterialSystem : public ICustomMaterialSystem qt3ds::render::NVRenderShaderConstantBase *transformV = inShader.GetShaderConstant(strV); image->CalculateTextureTransform(); - const QT3DSMat44 &textureTransform = image->m_TextureTransform; + QT3DSMat44 textureTransform = image->m_TextureTransform; + if (image->m_TextureData.m_TextureFlags.IsInvertUVCoords()) { + QT3DSMat44 invertCoordsMat(QT3DSMat44::createIdentity()); + invertCoordsMat.scale(QT3DSVec4(1.0f, -1.0f, 1.0f, 1.0f)); + invertCoordsMat.setPosition(QT3DSVec3(0.0f, 1.0f, 0.0f)); + textureTransform = textureTransform * invertCoordsMat; + } const QT3DSF32 *dataPtr(textureTransform.front()); inShader.SetPropertyValue(transformU, QT3DSVec3(dataPtr[0], dataPtr[4], dataPtr[12])); |