#gdc11 #review Culling the Battlefield: Data Oriented Design in Practice

DOD로 기존 컬링 코드(Frustum vs sphere)를 3배 더 빠르게 만들었다.

왜? 새로 만들었나?

/pnotes/assets/2016-08-15-gdc11-culling-the-battlefield-data-oriented-design-in-practice-00.jpg

  • Job을 더 할당해도 안 빨라진다. 스케일링 불가능.

/pnotes/assets/2016-08-15-gdc11-culling-the-battlefield-data-oriented-design-in-practice-01.jpg

새로 만든 컬링 특징

/pnotes/assets/2016-08-15-gdc11-culling-the-battlefield-data-oriented-design-in-practice-02.jpg

/pnotes/assets/2016-08-15-gdc11-culling-the-battlefield-data-oriented-design-in-practice-03.jpg

  • 스케일링이 가능하게 하고 branch를 줄이기 위해 tree 구조를 버리고 array로 구현.
  • 이전보다 3배 빨라졌다.

/pnotes/assets/2016-08-15-gdc11-culling-the-battlefield-data-oriented-design-in-practice-04.jpg

  • 짠! 병렬로 돌아가는 스레드(thread) 보소.

새로운 컬링을 좀 더 자세히

/pnotes/assets/2016-08-15-gdc11-culling-the-battlefield-data-oriented-design-in-practice-05.jpg

  • 병렬 처리를 위해 그리드로 나누는 전략

/pnotes/assets/2016-08-15-gdc11-culling-the-battlefield-data-oriented-design-in-practice-06.jpg

  • DOD로 설계

frustum vs sphere intersection 코드

/pnotes/assets/2016-08-15-gdc11-culling-the-battlefield-data-oriented-design-in-practice-07.jpg

  • LHS(load-hit-store), branch가 많은 옛날 코드

/pnotes/assets/2016-08-15-gdc11-culling-the-battlefield-data-oriented-design-in-practice-08.jpg

/pnotes/assets/2016-08-15-gdc11-culling-the-battlefield-data-oriented-design-in-practice-09.jpg

  • 재정렬 후 9 instruction으로 해결

발표


크리에이티브 커먼즈 라이선스
Feedback plz <3 @ohyecloudy, ohyecloudy@gmail.com
|