按照渲染管線的分類,可以把Sharder分成3個(gè)類別:
1、固定功能著色器(Fixed Function Shader)
固定功能著色器為固定功能渲染管線的具體表現(xiàn)。
2、表面著色器
存在于Unity3D中由U3D發(fā)揚(yáng)光大的一門技術(shù)。Untiy3D為我們把Shader的復(fù)雜性包裝起來(lái),降低shader的書寫門檻。
3、頂點(diǎn)著色器和片段著色器
GPU上含有兩個(gè)組件:可編程頂點(diǎn)處理器和可編程片段處理器,頂點(diǎn)和片段處理器被分離成可編程單元,可編程頂點(diǎn)處理器是一個(gè)硬件單元,可以運(yùn)行頂點(diǎn)程序,而可編程片段處理器則是一個(gè)可以運(yùn)行片段程序的單元。
頂點(diǎn)著色器
頂點(diǎn)著色程序從GPU前端(寄存器)中提取圖元信息(頂點(diǎn)位置、法向量、紋理坐標(biāo)),并完成頂點(diǎn)坐標(biāo)空間變換、法向量空間轉(zhuǎn)換、光照計(jì)算等操作,最后將計(jì)算數(shù)據(jù)傳送到指定寄存器中。
片段著色器
片段程序從上述寄存器中獲取需要的數(shù)據(jù):紋理坐標(biāo)與光照信息等,并根據(jù)這些信息以及從應(yīng)用程序傳遞的紋理信息進(jìn)行每個(gè)片段的顏色計(jì)算(紋理查詢),最后將處理后的數(shù)據(jù)傳送光柵操作模塊。
三種著色器的共同點(diǎn):
都必須從唯一一個(gè)根Shader開始
Prooerties參數(shù)部分,作用以及語(yǔ)法完全相同。
具體功能都在SubShader里。
都可以打標(biāo)簽
都可以Fallback
都可以處理基本的功能,例如光照漫反射以及鏡面反射。但如uv計(jì)算效果等高級(jí)功能,固定功能著色器無(wú)法完成。
三種著色器的不同點(diǎn)
表面著色器沒(méi)有通道pass{},加了會(huì)報(bào)錯(cuò),該著色器已經(jīng)把具體內(nèi)容打包在光照模型中了。
固定渲染管線每句代碼之后都沒(méi)有“;”
核心結(jié)構(gòu)不同:
- 固定渲染管線的核心是:
- 頂點(diǎn)與片段著色器的核心是:
- 表面著色器的核心是:
在Unity中如何區(qū)分以上三種著色器
沒(méi)有嵌套CG語(yǔ)言,即代碼中沒(méi)有CGPROGARAM和ENDCG關(guān)鍵字的,就是固定功能著色器。
嵌套CG語(yǔ)言,代碼中有surf函數(shù)的為表面著色器
嵌套了CG語(yǔ)言,代碼中有#pragma vertex name和 #pragma fragment frag聲明的,就是頂點(diǎn)著色器&片段著色器。
-
gpu
+關(guān)注
關(guān)注
28文章
4949瀏覽量
131309 -
Unity
+關(guān)注
關(guān)注
1文章
128瀏覽量
22495
原文標(biāo)題:Unity中Shader的三種基本類型
文章出處:【微信號(hào):Imgtec,微信公眾號(hào):Imagination Tech】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
如何用Unity搞出一個(gè)3D版的神經(jīng)網(wǎng)絡(luò)可視化
Cisco Unity Express語(yǔ)音郵件
Unity3D AR技術(shù)vuforia SDK
高通AR Unity播放器特性
Unity3D淺談&Unity5游戲及交互設(shè)計(jì)
Unity中Shader的三種類別 如何區(qū)分
Unity中的Enlighten與混合光照
“IG”火了,離不開Unity3D
怎樣安裝Unity
Unity 3D優(yōu)化三個(gè)的注意方面
不同電阻的類別符號(hào)是如何區(qū)分的

Unity與ROS鏈接介紹

評(píng)論