Three.js 锯齿 使用 EffectComposer 后处理

发布于 2021-07-29 12:33:52 字数 1462 浏览 1935 评论 0

在没有使用 EffectComposer 后处理的时候关于渲染器的锯齿问题,可以参考本站文章 Three.js 锯齿

FXAAShader 着色器通道设置

引入着色器文件 FXAAShader.js,目录位置 /examples/js/shaders/FXAAShader.js,该着色器主要功能是解决锯齿问题。

<script src="./examples/js/postprocessing/EffectComposer.js"></script>
<!-- EffectComposer依赖RenderPass.js、ShaderPass.js、CopyShader.js库 -->
...
<script src="/examples/js/shaders/FXAAShader.js"></script>

通过 ShaderPass 构造函数把 FXAAShader 着色器和 uniforms 构成的对象作为参数,创建一个锯齿通道 FXAAShaderPass,然后把锯齿通道插入到 composer 中。

// 渲染区域Canvas画布宽高度  不一定是全屏,也可以是区域值
var width = window.innerWidth; //全屏状态对应窗口宽度
var height = window.innerHeight; //全屏状态对应窗口高度
...
var composer = new THREE.EffectComposer(renderer);
...
// 去掉锯齿
var FXAAShaderPass = new THREE.ShaderPass(THREE.FXAAShader);
FXAAShaderPass.uniforms['resolution'].value.set(1 / width, 1 / height);
FXAAShaderPass.renderToScreen = true;
composer.addPass(FXAAShaderPass);
...
function render() {
  composer.render();
  requestAnimationFrame(render);
}

如果渲染区域不是全屏,canvas 画布有具体的尺寸

// 渲染区域Canvas画布宽高度  不一定是全屏,也可以是区域值
var width = 800; //非全屏状态对应窗口宽度
var height = 600; //非全屏状态对应窗口高度
...
FXAAShaderPass.uniforms['resolution'].value.set(1 / width, 1 / height);
F

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

想挽留

暂无简介

0 文章
0 评论
20372 人气
更多

推荐作者

醉城メ夜风

文章 0 评论 0

远昼

文章 0 评论 0

平生欢

文章 0 评论 0

微凉

文章 0 评论 0

Honwey

文章 0 评论 0

qq_ikhFfg

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文