Version: Unity 6.0 (6000.0)
언어 : 한국어
컴퓨트 셰이더 소개
컴퓨트 셰이더에서 HLSL 및 ShaderLab 사용

컴퓨트 셰이더 만들기

셰이더 에셋과 마찬가지로 컴퓨트 셰이더 에셋은 .compute 파일 확장자가 있는 프로젝트의 파일입니다. DirectX 11 스타일의 HLSL 언어로 작성되며, 컴퓨트 셰이더 커널로 컴파일할 함수를 나타내는 최소한의 #pragma 컴파일 지시문이 있습니다.

플랫폼이 컴퓨트 셰이더를 지원하는지 확인

컴퓨트 셰이더 지원은 SystemInfo.supportsComputeShaders를 사용하여 런타임 시 쿼리할 수 있습니다.

컴퓨트 셰이더 에셋 생성

다음은 출력 텍스처를 빨간색으로 채우는 컴퓨트 셰이더 파일의 기본 예제입니다.

// test.compute

#pragma kernel FillWithRed

RWTexture2D<float4> res;

[numthreads(1,1,1)]
void FillWithRed (uint3 dtid : SV_DispatchThreadID)
{
    res[dtid.xy] = float4(1,0,0,1);
}

언어는 추가 #pragma kernel FillWithRed 지시문이 포함된 표준 DX11 HLSL입니다. 하나의 컴퓨트 셰이더 에셋 파일에는 호출 가능한 최소 한 개의 compute kernel이 포함되어 있어야 하며, 해당 함수는 #pragma directive로 표시되어야 합니다. 파일에는 하나 이상의 커널이 있을 수 있습니다. 여러 #pragma kernel 행을 추가하기만 하면 됩니다.

여러 #pragma kernel 행을 사용하는 경우 #pragma kernel 지시문과 동일한 행에 // text 스타일의 주석을 사용할 수 없으며, 사용할 경우 컴파일 오류가 발생할 수 있습니다.

#pragma kernel 행에는 선택적으로 해당 커널을 컴파일하는 동안 정의할 수 있는 많은 프리 프로세서 매크로가 올 수 있습니다. 예를 들어 다음과 같습니다.

#pragma kernel KernelOne SOME_DEFINE DEFINE_WITH_VALUE=1337
#pragma kernel KernelTwo OTHER_DEFINE
// ...
컴퓨트 셰이더 소개
컴퓨트 셰이더에서 HLSL 및 ShaderLab 사용