렌더링이란 무엇일까? 위키백과에는 다음과 같이 설명되있다.
렌더링 또는 이미지 합성(rendering 또는 image synthesis)은 컴퓨터 프로그램을 사용하여 모델 또는 이들을 모아놓은 장면인 씬 파일(scene file)로부터 영상을 만들어내는 과정을 말한다. 하나의 씬 파일에는 정확히 정의된 언어나 자료 구조로 이루어진 개체들이 있으며, 여기에는 가상의 장면(씬)을 표현하는 도형의 배열, 시점, 텍스처 매핑, 조명, 셰이딩 정보가 포함될 수 있다. 씬 파일에 포함된 자료들은 렌더링 프로그램에서 처리되어 결과물로서 디지털 이미지, 래스터 그래픽스 이미지 파일을 만들어낸다.
https://ko.wikipedia.org/wiki/%EB%A0%8C%EB%8D%94%EB%A7%81
렌더링 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 하나의 3차원 장면에 여러 가지 렌더링 기법을 적용하고 있는 모습. POV-Ray 3.6을 이용하여 만든 그림 렌더링 또는 이미지 합성(rendering 또는 image synthesis)은 컴퓨
ko.wikipedia.org
그리고 파이프라인은 데이터 처리와 변환 과정을 단계적으로 구성하여 데이터를 처리하는 시스템(방법)이다.
즉 렌더링 파이프라인은 3차원의 버텍스 이미지를 2차원의 래스터 이미지로 표현을 하기 위한 방법을 단계별로 나타낸 것이다.
그래픽 API마다 세부적인 내용이 다를 수 있지만 일반적으로 다음과 같은 과정을 거친다.
1. 입력 어셈블리 (Input assembler) : 메모리에서 3D 모델의 정점(Vertex) 데이터를 받아와서 도형으로 조립하는 과정
2. 버텍스 쉐이더 (Vertex Shader) : 물체의 정점 정보에 수학적인 연산을 거쳐서 위치를 옮기거나 텍스처를 바꾸거나 색상을 입히는 등의 작업을 할 수 있다.
변환 스키닝 조명등의 과정이 여기에서 이뤄진다.
2-2. 테셀레이션(Tessellation) : 폴리곤을 잘게 쪼개서 더 많은 버텍스를 갖게 해주는 과정 이 과정의 장점으로 LOD(level of distance)가 구현 가능하다. 생략가능
2-3. 지오메트리 쉐이더 (Geometry Shader) : 버텍스 쉐이더의 처리를 거친 정점의 정보를 받아서 정보를 추가하거나 삭제하여 도형을 수정하거나 혹은 수정하지 않을 수 있다 생략가능
3. 레스터라이제이션 (Rasteriztion) : 3차원 벡터이미지를 2차원 픽셀이미지로 바꾸는 과정, 게임에서 원근감있게 보여지려면 점들의 좌표가 투영을 통해 바뀌어야 하는데 이를 원근 투영 변환이라고 한다. 이 과정을 거친 뒤 카메라 절두체를 넘어선 pixel을 클리핑하고 2차원 이미지로 매핑이 된다.
4. 프래그먼트 쉐이더 (Fragment Shader) / 픽셀 쉐이더 (Pixel Shader) : 래스터화한 데이터에 색을 입히는 단계, 각각의 픽셀 프래그먼트마다 변수 텍스쳐 픽셀출력 데이터등을 결합해 색상을 출력한다. 대부분의 일반적인 쉐이더가 이 단계에 해당한다.
+ OpenGL과 Vulkan과 같은 그래픽 API에서는 프래그먼트 쉐이더라고 부르고 Direct X에선 픽셀 쉐이더라고 부른다.
5. 컬러 블렌딩 (Color Blending) / 출력 병합기 (Output Merge) : 최종적으로 픽셀의 색상을 설정하는 단계 프래그먼트 쉐이더로부터 픽셀의 색상 출력을 가져와 Output Map의 컬러 버퍼와 조합한다.
https://novemberfirst.tistory.com/27
[Direct3D11] 렌더링 파이프라인? (Rendering Pipeline)
렌더링 파이프라인(Rendering Pipeline) GPU를 사용해 리소스를 2D 이미지로 렌더링 하는 과정이다. 파이프라인은 여러 개의 파이프라인 단계로 구성되어 있으며 프로그램 가능 단계와 고정 프로그램
novemberfirst.tistory.com
https://www.khronos.org/opengl/wiki/Rendering_Pipeline_Overview
'개인 공부' 카테고리의 다른 글
유니티 오디오 클립 압축형식(Compression Format) (0) | 2024.01.05 |
---|---|
상속(Inheritance) (0) | 2023.08.31 |
유니티 2D에서 물체 충돌 시 떨림이 나타는 이유 (0) | 2023.08.19 |
동기/비동기/스레드/프로세스/코루틴 (0) | 2023.08.16 |
코루틴(Coroutine)이란? (0) | 2023.08.09 |