summaryrefslogtreecommitdiffstats
path: root/src/runtimerender/Qt3DSRenderCustomMaterialSystem.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtimerender/Qt3DSRenderCustomMaterialSystem.cpp')
-rw-r--r--src/runtimerender/Qt3DSRenderCustomMaterialSystem.cpp8
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]));