From a9a0f1e12950f099b9fb753c02f993e43e183a2d Mon Sep 17 00:00:00 2001 From: sfan5 Date: Fri, 5 Apr 2024 13:00:10 +0200 Subject: [PATCH] Fix GLES shader precision issues (#14516) --- client/shaders/cloud_shader/opengl_fragment.glsl | 4 ++-- client/shaders/cloud_shader/opengl_vertex.glsl | 4 ++-- client/shaders/nodes_shader/opengl_fragment.glsl | 10 +++------- client/shaders/nodes_shader/opengl_vertex.glsl | 5 ++--- client/shaders/object_shader/opengl_fragment.glsl | 7 +++---- client/shaders/object_shader/opengl_vertex.glsl | 7 ++----- client/shaders/stars_shader/opengl_fragment.glsl | 2 +- src/client/game.cpp | 8 +------- 8 files changed, 16 insertions(+), 31 deletions(-) diff --git a/client/shaders/cloud_shader/opengl_fragment.glsl b/client/shaders/cloud_shader/opengl_fragment.glsl index fe416d121..d47173ce0 100644 --- a/client/shaders/cloud_shader/opengl_fragment.glsl +++ b/client/shaders/cloud_shader/opengl_fragment.glsl @@ -1,7 +1,7 @@ -uniform vec4 fogColor; +uniform lowp vec4 fogColor; uniform float fogDistance; uniform float fogShadingParameter; -varying vec3 eyeVec; +varying highp vec3 eyeVec; varying lowp vec4 varColor; diff --git a/client/shaders/cloud_shader/opengl_vertex.glsl b/client/shaders/cloud_shader/opengl_vertex.glsl index 4bc6eb65e..3f2e7d9b3 100644 --- a/client/shaders/cloud_shader/opengl_vertex.glsl +++ b/client/shaders/cloud_shader/opengl_vertex.glsl @@ -1,8 +1,8 @@ -uniform vec4 emissiveColor; +uniform lowp vec4 emissiveColor; varying lowp vec4 varColor; -varying vec3 eyeVec; +varying highp vec3 eyeVec; void main(void) { diff --git a/client/shaders/nodes_shader/opengl_fragment.glsl b/client/shaders/nodes_shader/opengl_fragment.glsl index 0e75efedf..46977b147 100644 --- a/client/shaders/nodes_shader/opengl_fragment.glsl +++ b/client/shaders/nodes_shader/opengl_fragment.glsl @@ -1,13 +1,12 @@ uniform sampler2D baseTexture; uniform vec3 dayLight; -uniform vec4 fogColor; +uniform lowp vec4 fogColor; uniform float fogDistance; uniform float fogShadingParameter; -uniform vec3 eyePosition; // The cameraOffset is the current center of the visible world. -uniform vec3 cameraOffset; +uniform highp vec3 cameraOffset; uniform float animationTimer; #ifdef ENABLE_DYNAMIC_SHADOWS // shadow texture @@ -44,11 +43,8 @@ varying mediump vec2 varTexCoord; #else centroid varying vec2 varTexCoord; #endif -varying vec3 eyeVec; +varying highp vec3 eyeVec; varying float nightRatio; -varying vec3 tsEyeVec; -varying vec3 lightVec; -varying vec3 tsLightVec; #ifdef ENABLE_DYNAMIC_SHADOWS diff --git a/client/shaders/nodes_shader/opengl_vertex.glsl b/client/shaders/nodes_shader/opengl_vertex.glsl index 813a5f76b..d96164d76 100644 --- a/client/shaders/nodes_shader/opengl_vertex.glsl +++ b/client/shaders/nodes_shader/opengl_vertex.glsl @@ -1,10 +1,9 @@ uniform mat4 mWorld; // Color of the light emitted by the sun. uniform vec3 dayLight; -uniform vec3 eyePosition; // The cameraOffset is the current center of the visible world. -uniform vec3 cameraOffset; +uniform highp vec3 cameraOffset; uniform float animationTimer; varying vec3 vNormal; @@ -44,7 +43,7 @@ centroid varying vec2 varTexCoord; varying float area_enable_parallax; -varying vec3 eyeVec; +varying highp vec3 eyeVec; varying float nightRatio; // Color of the light emitted by the light sources. const vec3 artificialLight = vec3(1.04, 1.04, 1.04); diff --git a/client/shaders/object_shader/opengl_fragment.glsl b/client/shaders/object_shader/opengl_fragment.glsl index 61e00485b..2b8af3fa9 100644 --- a/client/shaders/object_shader/opengl_fragment.glsl +++ b/client/shaders/object_shader/opengl_fragment.glsl @@ -1,13 +1,12 @@ uniform sampler2D baseTexture; uniform vec3 dayLight; -uniform vec4 fogColor; +uniform lowp vec4 fogColor; uniform float fogDistance; uniform float fogShadingParameter; -uniform vec3 eyePosition; // The cameraOffset is the current center of the visible world. -uniform vec3 cameraOffset; +uniform highp vec3 cameraOffset; uniform float animationTimer; #ifdef ENABLE_DYNAMIC_SHADOWS // shadow texture @@ -44,7 +43,7 @@ varying mediump vec2 varTexCoord; #else centroid varying vec2 varTexCoord; #endif -varying vec3 eyeVec; +varying highp vec3 eyeVec; varying float nightRatio; varying float vIDiff; diff --git a/client/shaders/object_shader/opengl_vertex.glsl b/client/shaders/object_shader/opengl_vertex.glsl index 6a5f500b6..d5a434da5 100644 --- a/client/shaders/object_shader/opengl_vertex.glsl +++ b/client/shaders/object_shader/opengl_vertex.glsl @@ -1,10 +1,7 @@ uniform mat4 mWorld; uniform vec3 dayLight; -uniform vec3 eyePosition; uniform float animationTimer; -uniform vec4 emissiveColor; -uniform vec3 cameraOffset; - +uniform lowp vec4 emissiveColor; varying vec3 vNormal; varying vec3 vPosition; @@ -33,7 +30,7 @@ centroid varying vec2 varTexCoord; varying float perspective_factor; #endif -varying vec3 eyeVec; +varying highp vec3 eyeVec; varying float nightRatio; // Color of the light emitted by the light sources. const vec3 artificialLight = vec3(1.04, 1.04, 1.04); diff --git a/client/shaders/stars_shader/opengl_fragment.glsl b/client/shaders/stars_shader/opengl_fragment.glsl index 209b6dc89..224032fa3 100644 --- a/client/shaders/stars_shader/opengl_fragment.glsl +++ b/client/shaders/stars_shader/opengl_fragment.glsl @@ -1,4 +1,4 @@ -uniform vec4 emissiveColor; +uniform lowp vec4 emissiveColor; void main(void) { diff --git a/src/client/game.cpp b/src/client/game.cpp index 3c3feaa72..f40ac2de2 100644 --- a/src/client/game.cpp +++ b/src/client/game.cpp @@ -381,11 +381,9 @@ class GameGlobalShaderConstantSetter : public IShaderConstantSetter CachedPixelShaderSetting m_animation_timer_delta_pixel{"animationTimerDelta"}; CachedPixelShaderSetting m_day_light{"dayLight"}; - CachedPixelShaderSetting m_eye_position_pixel{"eyePosition"}; - CachedVertexShaderSetting m_eye_position_vertex{"eyePosition"}; CachedPixelShaderSetting m_minimap_yaw{"yawVec"}; CachedPixelShaderSetting m_camera_offset_pixel{"cameraOffset"}; - CachedPixelShaderSetting m_camera_offset_vertex{"cameraOffset"}; + CachedVertexShaderSetting m_camera_offset_vertex{"cameraOffset"}; CachedPixelShaderSetting m_texture0{"texture0"}; CachedPixelShaderSetting m_texture1{"texture1"}; CachedPixelShaderSetting m_texture2{"texture2"}; @@ -483,10 +481,6 @@ public: m_animation_timer_delta_vertex.set(&animation_timer_delta_f, services); m_animation_timer_delta_pixel.set(&animation_timer_delta_f, services); - v3f epos = m_client->getEnv().getLocalPlayer()->getEyePosition(); - m_eye_position_pixel.set(epos, services); - m_eye_position_vertex.set(epos, services); - if (m_client->getMinimap()) { v3f minimap_yaw = m_client->getMinimap()->getYawVec(); m_minimap_yaw.set(minimap_yaw, services);