改进builtin-standard.effect的效果

之前没有搞清楚Cocos Creator 3.0的PBR资产工作流,导入的材质始终调不对,今天花一天时间彻底研究了一下。

最后看到builtin-standard.effect中这段shader代码,顿时懂了,原来是要把ao, metallic, roughness三张帖图合并到一张帖图的RGB三个通道里,合成一张PBR帖图。
image
Cocos Creator 3.0这样做可能有自己的理由,但对美术不是非常友好,毕竟还有一个合成步骤,不是很好分别调试AO,Metallic和Roughness。

于是我自己写了一个程序将三张帖图合并为一个帖图,也算是可以凑合这个工作流,但实测效果不是很好,具体不确定是什么原因,可能是单通道的精度问题,材质的过渡非常突然,没有渐变效果。



与是只有上最后一招,直接改effect文件,复制粘贴builtin-standard.effect文件为builtin-standard-pbr.effect,主要修改如下:

  1. 去掉PBR帖图
  2. 分离MetallicRoughness双通道帖图为Metallic,Roughness两张帖图

最终得到的效果


与Blender中效果对比基本很接近了

颜色上的差别是因为Blender有一个hdr环境帖图

这里分享给大家,如果遇到相同的坑,或许这是一个解决办法!

1赞

在这张图中是有说算法的

https://docs.cocos.com/creator/3.0/manual/zh/material-system/overview.html#builtins

在美术工具中也是可以做贴图混合的,比如 PhotoShop 中将三张图分别放在不同的通道中,或者在 substance painter 中也可以配置导出时的 pbr 贴图通道

恩,搜索了一下,这个技术叫Channel Packing,Blender里也能直接支持,那就搞清楚了,谢谢!


请问技术大大,Cocos 3.0 Android Java调用ts 代码CocosJavascriptJavaBridge.evalString这个方法怎么使用?原来的runOnGLThread方法不能使用了

请问 metallic 这个参数,在模型导出有默认值吗?我们材质导入后,IDE 里看有默认的是 0.4,效果和设计师那边不一致

mark,后面回来学习以下