WinCNT

URP에서 Overdraw 확인하기 본문

Unity/URP or Shader 관련

URP에서 Overdraw 확인하기

WinCNT_SSS 2023. 7. 10. 12:18

서론

URP에서는 기존의 방식으로 Overdraw를 확인할 수 없길래 다른 방법이 있나 찾아봤던 내용을 정리하고자 한다


Overdraw

Overdraw란 화면의 한 픽셀에 두 번 이상 그리는 것을 의미한다

사실 좀 더 다양한 정의가 있는데 아래의 참고 사이트로 대체한다

Overdraw Problem On Opaque Object

 

Overdraw Problem On Opaque Object

I want to ask more specifically about overdraw. Lets say you have a fairly simple character mesh, with a typical singe pass opaque shader which has...

forum.unity.com

 

일반적으로 Overdraw는 성능 저하를 야기한다(VR에서는 특히!)

 

불투명한 오브젝트는 깊이 버퍼(ZBuffer)를 이용해서 앞에서부터 뒤로 그리며 가려진 부분은 그리지 않지만, 반투명 오브젝트의 경우에는 뒤에서부터 앞으로 겹쳐가면서 그려야 한다

(뒤에 있는 오브젝트의 색이랑 섞어야 반투명처럼 보이기 때문)

 

아무튼 그러한 이유로 반투명 오브젝트는 성능 저하를 야기시킬 수 있기에 가능한 줄이는 것이 좋으며, 의도치 않은 반투명 오브젝트가 존재하는지 확인하는 것도 중요하다

이를 간단하게 확인해줄 수 있는 것이 바로 유니티의 Overdraw 기능이다


URP에서 Overdraw 모드 사용하기

빌트인 렌더 파이프라인에서는 씬 뷰 뷰 옵션 툴바(놀랍게도 공식 명칭)의 드로우 모드 메뉴에서 Overdraw를 선택할 수 있다

하지만 URP의 렌더 파이프라인(HDRP도 마찬가지일테지만)에서는 씬 뷰 뷰 옵션 툴바에서 Overdraw 모드가 사라진 것을 알 수 있다

그럼 이제는 못 쓰는 건가?!라고 처음에는 그렇게 생각했는데 잘 찾아보니,

URP12부터 RenderingDebugger에 Overdraw란 항목이 추가되었다고 한다

Rendering Debugger | Universal RP | 12.1.11

 

Rendering Debugger | Universal RP | 12.1.12

Rendering Debugger The Rendering Debugger window lets you visualize various lighting, rendering, and Material properties. The visualizations help you identify rendering issues and optimize Scenes and rendering configurations. This section contains the foll

docs.unity3d.com

 

실제로 RenderingDebugger를 확인해보니 있었다! 만세!


Overdraw 모드는 실제 오버 드로우가 아니다?

하지만 이 Overdraw 모드는 실제 오버 드로우에 대한 정확한 정보를 제공하는 것은 아니다

공식 문서를 보면 다음과 같이 쓰여 있다

💡 Overdraw
게임 오브젝트를 투명한 “실루엣”으로 렌더링합니다. 투명한 컬러가 중첩되면 한 오브젝트 위에 다른 오브젝트가 그려진 곳을 쉽게 포착할 수 있습니다.

 

즉 실제로 오버 드로우가 되는지 확인하는 게 아니라서, 실제로 오버 드로우가 발생하지 않는 경우에도 Overdraw 모드에서는 오버 드로우가 발생하는 것처럼 보이기도 한다

예를 들어 불투명 큐브를 3개를 Overdraw 모드로 보면 다음과 같이 오버 드로우가 발생하는 것처럼 표시된다

이 부분에 대한 질문은 꽤나 심심치 않게 찾아볼 수 있다

Overdraw of opaque and transparent geometry

 

Overdraw of opaque and transparent geometry

Hi, I try to understand how to optimize a game opaque geometry rendering using render queues. I have created a simple example, with one fixed camera...

forum.unity.com

SceneView "Overdraw" mode is misleading

 

SceneView "Overdraw" mode is misleading

I'm trying to understand what the "Overdraw" mode in Unity's Scene view Control Bar is actually visualizing, because it doesn't seem to visualize...

forum.unity.com


그럼 Overdraw 모드는 쓸모가 없나?

물론 그렇지 않다

SpriteRenderer나 UI의 Image 등의 컴포넌트는 디폴트 셰이더가 반투명으로 되어 있기 때문에, UI나 스프라이트의 오버 드로우를 확인하기 쉽다

그리고 기본 기능이기 때문에 간편하게 “어? 여기 왜 이래?”와 같은 부분을 발견하기 쉽다


그 외의 방법들

URP 12 이전에는 없었기 때문에 직접 만들어 사용한 경우도 있는 것 같다

 

아래의 사이트는 ZTest까지 해주는 Overdraw모드를 만들었다고 하길래 일단 참고로 가져와봤다

(사용해보지는 않았다)

URPでOverdrawを確認できるOverdrawForURP【Unity】|アマガミナブログ

 

URPでOverdrawを確認できるOverdrawForURP【Unity】|アマガミナブログ

UniversalRenderPipelineでは消えてしまったSceneビューのOverdraw表示を復活させる拡張を作りました。導入方法などを解説しています。

amagamina.jp


마무리

URP가 아직 나온지는 얼마 안 됐지만 역시 점점 발전한다는 사실이 느껴진다

물론 발전한 버전을 내가 사용할 수 있을지는 다른 문제지만ㅎㅎ


참고 사이트

Rendering Debugger | Universal RP | 12.1.11

 

Rendering Debugger | Universal RP | 12.1.12

Rendering Debugger The Rendering Debugger window lets you visualize various lighting, rendering, and Material properties. The visualizations help you identify rendering issues and optimize Scenes and rendering configurations. This section contains the foll

docs.unity3d.com

씬 뷰 뷰 옵션 툴바 - Unity 매뉴얼

 

씬 뷰 뷰 옵션 툴바 - Unity 매뉴얼

씬 뷰 뷰 옵션 툴바 오버레이를 사용하여 씬을 보는 다양한 옵션을 선택하고 조명 및 오디오를 활성화 또는 비활성화할 수 있습니다. 컨트롤은 개발 중에 씬 뷰에만 영향을 미치고 빌드된 게임

docs.unity3d.com

Overdrawモードを誤解していた話 - Qiita

 

Overdrawモードを誤解していた話 - Qiita

この間まで誤解していたので備忘録です。シーンビューの Overdraw モードはサクッと確認できていいけど、他の方法も用いるべきかも、という話です。 Overdraw モードはシーンビューのコント

qiita.com

URPでOverdrawを確認できるOverdrawForURP【Unity】|アマガミナブログ

 

URPでOverdrawを確認できるOverdrawForURP【Unity】|アマガミナブログ

UniversalRenderPipelineでは消えてしまったSceneビューのOverdraw表示を復活させる拡張を作りました。導入方法などを解説しています。

amagamina.jp

Overdraw of opaque and transparent geometry

 

Overdraw of opaque and transparent geometry

Hi, I try to understand how to optimize a game opaque geometry rendering using render queues. I have created a simple example, with one fixed camera...

forum.unity.com

SceneView "Overdraw" mode is misleading

 

SceneView "Overdraw" mode is misleading

I'm trying to understand what the "Overdraw" mode in Unity's Scene view Control Bar is actually visualizing, because it doesn't seem to visualize...

forum.unity.com