Unity에서 셰이더 프로그램은 HLSL 언어(Cg라고도 불리는데 실제 사용에 있어서 두 가지는 동일함)의 배리언트로 작성됩니다.
현재 서로 다른 플랫폼간 최대의 이식성을 제공하기 위해 DX9 스타일 HLSL로 작성합니다(예: 텍스처 샘플링에 DX10 스타일 Texture2D
, SamplerState
, tex.Sample
대신 DX9 스타일 sampler2D
, tex2D
를 사용).
내부적으로 셰이더 프로그램 컴파일에는 다른 셰이더 컴파일러를 사용합니다.
#pragma prefer_hlsl2glsl gles
를 추가하면 이 옵션이 활성화됩니다.어떤 컴파일러를 사용하고 있는지 꼭 알아야 하는 경우(한 컴파일러에서만 지원되는 HLSL 구문을 사용하거나 컴파일러 버그 관련 작업 시), 사전 정의 셰이더 매크로를 사용할 수 있습니다. 예를 들어 HLSL 컴파일러(D3D 또는 GLCore/GLES3/GLES 플랫폼용)로 컴파일할 때 UNITY_COMPILER_HLSL
이 설정되며, hlsl2glsl을 통해 컴파일할 때는 UNITY_COMPILER_HLSL2GLSL
이 설정됩니다.