关于光照帖图的建议

试了下烘焙光照帖图,跟场景里的设置得到的效果完全不一样,亮度已经设置很低了,但得到的效果还是很差,sphere light烘焙出来跟spot light差不多,完全不柔和。


个人感觉这个效果的话就没有实用价值了,所以想问一下那个lightfx组件是否可以开源?好研究下能不能改,如果lightfx不能开源,那生成的lightmap相关文件的格式是否有文档公开说明?这样可以自己调用别的渲染器生成兼容的lightmap拿到引擎里来使用。

这里有一个AMD的ProRender渲染器可以免费使用的,Cinema 4D就是内置了这个渲染器,可以OpenCL GPU加速渲染。

https://www.amd.com/zh-hans/technologies/radeon-prorender
https://github.com/GPUOpen-LibrariesAndSDKs/RadeonProRenderSDK

做为对比,这里用Blender 2.92 Cycles渲染器烘焙后导出为gltf,再导入Cocos Creator 3.0,可以看到效果其实是可以提上去的,AMD ProRender跟Cycles是同级别的离线渲染器。

因为lightfx现在是个黑盒,所以不知道它生成的lightmap图片文件和mesh以及UV是个什么对应关系,想了下最直接可行的方法是自己魔改builtin里的材质shader,支持自己的光照帖图和相关的UV寻址即可,那应该也行,就是自己实现一套lightmap工作流和相关材质,不是很难。

2赞

导入可以设置Mesh-renderer.ts 参考updateLightmap (lightmap: Texture2D|null, uOff: number, vOff: number, uScale: number, vScale: number)接口,光照图参数是直接保存到组件上的,并没有其他关联文件。
确实,现在引擎采用的动态光照是基于物理的,根据其算法会生成一个比较大的亮度,最后会统一做Tongmap, 而Lightingmap只能存储0-1的值,目前也正在解决这个问题

恩,可以看一下大厂的光照帖图也不完全是自己造轮子,是集成业界顶尖的方案,比如Unity的GPU Lightmap,集成的也是AMD的方案。

https://blogs.unity3d.com/cn/2018/03/29/amd-radeon-rays-integrated-into-unitys-gpu-progressive-lightmapper/

1赞

其实就类似下面这个对应关系能公开就好了,这好像不是存在组件里的,说明哪个mesh要占哪张图中的哪一部分,然后在别的渲染器里使用相同的设置就好了。

Baking started

Build lighting 33%

Build lighting 66%

Build lighting 100%

The baking is ready to complete and begin generating images

Mesh 0: Index(0) Offset(0.0009765625, 0.0009765625) Scale(0.498046875, 0.498046875)

Mesh 1: Index(0) Offset(0.5009765625, 0.0009765625) Scale(0.060546875, 0.060546875)

End of the baking

End

就是组件的里数据,就是纹理 偏移和缩放,就是合并了lightingmap后的信息。

嗯,是可参考下,也需要统一引擎和烘培器的光照计算,而且这主要是 ray tracing channel,我们用的intel的embree ray trace,Amd的cpu是有计划支持 radeon-rays

好的,那我大致知道了!

小白问题: 我目前用烘焙光照,总是烘焙出透明贴图,这是怎么回事