我們先來看看下面的表格,從中可以清楚的瞭解到Shader Model 3.0所具備的新功能。
Pixel Shader功能
|
Shader 2.0
|
Shader 3.0
|
描述
|
Shader長度 |
96 |
65535+ |
允許採用更復雜的陰影、光線和程序 |
動態分支 |
不支持 |
支持 |
通過跳過無關像素上的複雜着色以提高性能 |
Shader抗鋸齒 |
不支持 |
內置派生指令 |
開發人員能夠計算屏幕空間以調整着色頻率或者進行多重採樣處理,以降低畫面失真 |
背面寄存器 |
不支持 |
支持 |
允許在一次處理工序中處理雙面材質的光源 |
內插值色彩格式 |
最低8-bit整數 |
最低32-bit浮點 |
更高的顏色範圍和色彩精度,允許採用頂點級別的高動態範圍光源 |
多重渲染目標 |
可選
|
4個 |
允許高級光源算法,以節省過濾和頂點操作。能夠以最低成本實現更多的光源處理 |
霧和鏡面效果 |
固定8-bit功能 |
可自定義的fp16-fp32 shader程序 |
Shader Model 3.0讓開發人員能夠完全、精確的控制霧和鏡面反射效果。在Shader Model 2.0中,這些效果都是固定的。 |
材質座標數量 |
8 |
10 |
更多的per-pixel輸入允許更逼真的渲染,尤其適合渲染皮膚。 |
下面是Vertex Shader Model 2.0到Vertex Shader Model 3.0所作出的改變:
Vertex shader 功能
|
Shader 2.0
|
Shader 3.0
|
描述
|
Shader長度 |
256指令 |
65535指令 |
更多的指令允許更爲細緻的角色光源和動畫處理 |
動態分支 |
不支持 |
支持 |
通過跳過無關像素上的複雜着色以提高性能 |
頂點材質 |
不支持 |
對多達4個的材質進行查找 |
允許置換貼圖和粒子特效 |
支持實例 |
不支持 |
必須 |
允許使用一條指令繪製各種物體 |