如果不會Shader就不能稱為客戶端程序,所以有空還是要看一下Shader的相關東西。
可供學習的資料:
For Unity users I'd recommend reading:
- Unity Manual - ShaderLab reference
- Shader Programming Course - Unite '08 talk
- The Cg Tutorial - NVIDIA
And then experimenting with:
先看一個基礎的視頻,我從國外網站上載下來放Youku上的。
http://v.youku.com/v_show/id_XNDQ3NzA0MTE2.html
講的是如何使用最基本的Unity的ShaderLab
1.新建一個場景,在工程目錄中新建一個Shader和一個Material
2.雙擊Shader打開編輯器
用以下代碼替換:
Shader "MyShader/SolidShader" { Properties { _Color("Main Color", Color) = (0, 0, 0, 1) } SubShader { Pass{ Color[_Color] } } }
Shader關鍵字后面是Shader的名字,可以通過“/”起到分類做用。
Property里的東西是用於屬性的可視化配置的,這樣可以方便美術面調出好看的效果。
_Color("Main Color", Color) = (0, 0, 0, 1)
就表示我現在提供了一個_Color這個變量,他在Inspector上顯示的名字是Main Color,變量的類型是Color,最后給了一個默認值,
這個值可以在外面修改。
把寫好的Shader拖到剛才創建的材質上:
接下來是SubShader
一個Shader可以包含多個SubShader,SubShader的作用是可以在一個Shader中為不同性能的顯卡編寫不同的Shader,
在運行時會取出第一個可以在當前顯卡跑的SubShader。
每個SubShader里會有多個Pass。
Pass就是具體對渲染進行操作的單元了。在這里可以設置顏色,材質,貼圖等。
具體的可參考Unity的文檔:
3.在場景中創建一個Cube,將寫好的材質拖上去。
未着色前:
拖上材質后:
換一個紋理的Shader:
Shader "MyShader/TexShader" { Properties { _MainTex ("Base (RGB)", 2D) = "gray" {} } SubShader { Pass { SetTexture[_MainTex]{} } } }
一個簡單的Shader就完成了。剩下的就是學習其它的一些變量和關鍵字的使用了,多看下文檔就好。