Kaydet (Commit) 06404309 authored tarafından Emmanuel Gil Peyrot's avatar Emmanuel Gil Peyrot Kaydeden (comit) Tomaž Vajngerl

slideshow: Move Vortex calculations to the geometry stage, fixes Intel

Their Windows driver was failing due to too many varyings being used
between the vertex and the geometry stages.

Change-Id: Iec69a2ef29e6ed4ba5ce6e46c7a5eb7db5098d1b
Reviewed-on: https://gerrit.libreoffice.org/22469Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarTomaž Vajngerl <quikee@gmail.com>
üst 9adeebad
...@@ -12,11 +12,14 @@ ...@@ -12,11 +12,14 @@
layout(triangles) in; layout(triangles) in;
layout(triangle_strip, max_vertices=11) out; layout(triangle_strip, max_vertices=11) out;
uniform float shadow;
uniform mat4 u_projectionMatrix;
uniform mat4 orthoProjectionMatrix;
uniform mat4 orthoViewMatrix;
in vec2 g_texturePosition[]; in vec2 g_texturePosition[];
in vec3 g_normal[]; in vec3 g_normal[];
in mat4 projectionMatrix[];
in mat4 modelViewMatrix[]; in mat4 modelViewMatrix[];
in mat4 shadowMatrix[];
in mat4 transform[]; in mat4 transform[];
in float nTime[]; in float nTime[];
in float startTime[]; in float startTime[];
...@@ -52,6 +55,17 @@ mat4 translationMatrix(vec3 axis) ...@@ -52,6 +55,17 @@ mat4 translationMatrix(vec3 axis)
void emitHexagonVertex(int index, vec3 translation, float fdsq) void emitHexagonVertex(int index, vec3 translation, float fdsq)
{ {
mat4 projectionMatrix;
mat4 shadowMatrix;
if (shadow < 0.5) {
projectionMatrix = u_projectionMatrix;
shadowMatrix = orthoProjectionMatrix * orthoViewMatrix;
} else {
projectionMatrix = orthoProjectionMatrix * orthoViewMatrix;
shadowMatrix = mat4(0.0);
}
mat4 normalMatrix = transpose(inverse(modelViewMatrix[index])); mat4 normalMatrix = transpose(inverse(modelViewMatrix[index]));
vec4 pos = gl_in[index].gl_Position + vec4(translation, 0.0); vec4 pos = gl_in[index].gl_Position + vec4(translation, 0.0);
...@@ -62,8 +76,8 @@ void emitHexagonVertex(int index, vec3 translation, float fdsq) ...@@ -62,8 +76,8 @@ void emitHexagonVertex(int index, vec3 translation, float fdsq)
v_normal = normalize(vec3(normalMatrix * transform[index] * vec4(g_normal[index], 0.0))); v_normal = normalize(vec3(normalMatrix * transform[index] * vec4(g_normal[index], 0.0)));
v_normal.z *= fdsq; v_normal.z *= fdsq;
gl_Position = projectionMatrix[index] * modelViewMatrix[index] * pos; gl_Position = projectionMatrix * modelViewMatrix[index] * pos;
shadowCoordinate = translationMatrix(vec3(0.5, 0.5, 0.5)) * scaleMatrix(vec3(0.5, 0.5, 0.5)) * shadowMatrix[index] * modelViewMatrix[index] * pos; shadowCoordinate = translationMatrix(vec3(0.5, 0.5, 0.5)) * scaleMatrix(vec3(0.5, 0.5, 0.5)) * shadowMatrix * modelViewMatrix[index] * pos;
v_texturePosition = g_texturePosition[index]; v_texturePosition = g_texturePosition[index];
EmitVertex(); EmitVertex();
} }
......
...@@ -16,7 +16,6 @@ in vec3 a_normal; ...@@ -16,7 +16,6 @@ in vec3 a_normal;
in vec2 a_texCoord; in vec2 a_texCoord;
in float tileInfo; in float tileInfo;
uniform mat4 u_projectionMatrix;
uniform mat4 u_modelViewMatrix; uniform mat4 u_modelViewMatrix;
uniform mat4 u_sceneTransformMatrix; uniform mat4 u_sceneTransformMatrix;
uniform mat4 u_primitiveTransformMatrix; uniform mat4 u_primitiveTransformMatrix;
...@@ -26,15 +25,10 @@ uniform float time; ...@@ -26,15 +25,10 @@ uniform float time;
uniform ivec2 numTiles; uniform ivec2 numTiles;
uniform sampler2D permTexture; uniform sampler2D permTexture;
uniform float slide; uniform float slide;
uniform float shadow;
uniform mat4 orthoProjectionMatrix;
uniform mat4 orthoViewMatrix;
out vec2 g_texturePosition; out vec2 g_texturePosition;
out vec3 g_normal; out vec3 g_normal;
out mat4 projectionMatrix;
out mat4 modelViewMatrix; out mat4 modelViewMatrix;
out mat4 shadowMatrix;
out mat4 transform; out mat4 transform;
out float nTime; out float nTime;
out float startTime; out float startTime;
...@@ -142,14 +136,6 @@ void main( void ) ...@@ -142,14 +136,6 @@ void main( void )
* transform; * transform;
} }
if (shadow < 0.5) {
projectionMatrix = u_projectionMatrix;
shadowMatrix = orthoProjectionMatrix * orthoViewMatrix;
} else {
projectionMatrix = orthoProjectionMatrix * orthoViewMatrix;
shadowMatrix = mat4(0.0);
}
modelViewMatrix = u_modelViewMatrix * u_operationsTransformMatrix * u_sceneTransformMatrix * u_primitiveTransformMatrix; modelViewMatrix = u_modelViewMatrix * u_operationsTransformMatrix * u_sceneTransformMatrix * u_primitiveTransformMatrix;
gl_Position = vec4(a_position, 1.0); gl_Position = vec4(a_position, 1.0);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment