From 6c75501fec31b6dbd00a9caa9e841aac26564f5f Mon Sep 17 00:00:00 2001 From: Daria Volvenkova Date: Tue, 15 Dec 2015 15:45:43 +0300 Subject: [PATCH] Passing zScale as uniform. --- drape/shaders/area3d_vertex_shader.vsh | 5 +---- drape/shaders/position_accuracy3d_shader.vsh | 3 ++- drape/shaders/text_billboard_vertex_shader.vsh | 2 +- drape/shaders/text_outlined_billboard_vertex_shader.vsh | 2 +- drape/shaders/texturing_billboard_vertex_shader.vsh | 2 +- drape_frontend/frontend_renderer.cpp | 3 +++ 6 files changed, 9 insertions(+), 8 deletions(-) diff --git a/drape/shaders/area3d_vertex_shader.vsh b/drape/shaders/area3d_vertex_shader.vsh index 58352a9286..81a1fe54d0 100644 --- a/drape/shaders/area3d_vertex_shader.vsh +++ b/drape/shaders/area3d_vertex_shader.vsh @@ -5,6 +5,7 @@ attribute vec2 a_colorTexCoords; uniform mat4 modelView; uniform mat4 projection; uniform mat4 pivotTransform; +uniform float zScale; varying vec2 v_colorTexCoords; varying float v_intensity; @@ -14,10 +15,6 @@ const vec4 lightDir = vec4(1.0, 0.0, 3.0, 0.0); void main(void) { vec4 pos = vec4(a_position, 1.0) * modelView; - vec4 pos_dx = vec4(a_position.x + 1.0, a_position.y, 0.0, 1.0) * modelView; - vec2 dx = pos_dx.xy / pos_dx.w - pos.xy / pos.w; - - float zScale = projection[0][0] * length(dx); vec4 normal = vec4(a_position + a_normal, 1.0) * modelView; normal.xyw = (normal * projection).xyw; diff --git a/drape/shaders/position_accuracy3d_shader.vsh b/drape/shaders/position_accuracy3d_shader.vsh index a49aea75e8..f2be69f8a3 100644 --- a/drape/shaders/position_accuracy3d_shader.vsh +++ b/drape/shaders/position_accuracy3d_shader.vsh @@ -7,6 +7,7 @@ uniform float u_accuracy; uniform mat4 modelView; uniform mat4 projection; uniform mat4 pivotTransform; +uniform float zScale; varying vec2 v_colorTexCoords; @@ -15,7 +16,7 @@ void main(void) vec4 position = vec4(u_position.xy, 0.0, 1.0) * modelView; vec4 normal = vec4(normalize(a_normal) * u_accuracy, 0.0, 0.0); position = (position + normal) * projection; - float zScale = projection[0][0] * length(vec4(1.0, 0.0, 0.0, 0.0) * modelView); + float w = position.w; position.xyw = (pivotTransform * vec4(position.xy, u_position.z * zScale, w)).xyw; position.z *= position.w / w; diff --git a/drape/shaders/text_billboard_vertex_shader.vsh b/drape/shaders/text_billboard_vertex_shader.vsh index 19b03e8eb6..be61ec8353 100755 --- a/drape/shaders/text_billboard_vertex_shader.vsh +++ b/drape/shaders/text_billboard_vertex_shader.vsh @@ -7,6 +7,7 @@ uniform mat4 modelView; uniform mat4 projection; uniform mat4 pivotTransform; uniform float u_isOutlinePass; +uniform float zScale; #ifdef ENABLE_VTF uniform sampler2D u_colorTex; @@ -25,7 +26,6 @@ void main() vec4 offset = vec4(a_normal, 0.0, 0.0) * projection; float pivotZ = a_position.w; - float zScale = projection[0][0] * length(vec4(1.0, 0.0, 0.0, 0.0) * modelView); vec4 projectedPivot = pivot * projection; float logicZ = projectedPivot.z / projectedPivot.w; diff --git a/drape/shaders/text_outlined_billboard_vertex_shader.vsh b/drape/shaders/text_outlined_billboard_vertex_shader.vsh index 3631bf481e..706de84d4d 100755 --- a/drape/shaders/text_outlined_billboard_vertex_shader.vsh +++ b/drape/shaders/text_outlined_billboard_vertex_shader.vsh @@ -8,6 +8,7 @@ uniform mat4 modelView; uniform mat4 projection; uniform mat4 pivotTransform; uniform float u_isOutlinePass; +uniform float zScale; #ifdef ENABLE_VTF uniform sampler2D u_colorTex; @@ -32,7 +33,6 @@ void main() vec4 offset = vec4(a_normal, 0.0, 0.0) * projection; float pivotZ = a_position.w; - float zScale = projection[0][0] * length(vec4(1.0, 0.0, 0.0, 0.0) * modelView); vec4 projectedPivot = pivot * projection; float logicZ = projectedPivot.z / projectedPivot.w; diff --git a/drape/shaders/texturing_billboard_vertex_shader.vsh b/drape/shaders/texturing_billboard_vertex_shader.vsh index 4ddb8941a3..92e8571ec4 100644 --- a/drape/shaders/texturing_billboard_vertex_shader.vsh +++ b/drape/shaders/texturing_billboard_vertex_shader.vsh @@ -5,6 +5,7 @@ attribute vec2 a_colorTexCoords; uniform mat4 modelView; uniform mat4 projection; uniform mat4 pivotTransform; +uniform float zScale; varying vec2 v_colorTexCoords; @@ -16,7 +17,6 @@ void main(void) vec4 offset = vec4(a_normal, 0.0, 0.0) * projection; float pivotZ = a_position.w; - float zScale = projection[0][0] * length(vec4(1.0, 0.0, 0.0, 0.0) * modelView); vec4 projectedPivot = pivot * projection; float logicZ = projectedPivot.z / projectedPivot.w; diff --git a/drape_frontend/frontend_renderer.cpp b/drape_frontend/frontend_renderer.cpp index 8d4f2a1b37..1ebc1b47a4 100755 --- a/drape_frontend/frontend_renderer.cpp +++ b/drape_frontend/frontend_renderer.cpp @@ -912,6 +912,9 @@ void FrontendRenderer::RefreshModelView(ScreenBase const & screen) mv(3, 0) = m(0, 2); mv(3, 1) = m(1, 2); mv(3, 2) = 0; mv(3, 3) = m(2, 2); m_generalUniforms.SetMatrix4x4Value("modelView", mv.m_data); + + float const zScale = 2.0f / (screen.GetWidth() * screen.GetScale()); + m_generalUniforms.SetFloatValue("zScale", zScale); } void FrontendRenderer::RefreshPivotTransform(ScreenBase const & screen)