GPU是以四維向量為基本單位來計算的。4個浮點數所組成的float4向量是GPU內置的最基本類型。使用GPU對兩個float4向量進行計算,與CPU對兩個整數或兩個浮點數進行計算一樣簡單,都是只需要一個指令就可以完成。
HLSH的基本數據類型定義了float、int和bool等非向量類型,但是它們實際上都會被Complier轉換成float4的向量,只要把float4向量的其中3個數值忽略,就可以把float4類型作為標量使用。
使用貼圖坐標時,只需要二維向量,HLSL定義了float2類型作為二維向量使用。
Shader經常會用到矩陣,HLSL有一個內置類型float4x4,它可以用來表示一個4*4矩陣。float4x4并不是GPU的內置類型,float4x4實際上是由4個float4所組成的數組。其他的還有float3x3、float2x2,分表代表3*3矩陣、2*2矩陣。
Shader也可以聲明數組,4*4矩陣實際上就是一個float4 m[4]的數組。注意,Shader中的所有的變量都使用寄存器,沒有其他內存空間可以使用,所以越大的數組會占用越多的寄存器,甚至會超出寄存器的數量限制。
在使用float4向量中的個別數值時,可以用xyzw或rgba,都可以用來表示四維向量中的數值。但不能把它們混用,例如不能用xyba,把它視為顏色時就用rgba,否則就是用xyzw,不能把這二者混合使用。
----摘自《3D繪圖程序設計》
posted on 2010-02-27 21:30
郭小帥 閱讀(2332)
評論(0) 編輯 收藏 引用 所屬分類:
Shader