魔改PBR渲染管线支持大量灯光场景
前言
其实本来只打算写一下我是如何通过自定义材质来实现特定场景下突破 UBO 数量限制的,但是写着写着发现很有必要捋清楚 Babylonjs 内部着色器预编译的机制,不然连我自己都不清楚我为啥要这么做🙈。
虽然我之前确实对 Babylonjs 的源码做过一些分析记录,但总体比较零散,完全无法在脑海中形成一个系统性的、清晰的流程。所以这次我就把 Babylonjs 的仓库 clone 到本地,使用 Cursor 将其作为本地知识库进行详细的源码分析,得到了多份分析报告文档,基于这些文档我才对 Babylonjs 内部一些机制有了更详细和全面的了解。
而这些报告文档我都放到了 Github 上,感兴趣的可以去看一看,我觉得从里面确实可以学到不少关于 Babylonjs 源码的思路。
需求背景
我前不久独自开发了一个 在线3D展览 的项目,该项目的主要需求就是渲染展厅模型及展厅中的大量展品,也包含大量用来给展品打光的聚光灯。