Hi!
I’m trying to render an EffectComposer
output to a texture to be input into another EffectComposer
, but I’m getting nowhere (just a blank page with a
WebGL2RenderingContext.texSubImage2D: Argument 7 is not valid for any of the 7-argument overloads
error).
In my code I’m doing the following, more or less:
this.texture = new WebGLRenderTarget(
window.innerWidth,
window.innerHeight
);
const copyPass = new ShaderPass(CopyShader);
const shaderPass = new ShaderPass(
{
uniforms: {
uTarget: { value: null },
aspectRatio: { value: 16/9 },
color: { value: new Vector3(2, 2, 0) }, // (dx, dy, 0)
point: { value: new Vector2(0.5, 0.5) },
radius: { value: 0.0045 }
},
vertexShader: baseVertexShader,
fragmentShader: firstFragmentShader
},
"uTarget"
);
// -- add passes --
copyPass.renderToScreen = true;
this.baseEffectComposer = new EffectComposer(
renderer,
this.texture
);
this.baseEffectComposer.addPass(new RenderPass(scene, camera));
this.baseEffectComposer.addPass(shaderPass);
this.baseEffectComposer.renderToScreen = false;
this.finalEffectComposer = new EffectComposer(renderer);
this.finalEffectComposer.addPass(passthroughFragPass);
this.finalEffectComposer.addPass(copyPass);
this.finalEffectComposer.renderToScreen = true;
In my rendering code I’m just calling this.firstRenderer.render()
followed by this.finalRenderer.render()
Here’s a codepen for reference
Does anybody have any idea on how to fix this?
I’m using the latest three.js release