iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 7
0
自我挑戰組

初見Unity Shader系列 第 7

Unity Frame Debugger

文章使用Unity 2019 LTS

目標

  • 如何使用Unity Frame Debugger
  • 甚麼是Draw call

Frame Debugger

寫程式必然會出現Bug,對於找出Bug的方法,從直接把資料輸出在螢幕上到利用Debugger下中斷點,一行一行的去追查問題所在。

寫Shader也是一樣,我們常會遇到像是破圖,或是光影成相不正確的Bug。Unity在5.0版本的時候,有了Frame Debugger這個利器,方便我們開發者可以一幀一幀的查看物件是怎麼繪製到螢幕上的,今天就來簡單的介紹怎麼使用這個工具。

首先,我們要先打開Frame Debugger的視窗:
Create -> Windows -> Analysis -> Frame Debugger

視窗上的功能

利用我們Day6介紹的漫反射當作範例,按下Frame Debugger視窗左上方的Enable,會看到兩排密密麻麻的狀態。

上方的滑桿與旁邊的百分比數字(1)表示Unity的渲染器在畫這一幀的時候,經過了多少步驟和當前的步驟,左半邊(2)就是這些步驟的詳細情況。

右半邊(3)顯示的是這個Shader的屬性,以及選擇這一幀繪製的情況,可以點選看看這些步驟,以及畫面的顯示結果。

Draw call

上述提到的「步驟」,它有一個專有名詞叫做Draw call。

Draw call是指CPU呼叫GPU繪製圖形的指令,還記得Day3提到的CPU到GPU的過程嗎?Draw call就是開發者由應用階段傳遞到GPU管線的橋樑,在實作上其實就是一個API,例如OpenGL的glDrawArrays()

Draw call也與渲染方面的優化有關,但這裡就不在繼續展開講述,有興趣的讀者可以搜尋「Batch Rendering」之類的關鍵字。

總結一下

水了一篇,這篇簡單的介紹了Frame Debugger這項工具以及Draw call是甚麼?其實想想我應該在介紹管線之前,就講解甚麼是Draw call,所以相對來講,這篇也是補充我之前漏掉的部分。

Reference


上一篇
漫反射
下一篇
高光反射與Blinn-Phong Shading
系列文
初見Unity Shader30

尚未有邦友留言

立即登入留言