diff --git a/core/rend/gl4/gles.cpp b/core/rend/gl4/gles.cpp index 6abc4e9a2..f1e62f1ca 100644 --- a/core/rend/gl4/gles.cpp +++ b/core/rend/gl4/gles.cpp @@ -47,14 +47,13 @@ void main() \n\ vtx_offs1 = in_offs1; \n\ vtx_uv1 = in_uv1; \n\ vec4 vpos=in_pos; \n\ - if (vpos.z < 0.0) { \n\ + if (vpos.z < 0.0 || vpos.z > 3.4e37) \n\ + { \n\ gl_Position = vec4(0.0, 0.0, 1.0, 1.0 / vpos.z); \n\ return; \n\ } \n\ - if (isinf(vpos.z)) \n\ - vpos.w = 1.18e-38; \n\ - else \n\ - vpos.w = extra_depth_scale / vpos.z; \n\ + \n\ + vpos.w = extra_depth_scale / vpos.z; \n\ vpos.z = vpos.w; \n\ vpos.xy=vpos.xy*scale.xy-scale.zw; \n\ vpos.xy*=vpos.w; \n\ diff --git a/core/rend/gles/gles.cpp b/core/rend/gles/gles.cpp index 19ccbf7e4..87e12b49c 100644 --- a/core/rend/gles/gles.cpp +++ b/core/rend/gles/gles.cpp @@ -118,18 +118,15 @@ void main() \n\ vtx_base=in_base; \n\ vtx_offs=in_offs; \n\ vtx_uv=in_uv; \n\ - vec4 vpos=in_pos; \n\ -#if TARGET_GL == GL3 \n\ - if (isinf(vpos.z)) \n\ - vpos.w = 1.18e-38; \n\ - else \n\ -#endif \n\ - vpos.w = extra_depth_scale / vpos.z; \n\ -#if TARGET_GL != GLES2 \n\ - if (vpos.w < 0.0) { \n\ - gl_Position = vec4(0.0, 0.0, 0.0, vpos.w); \n\ + highp vec4 vpos = in_pos; \n\ + if (vpos.z < 0.0 || vpos.z > 3.4e37) \n\ + { \n\ + gl_Position = vec4(0.0, 0.0, 1.0, 1.0 / vpos.z); \n\ return; \n\ } \n\ + \n\ + vpos.w = extra_depth_scale / vpos.z; \n\ +#if TARGET_GL != GLES2 \n\ vpos.z = vpos.w; \n\ #else \n\ vpos.z=depth_scale.x+depth_scale.y*vpos.w; \n\