동적 색인화는 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

 

GitHub - lemonyun/Directx12_study: 2022/06/10

2022/06/10. Contribute to lemonyun/Directx12_study development by creating an account on GitHub.

github.com

 

+ Recent posts