float4與half4數據類型


連續4個32位float類型數的向量

 

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,不能把這二者混合使用。
 

half4

half4 是4維向量,每一維的類型是half,原來half就是2字節的(半個float長度)浮點數類型的意思,對應到double是8字節(2個float長度)的浮點數類型。

參見:http://http.developer.nvidia.com/Cg/Cg_language.html

float 32
half 16


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM