일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Rim Light
- URP로 변경
- 작업 집합
- OculusMotionVectorPass
- 3d
- Virtual Byte
- AppSW
- Cartoon Rendering
- VR
- Private Bytes
- Windows Build
- Cell Look
- 메모리 누수
- C언어
- URP
- 가상 바이트
- 프로그래밍 기초
- 개인 바이트
- 게임 수학
- Toon Shader
- Cell Shader
- 벡터
- working set
- ColorGradingLutPass
- ASW(Application SpaceWarp)
- Specular
- Three(Two) Tone Shading
- Today
- Total
WinCNT
URP에서 Overdraw 확인하기 본문
서론
URP에서는 기존의 방식으로 Overdraw를 확인할 수 없길래 다른 방법이 있나 찾아봤던 내용을 정리하고자 한다
Overdraw
Overdraw란 화면의 한 픽셀에 두 번 이상 그리는 것을 의미한다
사실 좀 더 다양한 정의가 있는데 아래의 참고 사이트로 대체한다
Overdraw Problem On Opaque Object
일반적으로 Overdraw는 성능 저하를 야기한다(VR에서는 특히!)
불투명한 오브젝트는 깊이 버퍼(ZBuffer)를 이용해서 앞에서부터 뒤로 그리며 가려진 부분은 그리지 않지만, 반투명 오브젝트의 경우에는 뒤에서부터 앞으로 겹쳐가면서 그려야 한다
(뒤에 있는 오브젝트의 색이랑 섞어야 반투명처럼 보이기 때문)
아무튼 그러한 이유로 반투명 오브젝트는 성능 저하를 야기시킬 수 있기에 가능한 줄이는 것이 좋으며, 의도치 않은 반투명 오브젝트가 존재하는지 확인하는 것도 중요하다
이를 간단하게 확인해줄 수 있는 것이 바로 유니티의 Overdraw 기능이다
URP에서 Overdraw 모드 사용하기
빌트인 렌더 파이프라인에서는 씬 뷰 뷰 옵션 툴바(놀랍게도 공식 명칭)의 드로우 모드 메뉴에서 Overdraw를 선택할 수 있다
하지만 URP의 렌더 파이프라인(HDRP도 마찬가지일테지만)에서는 씬 뷰 뷰 옵션 툴바에서 Overdraw 모드가 사라진 것을 알 수 있다
그럼 이제는 못 쓰는 건가?!라고 처음에는 그렇게 생각했는데 잘 찾아보니,
URP12부터 RenderingDebugger에 Overdraw란 항목이 추가되었다고 한다
Rendering Debugger | Universal RP | 12.1.11
실제로 RenderingDebugger를 확인해보니 있었다! 만세!
Overdraw 모드는 실제 오버 드로우가 아니다?
하지만 이 Overdraw 모드는 실제 오버 드로우에 대한 정확한 정보를 제공하는 것은 아니다
공식 문서를 보면 다음과 같이 쓰여 있다
💡 Overdraw
게임 오브젝트를 투명한 “실루엣”으로 렌더링합니다. 투명한 컬러가 중첩되면 한 오브젝트 위에 다른 오브젝트가 그려진 곳을 쉽게 포착할 수 있습니다.
즉 실제로 오버 드로우가 되는지 확인하는 게 아니라서, 실제로 오버 드로우가 발생하지 않는 경우에도 Overdraw 모드에서는 오버 드로우가 발생하는 것처럼 보이기도 한다
예를 들어 불투명 큐브를 3개를 Overdraw 모드로 보면 다음과 같이 오버 드로우가 발생하는 것처럼 표시된다
이 부분에 대한 질문은 꽤나 심심치 않게 찾아볼 수 있다
Overdraw of opaque and transparent geometry
SceneView "Overdraw" mode is misleading
그럼 Overdraw 모드는 쓸모가 없나?
물론 그렇지 않다
SpriteRenderer나 UI의 Image 등의 컴포넌트는 디폴트 셰이더가 반투명으로 되어 있기 때문에, UI나 스프라이트의 오버 드로우를 확인하기 쉽다
그리고 기본 기능이기 때문에 간편하게 “어? 여기 왜 이래?”와 같은 부분을 발견하기 쉽다
그 외의 방법들
URP 12 이전에는 없었기 때문에 직접 만들어 사용한 경우도 있는 것 같다
아래의 사이트는 ZTest까지 해주는 Overdraw모드를 만들었다고 하길래 일단 참고로 가져와봤다
(사용해보지는 않았다)
URPでOverdrawを確認できるOverdrawForURP【Unity】|アマガミナブログ
마무리
URP가 아직 나온지는 얼마 안 됐지만 역시 점점 발전한다는 사실이 느껴진다
물론 발전한 버전을 내가 사용할 수 있을지는 다른 문제지만ㅎㅎ
참고 사이트
Rendering Debugger | Universal RP | 12.1.11
URPでOverdrawを確認できるOverdrawForURP【Unity】|アマガミナブログ
Overdraw of opaque and transparent geometry
SceneView "Overdraw" mode is misleading
'Unity > URP or Shader 관련' 카테고리의 다른 글
URP에서 SpriteRenderer는 SRP Batcher가 작동하지 않았던 이유 조사 (0) | 2023.09.28 |
---|---|
유니티의 Built-in Shader의 소스 코드를 다운로드 하기 (0) | 2023.07.18 |
URP에서 HDR 텍스처 사용해보기 (0) | 2023.07.03 |
유니티에서 커스텀 셰이더의 머티리얼에 라이트 맵을 적용해보기 (0) | 2023.06.30 |
기존 프로젝트를 URP로 변경하기 (0) | 2023.05.30 |