diff --git a/game/graphics/opengl_renderer/Sprite3.cpp b/game/graphics/opengl_renderer/Sprite3.cpp index 04a0e35766..2b91d9c515 100644 --- a/game/graphics/opengl_renderer/Sprite3.cpp +++ b/game/graphics/opengl_renderer/Sprite3.cpp @@ -221,6 +221,10 @@ void Sprite3::render_2d_group0(DmaFollower& dma, m_frame_data.min_scale); glUniform1f(glGetUniformLocation(render_state->shaders[ShaderId::SPRITE3].id(), "max_scale"), m_frame_data.max_scale); + glUniform1f(glGetUniformLocation(render_state->shaders[ShaderId::SPRITE3].id(), "fog_min"), + m_frame_data.fog_min); + glUniform1f(glGetUniformLocation(render_state->shaders[ShaderId::SPRITE3].id(), "fog_max"), + m_frame_data.fog_max); glUniform1f(glGetUniformLocation(render_state->shaders[ShaderId::SPRITE3].id(), "bonus"), m_frame_data.bonus); glUniform4fv(glGetUniformLocation(render_state->shaders[ShaderId::SPRITE3].id(), "hmge_scale"), 1, diff --git a/game/graphics/opengl_renderer/SpriteRenderer.cpp b/game/graphics/opengl_renderer/SpriteRenderer.cpp index 73a15ecfd3..ab51fd48b6 100644 --- a/game/graphics/opengl_renderer/SpriteRenderer.cpp +++ b/game/graphics/opengl_renderer/SpriteRenderer.cpp @@ -199,6 +199,10 @@ void SpriteRenderer::render_2d_group0(DmaFollower& dma, m_frame_data.min_scale); glUniform1f(glGetUniformLocation(render_state->shaders[ShaderId::SPRITE].id(), "max_scale"), m_frame_data.max_scale); + glUniform1f(glGetUniformLocation(render_state->shaders[ShaderId::SPRITE].id(), "fog_min"), + m_frame_data.fog_min); + glUniform1f(glGetUniformLocation(render_state->shaders[ShaderId::SPRITE].id(), "fog_max"), + m_frame_data.fog_max); glUniform1f(glGetUniformLocation(render_state->shaders[ShaderId::SPRITE].id(), "bonus"), m_frame_data.bonus); glUniform4fv(glGetUniformLocation(render_state->shaders[ShaderId::SPRITE].id(), "hmge_scale"), 1, diff --git a/game/graphics/opengl_renderer/shaders/sprite3_3d.vert b/game/graphics/opengl_renderer/shaders/sprite3_3d.vert index b99ac9d1da..c05c400af7 100644 --- a/game/graphics/opengl_renderer/shaders/sprite3_3d.vert +++ b/game/graphics/opengl_renderer/shaders/sprite3_3d.vert @@ -12,6 +12,8 @@ uniform mat4 hud_matrix; uniform vec4 hud_hvdf_offset; uniform vec4 hud_hvdf_user[75]; uniform float pfog0; +uniform float fog_min; +uniform float fog_max; uniform float min_scale; uniform float max_scale; uniform float bonus; @@ -104,6 +106,7 @@ void main() { transformed_pos_vf02.xyz *= Q; vec4 offset_pos_vf10 = transformed_pos_vf02 + hvdf_offset; + offset_pos_vf10.w = max(offset_pos_vf10.w, fog_min); /* transformed_pos_vf02.w = offset_pos_vf10.w - fog_max; int fge = matrix == 0; diff --git a/game/graphics/opengl_renderer/shaders/sprite_3d.vert b/game/graphics/opengl_renderer/shaders/sprite_3d.vert index 8d9956cd23..14854ab436 100644 --- a/game/graphics/opengl_renderer/shaders/sprite_3d.vert +++ b/game/graphics/opengl_renderer/shaders/sprite_3d.vert @@ -19,6 +19,8 @@ uniform float deg_to_rad; uniform float inv_area; uniform vec4 basis_x; uniform vec4 basis_y; +uniform float fog_min; +uniform float fog_max; uniform vec4 hmge_scale; uniform vec4 xy_array[8]; uniform vec4 xyz_array[4]; @@ -104,7 +106,7 @@ void main() { transformed_pos_vf02.xyz *= Q; vec4 offset_pos_vf10 = transformed_pos_vf02 + hvdf_offset; - + offset_pos_vf10.w = max(offset_pos_vf10.w, fog_min); /* transformed_pos_vf02.w = offset_pos_vf10.w - fog_max; int fge = matrix == 0; if (transformed_pos_vf02.w != 0) {