Version: 2022.2
언어: 한국어
표면 셰이더 예제
표면 셰이더 조명 예제

표면 셰이더의 커스텀 조명 모델

빌트인 렌더 파이프라인에서 표면 셰이더를 작성할 때 사용자가 표면의 프로퍼티(알베도 컬러 및 노멀 등)를 기술하면 Lighting Model 이 조명의 상호작용을 연산합니다.

렌더 파이프라인 호환성

기능 이름 빌트인 렌더 파이프라인 유니버설 렌더 파이프라인(URP) 고해상도 렌더 파이프라인(HDRP) 커스텀 SRP
표면 셰이더 지원 지원 안 함

URP에서 셰이더 오브젝트를 보다 간단하게 만드는 방법을 알아보려면 셰이더 그래프를 참조하십시오.
지원 안 함

HDRP에서 셰이더 오브젝트를 보다 간단하게 만드는 방법을 알아보려면 셰이더 그래프를 참조하십시오.
지원 안 함

개요

내장 조명 모델에는 디퓨즈 조명에 사용하는 Lambert와 스페큘러 조명에 사용하는 BlinnPhong 등 두 가지가 있습니다. 모델은 Unity 에디터 안에 있는 Lighting.cginc 파일(Windows: <unity install path>/Data/CGIncludes/Lighting.cginc; macOS: /Applications/Unity/Unity.app/Contents/CGIncludes/Lighting.cginc)에서 정의됩니다.

때로는 커스텀 조명 모델을 사용하는 것이 좋을 수 있습니다. 표면 셰이더를 사용하여 이렇게 할 수 있습니다. 조명 모델은 간단히 말해 몇몇 규칙과 일치하는 두어 개의 Cg/HLSL 함수입니다.

조명 모델 선언

조명 모델은 이름이 Lighting으로 시작하는 일반 함수로 구성됩니다. 셰이더 파일의 어디에서든 모델을 선언할 수도 있고, 포함된 파일 중 하나에서 모델을 선언할 수도 있습니다. 해당 함수는 다음과 같습니다.

  1. half4 Lighting<Name> (SurfaceOutput s, UnityGI gi); 뷰 방향을 사용하지 않는 광원 모델의 포워드 렌더링 경로에 사용합니다.

  2. half4 Lighting<Name> (SurfaceOutput s, half3 viewDir, UnityGI gi); 뷰 방향을 사용하는 광원 모델의 포워드 렌더링 경로에 사용합니다.

  3. half4 Lighting<Name>_Deferred (SurfaceOutput s, UnityGI gi, out half4 outDiffuseOcclusion, out half4 outSpecSmoothness, out half4 outNormal); 디퍼드 셰이팅 경로에 사용합니다.

모드 함수를 선언할 필요는 없습니다.조명 모델은 뷰 방향을 사용하거나 아예 사용하지 않습니다.조명 모델이 포워드 렌더링에서만 작동하는 경우에도 마찬가지로 _Deferred 함수를 선언하지 마십시오.이렇게 하면 모델을 사용하는 셰이더가 포워드 렌더링으로만 컴파일됩니다.

커스텀 GI

다음 함수를 선언하여 디코딩 라이트맵 데이터와 프로브를 커스터마이즈합니다.

  1. half4 Lighting<Name>_GI (SurfaceOutput s, UnityGIInput data, inout UnityGI gi);

스탠다드 Unity 라이트맵과 SH 프로브를 디코딩하는 데 Unity 에디터 안에 있는 UnityGlobalIllumination.cginc 파일(Windows: <unity install path>/Data/CGIncludes/UnityGlobalIllumination.cginc, macOS: /Applications/Unity/Unity.app/Contents/CGIncludes/UnityGlobalIllumination.cginc_)에 있는 UnityGI_Base에서 확인할 수 있는 내장 DecodeLightmapShadeSHPerPixel 함수를 사용할 수 있습니다.

예제

자세한 내용은 표면 셰이더 조명 예제 문서를 참조하십시오.

표면 셰이더 예제
표면 셰이더 조명 예제