스칼라 형식

HLSL은 다음과 같은 여러 스칼라 데이터 형식을 지원합니다.

  • bool - true 또는 false입니다.
  • int - 32비트 부동 정수입니다.
  • uint - 32비트 부호 없는 정수입니다.
  • dword - 32비트 부호 없는 정수입니다.
  • - 16비트 부동 소수점 값입니다. 이 데이터 형식은 언어 호환성을 위해서만 제공됩니다. Direct3D 10 셰이더 대상은 모든 절반 데이터 형식을 float 데이터 형식에 매핑합니다. 반 데이터 형식은 균일한 전역 변수에 사용할 수 없습니다(이 기능이 원하는 경우 /Gec 플래그 사용).
  • float - 32비트 부동 소수점 값입니다.
  • double - 64비트 부동 소수점 값입니다. 스트림에 대한 입력 및 출력으로 배정밀도 값을 사용할 수 없습니다. 셰이더 간에 배정밀도 값을 전달하려면 각 double을 uint 데이터 형식 쌍으로 선언합니다. 그런 다음, asuint 함수를 사용하여 각 double을 uint s 쌍으로 압축하고, asdouble 함수를 사용하여 uint 쌍의 압축을 double 로 다시 압축합니다.

Windows 8 HLSL부터 최소 정밀도 스칼라 데이터 형식도 지원합니다. 그래픽 드라이버는 지정된 비트 정밀도보다 크거나 같은 정밀도를 사용하여 최소 정밀도 스칼라 데이터 형식을 구현할 수 있습니다. 특정 기본 정밀도에 의존하는 고정 또는 래핑 동작에 의존하지 않는 것이 좋습니다. 예를 들어 그래픽 드라이버는 전체 32비트 전체 자릿수에서 min16float 값에 대해 산술 연산을 실행할 수 있습니다.

  • min16float - 최소 16비트 부동 소수점 값입니다.
  • min10float - 최소 10비트 부동 소수점 값입니다.
  • min16int - 최소 16비트 부호 있는 정수입니다.
  • min12int - 최소 12비트 부호 있는 정수입니다.
  • min16uint - 부호 없는 최소 16비트 정수입니다.

스칼라 리터럴에 대한 자세한 내용은 문법을참조하세요.

Direct3D 9와 Direct3D 10 간의 차이점:
Direct3D 10에서 다음 형식은 float 형식에 대한 한정자입니다.
  • snorm float - IEEE 32비트 부속 정규화된 float 범위는 -1~1(포함)입니다.
  • unorm float - IEEE 32비트 부호 없는 정규화된 float(포함) 범위는 0~1입니다.
예를 들어 다음은 4개 구성 요소로 서명된 정규화된 float-variable 선언입니다.
snorm float4 fourComponentIEEEFloat;

문자열 형식

HLSL은 ASCII 문자열인 문자열 형식도 지원합니다. 문자열을 허용하는 작업이나 상태는 없지만 효과는 문자열 매개 변수 및 주석을 쿼리할 수 있습니다.

예제

// top-level variable
float globalShaderVariable; 

// top-level function
void function(
in float4 position: POSITION0 // top-level argument
              )
{
  float localShaderVariable; // local variable
  function2(...)
}

void function2()
{
  ...
}

참고 항목