내장 함수
다음 표에는 HLSL에서 사용할 수 있는 내장 함수가 나열되어 있습니다. 각 함수에는 간략한 설명과 입력 인수 및 반환 형식에 대한 자세한 내용이 있는 참조 페이지에 대한 링크가 있습니다.
속성 | 설명 | 최소 셰이더 모델 |
---|---|---|
abort | 실행 중인 현재 그리기 또는 디스패치 호출을 종료합니다. | 4 |
abs | 절대값(성분당)입니다. | 1¹ |
acos | x의 각 성분의 아크코사인을 반환합니다. | 1¹ |
all | x의 모든 성분이 0이 아닌지 테스트합니다. | 1¹ |
AllMemoryBarrier | 모든 메모리 액세스가 완료될 때까지 그룹의 모든 스레드 실행을 차단합니다. | 5 |
AllMemoryBarrierWithGroupSync | 모든 메모리 액세스가 완료되고 그룹의 모든 스레드가 이 호출에 도달할 때까지 그룹의 모든 스레드 실행을 차단합니다. | 5 |
any | x의 성분이 0이 아닌지 테스트합니다. | 1¹ |
asdouble | 캐스트 값을 double로 재해석합니다. | 5 |
asfloat | 입력 형식을 float로 변환합니다. | 4 |
asin | x의 각 성분의 아크사인을 반환합니다. | 1¹ |
asint | 입력 형식을 정수로 변환합니다. | 4 |
asuint | 64비트 형식의 비트 패턴을 uint로 재해석합니다. | 5 |
asuint | 입력 형식을 부호 없는 정수로 변환합니다. | 4 |
atan | x의 아크탄젠트를 반환합니다. | 1¹ |
atan2 | 두 값(x,y)의 아크탄젠트를 반환합니다. | 1¹ |
ceil | x보다 크거나 같은 가장 작은 정수를 반환합니다. | 1¹ |
CheckAccessFullyMapped | Sample 또는 Load 작업의 모든 값이 타일 리소스의 매핑된 타일에 액세스했는지 확인합니다. | 5 |
clamp | x를 범위 [min, max]로 클램프합니다. | 1¹ |
clip | x의 성분이 0보다 작은 경우 현재 픽셀을 버립니다. | 1¹ |
cos | x의 코사인을 반환합니다. | 1¹ |
cosh | x의 쌍곡 코사인을 반환합니다. | 1¹ |
countbits | 입력 정수의 비트 수(성분당)를 계산합니다. | 5 |
cross | 두 3D 벡터의 외적을 반환합니다. | 1¹ |
D3DCOLORtoUBYTE4 | 일부 하드웨어에서 UBYTE4 지원 부족을 보완하기 위해 4D 벡터 x의 성분을 swizzle 및 스케일링합니다. | 1¹ |
ddx | 화면 공간 x 좌표에 대한 x의 편도함수를 반환합니다. | 2¹ |
ddx_coarse | 화면 공간 x 좌표에 대해 낮은 정밀도 편도함수를 계산합니다. | 5 |
ddx_fine | 화면 공간 x 좌표에 대해 고정밀 편도함수를 계산합니다. | 5 |
ddy | 화면 공간 y 좌표에 대한 x의 편도함수를 반환합니다. | 2¹ |
ddy_coarse | 화면 공간 y 좌표에 대해 낮은 정밀도 편도함수를 계산합니다. | 5 |
ddy_fine | 화면 공간 y 좌표에 대해 고정밀 편도함수를 계산합니다. | 5 |
degrees | x를 라디안에서 각도로 변환합니다. | 1¹ |
determinant | 정사각 행렬 m의 행렬식을 반환합니다. | 1¹ |
DeviceMemoryBarrier | 모든 디바이스 메모리 액세스가 완료될 때까지 그룹의 모든 스레드 실행을 차단합니다. | 5 |
DeviceMemoryBarrierWithGroupSync | 모든 디바이스 메모리 액세스가 완료되고 그룹의 모든 스레드가 이 호출에 도달할 때까지 그룹의 모든 스레드 실행을 차단합니다. | 5 |
distance | 두 점 사이의 거리를 반환합니다. | 1¹ |
dot | 두 벡터의 내적을 반환합니다. | 1 |
dst | 거리 벡터를 계산합니다. | 5 |
errorf | 정보 큐에 오류 메시지를 제출합니다. | 4 |
EvaluateAttributeCentroid | 픽셀 중심에서 평가합니다. | 5 |
EvaluateAttributeAtSample | 인덱싱된 샘플 위치에서 평가합니다. | 5 |
EvaluateAttributeSnapped | 오프셋이 있는 픽셀 중심에서 평가합니다. | 5 |
exp | 밑이 e인 지수를 반환합니다. | 1¹ |
exp2 | 밑이 2인 지수(성분당)입니다. | 1¹ |
f16tof32 | uint의 하위 절반에 저장된 float16을 float로 변환합니다. | 5 |
f32tof16 | 입력을 float16 형식으로 변환합니다. | 5 |
faceforward | -n * sign(dot(i, ng))를 반환합니다. | 1¹ |
firstbithigh | 성분별로 최상위 비트에서 시작하여 아래쪽으로 작동하는 첫 번째 설정 비트의 위치를 가져옵니다. | 5 |
firstbitlow | 성분별로 최하위 비트부터 시작하여 위로 올라가는 첫 번째 설정 비트의 위치를 반환합니다. | 5 |
floor | x보다 작거나 같은 가장 큰 정수를 반환합니다. | 1¹ |
fma | a * b + c의 이중 정밀도 융합 곱셈 추가를 반환합니다. | 5 |
fmod | x/y의 부동 소수점 나머지를 반환합니다. | 1¹ |
frac | x의 소수 파트를 반환합니다. | 1¹ |
frexp | x의 가수와 지수를 반환합니다. | 2¹ |
fwidth | abs(ddx(x)) + abs(ddy(x))를 반환합니다. | 2¹ |
GetRenderTargetSampleCount | 렌더링 대상 샘플의 수를 반환합니다. | 4 |
GetRenderTargetSamplePosition | 지정된 샘플 인덱스에 대한 샘플 위치(x,y)를 반환합니다. | 4 |
GroupMemoryBarrier | 모든 그룹 공유 액세스가 완료될 때까지 그룹의 모든 스레드 실행을 차단합니다. | 5 |
GroupMemoryBarrierWithGroupSync | 모든 그룹 공유 액세스가 완료되고 그룹의 모든 스레드가 이 호출에 도달할 때까지 그룹의 모든 스레드 실행을 차단합니다. | 5 |
InterlockedAdd | dest 리소스 변수에 대한 값의 보장된 원자성 추가를 수행합니다. | 5 |
InterlockedAnd | 보장된 원자성 and를 수행합니다. | 5 |
InterlockedCompareExchange | 입력을 비교 값과 원자성으로 비교하고 결과를 교환합니다. | 5 |
InterlockedCompareStore | 입력을 비교 값과 원자성으로 비교합니다. | 5 |
InterlockedExchange | dest에 값을 할당하고 원래 값을 반환합니다. | 5 |
InterlockedMax | 보장된 원자성 최댓값을 수행합니다. | 5 |
InterlockedMin | 보장된 원자성 최솟값을 수행합니다. | 5 |
InterlockedOr | 보장된 원자성 or를 수행합니다. | 5 |
InterlockedXor | 보장된 원자 xor를 수행합니다. | 5 |
isfinite | x가 유한한 경우 true를 반환하고 그렇지 않은 경우 false를 반환합니다. | 1¹ |
isinf | x가 +INF 또는 -INF이면 true를 반환하고 그렇지 않으면 false를 반환합니다. | 1¹ |
isnan | x가 NAN 또는 QNAN이면 true를 반환하고 그렇지 않으면 false를 반환합니다. | 1¹ |
ldexp | x * 2exp를 반환합니다. | 1¹ |
length | 벡터 v의 길이를 반환합니다. | 1¹ |
lerp | x + s(y - x)를 반환합니다. | 1¹ |
lit | 조명 벡터(ambient, diffuse, specular, 1)를 반환합니다. | 1¹ |
log | x의 밑이 e인 로그를 반환합니다. | 1¹ |
log10 | x의 밑이 10인 로그를 반환합니다. | 1¹ |
log2 | x의 밑이 2인 로그를 반환합니다. | 1¹ |
mad | 세 값에 대해 산술 곱하기/더하기 연산을 수행합니다. | 5 |
max | x와 y 중 더 큰 것을 선택합니다. | 1¹ |
분 | x와 y 중 더 작은 것을 선택합니다. | 1¹ |
modf | 값 x를 소수 부분과 정수 부분으로 나눕니다. | 1¹ |
msad4 | 4바이트 기준 값과 8바이트 원본 값을 비교하여 4개의 합계 벡터를 누적합니다. | 5 |
mul | x와 y를 사용하여 행렬 곱셈을 수행합니다. | 1 |
noise | Perlin-noise 알고리즘을 사용하여 임의의 값을 생성합니다. | 1¹ |
normalize | 정규화된 벡터를 반환합니다. | 1¹ |
pow | xy를 반환합니다. | 1¹ |
printf | 사용자 지정 셰이더 메시지를 정보 큐에 제출합니다. | 4 |
Process2DQuadTessFactorsAvg | 쿼드 패치에 대해 수정된 테셀레이션 계수를 생성합니다. | 5 |
Process2DQuadTessFactorsMax | 쿼드 패치에 대해 수정된 테셀레이션 계수를 생성합니다. | 5 |
Process2DQuadTessFactorsMin | 쿼드 패치에 대해 수정된 테셀레이션 계수를 생성합니다. | 5 |
ProcessIsolineTessFactors | 등치선에 대한 반올림된 테셀레이션 계수를 생성합니다. | 5 |
ProcessQuadTessFactorsAvg | 쿼드 패치에 대해 수정된 테셀레이션 계수를 생성합니다. | 5 |
ProcessQuadTessFactorsMax | 쿼드 패치에 대해 수정된 테셀레이션 계수를 생성합니다. | 5 |
ProcessQuadTessFactorsMin | 쿼드 패치에 대해 수정된 테셀레이션 계수를 생성합니다. | 5 |
ProcessTriTessFactorsAvg | 트라이 패치에 대해 수정된 테셀레이션 계수를 생성합니다. | 5 |
ProcessTriTessFactorsMax | 트라이 패치에 대해 수정된 테셀레이션 계수를 생성합니다. | 5 |
ProcessTriTessFactorsMin | 트라이 패치에 대해 수정된 테셀레이션 계수를 생성합니다. | 5 |
radians | x를 각도에서 라디안으로 변환합니다. | 1 |
rcp | 빠르고 대략적인 성분별 역수를 계산합니다. | 5 |
리플렉션 | 반사 벡터를 반환합니다. | 1 |
refract | 굴절 벡터를 반환합니다. | 1¹ |
reversebits | 성분별로 비트의 순서를 반대로 바꿉니다. | 5 |
round | x를 가장 가까운 정수로 반올림합니다. | 1¹ |
rsqrt | 1 / sqrt(x)를 반환합니다. | 1¹ |
saturate | x를 범위 [0, 1]로 클램프합니다. | 1 |
sign | x의 부호를 계산합니다. | 1¹ |
sin | x의 사인을 반환합니다. | 1¹ |
sincos | x의 사인과 코사인을 반환합니다. | 1¹ |
sinh | x의 쌍곡 사인을 반환합니다. | 1¹ |
smoothstep | 0과 1 사이의 매끄러운 Hermite 보간을 반환합니다. | 1¹ |
sqrt | 제곱근(성분당) | 1¹ |
step | (x >= a) ?를 반환합니다. 1: 0 | 1¹ |
tan | x의 탄젠트를 반환합니다. | 1¹ |
tanh | x의 쌍곡 탄젠트를 반환합니다. | 1¹ |
tex1D(s, t) | 1D 텍스처 조회입니다. | 1 |
tex1D(s, t, ddx, ddy) | 1D 텍스처 조회입니다. | 2¹ |
tex1Dbias | 바이어스를 사용한 1D 텍스처 조회입니다. | 2¹ |
tex1Dgrad | 그라데이션을 사용한 1D 텍스처 조회입니다. | 2¹ |
tex1Dlod | LOD를 사용한 1D 텍스처 조회입니다. | 3¹ |
tex1Dproj | 프로젝티브 나누기를 사용한 1D 텍스처 조회입니다. | 2¹ |
tex2D(s, t) | 2D 텍스처 조회입니다. | 1¹ |
tex2D(s, t, ddx, ddy) | 2D 텍스처 조회입니다. | 2¹ |
tex2Dbias | 바이어스를 사용한 2D 텍스처 조회입니다. | 2¹ |
tex2Dgrad | 그라데이션을 사용한 2D 텍스처 조회입니다. | 2¹ |
tex2Dlod | LOD로 2D 텍스처 조회입니다. | 3 |
tex2Dproj | 프로젝티브 나누기를 사용한 2D 텍스처 조회입니다. | 2¹ |
tex3D(s, t) | 3D 텍스처 조회입니다. | 1¹ |
tex3D(s, t, ddx, ddy) | 3D 텍스처 조회입니다. | 2¹ |
tex3Dbias | 바이어스를 사용한 3D 텍스처 조회입니다. | 2¹ |
tex3Dgrad | 그라데이션을 사용한 3D 텍스처 조회입니다. | 2¹ |
tex3Dlod | LOD로 3D 텍스처 조회입니다. | 3¹ |
tex3Dproj | 프로젝티브 나누기를 사용한 3D 텍스처 조회입니다. | 2¹ |
texCUBE(s, t) | 큐브 텍스처 조회입니다. | 1¹ |
texCUBE(s, t, ddx, ddy) | 큐브 텍스처 조회입니다. | 2¹ |
texCUBEbias | 바이어스를 사용한 큐브 텍스처 조회입니다. | 2¹ |
texCUBEgrad | 그라데이션을 사용한 큐브 텍스처 조회입니다. | 2¹ |
texCUBElod | LOD를 사용한 큐브 텍스처 조회입니다. | 3¹ |
texCUBEproj | 프로젝티브 나누기를 사용한 사용한 큐브 텍스처 조회입니다. | 2¹ |
transpose | 행렬 m의 전치를 반환합니다. | 1 |
trunc | 부동 소수점 값을 정수 값으로 자릅니다. | 1 |
¹ 제한 사항은 참조 페이지를 참조하세요.
성분 및 템플릿 형식
HLSL 내장 함수 선언은 입력 매개 변수 인수 및 반환 값에 대한 성분 형식 및 템플릿 형식을 사용합니다. 사용 가능한 형식은 다음 표에 나열되어 있습니다.
다음 템플릿 형식 | 설명 | 다음 데이터 형식 지원 |
---|---|---|
행렬 | 선언에 따라 최대 16개의 성분 | 기본 HLSL 형식 |
object | 샘플러 개체 | sampler, sampler1D, sampler2D, sampler3D, samplerCUBE |
스칼라(scalar) | 1 성분 | 기본 HLSL 형식 |
벡터 | 최소 1개의 성분, 최대 4개의 성분(포함) | 기본 HLSL 형식 |
추가 정보