Javascript THREE.js FXAA着色器不使用CopyShader-渲染为空白
我试图在同一画布和渲染器上渲染多个场景。在我将FXAA着色器添加到我的一个作曲家中之前,一切都按预期进行,但没有任何渲染 此作曲家用于我的第二个场景,从0渲染1080pts 以下是我编写的有关Composer/Renderer的代码的基本内容:Javascript THREE.js FXAA着色器不使用CopyShader-渲染为空白,javascript,three.js,Javascript,Three.js,我试图在同一画布和渲染器上渲染多个场景。在我将FXAA着色器添加到我的一个作曲家中之前,一切都按预期进行,但没有任何渲染 此作曲家用于我的第二个场景,从0渲染1080pts 以下是我编写的有关Composer/Renderer的代码的基本内容: this.renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true }); this.renderer.autoClear = false; this.renderer.s
this.renderer = new THREE.WebGLRenderer({
antialias: true,
alpha: true
});
this.renderer.autoClear = false;
this.renderer.setSize(RENDER_WIDTH * 3, RENDER_HEIGHT);
let renderPass = new THREE.RenderPass(this.scene, this.camera);
let effectFXAA = new THREE.ShaderPass(THREE.FXAAShader);
effectFXAA.uniforms['resolution'].value.set(1 / RENDER_WIDTH, 1 / RENDER_HEIGHT);
effectFXAA.renderToScreen = true;
let effectCopy = new THREE.ShaderPass(THREE.CopyShader);
effectCopy.renderToScreen = true;
let rtParameters = {
minFilter: THREE.LinearFilter,
magFilter: THREE.LinearFilter,
format: THREE.RGBAFormat,
stencilBuffer: true
};
this.composer = new THREE.EffectComposer(this.renderer,
new THREE.WebGLRenderTarget(RENDER_WIDTH, RENDER_HEIGHT, rtParameters));
this.composer.addPass(renderPass);
this.composer.addPass(effectFXAA);
this.composer.addPass(effectCopy);
然后,我还有一些其他场景/作曲家,它们都非常出色,有三个.HueSaturationShader,但没有FXAA着色器
在运行期间,我将“渲染器”视口设置为其位置,并渲染合成器:
this.renderer.setViewport(RENDER_WIDTH, 0, RENDER_WIDTH, RENDER_HEIGHT);
this.composer.render();
this.renderer.setViewport(RENDER_WIDTH * 2, 0, RENDER_WIDTH, RENDER_HEIGHT);
this.composer2.update();
...
编辑
- 如果移除FXAA着色器,则渲染效果良好
- 如果我不偏移它(渲染为0,0),并移除复制着色器,但保留FXAA着色器,则渲染效果良好
- 它只渲染最后一个像素(拉伸),如果我保持偏移,保持FXAA着色器,但删除CopyShader
- 多亏了
需要将renderToScreen标志设置为false,因为它在屏幕外呈现
effectFXAA.renderToScreen = false;
多亏了
需要将renderToScreen标志设置为false,因为它在屏幕外呈现
effectFXAA.renderToScreen = false;