본문 바로가기

ComputerScience/Computer Graphics

CG - 1. 컴퓨터 그래픽스?

728x90

1. 컴퓨터 그래픽스

- 컴퓨터로 이미지를 만드는 것

- 물체를 2D 화면에 보이기, 합성, 변환 등을 하는 것.

2. Raster Graphics

- 2D 또는 실세계의 3D 물체를 scan conversion/rasterization 하여 2D화면으로 보여주는 방식.

- 화면을 array of pixels로 구성하고 각 픽셀들의 값으로 2D, 3D물체가 표현된다.

 

*용어
- frame 전체 그림
- refresh rate(fps, Hz) : 초당 몇개의 frame을 그릴 수 있나?
- resolution : 총 표현 가능한 pixel의 수
- aspect ratio : frame 가로 세로 비율

- cpu로부터 받은 데이터를 가지고 gpu가 픽셀 값들을 계산하고 그 pixel 정보들을 frame buffer를 통해 출력한다.

3. graphics software

- general programming package
- c, c++같은 언어에서 사용할 수 있는 library(of graphics functions)를 제공한다.
- OpenGL, WebGL, Direct3D, Java2D 등

4. Graphics Rendering Pipeline

- 2D, 3D object를 화면에 2D로 표현하는 process를 말한다.
- 최종적으로 생성한 pixels에 대한 정보가 frame buffer에 담기게 된다.
- 다르게 말하면 3D coordinate system의 물체를 2D window coordinate system에 표현하는 과정이다.

- OpenGL pipeline overview

Application Stage
- 3D 모델에 대한 정보들(밝기, 회전, 이동 등)을 계산해서 Geometry 단계로 넘겨준다.

- 3차원 상에서 모델의 정보를 가지고 있음
- cpu에서 수행된다.
Geometry Stage
- gpu에서 수행된다.
- model을 삼각형들로 polygonize한다.
- 각 vertex의 position을 잡고 그 vertex의 색, 밝기 등을 matrices로 저장한다.

- Model Transformation, View Transformation, Lighting, Projection, Clipping, Screen Mapping,등의 작업들이 이루어진다.

 

*여러 좌표계

3D Model Coordinates (model space) : 모델의 특정 지점을 origin으로 하는 좌표계

3D World Coordinates (world space) : 실세계의 좌표계

3D Eye Coordinates (view space) : -z축을 origin으로 하는 눈이 원점인 좌표계

2D Screen Coordinates (screen space) : 2D화면의 좌표계


Rasterizer Stage
- 이전단계에서 2차원으로 projection 된 vertex들을 pixel로 변환하고 각 pixel의 색, 질감, 투명도 등을 결정한다.
- resolution의 수 만큼 각각의 vertex에 대해 fragment operation을 병렬적으로 수행한다.
- 따라서 수천개의 코어가 있는 gpu가 작업하기 효과적이다.
- 이 결과(이미지)는 frame buffer에 저장된다.

- Texture mapping, Fog, Translucency Test, Depth buffering, Antialiasing 등의 작업이 이루어진다.

Display
- 보통 두개의 frame buffer를 사용해서 swap해 가며 사용한다.
- back buffer에 pixel들을 저장하는 동안 front buffer에서는 화면으로 이미지을 출력한다.
- 다 그리면 두 버퍼를 swap한다. 계속 위 과정을 반복한다.
- 이 덕분에 항상 완성된 그림을 화면에 더 빠르게 그릴 수 있게 된다.

728x90
반응형

'ComputerScience > Computer Graphics' 카테고리의 다른 글

CG - 3. Transformation  (0) 2021.09.24
CG - 2. 라이브러리 소개  (0) 2021.09.15
OpenGL - 6 Shaders (2)  (0) 2021.07.15
OpenGL - 6 Shaders (1)  (0) 2021.07.06
OpenGL - 5 Hello Triangle (3)  (0) 2021.06.30