I’m doing some progress, but at the same time I must be doing something terribly wrong.
This sort of works:
manager = FilterManager(self.shadowBuffer, self.shadowCamera)
tex_blur = Texture()
tex = Texture()
quad1 = manager.renderSceneInto(colortex=tex_blur)
quad1.setShader(Shader.load("gaussian_blur.sha"))
quad1.setShaderInput("tex1", tex_blur)
quad2 = manager.renderSceneInto(colortex=tex)
quad2.setShader(Shader.load("gray_invert.sha"))
quad2.setShaderInput("tex", tex)
quad2.setShaderInput("tex_blur", tex_blur)
The blur part alone works:
My wacky shader, when provided with a pre-blured static texture
quad2.setShaderInput("tex_blur", loader.loadTexture('blur.png'))
also works:
But put together - they don’t, looks like the blured texture never reached my shader:
Where did I go wrong this time?
This is what I use for my shader:
//Cg
void vshader(
float4 vtx_position : POSITION,
float2 vtx_texcoord0 : TEXCOORD0,
out float4 l_position : POSITION,
out float2 l_texcoord0 : TEXCOORD0,
out float2 l_texcoord1 : TEXCOORD1,
uniform float4 texpad_tex,
uniform float4x4 mat_modelproj)
{
l_position=mul(mat_modelproj, vtx_position);
l_texcoord0 = vtx_position.xz * texpad_tex.xy + texpad_tex.xy;
}
void fshader(float2 l_texcoord0 : TEXCOORD0,
out float4 o_color : COLOR,
uniform sampler2D k_tex : TEXUNIT0,
uniform sampler2D k_tex_blur : TEXUNIT1)
{
float4 c1 = tex2D(k_tex, l_texcoord0);
float4 c2 = tex2D(k_tex_blur, l_texcoord0);
float4 c = lerp(c1,c2,0.6);
float1 g = 1-((c.x+c.y+c.z)/3.0);
o_color = float4(g, g, g, 0);
}