diff options
-rw-r--r-- | DOCS/man/options.rst | 8 | ||||
-rw-r--r-- | video/out/opengl/video.c | 5 |
2 files changed, 11 insertions, 2 deletions
diff --git a/DOCS/man/options.rst b/DOCS/man/options.rst index 7e6199b5e3..2e48c51ffa 100644 --- a/DOCS/man/options.rst +++ b/DOCS/man/options.rst @@ -4274,10 +4274,18 @@ The following video options are currently all specific to ``--vo=opengl`` and to texture coordinates) vec2 NAME_pt The (unrotated) size of a single pixel, range [0,1]. + float NAME_mul + The coefficient that needs to be multiplied into the texture contents + in order to normalize it to the range [0,1]. sampler NAME_raw The raw bound texture itself. The use of this should be avoided unless absolutely necessary. + Normally, users should use either NAME_tex or NAME_texOff to read from the + texture. For some shaders however , it can be better for performance to do + custom sampling from NAME_raw, in which case care needs to be taken to + respect NAME_mul and NAME_rot. + In addition to these parameters, the following uniforms are also globally available: diff --git a/video/out/opengl/video.c b/video/out/opengl/video.c index f2f5260c74..876da267a3 100644 --- a/video/out/opengl/video.c +++ b/video/out/opengl/video.c @@ -1171,10 +1171,11 @@ static void hook_prelude(struct gl_video *p, const char *name, int id, GLSLHF("#define %s_size texture_size%d\n", name, id); GLSLHF("#define %s_rot texture_rot%d\n", name, id); GLSLHF("#define %s_pt pixel_size%d\n", name, id); + GLSLHF("#define %s_mul %f\n", name, tex.multiplier); // Set up the sampling functions - GLSLHF("#define %s_tex(pos) (%f * vec4(texture(%s_raw, pos)).%s)\n", - name, tex.multiplier, name, get_tex_swizzle(&tex)); + GLSLHF("#define %s_tex(pos) (%s_mul * vec4(texture(%s_raw, pos)).%s)\n", + name, name, name, get_tex_swizzle(&tex)); // Since the extra matrix multiplication impacts performance, // skip it unless the texture was actually rotated |