-
컴퓨터 그래픽스 5장 - 정점 처리(Vertex Processing) -Computer Graphics 2024. 4. 29. 03:20
고려대학교 한정현 교수님의 컴퓨터그래픽스 강의 영상을 보고 작성한 포스트입니다
https://www.youtu be.com/watch?v=Jvz0XPSRbx4&list=PLYEC1V9tJOl03WLDoUEKbiYW_Xt4W6LTl&index=1
GPU Rendering Pipeline
이번에는 Vertex Shader(Software)에 대해 알아보도록 하자 Vertex Shader
L이 non-uniform scaling을 포함할 경우, 삼각형의 법선 벡터가 수직이 아니게 됨
이럴 때 L의 역을 트랜스포즈하면 수직이 나옴
View Transform
world space에 있는 camera space로 변환
n, u, v는 모두 수직이므로 orthonormal EYE: camera position
AT: 카메라가 조준된 점
UP: 카메라의 업 벡터
world space 말고도 camera space가 존재함
camera 좌표계에서 at의 위치는 (0, 0, -10)
View transform을 공간화하는 법
1. 카메라 공간을 월드 공간에 포개지게(원점이 같게) 한다 - translation 2. u, v, n을 e1, e2, e3에 일치하도록 좌표계를 돌린다 View Transform의 결과식
공간 이전의 개념 완전 대박 엄청 중요함 RHS vs LHS
OpenGL은 오른손 좌표계, DirectX는 왼손 좌표계를 씀
Z-Negation: 각 물체의 정점들의 z 좌표 부호만 바꿔 주면 상호 좌표계와 같은 취급이 가능함
View Frustum
fovx(field of view x-axis)
fovy(field of view y-axis)
눈을 정점으로 하는 피라미드는 상하좌우 시야 각으로 정의할 수 있음
n: near plane
f: far plane
잘린 시야 각을 truncated pyramid, view frustum이라고 부름 -> view-frustum culling
Projection Transform
왼: camera space, 오: clip space projection transform을 통해 정육면체 공간으로 왜곡한 후 clipping을 실행하면 피라미드에서보다 훨씬 쉽게 연산 가능
L1과 L2는 projection transform으로 인해 길이가 같아 보인다 Projection transform matrix
Vertex Shader는 RHS, Rasterizer는 LHS이므로 Z-Negation이 필요함
최종 Projection Transform Matrix는 세 번째 행의 부호만 바꾼 다음과 같음
'Computer Graphics' 카테고리의 다른 글
컴퓨터 그래픽스 7장 - 래스터라이저 - (0) 2024.04.29 컴퓨터그래픽스 6장 - OpenGL ES와 셰이더 - (0) 2024.04.29 컴퓨터 그래픽스 4장 - 좌표계와 변환 - (1) 2024.04.27 컴퓨터 그래픽스 3장 - 모델링 - (0) 2024.04.26 컴퓨터그래픽스 2장 - 수학 - (0) 2024.04.26