1 / 45

지형 texturing 의 최적화

Mega Splatting. 지형 texturing 의 최적화. 노동진 Shader Study NCDC 2010 KGC 2010. 시작하기. 지형 – Outdoor 표현의 핵심. 지형은 3D 게임에서 outdoor 를 구성하는 중요한 요소 중 하나 효율적인 지형 렌더링의 구현은 아직까지도 여전히 쉽지 않은 도전. 시작하기. 여기서는 지형 렌더링 기법 중 표면 texturing 에 대한 기법을 다룸. 멋진 지형을 표현하기 위해서는 다양한 기법이 요구됨.

xanthe
Télécharger la présentation

지형 texturing 의 최적화

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Mega Splatting 지형 texturing의최적화 노동진 Shader Study NCDC 2010 KGC 2010

  2. 시작하기 지형 –Outdoor 표현의 핵심 • 지형은 3D 게임에서 outdoor를 구성하는 중요한 요소 중 하나 • 효율적인 지형 렌더링의 구현은 아직까지도 여전히 쉽지 않은 도전

  3. 시작하기 여기서는 지형 렌더링 기법 중 표면 texturing 에 대한 기법을 다룸 • 멋진 지형을 표현하기 위해서는 다양한 기법이 요구됨 • 우리의 관심은 오로지‘표면 texturing’ • 화려한 렌더링 효과에 대해서는 다루지 않습니다.

  4. 배경 지형 표현 방법은 지금까지 많은 발전을 해왔습니다. • 지형 texturing 기법의 발전:통맵→타일맵→Splatting → Clipmap

  5. 배경 통맵은texture 한 장에 지형의 모든 표면을 다 그려 넣어 표현하는 방식임 • 가장 단순한 방식 • 가장 성능이 빠르다 • 한 장의 texture로 표현하기 때문에, 작은 지형에 적합 • 넓은 지형을 표현하게 되면,texturing 퀄리티가 급격히 떨어진다.

  6. 배경 타일맵은 조각 texture를 이어 붙이는 방식임 이어붙이기 규칙 조각 texture 조합된 전체 맵 • 조합 가능한 모든 조각 texture를 디자이너가 미리 제작함 • 미리 준비된 조각 texture를 맵tool에서 이어 붙여, 전체 지형을 완성함 • 2D 게임에서 가장 많이 활용되는 방식

  7. 배경 Splatting은 각 layer마다 색상맵과 알파맵을 혼합하여 표현하는 방식임 색상맵 알파맵 생성된 layertexture 완성된 지형 texturing 맵툴에서,layer의 알파맵을 칠해서 지형을 편집하는 과정

  8. 배경 Clipmap은 아주 큰 텍스쳐 하나만 사용하며, 필요한 부분만 로딩하는 방식 Geographic Information System Quake Wars • Christopher C. Tanner 등에 의해 고안됨 • 아주 큰 한 장의 텍스쳐로 표면을 표현한다. • John Carmack은 Mega Texturing 이라고 명명하고, 독자적으로 구현하였다.

  9. 배경 Clipmap은 H/W가 지원하는 해상도 보다 훨씬 더 큰 텍스쳐도 표현할 수 있다 큰 텍스쳐를 가상 mipmap화 하여 필요할 부분만 로딩 • 통맵 방식의 한계를 극복한 방식 • 모든 맵을 로딩하는 것이 아니라, 필요한 부분만 로딩하여 렌더링을 한다. • Hardware에서 표현하지 못하는 엄청나게 큰 크기의 텍스쳐도,virtual mipmap개념을 사용하여, 가상적으로 지원한다.

  10. 배경 각 방식은 장단점이 있으며, 현재는 splatting기법이 가장 많이 사용되고 있음

  11. 목표 기존 기법에서 가능한 장점만을 취하고, 단점을 해결한 기법 제안 취할 장점 해결하지 않을 점 • 적은 리소스를 사용한다 • 성능이 빠르다 • 아티스트의 제어가 쉽다 • 구현은 어려워도 된다 • 표현의 자유도는 적절한 수준이면 된다

  12. 목표 새로운 기법 -Splatting과 통맵의 결합 통맵 Splatting • 성능이 빠르다 • 적은 리소스를 사용한다 • 아티스트의 제어가 쉽다

  13. Splatting기법 고찰 Splatting은지형 표면 texturing의 한 기법으로 가장 널리 사용됨 • Splatting texturing은 현재 3D 게임에서 가장 널리 사용되는 지형 표면 표현 방법임 • 여러 개의 Layer를 사용하여, 지형 표면을 표현함 • 적은 리소스만으로도 넓은 지형 표면을 표현할 수 있음 • 아티스트가 편집하고 제어하기 쉬움

  14. Splatting기법 고찰 Splatting은 같은 자리에 layer를 여러 번 그립니다. 알파맵 생성된 layertexture 색상맵 Layer 1 Layer 2 완성된 지형 texturing • 위 그림은 같은 geometry를 다른 texture로 두 번 렌더링 한다 • Layer의 개수가 많아 질수록, 중복 렌더링이 더 많이 발생한다 • 증가한 DP call 횟수도 부담을 준다. • 통맵,타일맵,clipmap은 이런 문제가 존재하지 않음

  15. Splatting기법 고찰 특히 Layer가 blending 되는 부분이 겹쳐 그려지게 됩니다. 기본 layer 위에 다른 detail layer를 그린다. Overwriting의 도식화 빨강: 기본 layer 영역 녹색:detail layer 영역 노랑: 기본 layer와 detail layer가 둘다 그려지는 영역 기본 layer의 geometry detaillayer의 geometry

  16. Splatting기법 고찰 Splatting은 Depth complexity가 매우 높음 Splatting 방식 다른 방식

  17. Splatting기법 고찰 성능 저하 원인 ① Frame buffer bandwidth ② Geometry overdraw ③ Duplicated shader computations ④ Increasing DrawPrimitive Call

  18. Splatting기법 고찰 Pixel shader를 사용한 간단한 최적화가 존재함. • Pixel shader을 사용하여, 한 번에 4개의 layer를 그리는 최적화 기법이 존재함 • Frame buffer에서 행하는 계산을 pixel shader에서 하도록 바꾼 것 • DP call 횟수와 geometry 중복 계산량을 줄여줌

  19. Splatting기법 고찰 Pixel shader를 사용한 최적화도 근본적인 해결책은 아닙니다. • 다중 texture 접근과 blending 계산량은 줄이지 못함 • Layer 개수가 많아지면, 다시 multi-pass 렌더링을 수행함 • 문제를 경감해주기는 하지만, 근본적 해결은 아님 복잡한 layer 사용시, 다시 문제점 노출

  20. Splatting최적화 의미 • 낮은 성능에도 불구하고, 다른 장점 때문에 많은 게임에서 활용되고 있다. • 따라서, 성능 문제를 해결하면 그 가치는 더욱 높아질 것이다.

  21. 최적화 전략 전체 지형은 여러 개의 Sector로 분리됩니다. • 원 알고리즘에서 terrain은 일정 크기의 sector로 분할하여,렌더링 한다. • 각 sector는 culling의 단위가 된다.

  22. 최적화 전략 전체 지형은 여러 개의 Sector로 분리됩니다. • 각 Sector 마다 다른 방식으로 렌더링 한다. • 아주 가까운 Sector만 원래 방식 대로 splatting texturing 한다. • 그 외의 Sector는 한 번만 렌더링 한다.→ 어떻게?

  23. 최적화 전략 시도 1) 먼 거리의 sector는 Base layer만 그린다 Base layer만 그림 원 texturing과 비교 • base layer만 texturing 한다. • 성능 증가 효과 :95 fps → 317 fps • Texturing quality는 현저히 저하

  24. 최적화 전략 Qulaity저하 없는 최적화 방법을 찾아야 한다 • Sector를 overdrawing 없이 한번만 렌더링 할 때, 성능 증가가 엄청나다 • 개발할 최적화 기법은 Quality 저하가 없거나 거의 눈에 띄지 않아야 한다.

  25. 최적화 전략 시도 2) 먼 거리의 sector는 미리 준비한 통맵으로 그린다 • 미리 준비한 통맵으로 한번만 렌더링한다 • Texture 메모리 사용량이 엄청나게 증가한다 • 잦은 texture swapping으로 fps도 저하된다

  26. 최적화 전략 Quality 저하도 없고,memory 소비도 적은 최적화 방법을 찾아야 한다 • 준비된 통맵texture를 사용하면,quality 저하는 없다 • 각 sector의 통맵 texture의 전체 크기는 너무 크다 • Memory 사용량이 적으면서,quality 저하 없이, 성능을 향상시켜야 한다

  27. 최적화 전략 시도 3) 먼 거리의 sector는 통맵을 실시간 생성하여 그린다 • 통맵을 실시간 생성하여 한번만 렌더링한다 • 통맵 해상도는 sector가 거리가 멀수록 작게 만든다 • Clipmap의 virtual mipmap개념과 비슷한 점이 있다

  28. 최적화 전략 데모 시연

  29. 구현 결과 분석 추가 소요되는 Video memory는 최소화 하였습니다 • Sector의 거리에 따라,통맵텍스쳐를 가능한 작게 만든다 • Perspective view에서, 거리가 먼 sector 개수가 훨씬 많다 • 따라서 작은 해상도의 통맵texture가 훨씬 더 많이 쓰인다

  30. 구현 결과 분석 추가로 소요되는 video memory 량 측정 • Memory 사용량 – NvidiaPerfHUD측정 • 추가로 소요되는 texture memory는 5mb • 많은 sector가 통맵을 생성함에도 불구하고, 적은 용량의 추가 memory 만 요구된다

  31. 구현 결과 분석 실시간 sector 통맵 생성은 quality 저하도 거의 없고, 성능도 비약적으로 향상 • FPS : 95 fps → 317 fps • Texture memory : 25 mb → 30 mb • Quality 저하 : 거의 눈에 띄지 않음

  32. 이름은? 새 기법의 명칭은? Mega Texturing Mega Splatting = Splatting

  33. 구현 내용 Sector texture 해상도 결정 멀리 있나? 통맵 생성 되어 있나? Yes No Yes No 통맵 생성 Splatting으로 그린다 통맵으로 그린다

  34. 구현 내용 Quality 저하가 없는 범위에서, 가장 작은 해상도를 결정하여야 한다 원래 splatting sector texture 해상도가 너무 작은 경우

  35. 구현 내용 Sector를 화면에 투영하여, 그 크기로 해상도를 결정합니다 • 근사치 계산이면, 충분하다 • Sector의 밑면을 화면에 투영하여, 투영된 크기로 해상도를 계산한다 Y 해상도 X 해상도

  36. 구현 내용 계산된 해상도가 일정 크기 이내일 때만,통맵렌더링을 수행합니다. • 적절한 기준 해상도를 정합니다 • 계산된 통맵 해상도가 기준 해상도와 비교합니다 • 통맵 해상도가 더 크면, 원래의 splatting 방식으로 렌더링 합니다 • 기준 해상도보다 작으면,통맵을 생성하여 렌더링합니다 • 기준 해상도는 VGA가 지원하는 최대 texture 해상도의 1/16 이 적절합니다 • 이는 경험적인 값입니다

  37. 구현 내용 Sector texture에는 원래의 splatting기법으로 렌더링한다 • 생성된 sector texture를 render target으로 설정 • 여기에 원래의 splatting기법으로 렌더링 sector texture 각 layer texture

  38. 구현 내용 Sector texture는 단순한 diffuse texture만 생성하면 된다 • 따라서 sector의 geometry를 무시하고 단순히 rectangle로 렌더링한다 • 모든 lighting 등의 외부 요소는 무시한다 • 이렇게 생성된 sector texture는 sector의 거리가 크게 바뀌거나, 메모리가 모자라는 등의 이유가 없는한 계속 유지된다 • 유지되는 동안 이 texture는 다시 렌더링할 필요가 없으므로, 추가의 연산이 필요 없다

  39. 구현 내용 Sector texture를 통맵으로 사용하여, 원래의 Sector를 렌더링합니다 sector texture • 생성된 sector texture를 통맵으로 사용하여,sector를 렌더링한다 • 원래의 sector geometry를 사용하여 렌더링 한다 • 이 통맵렌더링은 하나의 DP call 만 요구한다

  40. 구현 내용 Sector texture는 자주 update되지 않지만, 자주 사용됩니다 • Sector texture는 cache 방식으로 사용되므로,sector texture의 update는 자주 일어나지 않는다 • 이미 만들어진 sector texture를 통맵으로렌더링하는 단순한 작업은 매 frame마다 수행된다 • 적절한 해상도 threshold를 정하면, 화면에 보이는 거의 대부분의 sector가 이 방식으로 렌더링 된다

  41. 데모 시연

  42. 결론 원래의 splatting기법 렌더링 결과 Depth complexity FPS : 90 Polygon : 60만 여개 DP call : 2242 번 Overdrawing 매우 심각

  43. 결론 Megasplatting기법 렌더링 결과 Depth complexity FPS : 328 Polygon : 24만 여개 DP call : 506 번 Overdrawing 거의 없음

  44. 결론 • Splatting기법의 장점을 그대로 유지하면서,렌더링 성능을 크게 높였다 • 테스트 머신에서, 성능은 약 세배 이상 향상되었다 • Clipmap과 비교하면, • 가상의 큰 텍스쳐를렌더링한다는 지향점은 비슷 • Mega Splatting이 더 적은 리소스를 사용하고, 더 제어가 용이한 편집 기능을 제공 • Clipmap이 표현의 자유도가 더 높음 • Clipmap은 아직 단점이 많음 →게임보다 GIS 더 적합?

  45. 참고 자료 • [Charles Bloom] Terrain texture compositing by blending in the frame-buffer • [Christopher C. Tanner, Christopher J. Migdal, Michael T. Jones] The Clipmap : a virtual mipmap • [Alex Holkner] Hardware based terrain clipmapping • [Roger Crawlfis, Eric Noble, Frederic Kuck] Clipmapping on GPU • [Antonio Seoane, Javier Taibo등]Hardware-independent clipmapping • [John Carmack] Mega Texturing • [www.beyond3d.com] Mega texture in quake wars • [Johan Andersson] Terrain rendering in Frostbite using procedural shadersplatting • [Michael F. Cohen, Jonathan Shade, Stefan Hiller, Oliver Deussen] Wang tiles for image and texture generation

More Related