10.17

신승빈·2022년 10월 17일
0

KGCA 수업

목록 보기
51/128

투영

(1rtan(α)00001tan(α)0000ffn100nffn0)\begin{pmatrix} \frac{1}{r * \tan(\alpha)} & 0 & 0 & 0 \\ 0 & \frac{1}{\tan(\alpha)} & 0 & 0 \\ 0 & 0 & \frac{f}{f - n} & 1 \\ 0 & 0 & \frac{-nf}{f - n} & 0 \end{pmatrix}
r=wh=w2=종횡비r = \frac{w}{h} = \frac{w}{2} = 종횡비
α=수직시야각\alpha = 수직시야각
f=원단면까지의거리f = 원단면까지의 거리
n=근단면까지의거리n = 근단면까지의 거리

Reference : http://leeminsang19930211.blogspot.com/2018/07/persfective-projection-matrix.html
Reference : https://lalyns.tistory.com/m/13

OffCenter류 함수

View 좌표계의 일부 영역만 투영하는 함수
Zoom같을 때 사용하기 좋을 듯(일반적으로 FOV를 사용하는듯 한데)

3D Object

Box

Box를 구성하는 정점은 8개면 충분하지만, Texture를 사용할 경우 Texture mapping은 중첩시킬 수 없으므로 면당 4개씩 총 24개의 정점이 필요
Index는 면당 6개의 정점이 필요하므로 총 36개 필요

상수버퍼

CPU에서 수행하던 연산을 GPU(Shader)에서 수행할 수 있음

cbuffer _Name_ : register(b_slot_) // 미지정시 0번슬롯 자동 지정
{
	matrix : packoffset(c0)
    float4X4 : packoffset(c4)
    float4 : packoffset(c8.z)	// 상수버퍼는 Register단위(float4(x, y, z, w))로 데이터 저장
}

상수버퍼는 Shader에서 전역변수와 동일하게 사용 가능?
mul같은 기본 연산 지원
단, mul함수는 Register단위로 연산하기 때문에 행렬 연산시 Matrix를 Traspose하거나 미리 Transpose된 값을 Register에 저장해야함

profile
이상을 길잡이 삼아 로망을 추구합니다.

0개의 댓글