Graphics Pipeline architecture
● 순서
1. Vertices (Application program)
2. Vertex Processor
3. Clipper and Primitive Assembler
4. Rasterizer
5. Fragment Processor
6. Pixels (Display)
Application에서 Vertices(3차원 상의 점들) 이 들어오고
Vertex Processor에서 vertex processing을 통해 2차원으로 가져오고
Clipper를 통해 이미지를 자르고
Primitive Assembler를 통해 어떤 도형인지 알아내고
Rasterizer를 통해 알아낸 도형에 해당하는 pixel들을 알아내고
Fragment Processor에서 pixel에 대한 밝기(색)을 결정하고
pixels이 display 된다.
=> 3차원의 점들이 여러 과정을 거친 후 우리에게 2차원으로 보여지는 것이다.
Vertex Processing
3차원에 있는 점들을 2차원 평면에 상을 맺게 하는 과정
3차원에 있는 점은 2차원의 평면 상에 어떤 점에 갈지를 계산해야 한다. 즉, 3차원 좌표계를 2차원 좌표계로 옮기는 과정이다. 그렇기 때문에 기하학적인 지식이 어느정도 들어가게 된다.
결국엔 3차원 상의 한 점이 2차원 상에 어떤 점에 해당되는 지를 결정하는 문제를 풀어야 한다.
카메라를 옆으로 돌리면? 물체를 회전시키면? 다른 그림이 그려질 것이다. 그래서 그림을 정적으로 보여주지 못하고 계속해서 계산하고 보여줘야 한다. 이를 전문적으로 계산하는 것을 Vertex Processor라고 한다.
● Projection
이 때 Projection이라는 과정이 있다. 멀리있는 것을 작게 보이고, 가까이 있는 것을 크게 보이게 할 것인지 말 것인지 결정하는 과정이다. 원근법이라는 말이 친숙할 것이다.
1) 원근법 적용
Object에서 COP(초점) 으로 오면서 2차원 평면과 만나는 점들을 그려보면, 멀리 있는 게 작게 그려지게 된다.
2) 원근법 미적용
Object에서 한 초점이 아닌, 그냥 같은 방향으로 선을 그어준다. 그 때 2차원 평면과 만나는 점들로 그리는 것이다. 이 방법은 크기를 가늠해야 하는 건물 설계, 물건 설계에 주로 쓰인다.
이 외에도 카메라 위치, 카메라 렌즈의 종류 등도 고려해서 계산해야 한다.
Primitive Assembly
Vertex Processing을 통해 2차원의 점이 생겼다. 그런데 점으로 존재하기 위해 계산한 것이 아니다. 점 사이에 선을 긋거나, 점들을 모아서 Primitive를 만들어서 색칠하거나 하는 등의 목적으로 점을 계산한 것이다.
그래서 이 점들이 다각형인지, 삼각형인지, 선인지 알게 하는 과정이다.
즉, 점 사이에 선을 긋거나, 여러 점을 모아서 다각형을 만드는 과정이다.
정확하게는 어떤 픽셀이 점이나 선에 해당하는지 계산하는 과정이라고 볼 수 있다.
Clipping
카메라 입장에서는 시야 밖의 부분이 보이질 않는다. 이 보이지 않는 바깥 부분을 버리는 과정이다.
경우에 따라서 너무 가까이 있거나, 멀리 있어서 버리는 경우도 있다.
그래서 실제로 보이는 부분이 사각뿔 형태로 보인다. (View volume)
Rasterization
숫자로 되어있는, 연속적인 선으로 되어 있는 다각형이 pixel로 구성되어 있는(Raster) 화면에서 어떤 pixel에 해당하는지 계산하는 과정이다.
즉, 화면에서 각각의 픽셀이 다각형에서 어떤 부분에 해당하는지 알아내는 과정이다.
삼각형이 2차원에 그려져야 하므로, 각각의 픽셀이 어떤 삼각형에 해당하는지 알아야 한다. 그래야 각 픽셀을 색칠할 수 있다. 이 때 알아낸 각각 하나의 점을 fragment라고 한다.
Fragment Processing
Fragment마다 어떤 색을 칠하는 과정
위의 과정들을 거친 pixel에 어떤 밝기를 줄까를 결정하면 된다. 조명이나 물체에 따라 결정된다.
Hidden Surface Removal
3차원 상에 이것저것 그리다보니 A삼각형, B사각형 등등 여러가지가 그려지게 된다. 만약 A와 B가 2차원에서 겹쳐져 있고, 3차원에서 A가 앞에, B가 뒤에 있다고 해보자. 그러면 2차원 상에는 무엇이 보여야할까?
아마 앞에 있는 A가 그려지게 될 것이다. 이 때 어떤 게 그려지고 어떤 게 가려지는 것을 표현하는 과정을 Hidden Surface Removal이라고 한다.
[참고]
Interactive Computer Graphics: A Top-Down Approach with Shader-based OpenGL 6th edition / 저자: Edward Angel, Dave Shreiner / 출판사: Pearson Education
'IT > 컴퓨터 그래픽스' 카테고리의 다른 글
[ 3D Modeling ] Procedural Polygon Mesh (0) | 2020.10.24 |
---|---|
[ 3D Modeling ] Sweep Representation (0) | 2020.10.24 |
[ 3D Modeling ] Polygonal Representation (0) | 2020.10.24 |
[ OpenGL ] GLEW + GLM 설치 및 설정 (0) | 2020.09.20 |
[ OpenGL ] GLFW 기본 + 설치 (6) | 2020.09.15 |
댓글