텍스처와 샘플러는 Unity에서 별개의 오브젝트가 아니므로, 컴퓨트 셰이더에서 사용하려면 다음과 같은 Unity 관련 규칙 중 하나를 따라야 합니다.
텍스처 이름과 동일한 이름을 사용하고, 처음에 sampler(예: Texture2D MyTex, SamplerState samplerMyTex)를 사용합니다. 이 경우 샘플러가 해당 텍스처의 필터/래핑/이방성 설정으로 초기화됩니다.
사전 정의된 샘플러를 사용합니다. 이를 위해 이름에는 Linear 또는 Point(필터 모드의 경우)와 Clamp 또는 Repeat(래핑 모드의 경우)가 있어야 합니다. 예를 들어 SamplerState MyLinearClampSampler는 Linear 필터 모드와 Clamp 래핑 모드가 있는 샘플러를 생성합니다.
자세한 내용은 샘플러 상태에 대한 기술 자료를 참조하십시오.
키워드를 사용하여 그래픽스 셰이더와 마찬가지로 컴퓨트 셰이더의 여러 배리언트를 생성할 수 있습니다.
배리언트에 대한 일반적인 정보는 셰이더 배리언트를 참조하십시오. 컴퓨트 셰이더에서 이러한 기능을 구현하는 방법에 대한 자세한 내용은 HLSL의 셰이더 키워드 선언 및 사용 및 ComputeShader API 기술 자료를 참조하십시오.
일반적으로 컴퓨트 셰이더 파일은 HLSL로 작성되며 모든 필요한 플랫폼으로 자동 컴파일 또는 변환됩니다. 그러나 다른 언어로의 변환을 방지하거나(즉, HLSL 플랫폼만 유지) GLSL 컴퓨트 코드를 수동으로 작성할 수 있습니다.
다음 정보는 HLSL 전용 또는 GLSL 전용 컴퓨트 셰이더에만 적용되며 크로스 플랫폼 빌드에는 적용되지 않습니다. 이 정보로 인해 일부 플랫폼에서 컴퓨트 셰이더 소스가 제외될 수 있기 때문입니다.
CGPROGRAM 및 ENDCG 키워드로 둘러싸인 컴퓨트 셰이더 소스는 HLSL이 아닌 플랫폼에서 처리되지 않습니다.
GLSLPROGRAM 및 ENDGLSL 키워드로 둘러싸인 컴퓨트 셰이더 소스는 GLSL 소스로 취급되며 그대로 방출됩니다. 이는 OpenGL 또는 GLSL 플랫폼을 대상으로 하는 경우에만 작동합니다. 또한 자동 변환된 셰이더는 버퍼에 대한 HLSL 데이터 레이아웃을 따르지만 수동으로 작성된 GLSL 셰이더는 GLSL 레이아웃 규칙을 따릅니다.