[1106 조진현] if you( batch rendering )

1,771 views

Published on

Published in: Technology, Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,771
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
19
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

[1106 조진현] if you( batch rendering )

  1. 1. 조 진현
  2. 2. 정적인 오브젝트에만 국한된 얘기들이다.
  3. 3. 3D RENDERING OPTIMIZING #4 - 박 민 근 (민군) DEVROOKIE(CAFÉ.NAVER.COM/DEVROOKIE) 5DevRookie 박민근(민군)
  4. 4. 별도의 작업없이 그냥 렌더링만 하게 해주세요~~~
  5. 5. Future GPUs will make it better!? Really?
  6. 6. 과거에는 CPU 사이클을 줄이는 것. 현재는 병목 현상을 제거하는 것.
  7. 7. 대역폭 Vertex Format (Byte) Half 16bit 순차적 접근 GPU 활용 Lock Cache Memory POOL 텍스쳐 옵션압축
  8. 8. 폴리곤을 그리지 않는 것! 폴리곤을 효과적으로 렌더링 하는 것!
  9. 9. DrawXXXPrimitiveUp DrawPrimitive
  10. 10.  파이프라인은 필연적으로 통과한다.  즉, 할만큼 다 제거했다… 그 이후의 작업~
  11. 11.  Object : 11개  Texture : 4장  Material : 5개  Shader : 2종
  12. 12. For( 오브젝트 개수 만큼 ) { 스테이트 셋팅() 행렬 셋팅() 텍스쳐 바인딩() 버퍼 바인딩() 그리기 명령() }
  13. 13. 오브젝트 정렬 후… For( 오브젝트 개수 만큼 ) { 스테이트 셋팅() 행렬 셋팅() 텍스쳐 바인딩() 버퍼 바인딩() 그리기 명령() }
  14. 14. Material 별로 정리 후 정렬. ( 같은 Material 별로 그룹화 ) For( Material 그룹화 개수 만큼 ) Material 바인딩. for( 그룹내 오브젝트 개수 만큼 ) 행렬세팅() 버퍼 바인딩() 그리기 명령()
  15. 15. 투명한 오브젝트와 불투명한 오브젝트로 분류. ( 투명 그룹, 불투명 그룹 ) For ( 각 투명 그룹에 대하여 ) 알파 관련 셋팅 각각에 대해서 Material 별로 정리 Material 별로 정리 후 정렬. ( 같은 Material 별로 그룹화 ) For( Material 그룹화 개수 만큼 ) Material 바인딩. for( 그룹내 오브젝트 개수 만큼 ) 행렬세팅() 버퍼 바인딩() 그리기 명령()
  16. 16.  되도록 많은 것을 하나의 버퍼로 묶어라.  복수의 Stream 에 연결하라~  반드시 Strip 화 시켜라.
  17. 17. H/W Designers Driver Architects API / Runtime Architects Application Developers
  18. 18. Application Driver Core API / HLSL / Runtime Hardware
  19. 19.  시스템에서 목적으로 하는 효과를 얻기 위해 본질적인 것은 아니지만 요구되는 작동, 또는 그 때문에 필요한 자원.  필연적인 것!!!
  20. 20.  DrawIndexedPrimitive()  GPU 에게 n개의 폴리곤을 렌더링을 명령하는 작업.  같은 State들을 가지는 삼각형들의 묶음  Batch를 렌더링 하기 위해서는 반드시 State 들이 먼저 설정되어야 한다.  State가 변경되면, 최소 2개의 Batch가 필요.
  21. 21. 어떤 State 변화가 일어나는가? 얼마나 많은 State 변화가 일어나는가? 잠재적 State 변화의 요인들은 무엇인가?
  22. 22.  State의 변화는 소모적인 명령.  GPU의 잦은 Tri-SetUp 비용.  OS 커널의 명령어 전송 증가.
  23. 23.  CPU에 의존적인 최적화. ( CPU 성능에 좌우 )  얼마나 많은 폴리곤이 Batch에 들어있는지는 중요하지 않음. ( 이것은 GPU의 몫 )
  24. 24.  되도록 많은 폴리곤을 하나의 Batch에 넣어라.  CPU는 계속 성능이 증가!!! But…  많으면 그냥 좋음!!!
  25. 25.  Texture 교체.  Transform 변화.  스키닝.  Material 교체.
  26. 26. 선행 처리가 필요.( Strip 기반의 버퍼 최적화 ) 버퍼를 셋팅. 투명한 오브젝트와 불투명한 오브젝트로 분류. ( 투명 그룹, 불투명 그룹 ) For ( 각 투명 그룹에 대하여 ) 알파 관련 셋팅 각각에 대해서 Material 별로 정리 및 정렬 ( 같은 Material 별로 그룹화 ) For( Material 그룹화 개수 만큼 ) Material 바인딩. for( 그룹내 오브젝트 개수 만큼 ) 행렬세팅() 그리기 명령()
  27. 27.  Texture Atlas.
  28. 28.  병렬 프로그래밍과의 결합.  Strip 기반으로 엔진을 구성할 것.
  29. 29. 질문 주세요~~~

×