목차
1. DirectX 고수준 셰이딩 언이 HLSL에 대한 소개 / Craig Peeper ; Jason L. Mitchell
소개 ... 26
간단한 예제 ... 26
어셈블리 언어와 컴파일 타겟 ... 28
하드웨어에 대한 현실적 고려 ... 30
컴파일 실패 ... 30
커맨드라인 컴파일러 - fxc ... 31
언어의 기초 ... 32
키워드 ... 32
데이터 유형 ... 33
형 수정자(type modifier) ... 36
스토리지 클래스 수정자(storage class modifier) ... 37
초기화 ... 38
벡터로 작업하기 ... 38
생성자(constructor) ... 39
형 변환(type casting) ... 39
구조체(structure) ... 41
샘플러(sampler) ... 41
내장 함수 ... 43
수학 내장 함수 ... 43
텍스처 샘플링 내장 함수 ... 46
셰이더 입력 ... 48
uniform 입력 ... 49
varying 입력 ... 50
셰이더 출력 ... 52
셰이더의 적용 예 ... 55
최적화 ... 62
행렬 데이터형의 사용법 ... 63
정수 데이터형의 사용법 ... 64
조건 분기와 성능 ... 65
입력 데이터형 선언의 중요성 ... 67
정밀도 문제(logp, expp, lit) ... 67
ps_1_x 컴파일 타겟의 사용 ... 68
ps_1_x 타겟을 위한 전략 ... 73
D3DX Effect를 사용하여 엔진에 적용하기 ... 73
Effect 파일 ... 74
Effect API ... 78
D3DX Effect를 사용하지 않고 엔진에 적용하기 ... 80
상수 테이블 ... 81
SDK 업데이트 ... 82
결론 ... 83
감사의 말 ... 83
2. Vs_3_O 및 ps_3_O 셰이더 모델 소개 / Nicolas Thibieroz ; Krisfof Beets ; Aaron Burton
소개 ... 86
Vs_3_O과 ps_3_O의 일반적인 기능 ... 86
유연한 입ㆍ출력 선언 ... 86
조건자(Predication) ... 87
정적, 동적 조건 분기 ... 89
임의의 스위즐(Arbitary Swizzle) ... 91
텍스처 명령어 상의 쓰기 금지 마스크 ... 92
vs_3_O의 기능 ... 93
레지스터 ... 93
명령어 ... 95
텍스처 샘플링 ... 96
정점 스트림 빈도 ... 98
ps_3_O 기능 ... 100
레지스터 ... 100
명령어 ... 102
무제한의 텍스처 샘플과 의존적 읽기 ... 103
결론 ... 104
참고 자료 ... 104
3. Direct3D 9로 구현한 향상된 조명과 셰이딩 / Michal Valient
소개 ... 106
픽셀 당 퐁(phong) ... 107
퐁 조명 방정식 ... 107
정점과 픽셀 셰이더 2.0 ... 107
정점과 픽셀 셰이더 3.0 ... 120
프레넬 항을 이용한 픽셀 당 환경 범프 매핑 ... 131
수학적 배경 ... 132
정점 셰이더 ... 134
픽셀 셰이더 1.4 ... 137
픽셀 셰이더 2.0 ... 139
HLSL 버전 ... 141
진보적인 모델을 위한 배경 지식 ... 144
구 좌표계 ... 144
표면의 거칠기 ... 145
마스킹과 섀도잉 ... 146
오렌-나야르 모델 ... 147
셰이더들 ... 149
HLSL 버전 ... 154
쿡-토르란스 모델 ... 157
셰이더 2.0 ... 158
셰이더 1.4 ... 163
HLSL 버전 ... 166
품질 비교 ... 169
결론 ... 171
참고 자료 ... 172
4. 다양한 안개 효과 소개 / Markus Nuebel
소개 ... 174
안개 계산 이면의 이론 ... 174
기법 하나: 선형 안개 ... 176
안개 방정식 ... 176
구현 ... 177
기법 둘: 지수 안개 ... 179
안개 방정식 ... 180
구현 ... 181
기법 셋: 지수 제곱 안개 ... 185
안개 방정식 ... 185
구현 ... 186
기법 넷: 레이어 안개 ... 189
이론과 방정식 ... 189
구현 ... 191
기법 다섯: 움직이는 안개 ... 196
이론과 방정식 ... 198
구현 ... 199
결론 ... 201
참고 자료 ... 202
5. Direct3D 9로 구현한 그림자 매핑 / Michal Valient
소개 ... 204
그림자 알고리즘(Shadow Algorithm) ... 204
깊이 보정 문제 ... 206
그림자 맵 필터링 ... 207
그림자 맵 생성을 위한 셰이더 ... 209
최종 렌더링을 위한 셰이더 ... 211
결론 ... 217
참고 자료 ... 217
6. 스텐실 그림자 입체 이론 / Hun Yen Kwoon
소개 ... 220
그림자 입체의 개념 ... 221
depth-pass(z-pass) ... 223
depth-fail(z-fail) ... 226
문제와 해법 ... 230
유한 그림자 덮개 ... 230
고스트 그림자 ... 231
시야 절두체 절단 ... 232
CPU에서의 실행 ... 239
어떤 방식으로 실행되나? ... 239
외곽선 찾기 ... 240
그림자 입체 만들기 ... 244
그림자 입체 덮개 ... 248
Depth-pass 스텐실 작업(DepthPassCPU) ... 250
Depth-fail 스텐실 작업(DepthFailCPU) ... 255
그림자 입체 덮개의 렌더링 ... 258
GPU(셰이더)에서의 실행 ... 260
어떤 방식으로 실행되나? ... 260
데이터의 전처리 ... 261
셰이더에서 그림자 입체 만들기 ... 264
정점 셰이더에서 실행하기(FiniteGPU) ... 265
정점 셰이더에서 실행하기(InfiniteGPU) ... 270
셰이더 방식이 더 좋은가? ... 274
DirectX 9 HLSL 샘플 ... 276
효율과 견고함 ... 279
많은 것을 위해 적게 사용하라 ... 280
가능한 한 편법을 사용하라 ... 281
보이지 않는 영역의 계산 ... 282
안쪽과 바깥쪽의 장면 관리 ... 283
언제나 효과적인 전환을 하라 ... 285
혼합과 배치 ... 286
결론 ... 286
참고 자료 ... 287
7. 렌더몽키를 사용한 셰이더 개발 / Natalya Tatarchuk
소개 ... 290
IDE 개괄 ... 291
기본 조명 효과 제작 ... 292
실행 시간 데이터베이스 개괄 ... 294
작업 공간 뷰 ... 295
변수 생성과 관리 ... 297
미리 정의된 렌더몽키 변수들 ... 298
스트림 매핑 모듈 ... 300
모델 관리 ... 303
효과 관리 ... 304
픽셀과 정점 셰이더들 ... 305
셰이더 편집하기 ... 306
정점 셰이더 설정과 편집 ... 308
셰이더 컴파일하기 ... 311
출력 창 ... 311
셰이더 어셈블리 혹은 컴파일 에러 ... 312
어셈블리 편집하기 ... 313
픽셀 셰이더 설정과 편집 ... 315
미리보기 창 ... 317
변수 편집하기 ... 319
렌더 스테이트 블록 관리 ... 323
렌더몽키에서의 텍스처링 ... 325
텍스처 오브젝트 ... 326
HLSL 셰이더로 텍스처 사용하기 ... 329
텍스처에 렌더링하기 ... 331
렌더 패스 ... 331
렌더 가능한 텍스처 지원 ... 332
렌더 가능한 텍스처 편집 ... 336
렌더 타겟 편집하기 ... 337
아티스트 편집기 ... 337
아티스트 편집 모듈에서 변수 편집 ... 339
요약 ... 341
8. 셰이더 친화적 3D 모델 제작을 위한 팁 / Gim Guan Chua
소개 ... 344
적절한 텍스처 좌표 생성하기 ... 344
"정점 가중치"의 영향 ... 345
비볼록(Non-Convex) 평면의 문제 ... 347
결론 ... 349
찾아보기 ... 350
닫기