Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

FBO 교체를 막자

468 visualizaciones

Publicado el

모바일 게임개발시 독이 되는 FBO 체인지

Publicado en: Móvil
  • Sé el primero en comentar

FBO 교체를 막자

  1. 1. FBO 교체를 막자 2018/10 - Spotlight
  2. 2. 목차 • FBO 체인지가 왜 모바일에서 독이 되나? • FBO 체인지를 막는 방법 • No Cascade with SRP LW • 미래는?
  3. 3. FBO(Frame Buffer Object) 가 뭐냐 • 우리가 그림을 그리는 도화지 • 게임은 그림을 그릴때 한개의 도화지만 쓰지 않는다. • 그림자 그릴 종이 놓고 glBindFramebuffer(1) 그림자 그리고 • 뎁스 그릴 종이 놓고 glBindFramebuffer(2) 깊이 그리고 • 그림자랑 뎁스 그림 보면서 실제 그림 그려서 glBindFramebuffer(0) • 마지막 그림을 화면에 보여준다. ( eqlSwapBuffer ) front back <> buffer swap 카피
  4. 4. FBO 교체에서 모바일 문제점 • 모바일은 이 도화지를 바꾸는게 엄청난 병목현상 • 모바일에서 이 도화지는 일정크기로 나누어진 작은 도화지(Tiled)의 집합이다. • Tiled 방식을 택하는 이유는 폴리곤을 타일크기마다 나누는 작업(binning)을 하더라도 타일 아키텍처로 외부 메모리를 안 접근하는게 더 좋기 때문이다. • 모바일은 외부메모리 속도(메모리대역폭)가 무진장 느리다. • https://developer.samsung.com/game/gpu-framebuffer ( 자세한 설명 ) • PC는 binning을 하지 않아서 이런현상이 없다. ( nvidia는 맥스웰부터 Tiled 지만 다른이유 ) • 도화지를 새로 바꾸면 모든 작은 도화지의 binning관련 버퍼를 Flush해야한다. • 이 작업이 1~2ms 가 소요될수도 있다.
  5. 5. 모바일 전략 • 최대한 FBO 스왑을 안하는 방향으로 게임을 만들어야 한다. • 결국 렌더패스를 줄여야 한다. • 하지만 Unity 렌더러는 바이너리 ㅠ.ㅠ • 그래서 나올 예정인것이 SRP • 렌더패스 구성을 조작할 수 있다.
  6. 6. FBO 줄이기 예제 - SRP LW(1) 무조건 4번 FBO를 바꾸는 레거시 파이프라인 ( No Cascade 디렉셔널 라이트 쉐도우 사용시 )
  7. 7. FBO 줄이기 예제 - SRP LW(2) 2번만 FBO를 바꾸는 SRP LW ( No Cascade 디렉셔널 라이트 쉐도우 사용시 ) • Cascade 를 사용하면 똑같이 Depth와 Collect shadow 패스때문에 4번 FBO를 바꾼다.
  8. 8. 모바일 전략 • SRP LW 는 모바일 최적화는 아니다. ( 범용 로우엔드 하드웨어용 ) • 모바일 최적화 패스는 직접 만들어야한다. • 유니티에서 만들고 있습니다. • 언제 완성되어 나올지 모릅니다. • 자신의 게임에 맞는 렌더패스 구성을 하자! • 포스트 프로세스도 FBO 스왑 없는쪽을 되도록...
  9. 9. Thank you

×