[DirectX11] 11. 이미지 – Texture2D에 대해 알아보자.

사각형까지 렌더링이 되었다. 이제 이 사각형에 이미지를 출력해보려고 한다. 이미지를 출력하기 위해서는 Texture2D라는 리소스가 필요하다. Texture2D는 GPU 메모리에 적재되어 Pixel Shader에서 샘플링될 수 있다. 샘플링된다는 것은 특정 픽셀에서 표현해야할 색상값을 표본으로 가져올 수 있다는 뜻이다. 이미지를 렌더링할 수 있는 Texutre2D에 대해 알아보자. 정점에서 가지는 텍스처 좌표 또한 보간되어 각 픽셀도 텍스처 좌표를 가지게 된다. 이 … Read more

[DirectX11] 10. 사각형 – Index Buffer에 대해 알아보자.

Index Buff에 대해 알아보자. 인덱스 버퍼를 사용하는 이유는 정점 버퍼에서 사용하는 GPU 메모리 사용량을 줄이기 위해서이다. 간단하게 색상을 포함하는 사각형을 보자. 정점 버퍼로만 이 사각형을 렌더링하기 위해서는 총 6개의 정점 데이터가 필요하다. 각 정점이 위치( float[3] )와 색( float[4] )을 포함한다면 정점 버퍼의 메모리 사용량은 28 x 6 = 168 bytes가 된다. 하지만 인덱스 버퍼를 … Read more

[Motion Matching] 1. GameAnimationSample에서 구성된 모션 매칭 시스템

언리얼 엔진의 모션 매칭 시스템을 분석하기 전에 먼저 모션 매칭 시스템을 이용하기 위해 필요한 것들과 어떻게 동작하는지 간단하게 먼저 알아보자. 에픽에서 제공한 GameAnimationSample에서 구성된 모션 매칭 시스템을 살펴보았다. Motion Matching Asset 구조 Pose Search Scheme 애니메이션을 찾기 위한 ( Query ) 데이터들을 정의한다. 프로젝트의 PSS_Default를 보면 다음과 같은 채널들이 지정되어 있다. 즉, PSS_Default스키마를 사용하게 되면 … Read more

[Motion Matching] 언리얼 엔진의 모션 매칭 시스템 분석

언리얼 엔진의 모션 매칭 | 언리얼 엔진 5.5 문서 | Epic Developer Community에서 공식 문서를 확인할 수 있다. 쉽고 간단하게 말하면 본( Bone )의 위치 및 속도와 같은 분석 요소들을 가지고 캐릭터 움직임을 분석해서 최적에 맞는 애니메이션을 선택해서 플레이해주는 시스템이다. 각 상황별로 애니메이션 에셋이 풍부하게 있다면 모션 매칭 시스템에 의해 자연스럽고 다양한 애니메이션을 보여줄 수 … Read more

[DirectX11] 9. 여러개의 슬롯에 연결된 버텍스 버퍼를 렌더링 해보자.

여러개의 슬롯에 연결된 버텍스 버퍼를 렌더링 해보자. Vertex Buffer를 생성하는 문서에서 렌더링 파이프라인에 연결할 때 여러개의 정점 버퍼를 슬롯을 이용하여 동시에 연결할 수 있음을 잠깐 언급을 했었다. 여러개의 Vertex Buffer를 연결하기 여러개의 정점 버퍼를 렌더링 파이프라인에 연결하는 부분을 다시 한번 살펴보자. 정점 버퍼를 렌더링 파이프라인에 연결하는 이 함수의 자세한 명세는 다음과 같다. 함수 명세를 보면 … Read more

[DirectX11] 8. 삼각형 – Pixel Shader에 대해 알아보자.

Pixel Shader에 대해 알아보자. 픽셀 쉐이더는 정점 쉐이더와 모든 과정이 흡사하다. Input Layout설정만 빠지면 사실상 이름만 바뀌는 수준이다. Shader Code 작성 쉐이더 코드는 정말 간단하다. 그냥 입력된 컬러를 그대로 반환한다. 입력된 데이터값이 이미 해당 픽셀 위치에 대해 정점간 데이터의 보간된 데이터이다. 따라서 추가 가공을 할 필요 없이 받은 파라메터의 값을 그대로 리턴하면 된다. 픽셀 쉐이더에서 … Read more

[DirectX11] 7. 삼각형 – Input Layout에 대해 알아보자.

Input Layout에 대해 알아보자. Vertex Buffer와 Vertex Shader를 사용하기 위해 설정을 해주어야 하는게 하나 더 있다. 바로 Input Layout의 설정이다. Input Layout은 정점 쉐이더에서 사용할 정점에 대해 특성을 부여해준다. 정점 구조체로 정점 버퍼를 만들었던 것을 보자. 정점은 다양한 형태로 구성될 수 있고 정점 버퍼 역시 다양한 형태를 따를 수 있다. 쉐이더에서는 이 정점의 구조에 대해 … Read more

[DirectX11] 6. 삼각형 – Vertex Shader에 대해 알아보자.

Vertex Shader에 대해서 알아보자. 이전글에서 정점 버퍼를 만들었다. 이 정점 버퍼의 내용으로 렌더링을 걸었을 때 가장 처음 가공을 시작하는 렌더링 파이프라인의 스테이지가 바로 이 Vertex Shader Stage이다. 이번글에는 HLSL로 작성된 1.쉐이더 파일을 컴파일한 후, 2. 컴파일된 내용을 쉐이더 객체로 생성하여 3. 렌더링 파이프라인에 연결하는 과정에 대해 알아볼 것이다. Shader Code 작성 우선 아주 간단한 형태의 … Read more

[DirectX11] 5. 삼각형 – Vertex Buffer에 대해 알아보자.

Vertex Buffer에 대해 알아보자. 마이크로 소프트 홈페이지에서 공식적으로 정점 버퍼를 만드는 방법에 대해 설명하고 있다. 우선 가장 먼저 정점 버퍼를 만드는 예제 코드를 보자. Vertex Structure 정의하기 정점 버퍼를 만들기 위해서 우선 정점의 데이터 형태를 정의할 필요가 있다. 위치와 색깔을 가지는 간단한 형태의 정점 구조체 왜 구조체의 형태여야 할까? 좀 더 원시적으로 생각해서 float Vertex[ … Read more

[DirectX11] 4. 삼각형 – Vertex Buffer, Vertex Shader, Pixel Shader

삼각형이라는 최소 폴리곤이라도 화면에 렌더링 하기 위해서는 필수로 준비해야 하는 것이 있다. 바로 Vertex Buffer, Vertex Shader, Pixel Shader 이다. DirectX11 API를 사용해서 삼각형을 렌더링 한다는 것은 곧 DirectX11의 렌더링 파이프라인을 사용한다는 뜻이다. 따라서 최소한으로 렌더링 파이프라인이 동작하여 결과물을 만들 수 있으려면 최소한으로 필요한 것들을 준비해서 렌더링 파이프라인에 설정해줘야 하는 것이다. 이 렌더링 파이프라인 스테이지들 … Read more