빌트인 렌더 파이프라인에서 표면 셰이더를 작성할 때 사용자가 표면의 프로퍼티(알베도 컬러 및 노멀 등)를 기술하면 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
으로 시작하는 일반 함수로 구성됩니다. 셰이더 파일의 어디에서든 모델을 선언할 수도 있고, 포함된 파일 중 하나에서 모델을 선언할 수도 있습니다. 해당 함수는 다음과 같습니다.
half4 Lighting<Name> (SurfaceOutput s, UnityGI gi);
뷰 방향을 사용하지 않는 광원 모델의 포워드 렌더링 경로에 사용합니다.
half4 Lighting<Name> (SurfaceOutput s, half3 viewDir, UnityGI gi);
뷰 방향을 사용하는 광원 모델의 포워드 렌더링 경로에 사용합니다.
half4 Lighting<Name>_Deferred (SurfaceOutput s, UnityGI gi, out half4 outDiffuseOcclusion, out half4 outSpecSmoothness, out half4 outNormal);
Use this in deferred shading paths.
Note that you don’t need to declare all functions. A lighting model either uses view direction or it does not. Similarly, if the lighting model only works in forward rendering, do not declare the _Deferred
function. This ensures that Shaders that use it only compile to forward rendering.
다음 함수를 선언하여 디코딩 라이트맵 데이터와 프로브를 커스터마이즈합니다.
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
에서 확인할 수 있는 내장 DecodeLightmap
및 ShadeSHPerPixel
함수를 사용할 수 있습니다.
자세한 내용은 표면 셰이더 조명 예제 문서를 참조하십시오.