最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Unity性能優(yōu)化:從FrameDebugger看Unity渲染

2023-03-02 17:03 作者:博毅創(chuàng)為  | 我要投稿


Unity如何渲染一個3D+2D的游戲畫面,今天通過FrameDebugger來看下Unity內(nèi)置渲染管線的渲染策略, 后續(xù)再出一些URP渲染管線相關(guān)的文章。

?

Unity 渲染場景的幾個主要部分

?

Unity內(nèi)置渲染管線是基于攝像機來進行渲染的,每個攝像機按照攝像機的渲染順序來依次渲染,渲染完一個攝像機,再渲染下一個攝像機。對于UI 2D而言,相當于也是一個獨立的UI攝像機,還有一種特殊的OnGUI會繪制2D GUI物體,走的是GUI Paint。如圖所示 FrameDegbuger 最外層的截圖如下:

FrameDebugger顯示渲染有3個部分,第一個是Camera.Render, 表示的是基于場景中的攝像機引起的渲染。第二部分UGUI.Rendering.RenderOverlays,表示的UGUI中2DUI引起的渲染。第三部分GUI.Repaint, 表示的是OnGUI引發(fā)的2D UI物體渲染; 如果你的項目中沒有OnGUI的渲染物體,F(xiàn)rameDebugger中就不會有相關(guān)的顯示。第一部分Camera.Render里面有每個攝像機按照攝像機的渲染順序依次次排列下來。如圖所示,目前場景中有兩個攝像機,F(xiàn)rameDebugger按照攝像機的渲染順序一次排列下來。

Unity 攝像機渲染處理哪些事情?

?

如上圖所示,每個攝像機有3個部分,第1部分UpdateDepthTexture是處理陰影投影相關(guān)。如果整個場景中沒有實時的陰影投影,就不會有這一部分。第2部分Drawing是具體的繪制物體相關(guān), 第3部分Camera.ImageEffects相關(guān)是攝像機的后期處理相關(guān)。展開 UpdateDepthTexture, 分為了Clear與DepthPass.Job兩個部分,如圖所示:

Clear是清理, DepthPass.Job詳細的記錄里面哪些物體做了ShadowCaster Pass。展開Drawing部分, FrameDebugger根據(jù)場景中涉及到的渲染隊列,一次進行渲染,如下圖所示,首先是Render.Opaque渲染隊列,隨后是Render.Transparent渲染隊列。

Unity 攝像機范圍外的物體不會被渲染

?

FrameDebugger中詳細的顯示了在當前幀中Unity實際渲染了哪些物體。在攝像機范圍內(nèi)的物體會被Unity渲染,不在攝像機范圍內(nèi)的物體,是不會被攝像機渲染的。渲染物體時,還會做陰影計算,從陰影紋理里面獲取陰影數(shù)據(jù)。

當前幀中在當前攝像機下渲染了哪些物體,都能通過FrameDebugger看清楚。點擊FrameDebugger中的每個渲染物體,就能對應到場景中的具體的物體。

?

被渲染物體的詳細信息

?

最后Unity渲染每個物體的時候,我們能夠看到渲染時候的詳細信息,如圖所示:

Event #554: 第554次繪制事件;

Shader: 渲染這個物體采用的是哪個Shader的哪個SubShader;

Blend: 著色到目標的顏色混合規(guī)則;

ZClip: 開啟片元深度檢測模式,如果一個片元在near與far的外面就會被丟棄;

ZTest:深度測試的規(guī)則,根據(jù)通過深度測試的才會被渲染;

ZWrite: 是否將當前片元的深度信息寫入深度緩存;

Cull: 裁剪剔除的模式,有back, front, none三種模式,分別是裁剪剔除掉背對攝像機的面,裁剪提出掉真對攝像機的面和不裁剪剔除。

Why Drawcall cannot be batched?:不能合批的原因描述;

ShaderProperties: CPU傳遞給GPU的數(shù)據(jù)的詳細信息;

?

今天的FrameDebugger與渲染的分享就到這里了,關(guān)注我們,獲取更多的渲染優(yōu)化相關(guān)的教程與知識。

?

附:視頻教程

https://www.bycwedu.com/promotion_channels/2146264125??

Unity性能優(yōu)化:從FrameDebugger看Unity渲染的評論 (共 條)

分享到微博請遵守國家法律
鄂尔多斯市| 本溪市| 浦东新区| 色达县| 榆林市| 福清市| 甘孜县| 昆明市| 阳信县| 合川市| 宜都市| 北海市| 名山县| 诸暨市| 宣威市| 新野县| 荣成市| 琼海市| 江津市| 贡觉县| 恩施市| 淄博市| 宜阳县| 平原县| 吉水县| 木兰县| 昆山市| 秦皇岛市| 天峻县| 遂昌县| 阿拉善左旗| 鄯善县| 枞阳县| 邮箱| 昌都县| 丹东市| 山阴县| 万源市| 深泽县| 邛崃市| 萨迦县|