diff options
Diffstat (limited to 'src/extras/shaders/rhi/default.vert')
-rw-r--r-- | src/extras/shaders/rhi/default.vert | 55 |
1 files changed, 40 insertions, 15 deletions
diff --git a/src/extras/shaders/rhi/default.vert b/src/extras/shaders/rhi/default.vert index f97cd099d..5679d8681 100644 --- a/src/extras/shaders/rhi/default.vert +++ b/src/extras/shaders/rhi/default.vert @@ -48,23 +48,48 @@ ** ****************************************************************************/ -#version 150 core +#version 450 -in vec3 vertexPosition; -in vec3 vertexNormal; -in vec4 vertexTangent; -in vec2 vertexTexCoord; +layout(location = 0) in vec3 vertexPosition; +layout(location = 1) in vec3 vertexNormal; +layout(location = 2) in vec4 vertexTangent; +layout(location = 3) in vec2 vertexTexCoord; -out vec3 worldPosition; -out vec3 worldNormal; -out vec4 worldTangent; -out vec2 texCoord; +layout(location = 0) out vec3 worldPosition; +layout(location = 1) out vec3 worldNormal; +layout(location = 2) out vec4 worldTangent; +layout(location = 3) out vec2 texCoord; -uniform mat4 modelMatrix; -uniform mat3 modelNormalMatrix; -uniform mat4 modelViewProjection; +layout(std140, binding = 0) uniform qt3d_render_view_uniforms { + mat4 viewMatrix; + mat4 projectionMatrix; + mat4 viewProjectionMatrix; + mat4 inverseViewMatrix; + mat4 inverseProjectionMatrix; + mat4 inverseViewProjectionMatrix; + mat4 viewportMatrix; + mat4 inverseViewportMatrix; + vec4 textureTransformMatrix; + vec3 eyePosition; + float aspectRatio; + float gamma; + float exposure; + float time; +}; -uniform float texCoordScale; +layout(std140, binding = 1) uniform qt3d_command_uniforms { + mat4 modelMatrix; + mat4 inverseModelMatrix; + mat4 modelViewMatrix; + mat3 modelNormalMatrix; + mat4 inverseModelViewMatrix; + mat4 modelViewProjection; + mat4 inverseModelViewProjectionMatrix; +}; + +layout(std140, binding = 2) uniform qt3d_extras_uniforms { + float texCoordScale; +}; void main() { @@ -74,8 +99,8 @@ void main() // Transform position, normal, and tangent to world space 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; + vec3 wt = normalize(vec3(modelMatrix * vec4(vertexTangent.xyz, 0.0))); + worldTangent = vec4(wt, vertexTangent.w); // Calculate vertex position in clip coordinates gl_Position = modelViewProjection * vec4(vertexPosition, 1.0); |