정적배칭과 Draw Call에 대해서

정적배칭을 사용하는 최적화 방법

정적이란 말 그대로 움직이지 않는 것을 뜻하며, 움직이지 않는 정적 오브젝트에 활용하는 기법이다. 동일한 재질을 공유하는 오브젝트들을 일괄 처리해서 드로우 콜을 줄이는 방법이다. 여기서 드로우콜(Draw Call)이란 CPU가 CPU에게 렌더링을 부탁하는 것이다. 솔직히 이렇게 말하면 이해하기 어렵다. 인정하죠? 그래서 저의 얄팍한 그림실력으로 설명해보겠습니다.

위 사진을 보면 각각 오브젝트마다 렌더링을 하게 돼서 하나의 구 오브젝트에 하나의 드로우콜이 일어나게 돼서 총 2번의 드로우 콜이 발생하는 반면,

아래 사진을 보면 두 오브젝트가 한꺼번에 렌더링을 하게 돼서 한 번의 드로우 콜이 발생하게 된다

 

다이내믹 배칭

정적 배칭과 반대는 다이내믹 배칭이다

움직이는 오브젝트에 사용되는 기법이라고 생각하면 됩니다

 

Etc

하나의 캔버스엔 무조건 하나의 드로우콜이 발생한다고 합니다. 따라서 캔버스의 수는 적을 수록 좋은것이겠죠?

 

사용하지 않는 메서드도 매핑과정을 거치기 때문에 삭제해줘야 합니다. 엔진은 내부가 비어있어도 모르기 때문이죠.

또한 Update문에서의 주의사항도 있길래 가져와봤씁니다.

 

싱글 패스 스테레오 렌더링을 활성화 하는 것을 추천

원래는 VR HMD 렌즈 각각에 렌더링이 이뤄지고 순차적으로 플레이어에게 보여주는 형식인데, 싱글 패스 스테레오 렌더링을 사용하게 되면 두개의 렌즈에 동시에 렌더링이 이뤄집니다.

싱글 패스 스테레오 렌더링을 진행하는 동안 두 눈은 컬링 및 그림자 계산에 필요한 작업을 공유한다고 합니다.

 

자세한 내용은 공식사이트를 참고하시길!

 

싱글 패스 스테레오 렌더링(더블 와이드 렌더링) - Unity 매뉴얼

싱글 패스 스테레오 렌더링 은 PC 및 Playstation 4 기반 VR 애플리케이션의 기능입니다. 이 기능은 왼쪽 및 오른쪽 눈 이미지를 너비가 한쪽 눈 텍스처의 두 배인 패킹된 단일 렌더 텍스처로 동시에

docs.unity3d.com

 

 

멀티스레딩 렌더링이 뭐냐면 CPU는 하나의 스레드 즉 하나의 일을 하는 메인스레드가 있고 여러개의 스레드를 한꺼번에 처리하는 멀티스레딩 방식이 있다. 그니깐 일을 한꺼번에 처리한다는 뜻이다(여러 코어에서 한 번에 여러 개의 스레드를 처리하는 CPU 성능을 활용하는 프로그래밍의 한 유형, CPU가 좋아야겠죠?)

 


출처들

 

Tech Note: Unity Settings for Mobile VR

This post discusses the appropriate Unity settings for a Mobile VR app. This is general guidance and not a one-size-fits-all solution, we've provided reasoning behind each option to help you determine if these settings are the right call for your project.

developer.oculus.com

 

 

[Unity]mobile VR 빠른 최적화 방법

모바일 VR은 몇 가지 제약을 벗어나지 않는 범위 내에서 작동해야 합니다. 모든 것을 두 번 렌더링하고 아주 높은 프레임 속도를 목표로 해야 합니다. 게임 루프에서부터 렌더 루프에 이르기까지

guks-blog.tistory.com

 

아티스트를 위한 UI 최적화 테크닉(Unity3D UGUI) - 장홍주

모바일 게임을 만들다 보면 인게임(3D Rendering)은 잘 만들었는데, UI에서 매우 느리게 프레임을 렌더...

blog.naver.com

 

 

유니티에서 정적배칭(static batching) 사용하기

유니티에서 정적배칭(static batching) 사용하기 정적배칭을 사용하면 움직이지않고(static) 동일한 재질을 공유하는 오브젝트들을 일괄 처리함으로써 드로우콜을 줄일수있다. 정적배칭을 활성화

learnandcreate.tistory.com