unity SRP手機渲染

手機上通常使用URP

URP 擁有一個ForwardRenderer, 用於管理整個渲染流程

渲染分爲多個Pass, 每個Pass渲染的時候需要設置 Color Depth Target, 同時需要指定是否需要將 RenderTexture數據 寫入到 TiledGPU的高速緩存中,是否需要將高速緩存數據寫會到RenderTexture中

這種寫入寫會 通常消耗比較大

URP有自己的渲染順序控制,以RenderPassEvent定義

通常順序 先執行 MainLight的ShadowPass

接着Opaque 天空盒 Transparent PostProcess

Opaque結束後,可能拷貝Color 和深度, 用於Transparent部分的水渲染

默認繪製通過 DrawObjectsPass 執行,輸出到CameraTarget中

每個Pass配置有自己需要輸出到的Color和Depth Target

如果Pass的Target和當前Tiled相同,則不做操作,否則,如果是非ClearColor 則需要Load,否則DontCare,不需要加載Color和depth RenderTexture

但是最後都需要執行Store將結果寫回

如果需要訪問顏色和深度數據,現在的實現是需要做一次拷貝

如果採用TiledGPU的subpass技術可以減少複製數據的次數

https://developer.arm.com/documentation/101897/0200/fragment-shading/multipass-rendering

URP整體流程

UniversalRenderPipeline -->執行 FowardRender -->執行每個 RenderPass

RenderFeature 添加RenderPass 到 ForwardRender 中

每個RenderPass 可以配置RenderTarget

實現基於 CommandBuffer , 提交到RenderContext內部

當RenderContext Submit時相關的Command 實際執行

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章