그래픽스
[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. 기본 벡터 연산 두 벡터는 모든 좌표가 일치해야 똑같다라고 할 수가 있다. 두 벡터간 덧셈은 오직 같은 좌표로만 진행한다. 스칼라곱 같은 경우엔 자연수를 각 좌표를 곱해야한다 (형태 유지). 두 벡터간 뺄셈은 (왼쪽 벡터 ..
아핀 변환 Affine Transformation
어떤 모델이든 아핀 공간에 있는 모델들은 점들의 집합이라고 했다. 그 점들이 어떤 식으로 있느냐가 모델을 만든다고 했다. Vertex가 모여 모델을 이룬다. 점들의 개수에 따라 모델의 질이 달라진다. 그 점 중에서도 모델을 위치시키기 위해서 다른 점이 하나 더 필요하다. 바로 중심점이라는 것이다. 중심점을 기준으로 나머지 점의 위치를 상대적으로 표현한다. 원점에서 각 점으로 향하는 8개의 벡터가 있다고 하자. 만약 크기를 어떤 축으로 늘리고 싶으면 8개의 벡터에 해당 축에 해당하는 크기 변환 행렬을 적용한다. 그렇게 되면 8개 벡터에 대한 새로운 벡터가 나오고 다시 벡터의 끝 점이 원점의 기준에 의해 바뀔 것이다. 모델의 중심점이 원점에 있을 때 모델의 크기 변환은 모델을 이루는 점들을 벡터처럼 생각하고..
렌더링 파이프라인 순서 및 기본 설명과 기본 지식 (Rendering Pipeline)
고정 기능 파이프 라인( Fixed Pipeline ) - D3D에 미리 정해진 연산을 수행할 수 있도록 제공되는 기능이 고정기능 파이프라인이다. - 정해진 연산만 수행하므로 프로그래머가 GPU 연산에 관여할 수 없다. 프로그래머블 파이프라인 ( Programmable Pipeline ) - 고정 기능 파이프 라인에서 제공하는 것 이외의 효과를 내기 위해서 생겨난 프로그래머블 파이프 라인이다. - 프로그래머가 GPU의 연산에 직접 관여할 수 있다. - 고정적으로 제공하던 셰이더( Shader )를 프로그래머가 다양한 효과를 낼 수 있게끔 제공하게 되었다. 고정 기능 파이프라인과 프로그래머블 파이프라인의 차이점 - 프로그래머가 GPU 연산에 관여할 수 있냐? 없냐? 차이 < 정확하게 말하면, Fixed -..
Low-Level Layer (HAL, HEL)
HAL이란 Hardware Abstraction Layer의 약자로서, 컴퓨터 하드웨어와 소프트웨어 사이의 추상화 계층이다. 다음과 같은 성격을 지닌다. 소프트웨어가 수많은 종류의 하드웨어 상에서 별 차이 없도록 동작할 수 있도록 하는 역할을 하며, OS의 커널 또는 장치 드라이버에서 호출될 수 있다. 추상화 개념을 사용하는데, 추상화는 주어진 문제나 시스템 중에서 중요하고 관계있는 부분만을 분리하여 간결하고 이해하기 쉽게 만드는 과정이라고 할 수 있다. 하드웨어 부품에 따라 해야 할 복잡한 과정을 일관성 있고, 간략한 인터페이스로 제공하기 위해 같은 류의 하드웨어를 공통 명령어 집합으로 묶어두는데, 이를 "하드웨어 추상화"라고 한다. 소프트웨어와 하드웨어 사이에서 소프트웨어가 PC의 시스템 메모리, C..
레이 트레이싱 (Ray Tracing)
레이트레이싱은 1980년 'Turner Whitted'가 'An improved illumination model for shaded display' 논문에서 발표한 기법으로 이미지의 픽셀 하나하나를 통과하는 광선들이 있다 가정하고 그 광선(Ray)을 역추적(Trace)하는 방식이다. 쉽게 말해, 계속적으로 반사하는 빛을 최대한 현실처럼 똑같이 흉내내고자 하는 그래픽 작업(랜더링)이다. 레이트레이싱 기술은 장면과 대상이 되는 객체의 조명 환경을 매우 사실적으로 시뮬레이션하는 연산 집약적 렌더링 기술이다. RTX 그래픽카드는 튜링 GPU 기반 레이트레이싱을 통해 물리적으로 정확한 반사(reflections), 굴절(refractions), 그림자 및 간접 조명을 실시간으로 렌더링 할 수 있다. 현재의 엔비..