[ 컴퓨터 그래픽스 ] OpenGL : Image Formation & Graphics Pipeline
∇ OpenGL : Image Formation & Graphics Pipeline
OpenGL의 동작은 Vertices를 Pixels로 변환하는 과정을 지원합니다.
√ Vertex : 3D객체를 구성하는 하나의 점.
√ Pixel: 모든 렌더링 연산이 끝난 후 모니터(뷰)에 표현되는 하나의 점.
Vertex -> Pixel의 변환과정에 대해서 알아보겠습니다.
∇ Image Fromation.
이미지는 어떠한 요소들로 구성될까요?
위의 사진을 보면, 크게 3가지로 구성되어 있습니다.
- Object(객체)
- Viewer
- Light Source(s)
이 3가지 요소가 있어야 우리가 구현된 객체를 인지할 수 있습니다.
∇ object (객체)
- 사물 혹은 사람 등 우리 눈에 보이는 특정한 물체라고 생각하면 됩니다.
∇ VIewer
- 현실에서의 우리의 눈
- 웹 상에서는 특정 위치, 방향에 Viewer가 존재해야 합니다 ( = camera라고 볼 수 있음 )
∇ Light Source(s)
- 광원입니다.
- 우리가 물체를 인식하려면, 물체에 빛이 반사되어야 하므로, 태양, 형광 등의 광원이라고 보면 됩니다.
위의 3가지 요소를 적절하고 적정하게 조절하게 되면 이미지를 구성할 수 있습니다.
다만, 좀 더 현실적인 표현을 위해서는 한 가지 추가적인 요소가 필요합니다.
바로 Attributes( materials)입니다.
머테리얼(재질)에 따라서
빛이 반사,굴절하는 정도 표면의 거침 표현 정도 등 많은 것들에 차이가 발생하기 때문입니다.
∇ Graphics Pipeline.
- Vertex를 Pixel로 변화시키는 과정을 Graphics Pipeline이라고 합니다.
- Vertex Processor
이 과정에서는 좌표 체계를 변환합니다.
즉 3D객체를 2D형태인 모니터 화면에 띄우기 위해 좌표를 변환시키는 작업을 합니다.
모든 변환은 행렬변환을 통한 계산으로 이루어 집니다.
- Primitive Assembler and Clipper
이 과정에서는 먼저 Primitive Assembler을 거칩니다.
Vertex Processor를 통과한 각 좌표 정보를 바탕으로
Line, Polygon, Curve, Suface 등 어떻게 표현할 지 결정되고 이러한 정보를 바탕으로
vertex가 수집되는 단계입니다.
이후 Clipper과정은 쉽게 이해할 수 있습니다.
Viewer, 즉 Camera에 보이는 부분은 유지하고, 보이지 않는 부분은 버리는 작업을 합니다.
COP가 현재 Viewer의 위치입니다.
그림에서 볼 수 있듯이 Front clipping plane과 Back clipping plane을 설정하여
그 사이 범위인 View volume 밖에 있는 객체는 처리하지 않고 잘라냅니다.
현실 세계에서 카메라가 전체 세계를 볼 수 없듯이,
그래픽스 환경에서의 Viewer도 전체의 한 부분만 볼 수 있기에 설정하는 것이죠.
- Rasterizer
이전 단계 까지를 거치며, 제거되지 않은 점들에게는 color가 할당됩니다.
Rasterizer은 각 객체의 color와 depth 정보를 부여하여 실제 화면이 보이게끔 합니다.
- Fragment Processor
이 과정에서는 최종적으로 보여지는 객체에 대한 정보를 구현합니다.
각 Pixel에 대해 복합적인 정보를 계산하여 최종적으로 결정합니다.
ex) 물체가 파란색, 조명이 빨간색 -> 보라색으로 계산
또한 조명의 위치, 물체의 위치, 표면의 Normal vector 등을 바탕으로
실제 우리가 확인 할 수 있는 객체를 화면에 표시하기 전 최종적으로 처리하는 단계입니다.
'3D Web Developer > computer_graphics' 카테고리의 다른 글
[ 컴퓨터 그래픽스 ] Open GL의 개념을 정리해보기. (0) | 2024.10.15 |
---|---|
[ 컴퓨터 그래픽스 ] 웹 GL(Web GL) 이란 (0) | 2024.10.14 |
[ 컴퓨터 그래픽스 ] 웹 그래픽이란 무엇인가? ( WebGL, OpenGL, WebGPU ) (4) | 2024.10.13 |