3D Web Developer/computer_graphics

[ 컴퓨터 그래픽스 ] OpenGL : Image Formation & Graphics pipeline

안다미로 : 담은 것이 그릇에 넘치도록 많게. 2024. 10. 19. 22:43

 

 

 

[ 컴퓨터 그래픽스 ] 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이라고 합니다.

 

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 등을 바탕으로

                                실제 우리가 확인 할 수 있는 객체를 화면에 표시하기 전 최종적으로 처리하는 단계입니다.