DirectX 11

·DirectX 11
조명은 크게 두 가지로 나눌 수 있습니다.모든 빛의 반사를 계산하는 전역 조명(GI, Globl illumination)과 조명 알고리즘을 사용하는 방법이 있습니다. [전역 조명]글로벌 일루미네이션은 두 가지로 나뉩니다.레이트 레이싱 : 실시간으로 빛의 반사 계산라이트 맵 방식 : 미리 조명을 모두 계산한 '라이트 맵' 작성레이트 레이싱은 실시간으로 수행해야 하므로 기술적인 한계로 인해 사용하는 것은 사실상 힘듭니다.라이트맵은 많이 쓰이지만, 조명을 미리 계산해놓기 때문에 오브젝트의 위치를 바꾼다거나, 빛의 방향을 바꾼다거나 하는 행동은 할 수 없습니다.  [조명알고리즘] 조명 알고리즘은 앰비언트라이트 (주변광, 환경광), 디퓨즈 라이트, 스페큘러 라이트 셋으로 나뉩니다. 중요하진 않지만 이는 퐁-셰이딩..
·DirectX 11
Output Merger는 Alpha Test - Alpha Blending - Anti Aliasing 의 단계를 거칩니다. [Alpha Test]alpha 성분을 분석하여 카메라에서 같은 점에 투영되는 점들 중 출력을 할 정점이 무엇인지 체크합니다.깊이 테스트(Depth Test) : 렌더링 순위가 정해지지 않았을 경우에 깊이 값으로 투영될 정점을 결정합니다. [Alpha Blending]Alpha Blending은 두 픽셀을 가중치에 따라 섞는 방법입니다.  [Anti-Aliasing]          앨리어싱을 잡아줍니다.
·DirectX 11
Pixel Shader는 레스터화 된 도형에 원하는 색을 입혀서 출력하게 도와주는 쉐이더입니다. 텍스처 매핑, 노말 매핑 등의 기법으로 색을 입혀서 표현이 가능합니다. 조명 처리나 이미지 처리를 할 떄 유용하게 사용됩니다.보간처리된 정점 데이터의 값이 넘어옵니다.
·DirectX 11
정점을 처리하는 단계를 지난 정점은 레스터라이제시션 단계로 넘어갑니다.우선 정점들은 삼각형으로 묶여있는데 이 시점부터는 하나의 독자적 도형으로 처리가 됩니다. 우선 화면에 그려질 2차원 삼각형의 세 정점이 결정되면 다음과 같은 일이 일어납니다.이 삼각형이 포함하는 모든 픽셀마다 Pixel Shader(fragment shader)가 실행된다.삼각형의 세 정점에 할당 되었던 여러 데이터(pos, uv, normal, color)가 보간되어 삼각형 내부에 각 픽셀셰이더로 넘어옵니다.DirectX에서 이러한 일련의 과정을 레스터라이제이션이라고 부르고 고정 파이프라인 단계로 프로그래머가 이러한 로직들을 임의 바꿀수 없는 파이프라인 단계이다. 자체 알고리즘으로 알아서 동작을 합니다.  [레스터라이제이션 알고리즘]..
·DirectX 11
기본 폴리곤에서 정점을 추가 혹은 삭제하는 연산이 가능합니다.예를 들면 아래의 그림처럼 같은 오브젝트이지만 두 개가 필요하다던가 파티클처럼 같은 모양을 색이나 회전, 위치를 다르게 해야 하는 경우에 하나만 그리고 Geometry Shader에서 색 변경과 위치를 바꿔서 GPU에서 처리합니다.GPU에서 연산을 처리하기 때문에 연산속도가 빨라질 수 있습니다.
·DirectX 11
테셀레이터는 3단계로 구성되어 있습니다.HullShader -> Tesselation -> DomainShader 단계를 거칩니다.  [HullShader]HullShader는 테셀레이터 작업의 첫 단계입니다. VertexShader에서 공간변환을 진행하지 않고 HullShader 정점정보들을 전달해 줍니다.HullShader는 폴리곤을 얼마나 분할할 것인지를 결정하는 단계입니다.   [Tesselation]아래는 테셀레이션 적용 전과 후의 그림입니다. 테셀레이터는 다각형을 겹치지 않고 작게 만들어 빈틈을 없애 오브젝트를 실제에 보다 가깝게 표현할 수 있게 도와주는 기술입니다.  [Domain Shader]Domain Shader는 테셀레이터가 출력한 정점마다 한 번씩 함수(쉐이딩 언어)를 호출하게 해 ..
·DirectX 11
Input Assembler에서 정점정보들로 생성된 도형은 받았지만 로컬 좌표계(Local)에 있기 때문에 해당 데이터들을 화면에 그대로 출력해 버리면 화면에 중심부에 전부 그대로 출력되어 버려서 공간좌표계(World)로 변환할 필요가 있습니다. Local Space에서 World space로 변환이 필요하고, 실제 플레이어가 바라보는 카메라가 중심이 되는 공간 View Spcae변환을 해준다. 그리고 마지막으로 Projection 변환을 거쳐 최종적으로 정의된 Clip Space라는 공간으로 변환을 해준다.   [월드공간 변환]Local Space라고도 불리는 오브젝트 공간은 3차원 세상에서 표현될 각각의 개인의 공간에 정의된 영역입니다.그러한 오브젝트를 월드 공간에 생성하여 월드공간으로  변환해야 합..
·DirectX 11
3차원 모델을 3차원 공간에 나타내기 위해선 모델의 점(Vertex)의 값을 알아야 합니다.이러한 점들의 집합은 폴리곤(Polygon)이라고 합니다. 이때 게임에서는 삼각형을 최소 단위로 3D 폴리곤을 정의합니다.이 정점 데이터들을 운반하는 자료구조를 Vertex Buffer라고 합니다.  그리고 점점들의 인덱스를 저장하고 있는 버퍼는 Index Buffer라고 합니다. 예를 들면, 게임에서 사각형을 그리려면 최소 단위인 삼각형을 기반으로 그려야 하기 때문에 2개의 삼각형의 정점 6개가 필요합니다. 이러한 경우 인덱스 버퍼는 정점은 4개만 두고 정점의 위치를 가져와서 필요한 정점의 개수를 줄여주는 역할을 한다. 하지만 정점에는 좌표 데이터뿐만 아니라, 색, 법선, 텍스처좌표(UV) 등등 필요한 정보가 많..
·DirectX 11
렌더랑 파이프라인은 Rasterization이라 불리며 아래의 과정을 따릅니다.앞으로 레스터라이제이션의 과정을 상세하게 알아보겠습니다.
tita
'DirectX 11' 카테고리의 글 목록