Shader lookup textures¶
A popular feature among RetroArch users the ability to access external textures. This means we have several samplers available for use. In the config file, we define the textures as so:
textures = " foo ; bar" foo = path_foo.png bar = bar_foo.png foo_linear = true # Linear filtering for foo. bar_linear = true # Linear filtering for bar.
RetroArch PS3 uses PNG as the main format, RetroArch can use whatever if Imlib2 support is compiled in. If not, it’s restricted to lop-left ordered, non-RLE TGA.
From here on, foo
and bar
can be found as uniforms in the shaders. The texture coordinates for the lookup texture will be found in TEXCOORD1
. This can simply be passed along with TEXCOORD0
in the vertex shader as we did with TEXCOORD0
.
Here we make a fragment shader that blends in two background picture at a reduced opacity. Do NOT assign lookup textures to a certain TEXUNIT
, Cg will assign a fitting texture unit to the sampler.
float4 main_fragment ( uniform sampler2D s0 : TEXUNIT0, uniform sampler2D foo, uniform sampler2D bar, float2 tex : TEXCOORD0, float2 tex_lut : TEXCOORD1) : COLOR { float4 bg_sum = (tex2D(foo, tex_lut) + tex2D (bar , tex_lut)) * 0.15; return lerp (tex2D(s0, tex), bg_sum, bg_sum.a); // Alpha blending. }