Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
DirectX 9를 이용한 3D
GAME 프로그래밍 입문
책 요약정리
- 작성자: 황대영
- 수정일자: 2016.04.10
목차
1. 저자
2. 역자 / 감수자
3. 책 소개
4. 요약정리 기준
5. Direct3D 초기화
6. 렌더링 파이프라인
7. Direct3D에서의 드로잉
8. 컬러
9. 조명
10. 텍스처링
11. 블렌딩
12. 스...
저자
Frank D. Luna
● Frank Luna is a programmer for Hero Interactive.
● He has been programming interactive 3D graphics for ...
역자 / 감수자
역자 - 최현호
● 프리랜서 IT 전문 번역가
● [게임 프로그래머를 위한 C++], [게임 디자인 이론과 실제], [Professional 크리
스탈 리포트 닷넷], [비주얼 베이직 프로그래머를 위한 ...
책 소개
● 책 제목: DirectX 9를 이용한 3D GAME 프로그래밍 입문
● 출판사: 정보문화사
● 출간일: 2004년 02월 16일
http://www.yes24.com/24/goods/436671?scode=...
요약정리 기준
1. 이론 위주
2. 수학식 생략
3. 코드 생략
4. 번역된 의미를 최대한 잘 전달하기 위해 중요한 문장 그대로 가져왔음
1장 Direct3D 초기화
1. Direct3D 개요
a. Direct3D는 3D 가속 하드웨어를 이용해 3D 세계를 표현할 수 있도록 해주는 저수준 그래픽
API
b. HAL: Hardware Abstractioin...
1장 Direct3D 초기화
1. 메모리 풀
a. D3DPOOL_DEFAULT
b. D3DPOOL_MANAGED
c. D3DPOOL_SYSTEMMEM
d. D3DPOOL_SCRATCH
2. 스왑 체인과 페이지 플리핑
a...
1장 Direct3D 초기화
1. 버텍스 프로세싱
a. 버텍스는 3D 기하물체를 구성하는 기본 단위
b. 소프트웨어 버텍스 프로세싱이나 하드웨어 버텍스 프로세싱
c. 그래픽 카드가 하드웨어 버텍스 프로세싱을 지원한다는 ...
2장 렌더링 파이프라인
1. 모델 표현
a. 장면 scene 은 물체나 모델의 모음
b. 다각형 polygon
c. 기본형 primitive
d. 두 개의 변이 만나는 지점을 버텍스
e. 버텍스 포맷
i. 버텍스 구조체...
2장 렌더링 파이프라인
1. 가상 카메라
a. 관찰자가 볼 수 있는 세계의 부분을 지정
b. 2D 이미지를 생성하기 위해 세계의 어떤 부분이 필요한지 결정
c. 세계 내에 위치하며 보여질 공간의 부피를 정의
d. 절두체...
2장 렌더링 파이프라인
1. 로컬 스페이스
a. 모델링 스페이스라고도 불리는 로컬 스페이스는 우리가 물체의 삼각형 리스트를 정의하는 데
이용하는 좌표 시스템
2. 월드 스페이스
a. 로컬 스페이스의 물체들은 이동, 회전...
2장 렌더링 파이프라인
1. 조명
a. 광원은 물체에 명암을 추가하여 장면에 사실감을 더해준다.
2. 클리핑
a. 시야 볼륨 외부의 기하물체를 추려내야 함
3. 투영
a. 3D 장면의 2D 표현을 얻는 과정
b. n 차...
2장 렌더링 파이프라인
1. 래스터라이즈
a. 래스터라이즈의 결과물은 모니터에 바로 디스플레이할 수 있는 2D 이미지가 됨
3장 Direct3D에서의 드로잉
1. 버텍스/인덱스 버퍼
a. 버텍스 버퍼는 버텍스 데이터를 보관하는 연속적인 메모리 덩어리
b. 인덱스 버퍼는 비슷하게 인덱스 데이터를 보관하는 연속적인 메모리 덩어리
c. 배열이 아...
3장 Direct3D에서의 드로잉
1. 렌더 상태
2. 드로잉 준비
3. 버텍스/인덱스 버퍼를 이용한 드로잉
a. IDirect3DDevice9::DrawPrimitive
b. IDirect3DDevice9::DrawI...
4장 컬러
1. 컬러 표현
a. Red, Green, Blue의 양을 지정하여 컬러를 표현
2. 버텍스 컬러
3. 셰이딩
a. Flat shading - 기본형의 첫번째 버텍스에 지정된 컬러를 이용해 일관적으로 기본형의...
5장 조명
1. 조명의 요소
a. 환경광 Ambient Light - 다른 표면에 반사되어 전반적인 장면을 밝게 하는 빛을 모델링
b. 난반사광 Diffuse Light - 특정한 방향으로 진행되며, 표면에 닿으면 모든...
5장 조명
1. 광원
a. 점 광원 point light - 월드 스페이스 내에 위치를 가지며 모든 방향으로 빛을 발산
b. 방향성 광원 directional light - 방향성 광원은 위치는 갖지 않지만 지정된 방향...
6장 텍스처링
1. 텍스처 매핑
a. 이미지 데이터를 삼각형에 입힐 수 있게 하는 테크닉
b. 장면의 세밀함과 사실감을 극적으로 높여줌
2. 텍스처 좌표
a. u, v 좌표 시스템은 텍셀이라 불리는 텍스처의 요소를 표현...
6장 텍스처링
1. 근접점 샘플링 Nearest point sampling
a. 디폴트 필터링 방식이며 가장 떨어지는 품질의 결과를 만들어내지만 또한 가장 빠른 속도를
가짐
2. 선형 샘플링 Linear filterin...
6장 텍스처링
1. Direct3D에서 밉맵 이용하기
a. 밉맵의 구성과 이용에 필요한 대부분의 과정은 자동으로 처리
b. 어드레스 모드
i. wrap, border color, clamp, mirror의 네 가지 종류
7장 블렌딩
1. 블렌딩
a. 래스터라이즈 과정에 있는 픽셀과 같은 위치에 있는 이전의 픽셀을 서로 섞는 테크닉
2. 블렌딩 방정식
a. 현재 계산되고 있는 픽셀(원본 픽셀)을 앞서 쓰여진 픽셀 값(목적지 픽셀)과 결합...
8장 스텐실
1. 스텐실 버퍼
a. 후면 버퍼의 일정 부분이 렌더링되는 것을 막는 스텐실 효과에 이용됨
b. 거울을 표현하고자 한다면 거울 평면에 특정 물체만을 반사하도록
2. 스텐실 버퍼 이용하기
a. 스텐실 버퍼 요...
10장 메쉬 파트 I
1. 기하 정보
a. ID3DXBaseMesh 인터페이스는 메쉬의 버텍스를 보관하는 버텍스 버퍼와 이들 버텍스가 어떻
게 메쉬의 삼각형들을 구성하는가를 정의하는 인덱스 버퍼를 포함한다.
2. 서브셋...
10장 메쉬 파트
1. 근접 정보
a. 최적화와 같은 특수한 메쉬 처리를 위해서는 주어진 삼각형과 인접한 다른 삼각형에 대한 정
보가 필요하다.
b. 메쉬의 인접 배열은 바로 이러한 정보를 보관
2. 복제
3. 메쉬 만...
11장 메쉬 파트 II
1. ID3DXBuffer
a. D3DX가 연속적인 메모리 블록에 데이터를 저장하기 위해 이용하는 범용 데이터 구조체
2. XFiles
a. XFile이 가진 장점은 DirectX가 이 파일 포맷...
11장 메쉬 파트 II
1. 경계 볼륨
a. 가장 자주 이용되는 경계 볼륨의 예로는 구체와 상자
b. 그 외 원기둥, 타원면, 마름모꼴, 캡슐형 등
c. 응용 분야는 다양하지만 그 중에서도 가시성 테스트와 충돌 테스트
12장 유연한 카메라 클래스 만들기
1. 방위 벡터 orientation vector
a. 우향, 상향, 전방의 세 벡터는 월드 내엣 카메라의 방향을 정의하기 때문에 이 세 개의 벡터를
묶었음
b. 반드시 정직교 ort...
13장 기본적인 지형 렌더링
1. 지형 메쉬
a. 격자 내에 각 버텍스에 높이를 부여하면 산에서 계곡으로의 변환이나 자연스러운 지형 등과
같은 부드러운 전환을 표현할 수 있다.
2. 높이맵 heightmap
a. 각각의...
13장 기본적인 지형 렌더링
1. 조명을 직접 계산하는 이유
a. 버텍스 법선을 저장하지 않아도 되므로 메모리 절약
b. 지형은 정적이며 조명을 움직이지도 않을 것이므로 조명을 미리 계산
2. 지형 위를 “걷기”
14장 파티클 시스템
1. 파티클
a. 신비로운 자연 현상의 많은 부분이 비슷하게 동작하는 무수히 작은 입자들로 표현된다.
b. 예를 들어 눈이 내리는 장면, 불꽃놀이의 불꽃, 기관총에서 발사되는 총알 등
2. 파티클과...
15장 픽킹
1. 픽킹
a. 스크린 좌표를 이용해 선택한 물체를 알아내는 테크닉
b. 픽킹 광선을 계산한 다음에는 장면 내의 각 물체를 대상으로 광선과 교차하는지를 테스트
c. 예: 적을 클릭하여 무기를 발사하거나 아이...
16장 고수준 셰이딩 언어 소개
1. 고수준 셰이딩 언어 HLSL: High-Level Shading Language
a. 버텍스와 픽셀 셰이더는 고정 기능 파이프라인을 대체하는 작은 커스텀 프로그램이며 그래픽
카드의 ...
17장 버텍스 셰이더의 소개
1. 버텍스 셰이더
a. 그래픽 카드의 GPU에서 실행되는 프로그램이며 고정 기능 파이프라인의 변환과 조명 단계를
대체하는 역할을 담당
b. 버텍스 셰이더로 입력되는 버텍스가 지역 좌표를 가...
18장 픽셀 셰이더의 소개
1. 픽셀 셰이더
a. 고정 기능 파이프라인의 멀티 텍스처링 단계를 대체하며,
b. 각각의 픽셀을 직접 처리하고 픽셀의 텍스처 좌표에 접근하는 능력을 제공
2. 멀티 텍스처링
a. 다수의 텍스...
감사합니다.
Upcoming SlideShare
Loading in …5
×

DirectX 9를 이용한 3D GAME 프로그래밍 입문 책 요약정리

6,666 views

Published on

책 [DirectX 9를 이용한 3D GAME 프로그래밍 입문] 요약 정리하였습니다.
저자: Frank D. Luna
역자: 최현호
출판사: 정보문화사
출간일: 2004년 02월 16일

Published in: Software
  • Be the first to comment

DirectX 9를 이용한 3D GAME 프로그래밍 입문 책 요약정리

  1. 1. DirectX 9를 이용한 3D GAME 프로그래밍 입문 책 요약정리 - 작성자: 황대영 - 수정일자: 2016.04.10
  2. 2. 목차 1. 저자 2. 역자 / 감수자 3. 책 소개 4. 요약정리 기준 5. Direct3D 초기화 6. 렌더링 파이프라인 7. Direct3D에서의 드로잉 8. 컬러 9. 조명 10. 텍스처링 11. 블렌딩 12. 스텐실 1. 글꼴 (생략) 2. 메쉬 파트 I 3. 매쉬 파트 II 4. 유연한 카메라 클래스 만들기 5. 기본적인 지형 렌더링 6. 파티클 시스템 7. 픽킹 8. 고수준 셰이딩 언어 소개 9. 버텍스 셰이더의 소개 10. 픽셀 셰이더의 소개 11. 이펙트 프레임워크 (생략)
  3. 3. 저자 Frank D. Luna ● Frank Luna is a programmer for Hero Interactive. ● He has been programming interactive 3D graphics for more than five years, and has been using DirectX since its fifth iteration. ● Technical editor Rod Lopez is a senior programmer at Digital Illusions CE and has been developing games full time for more than seven years.
  4. 4. 역자 / 감수자 역자 - 최현호 ● 프리랜서 IT 전문 번역가 ● [게임 프로그래머를 위한 C++], [게임 디자인 이론과 실제], [Professional 크리 스탈 리포트 닷넷], [비주얼 베이직 프로그래머를 위한 C#], [Beginning Oracle Programming], [Beginning Visual Basic .NET] 등 다수의 전문서적들을 번역 ● http://choihyunho.com 감수자 - 김성완
  5. 5. 책 소개 ● 책 제목: DirectX 9를 이용한 3D GAME 프로그래밍 입문 ● 출판사: 정보문화사 ● 출간일: 2004년 02월 16일 http://www.yes24.com/24/goods/436671?scode=032&OzSrank=11
  6. 6. 요약정리 기준 1. 이론 위주 2. 수학식 생략 3. 코드 생략 4. 번역된 의미를 최대한 잘 전달하기 위해 중요한 문장 그대로 가져왔음
  7. 7. 1장 Direct3D 초기화 1. Direct3D 개요 a. Direct3D는 3D 가속 하드웨어를 이용해 3D 세계를 표현할 수 있도록 해주는 저수준 그래픽 API b. HAL: Hardware Abstractioin Layer - Direct3D와 그래픽 장치 사이에는 존재하는 중간 단계 c. 장치 제조 사에서는 자신들의 장치가 지원하는 모든 기능을 사용하여 HAL을 구현 2. COM a. 컴포넌트 객체 모델(COM)은 DirectX를 프로그래밍 언어에 독립적으로 만들어주고 하위 호환 성을 갖출 수 있게 하는 기술 b. COM 인터페이스는 접두어로 대문자 I를 가진다. 3. 약간의 준비 a. 표면 surface - Direct3D가 주로 2D 이미지 데이터를 보관하는 데 이용하는 픽셀의 행렬 b. 멀티 샘플링 Multisampling - 픽셀 매트릭스로 이미지를 표현할 때 나타나는 거친 이미지를 부 드럽게 만드는 데 이용되는 기술, 안티알리아싱이 가장 일반적인 용도
  8. 8. 1장 Direct3D 초기화 1. 메모리 풀 a. D3DPOOL_DEFAULT b. D3DPOOL_MANAGED c. D3DPOOL_SYSTEMMEM d. D3DPOOL_SCRATCH 2. 스왑 체인과 페이지 플리핑 a. 스왑 체인 - 보통 두 개나 세 개의 표면을 하나의 컬렉션으로 관리 i. 후면 버퍼를 렌더링한다. ii. 후면 버퍼를 시연한다. iii. i번으로 돌아간다. 3. 깊이 버퍼 depth buffer a. 이미지 데이터가 아닌 특정 픽셀의 깊이 정보를 포함하는 표면 b. 물체의 픽셀이 다른 픽셀을 가리는지의 여부를 관리하기 위해 깊이 버퍼링 혹은 z-버퍼링이라 는 테크닉 이용
  9. 9. 1장 Direct3D 초기화 1. 버텍스 프로세싱 a. 버텍스는 3D 기하물체를 구성하는 기본 단위 b. 소프트웨어 버텍스 프로세싱이나 하드웨어 버텍스 프로세싱 c. 그래픽 카드가 하드웨어 버텍스 프로세싱을 지원한다는 것은 그래픽 카드가 변환과 조명 계산 을 하드웨어적으로 처리할 수 있다는 의미 2. 장치 특성 a. DevCaps는 장치 특성 device capabilities 3. Direct3D 초기화 a. IDirect3D9 인터페이스 얻기 b. 하드웨어 버텍스 프로세싱 확인하기 c. D3DPRESENT_PARAMETERS 구조체 채우기 d. IDirect3DDevice9 인터페이스 만들기
  10. 10. 2장 렌더링 파이프라인 1. 모델 표현 a. 장면 scene 은 물체나 모델의 모음 b. 다각형 polygon c. 기본형 primitive d. 두 개의 변이 만나는 지점을 버텍스 e. 버텍스 포맷 i. 버텍스 구조체를 완성한 다음에는 유연한 버텍스 포맷 (FVF: flexible vertex format) 플래 그 조합을 이용해 버텍스가 포맷팅되는 방법을 지정해야 함 f. 삼각형 i. 3D 물체의 기본 구성 요소 ii. 삼각형의 버텍스를 지정하는 순서는 매우 중요하며 이를 두르기 순서 winding order g. 인덱스 i. 3D 물체를 구성하는 삼각형들은 동일한 버텍스들을 공유한 경우가 많다. ii. 인덱스 리스트는 삼각형을 구성하기 위한 버텍스 리스트로의 인덱스 값을 포함
  11. 11. 2장 렌더링 파이프라인 1. 가상 카메라 a. 관찰자가 볼 수 있는 세계의 부분을 지정 b. 2D 이미지를 생성하기 위해 세계의 어떤 부분이 필요한지 결정 c. 세계 내에 위치하며 보여질 공간의 부피를 정의 d. 절두체 frustrum - 공간의 부피이며, 시야각과 가까운 평면, 먼 평면에 의해 정의 됨 e. 클리핑 clipping - 이 공간에 포함되지 않는 물체들은 보여지지 않으며 이후의 처리에서 제외 처리 f. 투영 윈도우 - 3D 장면의 2D 표현을 만드는 데 이용될 절두체 내부에 있는 3D 기하의 2D 영역 2. 렌더링 파이프라인 a. 기하학적으로 3D 장면을 구성하고 가상 카메라를 설정한 뒤에는 모니터에 2D 표현을 만들어 내는 과정을 수행해야 하는데 이와 같은 일련의 과정 => 렌더링 파이프라인 b. 로컬 스페이스 => 월드 스페이스 => 뷰 스페이스 => 후면 추려내기 => 조명 => 클리핑 => 투 영 => 뷰포트 => 래스터라이즈
  12. 12. 2장 렌더링 파이프라인 1. 로컬 스페이스 a. 모델링 스페이스라고도 불리는 로컬 스페이스는 우리가 물체의 삼각형 리스트를 정의하는 데 이용하는 좌표 시스템 2. 월드 스페이스 a. 로컬 스페이스의 물체들은 이동, 회전, 크기 변형 등을 포함하는 월드 변환이라는 작업을 거쳐 월드 스페이스로 옮겨진다 3. 뷰 스페이스 a. 월드에 대한 관점이 바뀌지 않도록 하기 위해서는 카메라에 맞추어 월드 내의 모든 기하물체 를 변환 4. 후면 추려내기 backface culling a. 카메라는 절대로 폴리고의 후면을 보지 못한다. b. 전면을 향하고 있는 폴리곤들이 뒤쪽의 후면 폴리곤들을 가리고 있음을 알 수 있다. c. 두르기 순서의 시계 반대 방향에 지정된 버텍스를 가진 폴리곤을 후면 폴리곤으로 취급한다.
  13. 13. 2장 렌더링 파이프라인 1. 조명 a. 광원은 물체에 명암을 추가하여 장면에 사실감을 더해준다. 2. 클리핑 a. 시야 볼륨 외부의 기하물체를 추려내야 함 3. 투영 a. 3D 장면의 2D 표현을 얻는 과정 b. n 차원에서 n-1 차원을 얻는 과정을 투영 projection c. 원근 투영 perspective projection - 원근법을 이용하여 기하물체를 투사 d. 투영 변환은 우리의 시야 볼륨(절두체)을 정의하고, 절두체 내의 기하물체를 투영 윈도우에 투 영하는 과정을 담당 e. 종횡비 = 화면 너비 / 화면 높이 4. 뷰포트 변환 a. 프로젝트 윈도우의 좌표를 뷰포트라 불리는 화면의 직사각형으로 변환하는 과정
  14. 14. 2장 렌더링 파이프라인 1. 래스터라이즈 a. 래스터라이즈의 결과물은 모니터에 바로 디스플레이할 수 있는 2D 이미지가 됨
  15. 15. 3장 Direct3D에서의 드로잉 1. 버텍스/인덱스 버퍼 a. 버텍스 버퍼는 버텍스 데이터를 보관하는 연속적인 메모리 덩어리 b. 인덱스 버퍼는 비슷하게 인덱스 데이터를 보관하는 연속적인 메모리 덩어리 c. 배열이 아닌 버퍼에 데이터를 보관하는 이유는 버퍼를 비디오 메모리에 저장할 수 있기 때문 d. 버텍스와 인덱스 버퍼 만들기 i. 비디오 메모리로의 접근 속도가 비교적 느리기 때문에 정적 버퍼의 메모리에서 메모리 를 일고 쓰는 작업 또한 느려지게 된다. 이런 특성 때문에 정적 버퍼는 정적인 데이터를 보관하는데 적합 ii. 버퍼의 내용을 자주 갱신해야 하는 경우에는 동적 버퍼 이용 iii. 비디오 메모리나 AGP 메모리에서의 읽기 작업은 상당히 느리므로, 런타임시에 기하정 보를 자주 읽어들여야 한다면 지역 시스템 메모리에 복사본을 남겨두고 이를 읽어들이 는 것이 바람직 e. 버퍼 메모리에 접근하기 f. 번텍스 버퍼와 인덱스 버퍼에 대한 정보 얻기
  16. 16. 3장 Direct3D에서의 드로잉 1. 렌더 상태 2. 드로잉 준비 3. 버텍스/인덱스 버퍼를 이용한 드로잉 a. IDirect3DDevice9::DrawPrimitive b. IDirect3DDevice9::DrawIndexedPrimitive 4. 장면의 시작/끝 5. D3DX 기하 물체
  17. 17. 4장 컬러 1. 컬러 표현 a. Red, Green, Blue의 양을 지정하여 컬러를 표현 2. 버텍스 컬러 3. 셰이딩 a. Flat shading - 기본형의 첫번째 버텍스에 지정된 컬러를 이용해 일관적으로 기본형의 픽셀을 채움 b. Gouraud shading (스무스 셰이딩) - 부드러운 셰이딩 방식이며, 기본형의 면을 따라 보간된 컬 러가 버텍스에 입혀짐
  18. 18. 5장 조명 1. 조명의 요소 a. 환경광 Ambient Light - 다른 표면에 반사되어 전반적인 장면을 밝게 하는 빛을 모델링 b. 난반사광 Diffuse Light - 특정한 방향으로 진행되며, 표면에 닿으면 모든 방향으로 동일하게 반 사됨 c. 정반사광 Specular Light - 특정한 방향으로 진행되며, 표면에 닿으면 한 방향으로 강하게 반사 하여 특정한 각도에서만 관찰할 수 있음 2. 재질 a. 현실에서 보는 물체의 컬러는 물체가 반사하는 빛의 컬러에 의해 결정 3. 버텍스 법선 a. 면 법선 face noral 은 다각형이 바라보는 방향을 표시하는 벡터 b. 버텍스 법선은 기본적으로 각각의 폴리곤에 따른 법선이 아니라 폴리곤을 구성하는 벡터에 대 한 법선을 정의 c. 표면에 닿는 빛의 각도를 계산하기 위해 버텍스 법선을 필요
  19. 19. 5장 조명 1. 광원 a. 점 광원 point light - 월드 스페이스 내에 위치를 가지며 모든 방향으로 빛을 발산 b. 방향성 광원 directional light - 방향성 광원은 위치는 갖지 않지만 지정된 방향으로 평행하게 빛을 발산 c. 스포트 광원 spot light - 손전등 빛과 비슷, 위치를 가지며 특정한 방향으로 원뿔 형태의 빛을 발산
  20. 20. 6장 텍스처링 1. 텍스처 매핑 a. 이미지 데이터를 삼각형에 입힐 수 있게 하는 테크닉 b. 장면의 세밀함과 사실감을 극적으로 높여줌 2. 텍스처 좌표 a. u, v 좌표 시스템은 텍셀이라 불리는 텍스처의 요소를 표현하는데 사용 b. 좌표 간격이 [0, 1]로 정규화 되어 있음 c. 다양한 크기의 텍스처를 Direct3D에 이용할 수 있게 끔 하기 위함 3. 텍스처의 작성과 활성화 a. 멀티 텍스처링 - Direct3D에서는 8개까지의 텍스처를 결합하여 좀 더 자세한 이미지를 만들어 낼 수 있다 4. 필터 a. 필터링을 통해 왜곡 현상을 줄이고 부드러운 이미지를 만들어 낼 수 있다 b.
  21. 21. 6장 텍스처링 1. 근접점 샘플링 Nearest point sampling a. 디폴트 필터링 방식이며 가장 떨어지는 품질의 결과를 만들어내지만 또한 가장 빠른 속도를 가짐 2. 선형 샘플링 Linear filtering a. 선형 필터링은 비교적 높은 품질의 결과물을 만들어내며 현재의 하드웨어 성능을 고려하면 실 행 속도 또한 빠른 편 3. 비등방성 필터링 Anisotropic filtering a. 가장 높은 품질의 결과물을 만들어내지만 실행 속도 또한 가장 느리다. 4. 밉맵 a. 텍스처의 크기를 급격하게 변경하는 것을 막는 테크닉으로 텍스처 밉맵 b. 디테일을 보존하면서 여러 개의 작은 해상도로 텍스처로 만드는 방식 c. 밉맵 필터 - D3DTEXF_NONE, D3DTEXF_POINT, D3DTEXF_LINEAR
  22. 22. 6장 텍스처링 1. Direct3D에서 밉맵 이용하기 a. 밉맵의 구성과 이용에 필요한 대부분의 과정은 자동으로 처리 b. 어드레스 모드 i. wrap, border color, clamp, mirror의 네 가지 종류
  23. 23. 7장 블렌딩 1. 블렌딩 a. 래스터라이즈 과정에 있는 픽셀과 같은 위치에 있는 이전의 픽셀을 서로 섞는 테크닉 2. 블렌딩 방정식 a. 현재 계산되고 있는 픽셀(원본 픽셀)을 앞서 쓰여진 픽셀 값(목적지 픽셀)과 결합하는 방식을 블렌딩 3. 블렌드 인수 4. 투명 a. 각 버텍스 컬러의 알파 성분은 컬러와 마찬가지로 삼각형의 면에 셰이드 되지만, 픽셀의 컬러 를 결정하는 것이 아니라 픽셀의 알파 성분에 영향을 줌 b. 알파 채널 i. 알파 채널은 알파 성분을 보관하기 위해 각 텍셀에 할당된 비트들 c. 알파 채널 원본 지정하기
  24. 24. 8장 스텐실 1. 스텐실 버퍼 a. 후면 버퍼의 일정 부분이 렌더링되는 것을 막는 스텐실 효과에 이용됨 b. 거울을 표현하고자 한다면 거울 평면에 특정 물체만을 반사하도록 2. 스텐실 버퍼 이용하기 a. 스텐실 버퍼 요청하기 b. 스텐실 테스트 i. (참조 & 매스크) 비교 연산자 (값 & 매스크) ii. 만약 식이 true로 평가되면 버퍼의 픽셀을 출력, iii. false로 평가되면 픽셀이 출력되는 것을 막는다. c. 스텐실 테스트 제어하기 d. 스텐실 버퍼 갱신하기 e. 스텐실 쓰기 매스크
  25. 25. 10장 메쉬 파트 I 1. 기하 정보 a. ID3DXBaseMesh 인터페이스는 메쉬의 버텍스를 보관하는 버텍스 버퍼와 이들 버텍스가 어떻 게 메쉬의 삼각형들을 구성하는가를 정의하는 인덱스 버퍼를 포함한다. 2. 서브셋과 속성 버퍼 a. 메쉬는 하나 이상의 서브셋으로 구성된다. b. 서브셋은 동일한 속성을 이용해 렌더링할 수 있는 메쉬 내 삼각형들의 그룹 c. 속성이란 재질, 텍스처, 렌더 상태 등을 의미 3. 드로잉 a. 전체 메쉬를 그리기 위해서는 메쉬의 모든 서브셋을 그려야 한다. 4. 최적화 a. 좀더 효과적으로 메쉬를 렌더링하기 위해서는 버텍스와 인덱스를 재구성하는 것이 좋다. 5. 속성 테이블 a. 일단 속성 테이블을 구성한 뒤에는 간단한 속성 테이블 검색만으로 특정한 서브셋 내의 모든 기하정보를 찾을 수 있게 되므로, 서브셋 렌더링의 효율이 극적으로 향상
  26. 26. 10장 메쉬 파트 1. 근접 정보 a. 최적화와 같은 특수한 메쉬 처리를 위해서는 주어진 삼각형과 인접한 다른 삼각형에 대한 정 보가 필요하다. b. 메쉬의 인접 배열은 바로 이러한 정보를 보관 2. 복제 3. 메쉬 만들기
  27. 27. 11장 메쉬 파트 II 1. ID3DXBuffer a. D3DX가 연속적인 메모리 블록에 데이터를 저장하기 위해 이용하는 범용 데이터 구조체 2. XFiles a. XFile이 가진 장점은 DirectX가 이 파일 포맷을 정의하고 있다 b. 3ds max, lightwave, maya와 같은 3D 모델러의 .X 변환기 포함 c. XFile 재질 i. XFile은 텍스처 데이터를 직접 포함하지 않으며 실제 텍스처 데이터를 포함하는 이미지 파일로의 파일명을 포함 d. 버텍스 법선 생성 i. 만약 법선 데이터가 없다면 조명을 위해 직접 버텍스 법선 데이터를 계산해내야 한다. 3. 프로그레시브 메쉬 a. 경계 상실 변환(ECT: edge collapse transformation) 시퀀스를 적용하여 메쉬를 단순화 b. 작동 원리는 텍스처에서 밉맵을 이용하는 것과 유사 c. 카메라와의 거리가 감소하면 메쉬의 세부를 더하고 거리가 증가하면 세부를 감소
  28. 28. 11장 메쉬 파트 II 1. 경계 볼륨 a. 가장 자주 이용되는 경계 볼륨의 예로는 구체와 상자 b. 그 외 원기둥, 타원면, 마름모꼴, 캡슐형 등 c. 응용 분야는 다양하지만 그 중에서도 가시성 테스트와 충돌 테스트
  29. 29. 12장 유연한 카메라 클래스 만들기 1. 방위 벡터 orientation vector a. 우향, 상향, 전방의 세 벡터는 월드 내엣 카메라의 방향을 정의하기 때문에 이 세 개의 벡터를 묶었음 b. 반드시 정직교 orthonormal 이어야 함 c. pitch - 우향 벡터를 기준으로 회전 d. yaw - 상향 벡터를 기준으로 회전 e. roll - 전방 벡터를 기준으로 회전 2. 구현 방법 a. 걷기, 옆걸음질, 날기 i. 간단히 위치 벡터에 우리가 이동하고자 하는 방향을 가리키는 벡터를 더하면 된다.
  30. 30. 13장 기본적인 지형 렌더링 1. 지형 메쉬 a. 격자 내에 각 버텍스에 높이를 부여하면 산에서 계곡으로의 변환이나 자연스러운 지형 등과 같은 부드러운 전환을 표현할 수 있다. 2. 높이맵 heightmap a. 각각의 항목이 지형 격자 내의 특정 버텍스의 높이와 대응되는 배열 b. 일반적으로 높이맵을 각 요소가 지형 격자 내의 각 버텍스와 일대일 대응관계를 가지는 행렬 3. 텍스처링 a. 절차적 방식 i. 먼저 “빈” 텍스처를 만들고 미리 정의된 인자를 바탕으로 코드에서 각 텍셀의 컬러를 계 산 b. 미리 만들어둔 텍스처 파일을 읽어들이고 이를 이용하는 방법 4. 조명 a. Direct3D가 아닌 직접 지형의 조명 계산
  31. 31. 13장 기본적인 지형 렌더링 1. 조명을 직접 계산하는 이유 a. 버텍스 법선을 저장하지 않아도 되므로 메모리 절약 b. 지형은 정적이며 조명을 움직이지도 않을 것이므로 조명을 미리 계산 2. 지형 위를 “걷기”
  32. 32. 14장 파티클 시스템 1. 파티클 a. 신비로운 자연 현상의 많은 부분이 비슷하게 동작하는 무수히 작은 입자들로 표현된다. b. 예를 들어 눈이 내리는 장면, 불꽃놀이의 불꽃, 기관총에서 발사되는 총알 등 2. 파티클과 포인트 스프라이트 a. 일반적인 포인트 기본형과는 달리 포인트 스프라이트는 텍스처 적용이 가능하고 크기를 변경 할 수 있으며, 하나의 포인트로 표현할 수 있다. b. 네 개의 버텍스를 필요로 하는 빌보드(사각형)와 비교하면 이는 상당한 성능과 메모리 상의 이 익을 기대할 수 있음 3. 파티클 시스템의 요소들 a. 파티클 시스템은 파티클들의 모임이며 파티클을 보여주고 관리하는 역할을 담당 b. 파티클의 크기나 파티클 원천의 위치, 파티클에 적용할 텍스처 등 시스템 내의 모든 파티클에 영향을 주는 전역 특성들을 관리 c. 파티클 갱신, 디스플레이, 소멸, 생성 등을 관장하는 역할
  33. 33. 15장 픽킹 1. 픽킹 a. 스크린 좌표를 이용해 선택한 물체를 알아내는 테크닉 b. 픽킹 광선을 계산한 다음에는 장면 내의 각 물체를 대상으로 광선과 교차하는지를 테스트 c. 예: 적을 클릭하여 무기를 발사하거나 아이템을 클릭하여 집는 동작을 취함 2. 스크린에서 투영창으로의 변환 3. 픽킹 광선의 계산 4. 광선의 변환 a. 광선 - 물체 교차 테스트를 위해서는 광선과 물체가 반드시 동일한 좌표 시스템 내에 위치해야 한다. 5. 광선 - 물체 교차 a. 경계 구체가 광선과 교차되는 물체를 사용자가 선택한 물체로 보는 것이다. b. 픽킹 광선이 다수의 물체와 교차될 수도 있는데, 이 경우에는 카메라와 가까운 물체가 선택된 다. 가까운 물체가 먼 물체를 가리기 때문이다.
  34. 34. 16장 고수준 셰이딩 언어 소개 1. 고수준 셰이딩 언어 HLSL: High-Level Shading Language a. 버텍스와 픽셀 셰이더는 고정 기능 파이프라인을 대체하는 작은 커스텀 프로그램이며 그래픽 카드의 GPU에서 실행된다. b. 구현 가능한 그래픽 효과의 범위가 엄청나게 넓어짐 c. HLSL - C/C++과 비슷함
  35. 35. 17장 버텍스 셰이더의 소개 1. 버텍스 셰이더 a. 그래픽 카드의 GPU에서 실행되는 프로그램이며 고정 기능 파이프라인의 변환과 조명 단계를 대체하는 역할을 담당 b. 버텍스 셰이더로 입력되는 버텍스가 지역 좌표를 가지며, 버텍스 셰이더는 조명(컬러)을 입힌 버텍스를 동종 클립 스페이스로 출력해야 한다.
  36. 36. 18장 픽셀 셰이더의 소개 1. 픽셀 셰이더 a. 고정 기능 파이프라인의 멀티 텍스처링 단계를 대체하며, b. 각각의 픽셀을 직접 처리하고 픽셀의 텍스처 좌표에 접근하는 능력을 제공 2. 멀티 텍스처링 a. 다수의 텍스처를 동시에 활성화하고 블렌드하여 원하는 효과를 만들어내는 기술 b. 정적인 기하물체를 위한 완전한 조명 엔진을 구현하는 데 자주 활용됨 3. HLSL의 내장 샘플러 객체는 특정한 텍스처/샘플러 상태를 식별한다. 샘플러 객체는 픽셀 셰이더 내에서 텍스처/샘플러의 상태를 참조하는 데 이용된다.
  37. 37. 감사합니다.

×