Version: Unity 6.0 (6000.0)
언어 : 한국어
HLSL 셰이더 프로그램 작성
HLSL 셰이더 프로그램 추가

셰이더 프로그램 기초

Unity에서는 보통 HLSL로 셰이더 프로그램을 작성합니다. 셰이더 에셋에 HLSL 코드를 추가하려면 코드를 셰이더 코드 블록 안에 넣으십시오.

참고: 일반적으로 필요하거나 권장하지는 않지만, Unity는 다른 언어로 셰이더 프로그램을 작성하는 것도 지원합니다. 자세한 내용을 셰이더 작성을 참조하십시오.

이 매뉴얼 섹션에는 Unity 고유의 방식으로 HLSL을 사용하는 방법에 대한 정보가 포함되어 있습니다. HLSL 작성에 대한 일반적인 내용은 Microsoft의 HLSL 기술 자료를 참조하십시오.

참고: Unity는 원래 Cg 언어를 사용했으며, 따라서 일부 Unity 키워드(CGPROGRAM)와 파일 확장자(.cginc) 이름이 그 영향을 받았습니다. Unity는 더 이상 Cg를 사용하지 않지만 이러한 이름은 계속 사용됩니다.

HLSL 구문

HLSL에는 레거시 DirectX 9 스타일 구문과 보다 최신인 DirectX 10+ 스타일 구문이라는 두 가지 구문이 있습니다. 차이점은 주로 텍스처 샘플링 함수가 작동하는 방식에 있습니다.

  • 레거시 구문은 sampler2D, tex2D(), 유사 함수를 사용합니다. 이 구문은 모든 플랫폼에서 작동합니다.
  • DX10+ 구문은 Texture2D, SamplerState, .Sample() 함수를 사용합니다. OpenGL에서는 텍스처와 샘플러가 서로 다른 오브젝트가 아니므로, 이러한 구문의 일부 형식은 OpenGL 플랫폼에서 작동하지 않습니다.

Unity는 이러한 차이점을 관리할 수 있도록 프리 프로세서 매크로가 포함된 셰이더 라이브러리를 제공합니다. 자세한 내용은 빌트인 셰이더 매크로를 참조하십시오.

버텍스 및 프래그먼트 셰이더

버텍스 셰이더 는 3D 모델의 각 버텍스에서 실행되는 프로그램입니다. 특별한 일을 자주 하지는 않습니다. 여기서는 오브젝트 공간의 버텍스 위치를 GPU가 화면의 오브젝트를 래스터화하는 데 사용하는 ‘클립 공간’으로 변환합니다. 또한 입력 텍스처 좌표를 수정하지 않은 상태로 전달합니다. 프래그먼트 셰이더에서 텍스처를 샘플링하는 데 이 좌표가 필요합니다.

프래그먼트 셰이더 는 오브젝트가 화면에서 차지하고 있는 모든 픽셀마다 실행되는 프로그램이며 보통 각 픽셀의 컬러를 계산하고 출력하기 위해 사용됩니다. 일반적으로 화면에는 수백만 개의 픽셀이 있으며, 프래그먼트 셰이더는 모든 픽셀에 실행됩니다. 프래그먼트 셰이더를 최적화하는 것은 전반적인 게임 성능에 있어 매우 중요한 부분입니다.

일부 변수 또는 함수 정의 뒤에는 다음과 같이 시맨틱 표지자(: POSITION 또는 : SV_Target)가 붙습니다. 시맨틱 표지자는 이러한 변수의 ‘의미’를 GPU에 전달합니다. 자세한 내용은 셰이더 시맨틱 페이지를 참조하십시오.

HLSL 셰이더 프로그램 작성
HLSL 셰이더 프로그램 추가
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961