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