기술(Tech, IT)/컴퓨터 그래픽스 (Computer Graphics) 23

[CG] Tensor (텐서)

Tensor 라는 용어가 Computer Graphics와 Machine Learning을 공부하면 자주 접하게 되는데 알아보자. Tensor는 스칼라, 벡터, 행렬의 개념을 더 높은 차원으로 일반화한 수학적 객체다. Tensor는 다차원 숫자 배열로 생각할 수 있으며, 차원 수는 종종 Tensor의 순위 (rank) 또는 순서 (order) 로 불린다. 0th-order tensor (0차 텐서) : 스칼라로, 하나의 숫자에 불과하다. 1th-order tensor (1차 텐서) : 숫자의 배열이 벡터다. 예를 들어, [3, 4, 5] 배열은 3D 공간에서 벡터를 나타낸다. 2nd-order tensor (2차 텐서) : 2차원 숫자 배열인 행렬이다. 3rd-order tensor and higher ..

[CG] CPU vs GPU - Graphics Rendering

그래픽 렌더링에서 CPU와 GPU의 역할을 알아보자. 그의 앞서 Vertex Information도 함께 짚어보자. Vertex Information (버텍스 정보) : 일반적으로 model 또는 mesh의 각 vertex와 연관된 속성 (attributes) 를 나타낸다. 여기에는 Vertex position, Normal vectors (조명 계산에 사용), Texture coordinates (UV 좌표), Color Tangents, binomals 등이 포함된다. 1. CPU의 역할 Scene setup : CPU는 Scene을 설정을 담당한다. 여기에는 rendering 해야하는 object와 position, transformations 및 기타 높은 수준의 계산을 결정하는 작업이 포함된다...

[CG] Vector (벡터) vs Matrix (행렬)

행렬과 벡터는 모두 데이터를 표현하고 특정 연산을 수행하는 데 사용되는 수학적 도구지만, 그 정의와 용도는 서로 다르다. 다만, Vector와 Matrix 모두 tensor의 특수한 경우인데, Vector는 1차 tensor, Matrix는 2차 tensor다. Vector (벡터) Matrix (행렬) 정의 Vector는 숫자의 1차원 배열로, 크기와 방향을 모두 나타낸다. 예를 들어, 물리학에서는 속도나 힘과 같은 양을 나타내는 데 사용할 수 있다. 수학과 컴퓨터 과학에서 Vector는 모든 숫자 집합을 나타낼 수 있으며, 물리적 개념에 국한되지 않는다. Matrix는 숫자의 2차원 배열로, 기본적으로 행과 열이 있는 수자로 채워진 직사각형이다. Matrix는 컴퓨터 그래픽에서 rotations (회..

[CG] Cross Product (벡터곱)

Cross Product (벡터곱) 은 3차원 공간에서 두 벡터에 대한 연산으로, 기존 두 벡터의 모두 수직 즉, 두 벡터가 구성하는 평면에 수직인 벡터를 생성한다. 이 연산은 3차원에서만 정의 되므로 scalar를 결과로 생성하는 dot product 와는 다르다. 고등학교 시절, 각 벡터의 요소를 X 자로 (cross) 로 곱하고 뺀 것을 각 요소의 결과로 갖는 것을 배울 것이다. 참고 - https://teacher.desmos.com/activitybuilder/custom/6087656604ad5e07f6d5d20b?collections=5ff0efd2ec328f0d75573002&lang=ko#preview/676d7940-2499-4d3f-a0c8-d67ba0c0267e

[CG] Progammable Graphics Pipeline

우선 Graphics Pipeline의 정의에 대해 살펴보면, 전달된 그래픽 데이터를 3D 표현에서 스크린 위에 2D 픽셀로 변형하는 연속된 단계를 말하고, 요즘엔 기존 Fixed-function pipelines가 아닌 Programmable Graphics Pipeline이 사용된다. 한 교수는 Programmable Graphics Pipeline을 vertex/line/triangle의 3D 데이터에서 2D 스크린으로의 여정으로 표현한다. Programmable Graphics Pipeline은 이전에 사용된 Fixed-function pipelines와 비교해 그래픽 하드웨어가 데이터를 처리하는 방식에 변화를 가져왔다. Fixed-function pipelines 시대에는 개발자가 그래픽 하드웨..

[CG] UV Mapping (유브이 매핑)

UV mapping은 3D 오브젝트에 2D texture를 적용하는 컴퓨터 그래픽 기법이다. "U"와 "V"는 2D 공간의 축으로, 3D 공간의 "X"와 "Y"와 유사하다. 3D 기하학 구조의 각 vertex는 2D texture의 해당 지점에 mapping 되며, 일반적으로 (u, v) 좌표로 지정한다. UV mapping 과정은 재단사가 천을 자르고 펴는 것처럼 3D 오브젝트의 표면을 잘라내 2D 평면에 배치할 수 있도록 평평하게 만드는 작업으로 비유할 수 있다. 그런 다음 이러한 mapping을 사용해 2D texture를 3D 오브젝트에 다시 "재봉"하여 렌더링할 때 texture가 오브젝트의 윤곽을 따라갈 수 있도록 한다. UV mapping의 핵심 포인트: UV Coordinates (UV 좌..

[CG] Vertex Shader (버텍스 쉐이더) - 2

vertex shader의 주요 작업을 세분화 해보자. Transforming Vertex Postion (vertex 위치 변환) : 가장 일반적인 작업은 vertex 위치를 오브젝트 공간 (각 오브젝트가 자체 원점을 기준으로 정의되는 곳)에서 클립 공간 (화면에서 표시된 공간) 으로 변환하는 것. vertex 위치에 model, view, projection 등 여러 변환 행렬을 곱하는 작업이 포함. Normalizing Texture Coordinates (texture 좌표 정규화) : texture 좌표는 texture 모델의 경우 (0, 0)에서 (1, 1)까지로, 때로는 이러한 좌표가 vertex sahder에서 변환되거나 스케일링 될 수 있지만, 이 작업은 애플리케이션에 따라 선택적이다. ..

[CG] Vertex Shader (버텍스 쉐이더) - 1

vertex shader는 컴퓨터 그래픽에서 3D 모델의 vertex 데이터를 조작하는 데 사용되는 shader 프로그램의 한 유형이다. vertex shader는 모델의 각 vertex에 대해 실행되며 vertex 위치 변환 (transforming the vertex position), texture 좌표 정규화 (normalizing texture coordinates) 및 기타 vertex별 작업 수행 (carrying out other per-vertex operations) 등을 수행한다. vertex shader의 출력은 일반적으로 특정 pipeline 구성에 따라 geometry shader와 같은 rendering pipeline의 다음 단계로 전달되거나 fragment shaer로 직접..