분류 전체보기(45)
-
렌더링 파이프라인(7) - Output Merge
Output Merge(출력 병합)- 렌더링 파이프라인의 마지막 단계- 알파 값(투명도)과 깊이 값 등을 통해 픽셀끼리 경쟁하여 색을 정하거나 합쳐 최종적으로 화면에 그려질 픽셀을 정함- 픽셀들을 화면에 출력하기 위해 다음의 마지막 연산들을 수행한다. (Z-Test, Stencil Test, Alpha Blending) 픽셀 셰이더가 생성한 픽셀 단편들은, 렌더링 파이프라인의 출력 병합기(output merger, OM) 단계로 입력된다. 출력 병합기 단계에서 일부 픽셀 단편들이 폐기(깊이 판정이나 스텐실 판정에 의해)된다. 기각되지 않은 픽셀 단편은 후면 버퍼에 기록된다. 두 픽셀이 일정한 공식에 따라 혼합되어 결과로 나타나는 '혼합(blending)'도 이 단계에서 일어난다.
2024.07.16 -
렌더링 파이프라인(6) - Pixel Shader(Fragment Shader)
Fragment Shader Pixel Shader라고도 부르며, 래스터화된 도형에 텍스쳐 매핑, 범프 매핑, 노말 매핑 등의 기법으로 텍스쳐를 입혀 색을 표현한다. 또한, 정점의 법선 벡터 정보를 통해 조명(Lighting) 처리도 해당 셰이더에서 이루어진다. 이전 단계인 래스터화 단계의 출력은 정점별 속성이 보간된 프래그먼트였다. 그리고 현재 단계인 프래그먼트 처리 단계는 프래그먼트 하나를 입력으로 받는다. 프래그먼트 처리는 프래그먼트 프로그램(셰이더)에 의해 수행되며, 다양한 처리를 통해 프래그먼트의 색상을 결정한다. 프래그먼트 처리 단계는 완전 프로그래밍 가능한 단계이기 때문에 우리가 직접 셰이더를 만든다. 셰이더의 출력은 색상을 나타내는 RGB값이다.픽셀 셰이더는 프래그먼트 셰이더와 같은 ..
2024.07.16 -
렌더링 파이프라인(5) - Rasterization
메시의 폴리곤을 픽셀로 매칭시키는 과정을 래스터라이제이션(Rasterization)이라고 한다 Cliping ➡️ Perspective Division ➡️ Back-face culling ➡️ Viewport transform ➡️ Scan Conversion1. Cliping절두체 경계에 걸쳐져있는 오브젝트를 잘라내어 절두체 외부에 있는 부분은 출력을 안 하도록 처리한다.1) 삼각형 t1은 view frustum 바깥쪽에 위치하므로 제거된다.2) 삼각형 t2는 view frustum 안쪽에 위치하므로 그대로 둔다.3) 삼각형 t3는 view frustum과 교차하므로, view frustum 바깥에 놓인 부분을 잘라내는 작업이 필요하다.기존 vertex 일부가 제거되고, 새로운 vertex를 ..
2024.07.16 -
렌더링 파이프라인(4) - Geometry Shader
지오메트리 셰이더 (Geometry Shader) - Vertex Shader에서 생성되지 않은 임의의 정점을 추가하거나 삭제하여 모델을 수정할 수 있는 셰이더- Vertex Shader에서 할 수 없는 점, 선, 삼각형 등의 도형을 생성할 수 있는 기능이 있음- Tesselation이나 그림자 효과, 큐브 맵을 한번의 처리로 렌더링하는 데에 주로 사용 지오메트리 셰이더는 프로그래밍이 가능하고 선택적 기능이며 (안해도 상관 없음)버텍스 셰이더에서 처리가 끝난 도형(폴리곤)을 받아 도형을 추가로 생성하거나 제거 하는 기술이다.테셀레이션과 다른 점은 테셀레이션은 사용자 셰이더(Hull Shader)를 가지고 하드웨어가 자동으로 처리 해주며 상황에 따른 추가 기능(LOD, 해상도에 따른 표현)이 있는 반면지..
2024.07.16 -
렌더링 파이프라인(3) - Tessellation
Tessellation(생략 가능)- 주어진 모델의 정점을 더 잘게 쪼개어 디테일한 표현을 할 때 사용- 카메라와의 거리에 따라 디테일의 정도를 조절하는 세부 수준(LOD, Level Of Detail) 메커니즘을 구현하여 관찰자가 가깝게 보는 부분만 세부묘사가 들어가 더 많은 삼각형을 효율적으로 사용 가능- 메모리에는 기본 다각형(Low-Poly) 메시를 담아두어 메모리를 절약하고, 필요할 때만 즉석으로 세분화하여 효율적으로 메모리를 관리할 수 있음 테셀레이션은 주어진 메시의 삼각형들을 더 잘게 쪼개서(세분) 새로운 삼각형들을 만드는 과정을 말한다. 이렇게 세분화하면서 원래 메시에 없는 세부적인 특징을 만들어 낼 수 있다(아래 그림 참고). 기본 메시(좌)와 테셀레이션 이후의 메시(우)
2024.07.16 -
렌더링 파이프라인(2) - Vertex Shader
· Vertex ShaderInput Assembler 단계에서 받은 정점들의 정보로 도형은 생성되었지만 공간 좌표계를 변환할 필요가 있다.기본적으로 도형들은 자신만의 좌표계인 Local Space의 좌표를 가지는데, 모든 물체들이 하나의 월드에 위치하도록 Local Space에서 World Space로 변환하고, 실제 플레이어가 바라보는 카메라가 중심이 되는 공간인 View Space로 변환해준다.그리고 마지막으로 Projection 변환을 거쳐서 최종적으로 투영까지 정의된 투영공간 Clip Space로 변환해준다. 최종적으로 변환과정을 나열하면 [오브젝트 공간] * 월드 변환 -> [월드 공간] * 뷰 변환 -> [카메라 공간] * 투영 변환 -> [클립 공간] 을 거치게 되는데 각각의 과정에 대해서..
2024.07.16