다음 표에는 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 형식 |
추가 정보