在今天推出的LayaAir 2.10beta版裡,3D渲染效果再次得以提升,增加了DirectLightMap全局光照貼圖、增加了深度渲染管線DepthPass,增加了Camera截屏功能,增加了後期處理Enable參數,支持動態切換shaderPass,一次drawCall中支持傳入更多圖片,支持了GLTF模型和動畫的加載使用等功能。
增加深度渲染管線
從LayaAir2.10版本開始,我們增加了深度渲染管線DepthPass,Camera中增加了屬性depthTextureMode。
Camera設置depthTextureMode為Depth,可以在渲染流程中增加深度圖的渲染,貼圖的渲染結果存儲在Camera的u_CameraDepthTexture,開發者可以在shader中直接取到DepthTexture。
Camera設置depthTextureMode為DepthNormals,可以在渲染流程中增加法線深度圖的渲染。貼圖的渲染結果存儲在Camera的u_CameraDepthNormalsTexture的相機unifrom中,開發者可以在shader中直接取到DepthNormalTexture。
關於深度管線的所有shader相關函數,在shader文件DepthNormalUtil.glsl中,使用SAMPLE_DEPTH_TEXTURE宏定義函數可以得到u_CameraDepthTexture中的深度值,但此時的深度值並不是線性深度值,需要使用Linear01Depth函數傳入系統傳入的u_ZBufferParams來解析出正確的線性深度值。
採樣貼圖u_CameraDepthNormalsTexture得到的圖片值是壓縮數據,rg存儲了壓縮法線信息,ba存儲了線性深度值,可以調用函數DecodeDepthNormal來解析出法線和深度信息。
此渲染管線,大大健壯了引擎的渲染管線,開發者可以基於DepthTexture,NormalDepthTexture寫出各種各樣的渲染效果,增加了對後期處理效果的支持。
例如,我們可以用這個渲染管線做一個邊緣後期處理功能。
上圖的效果,是由下面兩圖通過邊緣後期處理功能生成。
可動態修改渲染管線
另外我們還在本次的版本中支持動態切換渲染管線,開發者可以在程序代碼中通過RenderContext3D.ConfigPipeLineMode將默認的渲染管線切換為任意的渲染管線。
LayaAir引擎現有的渲染管線有Forward、ShadowCaster,以及本次版本新添加的DepthNormal渲染管線。
可動態切換的渲染管線不止是引擎內置的渲染管線,開發者也可以增加自定義的渲染管線用於切換。具體方法是在生成shader的時候增加自定義的shaderPass,然後通過RenderContext3D.ConfigPipeLineMode把自定義的渲染管線設置為引擎的渲染管線。
此功能配合本次版本新增的Camera截圖功能,開發者可以將各種渲染效果渲染到任何地方。
例如,開發者想將物體的法線渲染成圖片,可以在shader生成的地方增加一個自定義的渲染管線NormalPass,寫好配套的shader,再把RenderContext3D.configPipeLineMode設置為自定義的NormalPass,就可以達到渲染物體法線的效果。
增加烘培貼圖中的方向貼圖
本次版本增加的光照貼圖DirectLightMap貼圖,也是值得重點突出介紹的功能,該功能配合法線貼圖可以獲得更加細膩的烘培效果。
我們可以在Unity的Lighting面板中的Directional Mode進行設置並導出使用,設置方式如下圖所示。
在沒有設置Directional之前的效果如下圖所示:
設置Directional之後效果如下圖所示,與上圖對比有明顯更加細膩。
其它重要的3D功能
在以前的版本裡,LayaAir在一次drawCall中最多只能上傳8張圖片。從2.10beta版開始,可以根據設備最大傳入圖片的數量來傳入圖片,用來支持更多的渲染效果。
除此之外,我們還增加了一些其它的重要3D功能,例如:
1、增加了camera中的drawRenderTextureByScene接口。可以用來截取非場景節點相機的渲染結果,類似於快照功能。開發者可以設置一個相機,調用此函數來渲染出一幀的畫面,用作截屏或者其他功能使用。
2、在PostProcess後期處理中增加了enable屬性,用來動態開關後期處理,優化了後期處理流程。
3、新增支持了GLTF模型和GLTF動畫的加載使用,使用方式與LayaAir插件從Unity中導出的模型(.lm)是一樣的。
END
引擎案例分享:
聊聊電商圈成功的遊戲跨界案例3D研發經驗分享:50多款3D小遊戲的炫稷遊戲創始人程銀斌分享3D研發經驗!3D技術分享:有著30多款3D小遊戲產品的長沙嗨鹿互動科技資深研發工程師分享3D遊戲研發經驗132款3D跑酷極限運動主題的微信小遊戲分享LayaAir引擎78款3D射擊主題微信小遊戲分享,看看玩過幾款!