昨天開始學(xué)習(xí)Shader編程,主要是是看淺墨大大博客,系列文章的地址如下:
http://blog.csdn.net/zhmxy555/article/category/2681301
看完了第一篇文章和第二篇文章的基礎(chǔ)部分,在這里先做一下總結(jié)。
Shader是什么
最開始我對這個一點(diǎn)概念都沒有,看完之后才發(fā)現(xiàn)其實(shí)Shader是一個挺常見的東西。Shader,中文名字叫著色器。我們把寫好的著色器(Shader)附到材質(zhì)(Material)上,就得到了我們看到的一個個小球球,也就是材質(zhì)球。再將材質(zhì)附到物體上,經(jīng)過渲染器(Render),就會使物體呈現(xiàn)出不一樣的材質(zhì)

關(guān)于概念問題,淺墨大大推薦了一篇博文《貓都能學(xué)會的Unity3D Shader入門指南》(對某犬科動物深深地惡意……)。我還沒有看,看過之后再來分享。
背景知識
OpenGL或Direct3D的渲染狀態(tài)等相關(guān)知識 --> 有一個基本了解
NVIDIA和AMD開發(fā)者網(wǎng)站上著色器教程和文檔 --> 提升圖形編程功力
這里有淺墨大大關(guān)于DirectX的教程,內(nèi)容也是超級多,可能會并行學(xué)吧。連接如下:
http://blog.csdn.net/zhmxy555/article/category/1091031/2
Shader的基本類型
渲染管線
1.固定功能渲染管線(fixed-functionrendering pipelines)
2.可編程渲染管線(programmablerendering pipelines)
Shader
1.固定功能著色器(Fixed Function Shader)
2.表面著色器(Surface Shader)
3.頂點(diǎn)著色器&片段著色器 (Vertex Shader & Fragment Shader)
其中的固定功能著色器便是我們所說的固定功能渲染管線(fixed-functionrendering pipelines)的具體表現(xiàn),而表面著色器、頂點(diǎn)著色器以及片段著色器便屬于可編程渲染管線。
Shader的結(jié)構(gòu)
Properties 屬性
有點(diǎn)類似于Java里的屬性,也就是一些變量。有以下幾種類型:
1.浮點(diǎn)數(shù)(范圍) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?name("display name", Range (min, max)) =number
2.顏色 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?name("display name", Color) =(number,number,number,number)
3.2D紋理 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?name("display name", 2D) = "name" {options }
4.長方形(非2次方)紋理 ? ? ? ? ? ? ? ? ? name("display name", Rect) = "name"{ options }
5.立方貼圖紋理 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? name("display name", Cube) = "name"{ options }
6.浮點(diǎn)數(shù) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?name("display name", Float) = number
7.一個四元素的容器(相當(dāng)于Vector4) ? name("display name", Vector) =(number,number,number,number)
其中name是變量名,在程序中使用,display name是在Unity面板上顯示的名字。
Subshader 子著色器 --> Pass通道
子著色器是代碼的主體,每一個子著色器中包含一個或者多個的Pass。在計算著色時,平臺先選擇最優(yōu)先可以使用的著色器,然后依次運(yùn)行其中的Pass,然后得到輸出的結(jié)果。
對于子著色器的結(jié)構(gòu),等深入學(xué)習(xí)后再說。
Fallback 備胎
這一部分比較簡單,用來處理所有SubShader都不能運(yùn)行的情況(比如目標(biāo)設(shè)備實(shí)在太老,所有SubShader中都有其不支持的特性,于是只好用備胎了,不然就顯示不出來)。
Shader方面的基礎(chǔ)知識就到這里,下面還有一個Unity操作方面的問題。
第一人稱視角相機(jī)
這個相機(jī)我們也很熟悉,就是“吃雞”、CF這類游戲使用的玩家視野。Unity自帶的資源包可以很好的滿足我們的要求。菜單欄中Assets->Import Package->Character Controller來導(dǎo)入官網(wǎng)為我們準(zhǔn)備的的角色控制資源包。
但是由于我是用的是Unity5.6的版本,Import Package下并沒有Character Controller,需要自己去官網(wǎng)上下(新版本真的很坑……)。在Assets Store中搜索Standard Assets就可以找到了。

導(dǎo)入資源后,按照以下路徑找到FPSController,拖入場景中即可。

好就寫到這里,今天要把第二篇的內(nèi)容完成!
昨天看了幾集《上鎖的房間》,還不錯哦!
