개발 노트 OpenGLES - 인스턴싱 2018/12/03 19:03 by cagetu

모바일 플랫폼에서 게임을 개발하면서 최적화 할 수 있는 방법들이 뭐가 있을까? 를 많이 고민하게 된다. 언리얼 엔진을 기반으로 있으니, 엔진에서 지원해주는 많은 기능들 말고 더 할 수 있는 것이 있을까? 라고 생각하던 중에 인스턴싱을 좀 더 활용할 수 있을까? 라는 생각을 해보게 된다. 특히, 모바일 환경에서 얼만큼의 메쉬가 묶여야 효과를 발휘할 것인가? 라는 의문이 가장 크다. 

안드로이드 기반에서 개발하는 방법은 아래와 같은데, DirectX11 - Skinned Instancing 와 크게 다르지 않다.
Drawing With Geometry Instancing

https://software.intel.com/en-us/articles/opengl-es-30-instanced-rendering의 내용을 보면 대략 이런 통계를 보여준다.

언리얼엔진 코드를 보면 InstancedStaticMesh 계역 코드가 있고, Foliage도 기본적으로 인스턴싱 기반으로 되어 있고, 이 기반코드를 잘 만들면 StaticMesh도 인스턴싱으로 묶도록 만들 수 있을 것 같은데, 기본적으로 InstancedMesh 관련 객체들의 비용이 꽤 되는 것으로 보여서 인스턴스 갯수가 상당히 많아져야 할 것 같다. 위 통계를 보면 최소 100개 정도는 되어야 효과가 좋아질 것 같은데, 이건 좀 더 테스트를 해봐야 할 듯..

이 다음에는 IndirectRendering 기반인 듯 한데, 이건 공부를 좀 해봐야 겠다.


덧글

댓글 입력 영역



메모장

내가 먼 훗날에 이 글들을 보았을 때, 좋은 추억이 될 수 있기를...

나를 위해... 나에게 쓰는...

msn: cagetu@hotmail.com
mail: cagetu79@gmail.com
twitter: twitter.com/cagetu
facebook: facebook.com/cagetu