新管线为何锯齿这么严重

贴图有没有开启mipmap


感谢回复,但是刚试过开启了也是一样的,可以看到上面引擎组自己的截图已经出现这个问题了吧

可以看看贴图有没有开启mipmap。拉远锯齿严重了fxaa可能搞不定。

截图是为了说明不开后期有抗锯齿,开了后期没抗锯齿,这个是预期行为。
Web不开后期直接画到canvas,canvas有antialias。开了后处理会用render target,render target没有antialias。这些是WebGL1、WebGL2的API特性。
其中WebGL2有MSAA,但是截至3.8.6尚未支持。

解决方案:

  1. 开后处理的时候,打开FXAA。
  2. 开后处理的时候,开启MSAA,但目前Web不支持。(其中WebGL1本身不支持,WebGL2、WebGPU还没有实现)

在3.8.x的后续版本中,会加入WebGL2、WebGPU的MSAA支持,可以缓解锯齿情况。(WebGL1仍然无法解决)

1赞

ENABLE_WEBGL_ANTIALIAS 开启的话,ios15.4会黑屏的兼容性问题解决了吗?

有issue链接吗?有点不记得了。


感谢回复,已经测试过开启贴图的mipmap了,但效果没有改善,我们项目主要跑在原生端上,那我们测试下开启MSAA看看

原生需要开启MSAA,才能和Web表现一致。

可以再跑跑看新管线,3.4到3.8做了非常多改动,可能问题已经修复了。

这是我现在测试的结果
真机不开启MSAA


真机开启MSAA

雷电9模拟器不开MSAA

雷电9模拟器开MSAA

MuMu12模拟器不开MSAA

MuMu12模拟器开MSAA

对比可知,在真机上开启MSAA是有效果的,但模拟器上并没有,甚至MuMu模拟器出现了渲染问题,目前模拟器上也是不支持嘛?还有描边我们用的就是tone.effect里面的描边Pass,描边的锯齿情况看起来更明显点,有可能跟这块的逻辑有关嘛?方便的话麻烦解答下

我们测试范围目前不包括各类模拟器,人力实在有限。
模拟器环境比较复杂,还和模拟器本身的渲染后端有关。
可能模拟器本身不支持MSAA。

mumu12 MSAA生效了

嗯嗯,理解,主要玩家这边还是有不少用模拟器的,我们自己再评估处理吧,感谢。
顺便再反馈一个问题,我这边在测试Color Grading后处理时在shader里面使用了光照颜色cc_mainLitColor,在编辑器和web下都是正常的,但是到原生这边获取到的就是黑色,你们方便的话可以验证一下。

构建render graph在没有设置主光的情况下,cc_mainLitColor确实填了黑色。
个人建议新增一个单独的per-pass uniform,设置下主光颜色。
cc_mainLitColor包含在原global uniform中,会把shader环境搞的比较复杂,增加了无关descriptor数目。
后处理的shader,推荐自己维护uniform/texture,独立于cocos自带的chunk。
include头文件时,尽量避免cc-global.chunk这样包含uniform/texture的文件。

好的,辛苦解惑,这块文档的说明比较简单,我们再自己摸索下吧。

嗯嗯。可以参考Builtin管线的后处理shader。包含的uniform/texture是最简化的,不含无关descriptor。

明白,我们具体再看看。


打扰下,BuiltinPipelineSettings是不是没有导出对应的接口,那现在是要如何去使用?我们想动态的去控制后处理是否要生效,麻烦啦。

可以复制一份Builtin管线到用户项目(改个名字)。用户项目内是可以找到并且自由修改的。
可以参考这个仓库:https://github.com/cocos/cocos-example-custom-pipeline

好的,感谢,我们研究下。