SlideShare uma empresa Scribd logo
1 de 23
김 성 완
부산게임아카데미
동의대학교 게임공학과
 소프트웨어 렌더러란 ?
 소프트웨어 렌더러의 필요성
 소프트웨어 렌더러의 교육적 가치
 소프트웨어 렌더러 개발의 어려움
 렌더링 파이프라인 구성
 렌더러의 최적화
 상용 소프트웨어 렌더러
Software Renderer ?
 이제는 시대에 뒤떨어진 잊혀진 기술인가 ?
 적어도 실무적으로는 이제 불필요한 기술이다
?
 여전히 가속카드 (GPU) 가 없는 환경이 있다 .
◦ 주로 모바일 환경
 H/W 에 내장될 알고리즘으로 여전히 필요하다
.
3D Hardware (GPU Nvidia)
3D Graphics Card
“Software” 의 정의
 3D 그래픽 카드의 GPU 에서 실행되는 Shader
Program 은 그럼 소프트웨어가 아닌가 ?
 CPU 만 이용해서 처리
 S/W 의 정의 ?
◦ CPU 에서 실행되는 알고리즘
CPU (Intel Core2 Duo)
CPU (Intel Core2 Quad)
CPU (AMD 64 Athlon)
CPU (AMD 64 Athlon X2)
 실사같은 3D 영상을 실시간으로 생성할 수 있
는 고성능의 3D 가속 카드가 보편화된 요즘에
는 모바일 기기처럼 특수한 환경이 아니라면 소
프트웨어 렌더러가 필요한 경우가 거의 없다 .
 하지만 몇가지 이유로 여전히 필요하다 .
• 실무적으로 사용하지 않는다고 해서 필요 없게 된
기술은 아니다 .
• 소프트웨어 렌더링 기술은 여전히 교육적 가치로
서 그 존재 의미가 있다 .
• 3D 가속카드 환경하에서도 3D 렌더러의 최적화를
위해서는 렌더링 파이프라인의 구성이나 동작 원
리를 잘 이해할 필요가 있다 .
• 그 이해를 위한 가장 좋은 방법이 직접 소프트웨
어 렌더러를 구현해 보는 것이다 .
• 결국 셰이더 프로그래밍에도 큰 도움이 된다 .
 렌더링의 전 과정을 잘 알고 있어야 한다 .
◦ 사실 제대로 알기가 쉽지 않다 .
 저수준 프로그래밍을 요구한다 .
◦ 어셈블리 프로그래밍이 종종 필요하다 .
 참고할 책이나 자료가 별로 많지 않다 .
◦ 책은 대개 절판된 지 오래이다 .
◦ 종종 제대로 문서화 되지 않은 세밀한 코딩이 필요하
다 .
 빠른 Perspective Correction
 Sub-Pixel Accuracy
 Sub-Texel Accuracy
렌더러 개발의 어려움
DirectX Pipeline
DirectX Pipeline
 렌더링 파이프라인에 대한 충분한 이해가 필요
하다 .
◦ 알고리즘 수준의 최적화
◦ 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_A
rticles#Perspective_Texture_Mapping
g-Matrix 3d Neo
 http://www.g-matrix.pe.kr
Q & A
 질문하세요 !!!

Mais conteúdo relacionado

Mais procurados

오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011
devCAT Studio, NEXON
 
[0611 박민근] 신입 게임 개발자가 알아야 할 것들
[0611 박민근] 신입 게임 개발자가 알아야 할 것들[0611 박민근] 신입 게임 개발자가 알아야 할 것들
[0611 박민근] 신입 게임 개발자가 알아야 할 것들
MinGeun Park
 
06_게임엔진구성
06_게임엔진구성06_게임엔진구성
06_게임엔진구성
noerror
 
MMORPG게임엔진의 현재와미래 by 장언일
MMORPG게임엔진의 현재와미래 by 장언일MMORPG게임엔진의 현재와미래 by 장언일
MMORPG게임엔진의 현재와미래 by 장언일
drandom
 
[1127 박민근] 일 잘하는 게임프로그래머 되기
[1127 박민근] 일 잘하는 게임프로그래머 되기[1127 박민근] 일 잘하는 게임프로그래머 되기
[1127 박민근] 일 잘하는 게임프로그래머 되기
MinGeun Park
 
[페차쿠차] 신입 게임 개발자 상식사전
[페차쿠차] 신입 게임 개발자 상식사전[페차쿠차] 신입 게임 개발자 상식사전
[페차쿠차] 신입 게임 개발자 상식사전
MinGeun Park
 

Mais procurados (20)

Framer js a/s talk
Framer js a/s talkFramer js a/s talk
Framer js a/s talk
 
Unite 2015 Seoul : 인디에게 어디가 한계인지는 해봐야 알잖아?
Unite 2015 Seoul : 인디에게 어디가 한계인지는 해봐야 알잖아?Unite 2015 Seoul : 인디에게 어디가 한계인지는 해봐야 알잖아?
Unite 2015 Seoul : 인디에게 어디가 한계인지는 해봐야 알잖아?
 
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
 
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011
 
[IGC 2016] 엔씨소프트 홍상범 - 3D아티스트 위한 프로그램 연동하여 개발 제작 환경 개선하기
[IGC 2016] 엔씨소프트 홍상범 - 3D아티스트 위한 프로그램 연동하여 개발 제작 환경 개선하기[IGC 2016] 엔씨소프트 홍상범 - 3D아티스트 위한 프로그램 연동하여 개발 제작 환경 개선하기
[IGC 2016] 엔씨소프트 홍상범 - 3D아티스트 위한 프로그램 연동하여 개발 제작 환경 개선하기
 
취미로 엔진 만들기
취미로 엔진 만들기취미로 엔진 만들기
취미로 엔진 만들기
 
만능 개발자를 위한 아틀리에 시스템
만능 개발자를 위한 아틀리에 시스템만능 개발자를 위한 아틀리에 시스템
만능 개발자를 위한 아틀리에 시스템
 
[0611 박민근] 신입 게임 개발자가 알아야 할 것들
[0611 박민근] 신입 게임 개발자가 알아야 할 것들[0611 박민근] 신입 게임 개발자가 알아야 할 것들
[0611 박민근] 신입 게임 개발자가 알아야 할 것들
 
06_게임엔진구성
06_게임엔진구성06_게임엔진구성
06_게임엔진구성
 
[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기
[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기
[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기
 
MMORPG게임엔진의 현재와미래 by 장언일
MMORPG게임엔진의 현재와미래 by 장언일MMORPG게임엔진의 현재와미래 by 장언일
MMORPG게임엔진의 현재와미래 by 장언일
 
리얼타임 환경에서 쉐이더 프로그래밍을 통한 룩디벨롭과 특수효과
리얼타임 환경에서 쉐이더 프로그래밍을 통한 룩디벨롭과 특수효과리얼타임 환경에서 쉐이더 프로그래밍을 통한 룩디벨롭과 특수효과
리얼타임 환경에서 쉐이더 프로그래밍을 통한 룩디벨롭과 특수효과
 
[1127 박민근] 일 잘하는 게임프로그래머 되기
[1127 박민근] 일 잘하는 게임프로그래머 되기[1127 박민근] 일 잘하는 게임프로그래머 되기
[1127 박민근] 일 잘하는 게임프로그래머 되기
 
Kgc2014 jplee allegorithmic
Kgc2014 jplee allegorithmicKgc2014 jplee allegorithmic
Kgc2014 jplee allegorithmic
 
Ux Camp Seoul 2014 - 레고에서 발견하는 좋은 제품의 사소함
Ux Camp Seoul 2014 - 레고에서 발견하는 좋은 제품의 사소함Ux Camp Seoul 2014 - 레고에서 발견하는 좋은 제품의 사소함
Ux Camp Seoul 2014 - 레고에서 발견하는 좋은 제품의 사소함
 
학부모.교사대상 Sw교육 세미나
학부모.교사대상 Sw교육 세미나 학부모.교사대상 Sw교육 세미나
학부모.교사대상 Sw교육 세미나
 
[페차쿠차] 신입 게임 개발자 상식사전
[페차쿠차] 신입 게임 개발자 상식사전[페차쿠차] 신입 게임 개발자 상식사전
[페차쿠차] 신입 게임 개발자 상식사전
 
Swimming Smith 개발기
Swimming Smith 개발기Swimming Smith 개발기
Swimming Smith 개발기
 
엔진, 툴, 그리고 스크립트
엔진, 툴, 그리고 스크립트엔진, 툴, 그리고 스크립트
엔진, 툴, 그리고 스크립트
 
아티스트에게 사랑받는 3DS Max 우버쉐이더
아티스트에게 사랑받는 3DS Max 우버쉐이더아티스트에게 사랑받는 3DS Max 우버쉐이더
아티스트에게 사랑받는 3DS Max 우버쉐이더
 

Destaque

GameMath-Chapter 01 벡터
GameMath-Chapter 01 벡터GameMath-Chapter 01 벡터
GameMath-Chapter 01 벡터
Mark Choi
 
4.5부동소수점
4.5부동소수점4.5부동소수점
4.5부동소수점
JaeHong Park
 
GameMath-Chapter 13 발사체
GameMath-Chapter 13 발사체GameMath-Chapter 13 발사체
GameMath-Chapter 13 발사체
Mark Choi
 
Digital lighting and rendering
Digital lighting and renderingDigital lighting and rendering
Digital lighting and rendering
JaeHong Park
 
[C++ lab] 9. 디버깅 테크닉
[C++ lab] 9. 디버깅 테크닉[C++ lab] 9. 디버깅 테크닉
[C++ lab] 9. 디버깅 테크닉
MinGeun Park
 

Destaque (20)

인공지능과 게임
인공지능과 게임인공지능과 게임
인공지능과 게임
 
또 다른 지구를 찾아라
또 다른 지구를 찾아라 또 다른 지구를 찾아라
또 다른 지구를 찾아라
 
ICON 2011 Introduction to OpenGL ES
ICON 2011 Introduction to OpenGL ESICON 2011 Introduction to OpenGL ES
ICON 2011 Introduction to OpenGL ES
 
지구 온난화는 사실인가 (김성완 2015.9.6)
지구 온난화는 사실인가 (김성완 2015.9.6)지구 온난화는 사실인가 (김성완 2015.9.6)
지구 온난화는 사실인가 (김성완 2015.9.6)
 
Ccx03.cocos builder
Ccx03.cocos builderCcx03.cocos builder
Ccx03.cocos builder
 
Dll파일 호출
Dll파일 호출Dll파일 호출
Dll파일 호출
 
Cocos2d x a to z (상)
Cocos2d x a to z (상)Cocos2d x a to z (상)
Cocos2d x a to z (상)
 
GameMath-Chapter 01 벡터
GameMath-Chapter 01 벡터GameMath-Chapter 01 벡터
GameMath-Chapter 01 벡터
 
Dom 생성과정
Dom 생성과정Dom 생성과정
Dom 생성과정
 
게임 개발자로서의 가치 창출
게임 개발자로서의 가치 창출게임 개발자로서의 가치 창출
게임 개발자로서의 가치 창출
 
4.5부동소수점
4.5부동소수점4.5부동소수점
4.5부동소수점
 
C# 뉴비를 위한 맛보기 2
C# 뉴비를 위한 맛보기 2C# 뉴비를 위한 맛보기 2
C# 뉴비를 위한 맛보기 2
 
[NDC14] 파워포인트로 그래픽 리소스 만들기
[NDC14] 파워포인트로 그래픽 리소스 만들기[NDC14] 파워포인트로 그래픽 리소스 만들기
[NDC14] 파워포인트로 그래픽 리소스 만들기
 
투영 공식
투영 공식투영 공식
투영 공식
 
3D Engine (ICON 2007)
3D Engine (ICON 2007)3D Engine (ICON 2007)
3D Engine (ICON 2007)
 
Silverlight vs flash
Silverlight vs flashSilverlight vs flash
Silverlight vs flash
 
Chapter 2, 선형 변환과 행렬 1/2
Chapter 2, 선형 변환과 행렬 1/2Chapter 2, 선형 변환과 행렬 1/2
Chapter 2, 선형 변환과 행렬 1/2
 
GameMath-Chapter 13 발사체
GameMath-Chapter 13 발사체GameMath-Chapter 13 발사체
GameMath-Chapter 13 발사체
 
Digital lighting and rendering
Digital lighting and renderingDigital lighting and rendering
Digital lighting and rendering
 
[C++ lab] 9. 디버깅 테크닉
[C++ lab] 9. 디버깅 테크닉[C++ lab] 9. 디버깅 테크닉
[C++ lab] 9. 디버깅 테크닉
 

Semelhante a KGC 2007 소프트웨어 렌더러 개발

모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
funmeate
 
Direct3d overview
Direct3d overviewDirect3d overview
Direct3d overview
문익 장
 
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
devCAT Studio, NEXON
 
[0602 박민근] direct2 d
[0602 박민근] direct2 d[0602 박민근] direct2 d
[0602 박민근] direct2 d
MinGeun Park
 
[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading
MinGeun Park
 

Semelhante a KGC 2007 소프트웨어 렌더러 개발 (20)

20140514 team blender_v01 (Korean)
20140514 team blender_v01 (Korean)20140514 team blender_v01 (Korean)
20140514 team blender_v01 (Korean)
 
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
 
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
 
Introduction to DirectX 12 Programming , Ver 1.5
Introduction to DirectX 12 Programming , Ver 1.5Introduction to DirectX 12 Programming , Ver 1.5
Introduction to DirectX 12 Programming , Ver 1.5
 
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
 
Ndc12 이창희 render_pipeline
Ndc12 이창희 render_pipelineNdc12 이창희 render_pipeline
Ndc12 이창희 render_pipeline
 
프론트엔드 개발자를 위한 Layer Model
프론트엔드 개발자를 위한 Layer Model프론트엔드 개발자를 위한 Layer Model
프론트엔드 개발자를 위한 Layer Model
 
Direct3d overview
Direct3d overviewDirect3d overview
Direct3d overview
 
[KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록 [KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록
 
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
 
진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전
진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전
진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전
 
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
 
WebGL 20150428
WebGL 20150428WebGL 20150428
WebGL 20150428
 
Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .
 
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
 
[1002 조진현]unity3d 소개
[1002 조진현]unity3d 소개[1002 조진현]unity3d 소개
[1002 조진현]unity3d 소개
 
[0602 박민근] direct2 d
[0602 박민근] direct2 d[0602 박민근] direct2 d
[0602 박민근] direct2 d
 
[KGC2014] DX9에서DX11로의이행경험공유
[KGC2014] DX9에서DX11로의이행경험공유[KGC2014] DX9에서DX11로의이행경험공유
[KGC2014] DX9에서DX11로의이행경험공유
 
『DirectX 12를 이용한 3D 게임 프로그래밍 입문』 - 맛보기
『DirectX 12를 이용한 3D 게임 프로그래밍 입문』 - 맛보기『DirectX 12를 이용한 3D 게임 프로그래밍 입문』 - 맛보기
『DirectX 12를 이용한 3D 게임 프로그래밍 입문』 - 맛보기
 
[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading
 

Mais de SeongWan Kim

적응광학 Adaptive optics
적응광학 Adaptive optics적응광학 Adaptive optics
적응광학 Adaptive optics
SeongWan Kim
 

Mais de SeongWan Kim (10)

딥러닝에 다가가기 (Ai 스쿨 2017)
딥러닝에 다가가기 (Ai 스쿨 2017)딥러닝에 다가가기 (Ai 스쿨 2017)
딥러닝에 다가가기 (Ai 스쿨 2017)
 
ICON 2010 3D 게임에서 색차 방식의 3D 입체 영상 구현하기
ICON 2010 3D 게임에서 색차 방식의 3D 입체 영상 구현하기ICON 2010 3D 게임에서 색차 방식의 3D 입체 영상 구현하기
ICON 2010 3D 게임에서 색차 방식의 3D 입체 영상 구현하기
 
ICON 2009 게임을 위한 유체 동역학
ICON 2009 게임을 위한 유체 동역학ICON 2009 게임을 위한 유체 동역학
ICON 2009 게임을 위한 유체 동역학
 
Icon2008 실시간 레이트레이싱과 게임의 미래
Icon2008 실시간 레이트레이싱과 게임의 미래Icon2008 실시간 레이트레이싱과 게임의 미래
Icon2008 실시간 레이트레이싱과 게임의 미래
 
적응광학 Adaptive optics
적응광학 Adaptive optics적응광학 Adaptive optics
적응광학 Adaptive optics
 
우주 배경 복사와 우주 거대 구조
우주 배경 복사와 우주 거대 구조우주 배경 복사와 우주 거대 구조
우주 배경 복사와 우주 거대 구조
 
도시 열섬 현상
도시 열섬 현상도시 열섬 현상
도시 열섬 현상
 
SPH 기법을 이용한 2D 물 물리 엔진 개발
SPH 기법을 이용한 2D 물 물리 엔진 개발SPH 기법을 이용한 2D 물 물리 엔진 개발
SPH 기법을 이용한 2D 물 물리 엔진 개발
 
컴퓨터 시뮬레이션으로 확인해보는 특수상대성이론의 시각적 효과
컴퓨터 시뮬레이션으로 확인해보는 특수상대성이론의 시각적 효과컴퓨터 시뮬레이션으로 확인해보는 특수상대성이론의 시각적 효과
컴퓨터 시뮬레이션으로 확인해보는 특수상대성이론의 시각적 효과
 
Cocos2d x v3.0 무엇이 달라졌나? (20140426)
Cocos2d x v3.0 무엇이 달라졌나? (20140426)Cocos2d x v3.0 무엇이 달라졌나? (20140426)
Cocos2d x v3.0 무엇이 달라졌나? (20140426)
 

KGC 2007 소프트웨어 렌더러 개발

  • 2.  소프트웨어 렌더러란 ?  소프트웨어 렌더러의 필요성  소프트웨어 렌더러의 교육적 가치  소프트웨어 렌더러 개발의 어려움  렌더링 파이프라인 구성  렌더러의 최적화  상용 소프트웨어 렌더러
  • 3. Software Renderer ?  이제는 시대에 뒤떨어진 잊혀진 기술인가 ?  적어도 실무적으로는 이제 불필요한 기술이다 ?  여전히 가속카드 (GPU) 가 없는 환경이 있다 . ◦ 주로 모바일 환경  H/W 에 내장될 알고리즘으로 여전히 필요하다 .
  • 6. “Software” 의 정의  3D 그래픽 카드의 GPU 에서 실행되는 Shader Program 은 그럼 소프트웨어가 아닌가 ?  CPU 만 이용해서 처리  S/W 의 정의 ? ◦ CPU 에서 실행되는 알고리즘
  • 9. CPU (AMD 64 Athlon)
  • 10. CPU (AMD 64 Athlon X2)
  • 11.  실사같은 3D 영상을 실시간으로 생성할 수 있 는 고성능의 3D 가속 카드가 보편화된 요즘에 는 모바일 기기처럼 특수한 환경이 아니라면 소 프트웨어 렌더러가 필요한 경우가 거의 없다 .  하지만 몇가지 이유로 여전히 필요하다 .
  • 12. • 실무적으로 사용하지 않는다고 해서 필요 없게 된 기술은 아니다 . • 소프트웨어 렌더링 기술은 여전히 교육적 가치로 서 그 존재 의미가 있다 . • 3D 가속카드 환경하에서도 3D 렌더러의 최적화를 위해서는 렌더링 파이프라인의 구성이나 동작 원 리를 잘 이해할 필요가 있다 . • 그 이해를 위한 가장 좋은 방법이 직접 소프트웨 어 렌더러를 구현해 보는 것이다 . • 결국 셰이더 프로그래밍에도 큰 도움이 된다 .
  • 13.  렌더링의 전 과정을 잘 알고 있어야 한다 . ◦ 사실 제대로 알기가 쉽지 않다 .  저수준 프로그래밍을 요구한다 . ◦ 어셈블리 프로그래밍이 종종 필요하다 .  참고할 책이나 자료가 별로 많지 않다 . ◦ 책은 대개 절판된 지 오래이다 . ◦ 종종 제대로 문서화 되지 않은 세밀한 코딩이 필요하 다 .  빠른 Perspective Correction  Sub-Pixel Accuracy  Sub-Texel Accuracy
  • 15.
  • 18.  렌더링 파이프라인에 대한 충분한 이해가 필요 하다 . ◦ 알고리즘 수준의 최적화 ◦ http://www.cbloom.com/3d/techdocs/pipeline.txt  저수준 프로그래밍 지식도 필요하다 . ◦ CPU, 메모리 ◦ 어셈블리 최적화 ◦ MMX, SSE, SSE2 (SIMD)
  • 19.  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
  • 20.  Michael Abrash  Optimizing Pixomatic for x86 Processors ◦ http://www.ddj.com/architect/184405765 ◦ http://www.ddj.com/184405807 ◦ http://www.ddj.com/184405848  Quake 엔진 개발 참여
  • 21. SwiftShader  Nicolas Capens  Advanced Rasterization  http://www.devmaster.net/codespotlight/show.php ?id=17  Chris Hecker  Perspective Texture Mapping  http://chrishecker.com/Miscellaneous_Technical_A rticles#Perspective_Texture_Mapping
  • 22. g-Matrix 3d Neo  http://www.g-matrix.pe.kr
  • 23. Q & A  질문하세요 !!!