Shader Graph 커스텀 라이팅 (URP)
요약
이 가이드는 Unity URP 환경에서 Shader Graph를 사용하여 커스텀 라이팅 기능을 구현하는 방법을 설명합니다. 주요 광원(Main Light)과 추가 조명(Additional Lights)에 대한 다양한 서브 그래프와 노드를 제공하며, 확산광, 반사광, 그림자 처리 등을 지원합니다.
핵심 포인트
- URP v17.1+ 및 Unity 6000.1+ 환경에서 사용 가능합니다.
- Main Light를 위한 전용 서브 그래프가 광원별 계산을 체계적으로 분리합니다.
- Additional Lights는 포인트/스포트라이트를 순회하며 Forward+ 경로의 조명 처리를 지원합니다.
- 커스텀 라이팅 모델 구현 시, 루프 구조로 인해 함수 복사 및 수정이 필요할 수 있습니다.
Shader Graph 커스텀 라이팅
Shader Graph용 Universal Render Pipeline의 일부 커스텀 라이팅 함수/서브 그래프입니다. 문제가 발생하면 이슈를 열어 알려주세요!
+ 이 버전은 URP v17.1+ / Unity 6000.1+용 입니다.
- 이전 버전(6000.0 포함)의 경우, 브랜치를 확인하세요!
설정 방법:
- 패키지 매니저를 통해 설치 → git URL로 패키지 추가:
https://github.com/Cyanilux/URP_ShaderGraphCustomLighting.git
- 또는, 다운로드하여 폴더를 Assets에 넣으세요.
알려진 문제점 :
- Shader Graph는 여러 Sub Graphs에 중첩될 경우 Blackboard의 키워드를 포함하지 않습니다. 따라서 일부 서브 그래프(ML Cookie, ML Layer Test, Sample Shadowmask & Subtractive GI)의 경우, 해당 서브 그래프를 열고 Boolean Keywords를 Blackboard에서 서브 그래프(또는 사용되는 모든 메인 그래프)로 복사해야 할 수 있습니다.
다음을 위한 서브 그래프 포함:
Main Light (주요 광원)
Main Light- 출력: Direction, Colour, CullingMask
Main Light Shadows- 입력: WorldPosition, Shadowmask (필요하지 않다면 1,1,1,1로 두어도 됩니다)
- 출력: ShadowAtten
- (이제 모든 Shadow Cascades 설정과 작동합니다!)
Main Light Cookie- 쿠키(cookie) 지원용. 추가 광원에도 쿠키를 활성화합니다 (동일한 키워드를 사용하기 때문).- 입력: WorldPosition
- 출력: Cookie
Main Light Layer Test- 라이트 레이어(Light Layers) 지원용. 메인 광원에서 얻은 셰이딩 계산을 이곳으로 전달하세요.- 입력: Shading
- 출력: Out (레이어 마스크 적용됨)
Main Light Diffuse(Lambert / NdotL 계산 처리)- 입력: Normal
- 출력: Diffuse
Main Light Specular Highlights- Phong 또는 BlinnPhong 모델 기반의 스페큘러 하이라이트 처리- 입력: Smoothness, Normal
- 출력: Specular
기타 (Other)
Additional Lights: 추가 조명(additional light)을 순회하며 각 포인트 라이트, 스포트라이트 등을 처리합니다. 확산광(diffuse), 반사광(specular), 그림자 처리를 담당합니다. Forward+ 경로를 지원합니다 (2022.2 이상).Main Light Cookie노드를 사용하거나 Blackboard에_LIGHT_COOKIES부울 키워드가 정의된 경우 쿠키도 지원합니다.Main Light Layer Test노드를 사용하거나 Blackboard에_LIGHT_LAYERS부울 키워드가 정의된 경우 라이트 레이어(light layer)도 지원합니다.- 사용자 지정 라이팅 모델을 생성하려면, 루프 구조 때문에 이 함수를 복사하여 수정해야 합니다. 예를 들어, LightingLambert와 LightingSpecular 함수를 커스텀 함수로 교체할 수 있습니다. AdditionalLightsToon 함수도 예시로 참고하세요.
- 입력(Inputs): SpecularColour (반사광 색상), Smoothness (부드러움), Normal (법선 벡터), Shadowmask (그림자 마스크)
- 출력(Outputs): Diffuse (확산광), Specular (반사광)
Sample Shadowmask: 메인 라이트 그림자(Main Light Shadows) 및 추가 조명(Additional Lights) 서브 그래프의 Shadowmask 포트에 연결하여 Shadowmask 베이크드 라이팅 모드를 지원합니다.- 출력(Outputs): Shadowmask
Subtractive GI: 감산형(subtractive) 베이크드 라이팅 모드를 지원합니다. Main Light Shadows 노드를 첫 번째 포트에 연결해야 합니다. URP ShaderLibrary의 MixRealtimeAndBakedGI 함수를 사용합니다.- 입력(Inputs): ShadowAtten (그림자 감쇠), Normal (법선 벡터), BakedGI (베이크드 GI)
- 출력(Outputs): Out (Vector3)
Mix Fog: 색상에 안개 효과를 적용하며, 마스터 스택에서 BaseColor를 출력하기 직전에 사용해야 합니다.- 입력(Inputs): Colour
- 출력(Outputs): Out (Vector3, 안개 효과가 적용된 색상)
사용 중단됨 (Deprecated)
Phong Specular와Blinn-Phong Specular서브 그래프는 이제 사용이 권장되지 않습니다. 대신Main Light Specular Highlights를 사용하세요.Ambient SampleSH: 픽셀별(per-pixel) SampleSH를 사용합니다. 다소 중복적이므로 내장된Baked GI노드를 사용하는 것이 좋습니다.- 입력(Inputs): Normal (법선 벡터)
- 출력(Outputs): Ambient
포함된 예제
- 툰(Toon) - 툰/셀 셰이딩(Cel Shading). 메인 라이트(램프 텍스처) 및 추가 라이트(밴드 개수). 또한 메인 라이트 쿠키, 베이크드GI(Subtractive 및 Shadowmask 포함), 포그를 지원합니다.
- 섀도우 리시버(Shadow Receiver) - 그림자를 받고 해당 색상을 설정할 수 있는 투명 재질. Mesh Renderer를 통해 캐스팅을 끌 수 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub GameDev의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기