UnityShader之圖形學(xué)基礎(chǔ)(一)

前言

伴隨著VR/AR的飛速發(fā)展,Unity開發(fā)引擎逐漸成為了VR/AR開發(fā)的主力引擎。為了滿足VR高清高幀率的極限渲染,著色器編程(Shader)也成為了Unity程序開發(fā)人員的必備知識(shí)。本篇主要講解圖形學(xué)基礎(chǔ)知識(shí),了解Unity圖像渲染機(jī)制,以及圖像渲染管線流程。

  • Unity圖像渲染機(jī)制
    在Unity引擎中,任何圖像渲染都需要一個(gè)很重要的文件屬性——Material(材質(zhì)球),在MeshRenderer、LineRenderer、UI渲染、拖尾渲染都可以見到它的影子。因此,我們可以將Material理解為Unity中圖像渲染的工具,而Shader(著色器)即可以理解為Material這個(gè)工具的加工廠,Shader(加工廠)定義了Material渲染的解決方案,定義了Material渲染所需要的原材料,而此時(shí)所講的原材料,即Shader中的屬性(數(shù)值,顏色,紋理,貼圖等等)。

    Unity圖像渲染機(jī)制

    下面舉例說明,在Unity中設(shè)置一個(gè)網(wǎng)格渲染的具體流程:

  • 想要渲染一個(gè)網(wǎng)格,首先需要?jiǎng)?chuàng)建一個(gè)材質(zhì)球;


    創(chuàng)建材質(zhì)球
  • 在材質(zhì)球中,選擇合適的Shader;


    選擇Shader
  • 將材質(zhì)球添加到網(wǎng)格渲染器中;


    添加材質(zhì)球到網(wǎng)格渲染器
  • 調(diào)整材質(zhì)球中的屬性信息;


    調(diào)整材質(zhì)屬性
  • 查看調(diào)整后的渲染效果。


    查看渲染效果
  • 渲染繪圖管線
    了解了Unity圖像渲染機(jī)制,下面我來介紹渲染繪圖管線。那么何為渲染繪圖管線呢?渲染管線也稱為渲染流水線,是顯示芯片內(nèi)部處理圖形信號(hào)相互獨(dú)立的并行處理單元。在Unity中,即將3D場(chǎng)景模型繪制成屏幕2D圖片的過程。

    渲染繪圖管線

    下面我們?cè)敿?xì)講解圖像渲染流水線中各個(gè)模塊的詳細(xì)操作步驟:

  • 第一個(gè)步驟——頂點(diǎn)處理
    1.當(dāng)模型制作完成后,模型只有一個(gè)自身中心以及自身的前后左右上下方位,我們稱之為本地坐標(biāo)系。當(dāng)模型置入3D場(chǎng)景中,每個(gè)頂點(diǎn)都擁有了一個(gè)世界坐標(biāo),因此頂點(diǎn)處理第一步是從本地坐標(biāo)到世界坐標(biāo)的過程。


    本地坐標(biāo)-->世界坐標(biāo)

    2.有了世界坐標(biāo)后,模型在不同角度觀察,所看到的畫面是不同的,因此下一個(gè)步驟是從世界坐標(biāo)系到觀察坐標(biāo)系的過程。


    世界坐標(biāo)-->投影坐標(biāo)

    3.觀察坐標(biāo)系還是一個(gè)3D視角,但我們所看到的畫面其實(shí)是一個(gè)2D的平面,只是有了陰影,有了光照,有了3D模型的角度渲染,我們看起來比較又3D點(diǎn)感覺。最后一個(gè)步驟,即觀察坐標(biāo)系(3D)到投影坐標(biāo)系(2D)到過程。
    觀察坐標(biāo)-->投影坐標(biāo)
  • 第二個(gè)步驟——面處理
    1.剛剛操作已經(jīng)獲取到了2D平面上每個(gè)頂點(diǎn)的坐標(biāo),下面面處理第一個(gè)步驟即將所有頂點(diǎn)連線,組裝成面。


    面組裝

    2.當(dāng)然面組裝成型后,會(huì)有我們看不到的地方不需要渲染,因此要將看得到的面截取,將看不到的面剔除,因此有了面截取和面剔除步驟。


    面截取與面剔除
  • 第三個(gè)步驟——光柵化
    光柵化是渲染管線流程中重要的一步,即將面渲染所需要的像素?cái)?shù)量,位置等信息計(jì)算出來,也可以理解為是將面拆分成一個(gè)個(gè)的像素的過程。


    光柵化
  • 最后一個(gè)步驟——像素處理(像素著色)
    最后一步,即給每個(gè)像素著色,形成我們想要看到的畫面。


    像素處理

結(jié)束語

圖形學(xué)是計(jì)算機(jī)領(lǐng)域比較晦澀難懂的一部分,本篇用簡單的語言及詳細(xì)的配圖,闡述了Unity圖像渲染機(jī)制及圖形學(xué)渲染管線流程。相信大家能夠?qū)D形學(xué)又一個(gè)大概的認(rèn)識(shí),UnityShader系列篇會(huì)陸續(xù)上線,大家敬請(qǐng)期待,下一篇我們來學(xué)習(xí)固定管線Shader。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容