동적 색인화는 Direct3D 12에만 존재하는 새로운 기법이다.
Texture2DArray와는 달리 크기와 형식이 서로 다른 텍스처들을 담을 수 있다.
15.2 Camera 클래스
right 벡터, lookat 벡터, up 벡터
카메라 위치 벡터
시야 행렬, 투영 행렬
수직 시야각, 종횡비, 가까운 평면 거리, 먼 평면 거리
ㄴ 멤버 변수로 모두 저장하고 있음
setLens() // 투영 행렬 갱신
UpdateViewMatrix() // 시야 행렬 갱신
ㄴ 멤버 변수 값들을 사용하여 행렬 변수에 계산된 값을 저장
함수 이름
yaw = 좌우 둘러보기 (y축 회전)pitch = 위아래 끄덕 (카메라 right축 회전)roll = 갸웃갸웃 (카메라 lookat축 회전)
15.5 동적 색인화
1. 상수 버퍼의 한 요소를 색인으로 사용할 수 있다.
2. SV_PrimitiveID와 같은 시스템 ID를 색인으로 사용할 수 있다.
3. 셰이더 프로그램 안에서 수행한 어떤 계산의 결과를 색인으로 사용할 수 있다.
4. 텍스처에서 추출한 표본의 값을 색인으로 사용할 수 있다.
5. 정점 구조체의 한 성분을 색인으로 사용할 수 있다.
예제에서의 사용법
모든 재질 자료를 담은 재질 구조체의 배열 (구조적 버퍼 자원)
텍스처 배열 (서술자 테이블)
객체 별 상수 버퍼에 재질 인덱스 정보만 넘기면 셰이더 파일에서 텍스처와 재질에 접근할 수 있다. (1번 사용법)
연습문제
2.
Q와 E키로 회전하도록 만들었다.
mLook ( 카메라 기준 Z 축 )에 대한 회전행렬을 만들고
mRight 벡터와 mUp 벡터에 회전 행렬을 곱해 값을 갱신한다.
연습문제 파일
https://github.com/lemonyun/Directx12_study/tree/main/15
'읽은 책 > DirectX 12를 이용한 3D 게임 프로그래밍 입문' 카테고리의 다른 글
17. 3차원 물체의 선택 (0) | 2022.07.01 |
---|---|
16. 인스턴싱과 절두체 선별 (0) | 2022.06.30 |
14. 테셀레이션 단계들 (0) | 2022.06.29 |
13. 계산 셰이더 (0) | 2022.06.28 |
12. 기하 셰이더 (0) | 2022.06.24 |