[박민근] 3 d렌더링 옵티마이징_5 최적화 전략

3,696 views

Published on

0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,696
On SlideShare
0
From Embeds
0
Number of Embeds
44
Actions
Shares
0
Downloads
49
Comments
0
Likes
7
Embeds 0
No embeds

No notes for slide

[박민근] 3 d렌더링 옵티마이징_5 최적화 전략

  1. 1. 3D RENDERINGOPTIMIZING #5 - 박 민 근 (민군) Devrookie(café.naver.com/devrookie) DevRookie 박민근(민군) 1
  2. 2. 렌더링 옵티마이징최적화
  3. 3. 렌더링 파이프라인이란?
  4. 4. 렌더링 파이프라인 구조
  5. 5. DirectX Pipeline
  6. 6. 보틀넥이 발생하는 이유? • 렌더링에 영향을 주는 요소 - 가속 하드웨어와의 병렬성 - 하드웨어의 대역폭 한계 • 렌더링 병목 요소 - 프레임 버퍼 대역폭 - 텍스처 대역폭 - 셰이더 - 버텍스, 폴리곤의 수 - 시스템 메모리 전송 대역폭
  7. 7. (Nvidia GDC 03)Batch의 크기는Batch의 개수는
  8. 8. Batch 란 무엇인가?• 모든 DrawIndexedPrimitive()함수 콜을 말한다. – N개의 삼각형을 GPU로 보낸다. – Batch 안의 모든 폴리곤은 같은 RenderState의 영향을 받는다. – SetState 함수 호출도 batch의 일부이다.• Batch의 최적화를 다른 말로 표현한다면 HAL 함수를 최대한 적게 부르는 것이라 할 수 있다
  9. 9. 배치 크기에 대한 그래프
  10. 10. This Year: Son Of A Batch(Nvidia GDC 04) • What makes an app ‘batchy’? – Too many state changes • What kinds of state changes? • Techniques to reduce batches
  11. 11. API Call Average number of Cycles SetVertexShader 12100 SetVertexDeclaration 11250 SetFVF 11200 LightEnable 9000 SetPixelShaderConstant 9000 SetPixelShader 7000 SetRenderTarget 6250 SetStreamSource 5800 SetIndices 5600 SetLight 5100 ZENABLE 3900 SetTransform 3750 SetMaterial 3700 SetTexture 3100SetVertexShaderConstant 2700 WRAP0 2700 MINFILTER 2500 MAGFILTER 2400 COLOROP 2100 0 2000 4000 6000 8000 10000 12000 14000
  12. 12. Texture의 대역폭을 줄입시다 • Render State Sorting • Texture Sorting • Texture의 크기를 줄임. • Texture 압축 (DDS) • Mipmapping의 사용
  13. 13. Frame Buffer의 대역폭을 줄입시다• 가시거리 순으로 그림.• 알파 블렌딩을 최소화• 가능하다면 depth write를 끔(light map)• 가능하다면 16비트 깊이 버퍼를 사용– 스텐실 버퍼를 사용 하지 않을 때.• 가능하다면 16비트 컬러 사용– Render To Texture 때.- clear가 필요 없다면 clear 하지 않는다
  14. 14. 비디오 메모리 접근을 줄입시다- lock/unlock을 최소로 줄이며, 아예 안 한다- lock 을 할 때에도 read는 하지 않는다- lock 을 할 경우D3DLOCK_NOOVERWRITE 등의 옵션으로최대한 병렬성을 살린다- 셰이더를 활용한다
  15. 15. Instancing DirectX 9 Instancing API What do you need? – DirectX 9.0c – VS 3.0/PS 3.0 support
  16. 16. 10. 참고 자료1. Optimization for DirectX9 Graphics – Nvidia2. [KGC] 렌더링 파이프라인 최적화 – 현호진3. [KASA] 렌더링 퍼포먼스 옵티마이징 – 김성익4. [KGC] 소프트웨어 렌더러개발 - 김성완 DevRookie 박민근(민군) 23
  17. 17. Q&A

×