Universal RP 2.5D Lit Sprite Shader
요약
본 셰이더는 Unity URP 환경에서 2D 스프라이트를 3D 환경에 통합할 때 발생하는 클리핑 문제를 해결합니다. 특히 기울어진 직교 카메라(skewed orthographic camera)를 사용할 경우, 스프라이트가 3D 메시와 충돌하거나 잘리는 현상을 방지하며 라이팅 효과까지 부여합니다.
핵심 포인트
- 기울어진 카메라 환경에서 2D 스프라이트의 클리핑 문제 해결
- 클립 공간 깊이(clip space depth)를 재작성하여 안정적인 렌더링 구현
- Directional Light로부터 실시간 그림자 수신 및 투사 가능
- Unity URP와 호환되며, 라이팅 반응성을 높임
Universal RP 2.5D Lit Sprite Shader 🖤 ·
Hits
이 셰이더는 Night Loops에서 사용되었습니다 (지원해 주신다면, 구매를 고려해 주세요. 감사합니다!!)
이 셰이더는 기울어진 직교 카메라(skewed orthographic camera)를 사용할 때 2D 스프라이트가 3D 환경에 심하게 클리핑되는 것을 방지합니다. 이는 2.5D의 모습과 느낌을 구현하기 위해 2D 스프라이트를 3D 환경에서 카메라 방향으로 회전시켜야 하는 설정에 유용합니다. 또한 Unity의 Universal RP 3D 설정을 사용할 때 2D 스프라이트에 라이트(Lit) 동작을 부여합니다.

- 스프라이트가 마치 월드 내에서 수직으로 정렬된 것처럼 클립 공간 깊이(clip space depth)를 재작성하여, 회전하는 스프라이트가 근처 3D 메시와 클리핑되는 것을 방지합니다.
- 스프라이트가 라이팅에 반응하고 Directional Light로부터 실시간 그림자를 받거나 드리울 수 있게 합니다.
3D 메시 근처에서 스프라이트를 사용하는 전후 비교

"하루 종일 이 캐비닛 안에 머리를 넣지 않아도 된다니 기분이 좋네요."
요구 사항 (Requirements)
- URP 10.2.1+
- Unity 2020.2.1
이전 버전의 경우 브랜치를 확인하세요 (예: 2019.3)
추가 유틸리티 (Extra Utils)
__Camera Offset Ray Start__는 레이 평면 교차점(ray plane intersection) 계산에 사용되는 레이 시작 위치를 조정합니다. 이 값을 직교 카메라의 기울기(skew)와 일치시켜 스프라이트가 놓인 평면을
- 비방향성 그림자와 방향성 그림자가 모바일에서 작동할 때는 프래그먼트 셰이더 패스에 월드 위치를 전달하므로, 이러한 사용 사례에서는 스프라이트가 여전히 클리핑되는 것처럼 그림자를 받는 것을 볼 수 있습니다.
- 이는 스프라이트를 불투명(opaque) 객체로 렌더링하므로 정렬 순서(sorting order)는 무시됩니다.
- Unity에서는 Sprite Renderer 컴포넌트의 속성인
Cast Shadows = On및Receive Shadows = True도 설정해야 할 수 있습니다 (이는 디버그 모드에서만 사용 가능합니다). - LitForwardPass.hlsl의 버텍스 셰이더에서 클립 공간 깊이(clip space depth)가 덮어쓰여집니다.
참고 자료 (References)
- bgolus의 2D 스프라이트가 3D 메시에 클리핑되는 것을 방지하는 셰이더 전용 솔루션 여기
- Unity의 Graphics 레포지토리
- 원래 논의는 여기에서 확인할 수 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub GameDev의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기