diff --git a/src/pc/gfx/gfx_direct3d_common.cpp b/src/pc/gfx/gfx_direct3d_common.cpp index bf8e41094..ca431bcd8 100644 --- a/src/pc/gfx/gfx_direct3d_common.cpp +++ b/src/pc/gfx/gfx_direct3d_common.cpp @@ -147,7 +147,8 @@ void gfx_direct3d_common_build_shader(char buf[4096], size_t& len, size_t& num_f append_line(buf, &len, "struct PSInput {"); append_line(buf, &len, " float4 position : SV_POSITION;"); if (ccf.used_textures[0] || ccf.used_textures[1]) { - append_line(buf, &len, " noperspective float2 uv : TEXCOORD;"); + if (!cc.cm.tex_persp) append_str(buf, &len, "noperspective"); + append_line(buf, &len, " float2 uv : TEXCOORD;"); num_floats += 2; } if ((cc.cm.use_alpha && cc.cm.use_dither) || ccf.do_noise) { diff --git a/src/pc/gfx/gfx_opengl.c b/src/pc/gfx/gfx_opengl.c index f9a5083f7..b085e5686 100644 --- a/src/pc/gfx/gfx_opengl.c +++ b/src/pc/gfx/gfx_opengl.c @@ -320,7 +320,8 @@ static struct ShaderProgram *gfx_opengl_create_and_load_new_shader(struct ColorC #endif if (ccf.used_textures[0] || ccf.used_textures[1]) { - append_line(fs_buf, &fs_len, "noperspective in vec2 vTexCoord;"); + if (!opt_tex_persp) append_str(fs_buf, &fs_len, "noperspective "); + append_line(fs_buf, &fs_len, "in vec2 vTexCoord;"); } if (opt_fog) { append_line(fs_buf, &fs_len, "in vec4 vFog;");