首页 > 解决方案 > 景深效果 – BokehPass 在 iOS (iPhone 7) 上无法正常工作

问题描述

我已经使用 BokehPass 实现了景深效果(基于https://threejs.org/examples/?q=dof#webgl_postprocessing_dof

它在台式机(PC 或 Mac)上运行良好,但在我的 iPhone 上它坏了。它只会模糊整个场景(基于设置——所以它实际上是在做某事),但它缺少焦点(锐利)区域。因此,如果“focus”值设置为 0,则整个屏幕都很清晰,当我提高它时,整个屏幕会变得模糊。在桌面上它按预期工作 - 提高焦点值“移动”焦点区域,因此前景模糊,背景模糊,但焦点区域清晰。

我的代码没有什么花哨的:

this._composer = new EffectComposer(this._renderer);

    const renderPass = new RenderPass(this._scene, camera);

    this._bokehPass = new BokehPass(this._scene, camera, {
      focus: 1.0,
      aperture: 0.025,
      maxblur: 0.01,

      width: window.innerWidth,
      height: window.innerHeight,
    });
    const gammaCorrectionPass = new ShaderPass(GammaCorrectionShader);

    this._composer.addPass(renderPass);
    this._composer.addPass(gammaCorrectionPass);
    this._composer.addPass(this._bokehPass);

非常感谢

标签: iosthree.jsshaderpost-processing

解决方案


根据@Mugen87 提示,iOS 上的问题是由 renderer.logarithmicDepthBuffer 设置为 true 引起的。如果设置为 false,iOS 设备上的焦点区域将按预期工作。


推荐阅读