DX11 9

[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] Light Culling

1. 개요 컬링(Culling)3D 그래픽스 및 게임 개발에서 불필요한 연산을 줄이기 위해 사용되는 최적화 기법입니다. 기본적으로 "필요 없는 것을 걸러내는" 과정을 의미합니다. 지난번 Point Light구현시에 광원의 최대 수를 제한한적이 있습니다. 그러나 우리 게임 월드에서는 이보다 많은 빛이 Rendering될 수 있고, 이에 대한 대응도 필요합니다. 이번 시간엔 대응 하는 방법을 적용해보려고 합니다. https://yeoul0714.tistory.com/24 [DX11] Point Light 구현하기 (내적, 정사영)1. 개요 게임에서 빛은 매우 중요합니다. 빛을 이용하면 다양한 분위기도 표현이 가능하고, 다양한 연출도 가능하게 합니다. 그렇다면 DX에서는 이 Point Light를 어떻게 구현..

DirectX11 2025.04.12

[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] Obj 파일 Parsing후 Pipe line Binding

1. DX에서 오브젝트를 Rendering하는 것은 매우 번거롭다.우리는 DX에서 물체를 렌더링해 주기 위해서는 정점 정보를 하나하나 직접 입력을 해주어야 했습니다.이것은 매우 번거로운 작업이고 단순히 정육면체를 렌더링하기 위해서도 수많은 정점이 필요합니다. 심지어 Texture를 Mapping 해야 해서 UV 좌표까지 들어가게 된다면 정점 양은 더욱 늘어나게 됩니다.심지어 좌표계까지 고려해서 정점들의 순서를 맞추거나 Index 버퍼를 만들어주어야 합니다.이렇듯 정점을 수작업으로 입력해서 오브젝트를 그리는 것은 매우 번거롭습니다. 아래 사진과 같이 단순한 사과 오브젝트에 들어가는 정점만 해도 6000개가 넘습니다.  이러한 오브젝트를 수작업으로 정점을 넘겨주는 것은 사실상 불가능에 가깝습니다.  2. O..

DirectX11 2025.04.07

[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] UV좌표를 활용한 Text 렌더링

우리는 UV Mapping을 통해서 알파벳을 Rendering하는 것이 가능하다.https://lucide.github.io/Font-Atlas-Generator/ Font Atlas Generator lucide.github.io  그렇다면 이 텍스처를 이용해서 어떻게 화면에 원하는 영문을 띄울 수 있을까? 기본적인 아이디어는 바로 ASCII코드입니다.  상단의 Font Atlas를 보면 영문자가 있는데 A의 경우 65번쨰 칸에 위치합니다. (4행/1열) 그런데 놀랍게도 A의 ASCII코드에서 정수 65로 대응이됩니다. (그렇게 만들어진 Atlas) 그렇다면 문자의 ASCII코드를 통해서 Font Atlas의 uv좌표를 정확히 계산해낸다면  mapping이 가능할 것입니다.void UTextCompon..

DirectX11 2025.03.19

[DX11] Texture Atlas, UV좌표계

오늘은 Texture Atlas와 UV좌표계에 대해서 알아보도록 하겠습니다. Texture Atlas는 여러 개의 작은 텍스처를 하나의 큰 POT 텍스처에 배치하는 방식이다. 아틀라스는 기본적으로 텍스처를 화면에 그릴때 최적화를 위하여 사용됩니다.  우리가 사용하고 싶은 텍스처들은 정말 다양한 크기가 존재합니다. 어떤 텍스처들은 Power Of Two(2의 거듭제곱)꼴로 나타내어진 256x256 512x512의 크기를 가진 텍스처도 있을것이고 그렇지 못한 텍스처도 분명 존재합니다.POT 텍스처 : 256x256, 512x512, 1024x1024NPOT(Non-Power of Two) 텍스처 : 300x500, 750x750그러나 여기서 핵심는 그래픽연산을 수행하는 GPU는 POV형태의 텍스처를 가장 빨..

DirectX11 2025.03.19