본문 바로가기

Shader

HLSL 내장 함수 (자료형)

※ 용어는 사전 링크를 포함하고 있습니다.

 함수

내용 

 sample2D

 2D Texture

 sample3D

 3D Texutre

 float4

 32 bit : Vector에 주로 쓰임

 half4

 16 bit : Color값에 주로 쓰임 (모바일 지원)

 fixed4

 8 bit : Color 값에 주로 쓰임 (모바일 지원 안함)

 tex2D(s, t)

 텍스쳐 샘플링에 사용하는 HLSL 함수.  

 첫 번째 인자에서 두 번째 인자 좌표에 있는 텍셀을 구하는 함수. 

 s는 샘플러 또는 sampler2D 개체 (Texture), t는 2D 텍스처 좌표 (UV)

 tex2D(s, t, ddx, ddy)

 2D의 투영 텍스처 참조

 ddx(x), ddy(x)

 스크린공간의 x, y 좌표에 대한 x, y의 편미분을 리턴한다

 reflect(i, n) 

 반사벡터를 리턴한다.

 입사 방향 i, 표면 법선 n로 했을 경우, v = i - 2 * dot(i, n) * n 에 의해 구할 수 있는 반사 벡터 v를 리턴한다

 cross(x,y)

 두 벡터의 외적을 계산한다. 두 인자값과 리턴값은 모두 float3 타입이다.

 transpose(m)

 m의 전치행렬을 리턴한다.

 determinant(m) 

 행렬식을 리턴한다. 입력인자는 정방행렬이어야 한다.

 dot(x,y) 

 두 벡터의 내적을 계산한다. 

 normalize(x)

 정규화된 벡터를 리턴한다. 즉, 리턴값은 x/length(x) 와 동일하다.

 len(x)

 벡터의 길이

 distance(x,y)

 두 벡터의 거리를 계산한다.

 sin(x), cos(x), tan(x)

 기본삼각함수

 asin(x), acos(x), atan(x)

 x의 각 성분의 역삼각함수.

 atan2(y,x)

  atan(y/x)에 해당하는 함수로, 

  atan(x)는 [-π/2, π/2]의 범위의 값을 가지지만, atan2(y,x)는  [-π, π]의 값을 리턴한다.
  atan2(y,x)는 x≠0 이면 항상 올바른 값을 계산핤 수 있으므로 더 선호한다.

 radians(x)

 각도 단위의 x값에 해당하는 라디안값을 리턴한다.

 degrees(x) 

 라디안 단위의 x값에 해당하는 각도값을 리턴한다.

 sincos(x,s,c)

 sin(x)와 cos(x)를 동시에 s, c로 리턴한다. 여기서 s, c는 x와 동일한 차원의 타입이어야 한다.

 sinh(x), cosh(x), tanh(x)

 쌍곡 삼각함수

 sqrt(x)

 제곱근

 rsqrt(x)

 제곱근의 역수(1 / sqrt(x))

 clamp(x, min, max) 

  x를 [min, max] 범위로 클램프한다.

  즉, x가 범위안에 있으면 x를 그대로 리턴하지만, min보다 작으면 min을, max보다 크면 max를 리턴한다.

 max(x,y), min(x,y)

 최대, 최소값

 saturate(x)

 x를 [0, 1] 범위로 클램프(0~1을 넘어서는 값을 짤라 냄)한다.

 smoothstep(min,max,x)

  x가 [min, max] 사이의 값인 경우에 대해서 [0, 1] 사이에서 부드럽게 변하는 

  Hermite 보간법을 리턴한다. x가 min보다 작다면 0을 리턴하고, max보다 크다면 1을 리턴한

 asfloat(x) 

 입력인자값을 float 타입으로 바꾼다.

 asint(x)

 입력인자값을 int 타입으로 바꾼다.

 asuint(x)

 입력인자값을 uint 타입으로 바꾼다.

 fmod(x,y)

 x/y의 나머지를 실수로 리턴한다.

 frac(x)

 x의 소수점 이하 부분을 리턴한다.