D3D11 10

[DirectX11] FBX, CPU Skinning

1. 개요https://yeoul0714.tistory.com/55 [DirectX11] FBX SDK적용, 컴파일 옵션 /Md /Mt1. 개요우리는 지금까지의 프로젝트에서 OBJ Parser를 만들고 그것을 Rendering Pipeline에 연결해서 OBJ를 읽고 Rendering하는 시스템을 구축했습니다. https://yeoul0714.tistory.com/22 [DX11] Obj 파일 Parsing후 Pipe linyeoul0714.tistory.com 지난번엔 FBX파일을 읽어오는 SDK를 적요하는 방법에 대해서 알아보았습니다. 이번엔 FBX파일을 Rendering Pipeline에 맞게 데이터를 가공해 Rendering하고, CPU Skinning에 대해서 알아볼것입니다. 2. Bone의 계..

DirectX11 2025.05.09

[DirectX11] FBX SDK적용, 컴파일 옵션 /Md /Mt

1. 개요우리는 지금까지의 프로젝트에서 OBJ Parser를 만들고 그것을 Rendering Pipeline에 연결해서 OBJ를 읽고 Rendering하는 시스템을 구축했습니다. https://yeoul0714.tistory.com/22 [DX11] Obj 파일 Parsing후 Pipe line Binding1. DX에서 오브젝트를 Rendering하는 것은 매우 번거롭다.우리는 DX에서 물체를 렌더링해 주기 위해서는 정점 정보를 하나하나 직접 입력을 해주어야 했습니다.이것은 매우 번거로운 작업이고 단yeoul0714.tistory.com 그러나 OBJ 파일에는 명확한 한계가 존재합니다. 1. 애니메이션 데이터의 부재 OBJ 파일은 정적 메시만 저장할 수 있고, 본(bone) 구조나 스킨 가중치와 같은 ..

DirectX11 2025.05.07

[DX11] PCF (Percentage Closer Filtering)

1. 개요우리가 지난번 만들었던 그림자에는 한가지 문제점이 있습니다.https://yeoul0714.tistory.com/37 [DX11] Point Light Shadow - Peter Panning, Shadow Acne1. 개요게임 세상에서 그림자를 띄울 수 있다면 보다 더 실감나는 게임이 될것입니다. 오늘 알아볼내용은 바로 그림자를 구현하는 방법입니다. 우선 그림자를 구현하기 위해서는 Depth값이 필요yeoul0714.tistory.com 그것은 바로 테두리가 울퉁불퉁 하다는 것입니다. (Aliasing) 이런식으로 그림자가 생긴곳을 가까이서 보도록 합시다. 이렇듯 그림자의 테두리가 울퉁불퉁하고 날카로운것을 볼 수 있습니다. 이러한 문제가 생기는 이유는 스태틱 메시의 depth를 담고있는 ..

DirectX11 2025.04.24

[DX11] Point Light 구현하기 (내적, 정사영)

1. 개요 게임에서 빛은 매우 중요합니다. 빛을 이용하면 다양한 분위기도 표현이 가능하고, 다양한 연출도 가능하게 합니다. 그렇다면 DX에서는 이 Point Light를 어떻게 구현할까요? 우선 개발 완료 영상부터 보시겠습니다!   2. 필요한 값 / 값 전달 과정우선 영상에 나온 대로 광원에 대한 값들이 필요합니다. 1. Intensity : 빛의 세기 2. Radius : 빛이 영향을 주는 반경 3. Falloff : 거리가 멀어질수록 빛이 약해지는 정도 4. Color : 빛의 색이러한 값들을 바탕으로 클래스를 하나 만들어 주었습니다. (Point Light의 이름을 fireball로 하였습니다) 클래스는 각 값과 Getter, Setter로 구성되어 있습니다.#pragma once#include ..

DirectX11 2025.04.09

[DX11] 안개 구현: Render Path 분리 (Full Quad Rendering)

1. 개요이번엔 Fog를 구현하는 방법에 대해 알아보도록 하겠습니다.아래는 Epic Games에서 제공하는 이미지입니다.Fog를 이용하면 아주 자연스럽고 멋진 3D 세상을 구현할 수 있습니다.  2. Full Quad Rendering을 통한 구현우선은 우리가 기본적으로 Rendering하던 방식에서 벗어나 화면을 덮는 Full Quad를 통해 전달해야 합니다.그런데 어째서 Full Quad라는 매개체를 이용해야 하는 것일까요?비유를 통해 그 이유를 알아보도록 합시다.우리가 지금 쓰는 방식인 Forward Rendering은 각 객체들을 화면에 직접 그리는 방식입니다.만약 안개를 그리고 싶다면 화면에 물체들과 안개를 같이 그려야 합니다.그러나 이 방식보다는 우리가 그리고 싶은 물체를 우선적으로 그린 뒤 ..

DirectX11 2025.04.05

[DX11] PIE Mode, Shallow/Deep Copy (깊은 복사/ 얕은 복사)

1. 개요 우리가 게임 엔진을 보게 된다면 PIE 모드 (Play In Editor) 모드가 존재합니다.PIE 모드의 존재로 인하여 개발자는 굳이 빌드를 하지 않더라도게임 환경 안에서 빠르게 테스트를 할 수 있는 장점이 있습니다.이번엔 DX11을 이용한 엔진 개발에서 PIE 모드를 구현하며 얻은 지식을 공유하고자 합니다.   2. Unreal Engine 구조우선 언리얼 엔진을 카피하는 방식으로 개발을 진행하고 있기 때문에 언리얼 엔진의 계층 구조를 알아야 합니다. 사실 World는 WorldContext라는 Class에 의해서 한 번 더 Wrapping 됩니다.(World의 상태를 나타내는 Enum값 소유 PIE,Editor)언리얼 엔진에는 World가 있고 World는 Level을 가지고 있고,  L..

DirectX11 2025.04.03

[DX11] Matarial Sorting을 통한 최적화

기술이 발전함에 따라 게임 그래픽은 점점 더 사실적이게 변하고  그에 따라 하드웨어도 눈부신 성장을 이루어 냈습니다. 그러나 우리 게임 엔지니어들은 항상 고민을 해왔습니다. 어떻게 하면 최소한의 자원으로 동일한 효과를 낼 수 있을까? 정말 수많은 최적화 기법들이 있지만 오늘 소개해드릴 최적화 기법은 바로 Matarial Sorting입니다. 말 그대로 Matrial을 Sorting(정렬)한다는 것입니다. 그렇다면 어째서 이 Matarial을 정렬해야 하며 정렬을 한다면 어떠한 기준으로 정렬을 해야 하는것일까요? Matarial을 정렬해야 하는 이유게임 월드상에는 다양한 Matarial을 가진 오브젝트들이 있을것입니다. 그렇다면 GPU는 각 오브젝트마다 Matarial을 바꿔끼면서 Draw연산을 수행하여야..

DirectX11 2025.03.29

[DX11] Constant Buffer에 값 넘길 때 주의할 점(Shader로 Matarial값 넘길 때 주의할점)

1. 개요 Matarial에는 정말 다양한 값들이 있습니다. 기본적으로 아래와 같은 값들이 쉐이더로 넘어오도록 설계하고 있습니다. 텍스처의 다양한 상태를 조절하는 값들입니다.buffer MaterialCB : register(b4){ float3 Ambient; float Opacity; float3 Diffuse; float Transparency; float3 Specular; float RefractiveIndex; float3 Emissive; float SpecularExponent; int IlluminationModel;}; 그렇다면 이 값들을 constant buffer를 통해 shader에 넘겨줄 때 주의해야 할 점은 무엇이 있을까..

DirectX11 2025.03.26

[DX11] Shader에 Vertex넘길 때 주의 해야 할 점!! (Shader 디버깅 Tip)

1. 문제 상황 이렇게 정점은 위치/normal/색/uv좌표 순으로 Shader에 넘겨주고 있었고 Pixel Shader에서는 적절히 받아온 텍스처를 Sampling해주고 있었습니다. 그런데 여기서 발생한 문제점이 Texture의 색들이 전부 섞여서 나타나는 것이었습니다.  색이 섞이는 것을 알게 될때 까지도 상당한 시간이 소요 됐습니다. 우선 위의 사진처럼 큐브 텍스처를 넘겨주게 되면 전체가 회색으로 렌더링 되었습니다.     2. 원인 추론 문제를 바탕으로 추론한점은 다음과 같습니다.  2-1. UV좌표가 잘못 됐나?UV좌표가 잘못 넘어가서 큐브 텍스처 바깥에 있는 회색 공간에 Mapping이 되어있는 것인가? 그러나 이 추측은 잘못된 것으로 밝혀 졌는데  그 이유는 아래 처럼 텍스처를 변경한뒤 파이..

DirectX11 2025.03.25

[DX11] Shader Resource View(SRV), Sampler에 대해서

SRV (Shader Resource View) - Pixel Shader에게 어떠한 텍스처를 보내줄 것인가? - 파이프라인 과정에서 픽셀 쉐이더에 어떠한 텍스처를 넘겨줄 것인가? 기본적으로 GPU는 Raw texture 데이터를 바로 읽지 못하기에 SRV를 생성하여 접근 가능하게 한다! 다음 코드는 DDS파일을 읽어와서 그를 바탕으로 SRV를 생성하는 과정을 담은 코드이다. (Texture 읽는 라이브러리 사용) 후에 m_texureMap이란 map에 저장된 SRV를 파일의 path를 이용해 불러와서 shader와 mapping해주는 과정을 거친다.void CTextureManager::LoadSetTexture() { ScratchImage image; for (auto path : Tex..

DirectX11 2025.03.18