Revision control
++ // Copyright (C) 2017 Klaralvdalens Datakonsult AB (KDAB).
++ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
++
++ attribute vec3 vertexPosition;
++ attribute vec3 vertexNormal;
++ attribute vec4 vertexTangent;
++ attribute vec2 vertexTexCoord;
++
++ varying vec3 worldPosition;
++ varying vec3 worldNormal;
++ varying vec4 worldTangent;
++ varying vec2 texCoord;
++
++ uniform mat4 modelMatrix;
++ uniform mat3 modelNormalMatrix;
++ uniform mat4 modelViewProjection;
++
++ uniform float texCoordScale;
++
++ void main()
++ {
++ // Pass through texture coordinates
++ texCoord = vertexTexCoord * texCoordScale;
++
++ // Transform position, normal, and tangent to world coords
++ worldPosition = vec3(modelMatrix * vec4(vertexPosition, 1.0));
++ worldNormal = normalize(modelNormalMatrix * vertexNormal);
++ worldTangent.xyz = normalize(vec3(modelMatrix * vec4(vertexTangent.xyz, 0.0)));
++ worldTangent.w = vertexTangent.w;
++
++ // Calculate vertex position in clip coordinates
++ gl_Position = modelViewProjection * vec4(vertexPosition, 1.0);
++ }