Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript THREE.js FXAA着色器不使用CopyShader-渲染为空白_Javascript_Three.js - Fatal编程技术网

Javascript THREE.js FXAA着色器不使用CopyShader-渲染为空白

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

我试图在同一画布和渲染器上渲染多个场景。在我将FXAA着色器添加到我的一个作曲家中之前,一切都按预期进行,但没有任何渲染

此作曲家用于我的第二个场景,从0渲染1080pts

以下是我编写的有关Composer/Renderer的代码的基本内容:

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;