天天看點

【UnityShader】HLSL函數庫

内在函數

下表列出了HLSL中可用的内在函數。每個函數都有一個簡短的描述,以及一個指向參考頁面的連結,該頁面具有有關輸入參數和傳回類型的更多詳細資訊。

表1

名稱

描述

最小着色器模型

abort

終止目前正在執行的繪制或排程調用。

4

abs

絕對值(每個元件)。

acos

傳回x每個分量的反餘弦值。

all

測試x的所有分量是否非零。

AllMemoryBarrier

阻止執行組中所有線程,直到完成所有記憶體通路為止。

5

AllMemoryBarrierWithGroupSync

阻止執行組中的所有線程,直到完成所有記憶體通路并且組中的所有線程都到達此調用為止。

any

測試x的任何分量是否為非零。

asdouble

将轉換值重新解釋為雙精度型。

asfloat

将輸入類型轉換為浮點型。

asin

傳回x的每個分量的反正弦值。

asint

将輸入類型轉換為整數。

asuint

将64位類型的位模式重新解釋為uint。

将輸入類型轉換為無符号整數。

atan

傳回x的反正切。

atan2

傳回兩個值(x,y)的反正切。

ceil

傳回大于或等于x的最小整數。

CheckAccessFullyMapped

确定“ 采樣”或“ 加載”操作中的所有值是否通路切片資源中的映射切片。

clamp

将x限制在[min,max]範圍内。

clip

如果x的任何分量小于零,則丢棄目前像素。

cos

傳回x的餘弦值。

cosh

傳回x的雙曲餘弦值。

countbits

計算輸入整數中的位數(每個分量)。

cross

傳回兩個3D向量的叉積。

D3DCOLORtoUBYTE4

旋轉和縮放4D向量x的分量,以彌補某些硬體中對UBYTE4支援的不足。

ddx

傳回x相對于螢幕空間x坐标的偏導數。

ddx_coarse

計算相對于螢幕空間x坐标的低精度偏導數。

ddx_fine

計算相對于螢幕空間x坐标的高精度偏導數。

ddy

傳回x相對于螢幕空間y坐标的偏導數。

ddy_coarse

計算相對于螢幕空間y坐标的低精度偏導數。

ddy_fine

計算相對于螢幕空間y坐标的高精度偏導數。

degrees

将x從弧度轉換為度。

determinant

傳回方陣m的行列式。

DeviceMemoryBarrier

阻止執行組中所有線程,直到完成所有裝置記憶體通路為止。

DeviceMemoryBarrierWithGroupSync

阻止執行組中的所有線程,直到完成所有裝置記憶體通路并且組中的所有線程都到達此調用為止。

distance

傳回兩點之間的距離。

dot

傳回兩個向量的點積。

1個

dst

計算距離向量。

errorf

将錯誤消息送出到資訊隊列。

EvaluateAttributeAtCentroid

評估像素質心。

EvaluateAttributeAtSample

在索引的樣本位置進行評估。

EvaluateAttributeSnapped

用偏移量評估像素質心。

exp

傳回base-e指數。

exp2

以2為底的指數(每個分量)。

f16tof32

将存儲在uint的下半部分中的float16轉換為float。

f32tof16

将輸入轉換為float16類型。

faceforward

傳回-n *符号(dot(i,ng))。

firstbithigh

擷取每個元件從最高位開始到向下工作的第一個置位的位置。

firstbitlow

傳回每個元件從最低位開始并向上工作的第一個置位位置。

floor

傳回小于或等于x的最大整數。

fma

傳回a * b + c的雙精度融合乘法加法。

fmod

傳回x / y的浮點餘數。

frac

傳回x的小數部分。

frexp

傳回x的尾數和指數。

fwidth

傳回abs(ddx(x))+ abs(ddy(x))

GetRenderTargetSampleCount

傳回渲染目标樣本的數量。

GetRenderTargetSamplePosition

傳回給定樣本索引的樣本位置(x,y)。

GroupMemoryBarrier

阻止執行組中所有線程,直到完成所有組共享通路。

GroupMemoryBarrierWithGroupSync

阻止執行組中的所有線程,直到完成所有組共享通路并且組中的所有線程都到達此調用為止。

InterlockedAdd

對dest資源變量執行保證的原子加值。

InterlockedAnd

執行保證的原子和。

InterlockedCompareExchange

以原子方式将輸入與比較值進行比較并交換結果。

InterlockedCompareStore

以原子方式将輸入與比較值進行比較。

InterlockedExchange

将值配置設定給dest并傳回原始值。

InterlockedMax

執行保證的原子最大值。

InterlockedMin

執行保證的原子最小值。

InterlockedOr

執行保證的原子或。

InterlockedXor

執行保證的原子異或。

isfinite

如果x是有限的,則傳回true,否則傳回false。

isinf

如果x為+ INF或-INF,則傳回true,否則傳回false。

isnan

如果x為NAN或QNAN,則傳回true,否則傳回false。

ldexp

傳回x * 2exp

length

傳回向量v的長度。

lerp

傳回x + s(y-x)。

lit

傳回光照向量(環境,漫反射,鏡面反射,1)

log

傳回x的以e為底的對數。

log10

傳回x的以10為底的對數。

log2

傳回x的以2為底的對數。

mad

對三個值執行算術乘法/加法運算。

max

選擇x和y中的較大者。

min

選擇x和y中的較小者。

modf

将值x分為小數和整數部分。

msad4

比較4位元組參考值和8位元組源值,并累加4個和的向量。

mul

使用x和y執行矩陣乘法。

noise

使用Perlin噪聲算法生成随機值。

normalize

傳回歸一化向量。

pow

傳回x y。

printf

将自定義着色器消息送出到資訊隊列。

Process2DQuadTessFactorsAvg

生成四邊形更新檔的校正的鑲嵌細分因子。

Process2DQuadTessFactorsMax

Process2DQuadTessFactorsMin

ProcessIsolineTessFactors

生成等值線的舍入細分化因子。

ProcessQuadTessFactorsAvg

ProcessQuadTessFactorsMax

ProcessQuadTessFactorsMin

ProcessTriTessFactorsAvg

生成三面體的校正鑲嵌細分因子。

ProcessTriTessFactorsMax

ProcessTriTessFactorsMin

radians

将x從度轉換為弧度。

rcp

計算每個元件的近似快速倒數。

reflect

傳回反射向量。

refract

傳回折射向量。

reversebits

反轉每個元件的位順序。

round

将x舍入到最接近的整數

rsqrt

傳回1 / sqrt(x)

saturate

将x鉗位到[0,1]範圍

sign

計算x的符号。

sin

傳回x的正弦

sincos

傳回x的正弦和餘弦。

sinh

傳回x的雙曲正弦值

smoothstep

傳回介于0和1之間的平滑Hermite插值。

sqrt

平方根(每個分量)

step

傳回(x> = a)?1:0

tan

傳回x的切線

tanh

傳回x的雙曲正切

tex1D(s, t)

一維紋理查找。

tex1D(s, t, ddx, ddy)

tex1Dbias

具有偏差的一維紋理查找。

tex1Dgrad

具有漸變的1D紋理查找。

tex1Dlod

使用LOD進行1D紋理查找。

tex1Dproj

一維紋理查找與投影分隔。

tex2D(s, t)

2D紋理查找。

tex2D(s, t, ddx, ddy)

tex2Dbias

具有偏差的2D紋理查找。

tex2Dgrad

具有漸變的2D紋理查找。

tex2Dlod

具有LOD的2D紋理查找。

3

tex2Dproj

具有投影鴻溝的2D紋理查找。

tex3D(s, t)

3D紋理查找。

tex3D(s, t, ddx, ddy)

tex3Dbias

3D與偏差的紋理查找。

tex3Dgrad

3D與梯度的紋理查找。

tex3Dlod

3D與LOD的紋理查找。

tex3Dproj

3D與射影鴻溝的紋理查找。

texCUBE(s, t)

多元資料集紋理查找。

texCUBE(s, t, ddx, ddy)

texCUBEbias

多元資料集具有偏差的紋理查找。

texCUBEgrad

多元資料集與漸變的紋理查找。

texCUBElod

與LOD的多元資料集紋理查找。

texCUBEproj

多元資料集紋理查找與射影鴻溝。

transpose

傳回矩陣m的轉置。

trunc

将浮點值截斷為整數值

元件和模闆類型

HLSL内在函數聲明将元件類型和模闆類型用于輸入參數自變量和傳回值。下表列出了可用的類型。

表2

這些模闆類型

支援這些資料類型

matrix

多達16個元件,具體取決于聲明

HLSL基本類型

object

采樣對象

采樣器,sampler1D,sampler2D,sampler3D,samplerCUBE

scalar

1個組成部分

vector

最少1個元件,最多4個元件(含)