使一個3D引擎實現基於物理渲染(PBR)的材質的流程是怎樣的?

需要哪些前置技能?目前正在使用基於OpenGL的jMonkey Engine,但其材質功能捉襟見肘。個人想了解一下實現PBR材質的流程,而不是在SDK里使用。


Readings on Physically Based Rendering

最近看到總結的最全的目錄。


光有 PBR 材質是不夠的,需要的是整個管線都是符合 PBR 原理的。PBR 更多像一種思維方式,而不是某種特效或者某種材質組合。

假設你已經有一個比較完善的 3D 引擎(線性空間 shading,HDR 格式,gamma 空間輸出),要接入 PBR 管線,那麼:

1. 修改你的光照模型 (normalized phong, GGX, etc)

2. 對應光照模型的材質輸入(albedo + normal + fresnel0 + roughness)

3. 對應光照模型的環境光照 (image based lighting )

如果再想更正確一點:

4. 動態的 GI (SSR, LPV, SVO)

5. 符合真實世界的 light authoring

6. 符合真實世界攝像機曝光的 HDR


恩呢,pbr技術,牽扯到的方面的確很多,就貼圖部分這裡面我總結了下,pbr顏色表示非金屬基材的漫反射顏色和金屬的反射率值;基色不應有光照信息,微觀遮蔽除外;黑色值不應降至30 srgb~50 srgb以下;亮度值不應超過240srgb以上;原材料金屬的反射率應是70-100%的高光範圍內的一個較高的值,這個範圍可以映射至180-255srgb。想測試一下自己的模型,可以到國內一家貌似叫3dpunk的網站上,測試下自己的作品。


http://claireswallet.farbox.com/post/graphics/ji-yu-wu-li-zhao-se

具體工程上怎麼搞得不知道,坐等大神解答。


是個很大很大的坑,很多方面都要考慮


推薦閱讀:

MOBA類遊戲是如何解決網路延遲同步的?
怎麼做硬核用戶方向的單機遊戲媒體?
龍與地下城對後世遊戲有哪些深遠的影響?
為什麼有大量的遊戲發行/製作公司選擇將旗下工作室放在加拿大魁北克省的蒙特利爾?
有沒有一種可以編譯為 Lua 運行的語言?

TAG:遊戲開發 | Unity遊戲引擎 | 計算機圖形學 | 虛幻引擎 |