2022年HLSL學(xué)習(xí)筆記一基礎(chǔ)_第1頁
2022年HLSL學(xué)習(xí)筆記一基礎(chǔ)_第2頁
2022年HLSL學(xué)習(xí)筆記一基礎(chǔ)_第3頁
2022年HLSL學(xué)習(xí)筆記一基礎(chǔ)_第4頁
2022年HLSL學(xué)習(xí)筆記一基礎(chǔ)_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、學(xué)習(xí)必備 歡迎下載 HLSL 學(xué)習(xí)筆記(一) :基礎(chǔ) 前言 五一在家無事,于是學(xué)習(xí)了一下 HLSL ,基于 XAN4.0 的;學(xué)習(xí)完了也就總結(jié)一下,純粹是新手學(xué)習(xí) 的體會(huì)之談,紕漏之處仍望見諒,不喜勿噴; HLSL 是一種使用 GPU 渲染出圖像的技術(shù),不僅可以轉(zhuǎn)變最終顯現(xiàn)的顏色,仍可以物體的大小,胖 瘦和位置等;例如物體的碎裂成效就可以使用 HLSL 來渲染得到; 數(shù)據(jù)類型 數(shù)據(jù)類型有值類型,向量,矩陣,采樣器,和結(jié)構(gòu)體; 1. 值類型 bool 布爾變量 half 16 為整形 int 32 位整形 float 單精度浮點(diǎn)數(shù) double 雙精度浮點(diǎn)數(shù) 聲明方式: float f; 賦值方

2、式: f = 1; 2. 向量 聲明方式: float4 f; 賦值方式: f = 1,2,3,4; 取值方式: float3 ff = f.rgb; 說明:向可以通過 xyzw 或者 rgba 拜望向量中的指定字段, x 或者 r 就是代表 0 號(hào)字段; 不僅可 以單獨(dú)操作一個(gè)字段,仍可以對(duì)多個(gè)字段同時(shí)操作,例如 3. 矩陣 聲明方式: float2x4 f; 先行后列; 賦值方式: f = 1,1,2,2,3,3,4,4; 取值方式: float ff = f00; ,就是將 f 中的 xyz 都乘以個(gè) 3; 說明:假如要對(duì)矩陣做乘法運(yùn)算,請(qǐng)使用 mul 函數(shù),另外, mulff,f 與

3、mulf,ff 的結(jié)果是不一 樣的; 4. 采樣器 第 1 頁,共 6 頁學(xué)習(xí)必備 歡迎下載 聲明方式: texture Texture; / 紋理變量 sampler TextureSampler = sampler_state / 紋理采樣器 Texture = ; / 紋理采樣器使用的紋理對(duì)象 MinFilter = Linear; / 縮小圖形使用線性濾波 MagFilter = Linear; / 放大圖形使用線性濾波 MipFilter = Linear; /Mipmap 使用線性濾波 AddressU = Wrap; /U 方向上的紋理尋址模式接受 Wrap 方式 Address

4、V = Wrap; /V 方向上的紋理尋址模式接受 Wrap 方式 ; 賦 值 方 式 : 在 C# 中 對(duì) Texture 賦 值 , effect.ParametersTexture.SetValueGame.Content.Load*; 取值方式: tex2DTextureSampler , TEXCOORD0; 說明: MinFilter ,MagFilter ,MipFilter ,AddressU ,AddressV 是可選項(xiàng),假如不寫將會(huì)使 用默認(rèn)值,也就是上面賜予的值; 5. 結(jié)構(gòu)體 聲明方式: struct VertexShaderInput float4 Position

5、: POSITION; float2 TextureCoordinates : TEXCOORD0; float3 Normal: NORMAL; ; VertexShaderInput input; 此處與 C# 語法有些區(qū)分,直接這么寫,不需要再寫個(gè) new 什么的; 賦值方式:與 C# 語法一樣; 取值方式:與 C# 語法一樣; 說明:其它的地方都好懂得,關(guān)鍵是每個(gè)字段后面仍有個(gè) “小尾巴 ”,這是什么玩意?。窟@個(gè)我也 不太清楚,自己想當(dāng)然感覺吧,應(yīng)當(dāng)就是顯存里面有一些特殊的空間,它們有著自己名字,比如 TEXCOORD0 什么的,就像 C# 中的 Dictionary ; 所 以 Te

6、xtureCoordinates 這 行 的 意 思 是 創(chuàng) 建 一 個(gè) float2 類 型 的 向 量 , 它 的 名 字 是 TextureCoordinates ,值儲(chǔ)備在 TEXCOORD0 這個(gè)內(nèi)存空間; Position 的意思對(duì)全部 POSITION (POSITION0-POSITION9 ,貌似是這樣;)內(nèi)存空間的引 用; 這也就說明白入口函數(shù)的參數(shù)為什么可以千變?nèi)f化, 哪; 其實(shí)只是換了個(gè)名字, 數(shù)據(jù)該在哪永久都在 第 2 頁,共 6 頁學(xué)習(xí)必備 歡迎下載 語法 語法什么的,與 C# 相差不大,不過仍是有點(diǎn)區(qū)分的,至于區(qū)分的地方,我所知道的上面都寫出 來了; 函數(shù)列表 本

7、表來自網(wǎng)絡(luò),我對(duì)說明做了些修改; Name Syntax Description abs absx 返回 x 的確定值;對(duì) x 的每個(gè)元素都會(huì)獨(dú)立運(yùn)算一次; Absolute value per component. acos acosx 返回 x 的反余弦值;對(duì) x 的每個(gè)元素都會(huì)獨(dú)立運(yùn)算一次; Returns the arccosine of each component of x. all allx 檢測 x 的全部元數(shù)的值是否為 0.Test if all components of x are nonzero. any anyx 檢測 x 是否有某個(gè)元數(shù)的值為 0.Test if a

8、ny component of x is nonzero. asfloat asfloatx 將 x 轉(zhuǎn)換為 float 類型;Convert the input type to a float. asin asinx 返回 x 的反正弦值;對(duì) x 的每個(gè)元素都會(huì)獨(dú)立運(yùn)算一次; asint asintx 將 x 轉(zhuǎn)換為 int 類型; Convert the input type to an integer . asuint asuintx 將 x 轉(zhuǎn)換為 uint 類型; atan atanx 返回 x 的反正切值; atan2 atan2y, x 返回 y, x 的反正切值; ceil c

9、eilx 返回大于或等于 x 的最小整數(shù); clamp clampx, min, max 將 x 截取在 min, max 范疇內(nèi); clip clipx 假如 x 中存在值小于 0 的參數(shù),就丟棄當(dāng)前像素; cos cosx 返回 x 的余弦值; cosh coshx 返回 x 的雙曲余弦值; cross crossx, y 返回 x, y 的叉積; 混合和縮放 4D 向量 x 用于補(bǔ)償一些對(duì) UBYTE4 支持的硬件; D3DCOLORtoUBYT D3DCOLORtoUBYTE Swizzles and scales components of the 4D vector x to E4

10、 4x compensate for the lack of UBYTE4 support in somehardware. ddx ddxx 返回關(guān)于屏幕坐標(biāo) x 軸的偏導(dǎo)數(shù); 第 3 頁,共 6 頁ddy ddyx 學(xué)習(xí)必備 歡迎下載 返回關(guān)于屏幕坐標(biāo) y 軸的偏導(dǎo)數(shù); degrees degreesx 將 x(弧度)轉(zhuǎn)換到角度; determinant determinantm 返回的正方形矩陣 m 的行列式; distance distancex, y 返回 x, y 之間的距離; dot dotx, y 返回 x, y 的點(diǎn)積; exp expx 返回以 e 為底數(shù), x 為指數(shù)的指

11、數(shù)函數(shù)值; exp2 exp2x 返回以 2 為底數(shù), x 為指數(shù)的指數(shù)函數(shù)值;對(duì) x 的每個(gè)字段都 會(huì)運(yùn)算一次; faceforward faceforwardn, i, ng 檢測多邊形是否位于正面; -n * sign .i, ng ; 返回小于等于 x 的最大整數(shù); floor floorx fmod fmodx, y 返回 x/y 的浮點(diǎn)余數(shù); frac fracx 返回 x 的小數(shù)部分; frexp frexpx, exp 返回 x 的尾數(shù)和指數(shù); fwidth fwidthx 返回 absddxx + absddyx , GetRenderT argetS GetRenderT

12、argetSa 返回渲染目標(biāo)采樣器的個(gè)數(shù); Returns the number of ampleCount mpleCount render-target samples. GetRenderT argetS GetRenderT argetSa 返 回 關(guān) 于 給 定 采 樣 器 的 一 個(gè) 采 樣 點(diǎn) x,y ; Returns aamplePosition mplePositionx sample position x,y for a given sample index. isfinite isfinitex 假如 x 為有限值就返回 true ,否就返回 false ; isinf

13、 isinfx 假如 x 為無限值就返回 true ,否就返回 false ; isnan isnanx 假如 x 為 NAN 或 QNAN 就返回 true ,否就返回 false ; ldexp ldexpx, exp frexp 的逆運(yùn)算,返回 x * 2 exp ; length lengthv 返回 v 向量的長度; lerp lerpx, y, s 對(duì) x,y 進(jìn)行插值運(yùn)算; Returns x + sy - x ; lit litn . l, n . h, m 返回光照向量(環(huán)境光,漫反射光,鏡面高光, 1); log logx 返回以 e 為底的對(duì)數(shù); log10 log10

14、x 返回以 10 為底的對(duì)數(shù); log2 log2x 返回以 2 為底的對(duì)數(shù); max maxx, y 返回 x, y 中較大值; min minx, y 返回 x, y 中較小值; modf modfx, out ip 把 x 分割為整數(shù)和小數(shù)部分; mul mulx, y 返回 x, y 矩陣相乘的積; noise noisex Generates a random value using the Perlin-noise algorithm. 第 4 頁,共 6 頁normalize normalizex 學(xué)習(xí)必備 歡迎下載 x / lengthx ; 返回單位化向量,定義為 pow r

15、adians reflect refract round rsqrt saturate sign sin sincos sinh smoothstep sqrt step tan tanh tex1D tex1Dbias tex1Dgrad tex1Dlod tex1Dproj tex2D tex2Dbias tex2Dgrad tex2Dlod tex2Dproj tex3D powx, y 返回 xy ; radiansx 將 x(角度)轉(zhuǎn)換到弧度; reflecti, n 返回入射光線 i 對(duì)表面法線 n 的反射光線; refracti, n, R 返回在入射光線 i,表面法線 n ,折

16、射率為 R 下的折射光線; roundx 返回最接近 x 的整數(shù); rsqrtx 返回 x 平方根的倒數(shù); 1 / sqrtx ; saturatex 把 x 截取在 0, 1 之間; signx 返回 x 的符號(hào); sinx 返回 x 的正弦值; sincosx, out s, out 返回 x 的正弦值和余弦值; c sinhx 返回 x 的雙曲正弦值; smoothstepmin, 假如 x 的范疇是 min, max ,就返回一個(gè)介于 0 和 1 之間Hermite 插值; 的 max, x sqrtx 返回 x 的平方根,對(duì) x 的每個(gè)字段都會(huì)運(yùn)算一次; stepa, x 返回 x

17、= a . 1 : 0 ; tanx 返回 x 的正切值; tanhx 返回 x 的雙曲正切值; tex1Ds, t 返回紋理 s 在 t 位置的顏色; 1D texture lookup. tex1Dbiass, t 使用 bias 返回紋理 s 在 t 位置的顏色; 1D texture lookup with bias. tex1Dgrads, t, ddx, ddy 1D texture lookup with a gradient. tex1Dlods, t 使用 LOD 返回紋理 s 在 t 位置的顏色; 1D texture lookup with LOD. tex1Dprojs

18、, t 使用透視分別返回紋理 s 在 t 位置的顏色; 1D texture lookup with projective divide. tex2Ds, t 返回紋理 s 在 t 位置的顏色; tex2Dbiass, t 2D texture lookup with bias. tex2Dgrads, t, ddx, ddy 2D texture lookup with a gradient. tex2Dlods, t 2D texture lookup with LOD. tex2Dprojs, t 2D texture lookup with projective divide. tex3Ds, t 3D texture lookup. 第 5 頁,共 6 頁tex3Dbias tex3Dbiass,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論