그래픽스
그래픽스 API 정의와 비교 분석
로우 레벨 그래픽스 API들(Vulkan, DirectX, Metal, WebGPU)은 GPU와 구조 모델이 비슷하다. GPU는 원래 고정적인 코드들을 가졌었으며 수정 또한 불가능에 가까워서 성능이 떨어졌다. 이를 극대화 시키기 위해서 드라이버라는걸 새로 개발했다. 호출 순서 API 초기화 : GPU와 통신하기 위해 틀대를 만듬. 에셋 로딩 : 렌더링에 필요한 데이터 (셰이더) 또는 GPU와 통신하기 위한 명령들. 에셋 업데이트 프레젠테이션 : 커맨드 버퍼를 커맨드 큐에 보낸 후 스왑체인을 활용해서 렌더링. 2 3 4 반복 (프로그램 종료할 때 까지) GPU가 작업이 끝날 때까지 대기하고 사용한 모든 포인터들을 해제하고 데이터를 초기화한다. 비교 분석 라이브러리 파일을 가져올 시 API를 사용하기 위해선..
폴리곤 메쉬 (Polygon Mesh)
1. 폴리곤 메쉬(Polygon Mesh)란? 그래픽스에서 렌더링(표현)할 물체의 표현을 만드는 작업을 "모델링"이라고 한다. 한 예로 구를 표현하려면 좌측 그림처럼 구의 중점과 반지름을 가지고 우리가 아는 구의 방정식을 세울 수 있다 흔히 이런 형태의 함수는 음함수(Implicit Function)라고 하는데, 음함수는 GPU로 표현하기 어렵다. GPU에서 표현하기 어렵다는 이유 때문에 이런 음함수 표현 대신 부드러운 평면의 개수를 샘플링한다. 그러면 일정한 꼭지점이 샘플링 되는데, 그 꼭지점들을 선으로 이어서 다각형으로 만든 것을 대신 표현한다. 이렇게 도형 그 자체를 표현한 것이 아니라, 꼭지점을 샘플링해 선으로 이은 다각형을 폴리곤 메쉬라고한다. (GPU는 이러한 폴리곤 메쉬를 처리하는데 아주 최..
절두체 컬링 (Frustum Culling)과 클리핑 (Clipping)
정의 3D 공간에는 다양한 오브젝트가 들어갈 수 있다. 360도로 오브젝트가 배치된 일반적인 상황이라 생각할 때, 시야 안에 있는 오브젝트는 전체 공간에 있는 오브젝트에 비해 굉장히 한정적이므로 절두체 컬링은 시야 밖에 있는, 렌더링 되지 않는 오브젝트를 걸러내기 위한 기법이다. 1. 여섯 개의 평면을 이용한 가장 기본적인 컬링 방식 카메라 시야 상, 하, 좌, 우 방향으로의 경계선이 되는 평면, 카메라 시야에 수직하며 가장 가까운 곳과 먼 곳의 시야 범위를 나타내는 평면으로 총 6개의 평면을 이용해 오브젝트가 절두체에 포함되는지를 계산하는 방식. 이름 정의 근평면(Near Plane) 카메라와 수직하며 제일 가까운 곳의 시야 범위를 나타내는 평면 원평면(Far Plane) 카메라와 수직하며 제일 먼 곳..
[DX11 물방울책] 챕터3 - 트랜스폼 (위치값,회전값,크기값)
1. 크기값 (Scale) 행렬 표현식은 아래와 같다. 예시2 2. 회전값 (Rotation) 예시 -30도만큼 회전 3. 동차 좌표 (homogeneous coordinate) Homogeneous 좌표는 쉽게 말하면 (x, y)를 (x, y, 1)로 표현하는 것. 임의의 0이 아닌 상수 w에 대해 (x, y)를 (wx, wy, w) 즉, homogeneous 좌표계에서 스케일(scale)은 무시되며 (x, y)에 대한 homogeneous 좌표 표현은 무한히 많이 존재하게 된다. 마찬가지로, 3차원의 경우에는 (X, Y, Z)를 (X, Y, Z, 1) 나 (wX, wY, wZ, w)로 표현. Homogeneous 좌표가 활용되는 곳은 주로 컴퓨터 그래픽스(graphics) 쪽이나 3D 비전 쪽이다. ..
[DX11 물방울책] 챕터 2 - 행렬
1. 행렬의 정의 그래픽스에선 행렬은 주로 트랜스폼 (이동,회전,크기) 그리고 벡터 위치를 프레임간 옮기고자 할 때 쓰여진다. m * n 행렬은 네모 모양의 m열 n행의 2차원 배열이다. 각 숫자를 원소라고 불린다. 각 행을 벡터로 취급할 때도 있다 2. 행렬간 곱셈 A 행렬의 행 개수와 B 행렬의 열 개수가 일치해야 연산이 가능하다. 3. 벡터와 행렬간 곱셈 4. 선형 결합 벡터 행렬 곱셈간 결과 uA는 선형 결합과 똑같다고 한다. 5. 결합 법칙 A(B + C) = AB + AC 그리고 (A + B)C = AC + BC 6. 전치 행렬 행렬의 행과 열을 교환해서 구한다. 전치 행렬의 속성은 다음과 같다. 7. 단위 행렬 좌>우측으로 대각선으로 가는 원소들 제외하고 모든 원소가 0인 행렬을 칭한다. 8..
[DX11 물방울책] 챕터 1 - 벡터
벡터는 게임 그래픽스에서 아주 중요한 역할을 하고있다. 예) 충돌 처리 그리고 물리 작용. 1. 벡터란 무엇인가? 크기와 방향을 지닌 값이다. 예시는 아래와 같다. 강체 : 힘 위치 속도 : 가속도와 방향 2. 벡터와 좌표계 벡터를 좌표계로 표현할려면 현재 공간상 위치값을 치환하면 된다. 예) 3D (x, y, z), 2D (x,y) 두 프레임 즉 시점에 따라 같은 방향이어도 위치가 다를 수가 있다. 3. 왼손 좌표계 vs 오른손 좌표계 Direct3D는 왼손 좌표계를 사용한다. 4. 기본 벡터 연산 두 벡터는 모든 좌표가 일치해야 똑같다라고 할 수가 있다. 두 벡터간 덧셈은 오직 같은 좌표로만 진행한다. 스칼라곱 같은 경우엔 자연수를 각 좌표를 곱해야한다 (형태 유지). 두 벡터간 뺄셈은 (왼쪽 벡터 ..