Upload
-
View
66
Download
1
Embed Size (px)
Citation preview
Software Renderer ?
이제는 시대에 뒤떨어진 잊혀진 기술인가 ? 적어도 실무적으로는 이제 불필요한 기술이다 ? 여전히 가속카드 (GPU) 가 없는 환경이 있다 .
◦ 주로 모바일 환경 H/W 에 내장될 알고리즘으로 여전히 필요하다 .
“Software” 의 정의 3D 그래픽 카드의 GPU 에서 실행되는 Shader
Program 은 그럼 소프트웨어가 아닌가 ? CPU 만 이용해서 처리 S/W 의 정의 ?
◦ CPU 에서 실행되는 알고리즘
실사같은 3D 영상을 실시간으로 생성할 수 있는 고성능의 3D 가속 카드가 보편화된 요즘에는 모바일 기기처럼 특수한 환경이 아니라면 소프트웨어 렌더러가 필요한 경우가 거의 없다 .
하지만 몇가지 이유로 여전히 필요하다 .
• 실무적으로 사용하지 않는다고 해서 필요 없게 된 기술은 아니다 .
• 소프트웨어 렌더링 기술은 여전히 교육적 가치로서 그 존재 의미가 있다 .
• 3D 가속카드 환경하에서도 3D 렌더러의 최적화를 위해서는 렌더링 파이프라인의 구성이나 동작 원리를 잘 이해할 필요가 있다 .
• 그 이해를 위한 가장 좋은 방법이 직접 소프트웨어 렌더러를 구현해 보는 것이다 .
• 결국 셰이더 프로그래밍에도 큰 도움이 된다 .
렌더링의 전 과정을 잘 알고 있어야 한다 .◦ 사실 제대로 알기가 쉽지 않다 .
저수준 프로그래밍을 요구한다 .◦ 어셈블리 프로그래밍이 종종 필요하다 .
참고할 책이나 자료가 별로 많지 않다 .◦ 책은 대개 절판된 지 오래이다 .◦ 종종 제대로 문서화 되지 않은 세밀한 코딩이 필요하다 .
빠른 Perspective Correction Sub-Pixel Accuracy Sub-Texel Accuracy
렌더링 파이프라인에 대한 충분한 이해가 필요하다 .◦ 알고리즘 수준의 최적화◦ http://www.cbloom.com/3d/techdocs/pipeline.txt
저수준 프로그래밍 지식도 필요하다 .◦ CPU, 메모리◦ 어셈블리 최적화◦ MMX, SSE, SSE2 (SIMD)
Pixomatic◦ DirectX 7 수준◦ Unreal Tournament 2004◦ http://www.radgametools.com/pixomain.htm
SwiftShader◦ DirectX 9 수준◦ Vertex Shader 1.1, Pixel Shader 1.4◦ Direct3D Interface◦ http://www.transgaming.com/products/
swiftshader
Michael Abrash Optimizing Pixomatic for x86
Processors◦ http://www.ddj.com/architect/184405765◦ http://www.ddj.com/184405807◦ http://www.ddj.com/184405848
Quake 엔진 개발 참여
SwiftShader Nicolas Capens Advanced Rasterization http://www.devmaster.net/codespotlight/
show.php?id=17
Chris Hecker Perspective Texture Mapping http://chrishecker.com/
Miscellaneous_Technical_Articles#Perspective_Texture_Mapping