【问题标题】:Three.js combining StereoEffect with FXAA ShaderPassThree.js 结合 StereoEffect 和 FXAA ShaderPass
【发布时间】:2016-02-01 07:51:51
【问题描述】:

我使用 Three.js StereoEffect 创建了一个 Google Cardboard 场景

effect = new THREE.StereoEffect(renderer);
effect.render(scene, camera);

现在我想通过 FXAA 着色器运行它以平滑输出。我知道我可以使用 EffectComposer 做到这一点:

renderScene = new THREE.RenderPass(scene, camera);
effectFXAA = new THREE.ShaderPass(THREE.FXAAShader);
effectFXAA.uniforms['resolution'].value.set(1 / (window.innerWidth * dpr), 1 / (window.innerHeight * dpr));
effectFXAA.renderToScreen = true;

composer = new THREE.EffectComposer(renderer);
composer.setSize(window.innerWidth * dpr, window.innerHeight * dpr);
composer.addPass(renderScene);
composer.addPass(effectFXAA);
composer.render();

这会使图像变得平滑,但是我不知道如何将它与 StereoEffect 视图结合起来。

【问题讨论】:

  • 我自己也遇到了这个挑战。您的代码可以帮助我开始。找到解决方案后,我将发布答案。我看到这是 6 个月前问的。这个问题对你还有意义吗?

标签: javascript three.js webgl


【解决方案1】:

在对我自己的项目进行研究和试验后,我发现 EffectComposer 和 StereoEffect 不能很好地混合。他们都试图在管道的同一级别渲染场景。一个不会流过另一个。

我的解决方案是创建一个从 StereoEffect 更改的新类 StereoCamera。没有效果几乎一样,而是返回要由 EffectComposer(或其他效果)渲染的相机。

您可以找到StereoCamera class here,带有full working example here

由于这帮助了我前进(如果这个问题不是太老的话,也许是你),我提交了一个拉取请求,将类和示例与其他三个.js 示例一起添加,希望它能帮助其他人。

===

更新: 事实证明,其他一些人最近也首先解决了这个问题。请参阅 this pull request 和另一个更优化的 StereoCamera class

【讨论】:

  • 那么您的工作示例将与优化的 StereoCamera 类一起使用吗?立体声效果可以轻松破解做fxaa吗?
猜你喜欢
  • 2013-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-24
  • 1970-01-01
  • 2016-11-01
  • 2019-11-27
  • 1970-01-01
相关资源
最近更新 更多