DirectX11 23

[DirectX11] 게임테크랩 자체 엔진 게임잼 - 토끼굴의 비밀

1. 개요지금까지 매주 DX11와 ImGui를 이용해서 만든 자체엔진을 이용해서 게임잼을 진행했습니다. 자체엔진에 부족한 점이 많아서 개발하는 것이 쉽지 않았지만 결국 완성했습니다. 지금부터 그 과정을 알려드리도록 하겠습니다. 아래는 간단하게 작성한 기획서입니다. 2. 게임 소개저희가 개발한 게임은 사진촬영과 탈출컨셉의 게임입니다. 토끼들은 인간을 지배하기 위해서 사악한 음모를 꾸미고 있고, 주인공은 토끼로 변장해서 토끼들의 굴에서 증거사진을 찍어서 탈출하는 스토리를 가지고 있습니다. 일러스트는 전부 AI를 통해 제작한 것입니다. 3. 구현 요소3-1. 기본 화면 기본적으로 ImGui를 통한 UI가 구현되어있습니다. 좌하단의 UI는 카메라 쿨타임을 나타내는 UI이고 하단의 일러스트는 플레이어가 찍어야할..

DirectX11 2025.06.13

[DirectX11] DOF (Depth Of Field) 피사계 심도

1. 개요DOF라고 불리는 피사계 심도는 사진학에서 사용하는 용어입니다. 한마디로 정의하자면 사진이 선명하게 보이는 범위가 바로 DOF입니다. 카메라에서 물체를 볼때 초점이 맞는 한 점이 있습니다. 그 점보다 가까워지거나 멀어지게 되면 물체는 점점 흐려지기 시작합니다. 피사계 심도가 깊다는 말의 의미는 초점이 맞는 범위가 넓다는 것이고 얕다는 것은 그 반대입니다. 실제 카메라의 이러한 광학적 현상을 디지털 환경에서 재현하는 것이 바로 컴퓨터 그래픽스의 DOF입니다. 실제 카메라는 렌즈의 물리적 특성으로 자연스럽게 DOF가 발생하지만, 컴퓨터 그래픽스에서는 이를 시뮬레이션해야 합니다. 오늘은 이러한 특성을 D3D11을 통해 구현하는 과정에 대해 설명할 것입니다. 아래는 실제 적용한 결과입니다. 2. DOF..

DirectX11 2025.05.28

[DirectX11] Payload & Particle

1. 개요오늘은 언리얼 엔진에서 파티클의 데이터를 관리하는 방식인 payload에 대해서 소개하도록 하겠습니다. 우리에게는 데이터를 담을 수 있는 다양한 도구들이 있습니다. (TArray, List, Vector)등.. 그럼에도 언리얼엔진에서 파티클에 대한 데이터를 관리할때는 PayLoad를 사용합니다. 일련의 데이터들중에 가장 첫번째 데이터의 주소를 uint8*로 유지하고 접근하는 방식입니다. 이렇게 하면 디버깅하기도 굉장히 어렵고 시각적으로 확인도 하기 어렵습니다. 또한 구현에도 많은 노력이 들어갑니다. 그럼에도 이러한 데이터 관리 방식을 사용하는 이유와 Payload에 대해서 자세히 알아보는 시간을 가지겠습니다. 2. 파티클 정보 구조체 기본적인 파티클의 데이터를 담는 구조체는 아래와 같이 정의되어..

DirectX11 2025.05.24

[DirextX11] FBX Animation, Unreal Engine의 Animation 구조, Notify

1. 개요오늘은 언리얼 엔진의 구조를 바탕으로 FBX에서 애니메이션 정보를 추출하고 애니메이션을 재생하는 과정에 대해서 알아보도록 하겠습니다. FBX파일에는 애니메이션 정보가 포함되어 있습니다. 우리는 이 정보를 적절히 추출하고 데이터를 알맞은 형태로 저장한뒤 애니메이션의 각 프레임을 Interpolation하며 자연스러운 애니메이션을 띄워야하는 것이 목적입니다. 2. Unreal Engine에서의 구조기본적인 애니메이션을 저장하는 틀은 Unreal Engine을 참고하여 제작하고 그 틀에 데이터를 저장하는 방식을 차용할것입니다. 우선 애니메이션에 대한 핵심정보를 저장하는 클래스는 바로 UAnimDataModel입니다. 해당 클래스에는 아래와 같은 정보가 담겨있습니다.TArray BoneAnima..

DirectX11 2025.05.16

[DirectX11] CPU Skinning, GPU Skinning 비교

1. 개요https://yeoul0714.tistory.com/56 [DirectX11] FBX, CPU Skinning1. 개요https://yeoul0714.tistory.com/55 [DirectX11] FBX SDK적용, 컴파일 옵션 /Md /Mt1. 개요우리는 지금까지의 프로젝트에서 OBJ Parser를 만들고 그것을 Rendering Pipeline에 연결해서 OBJ를 읽고 Rendering하는 시스템yeoul0714.tistory.com 우리는 저번 시간에 CPU Skinning에 대해서 알아보았습니다. 한마디로 본의 움직임에 대한 Mesh Vertex 계산을 CPU에서 해준다는 의미였습니다. 이번엔 Skinning을 GPU에서 처리하는 GPU Skinning에 대해 알아보고 CPU Skin..

DirectX11 2025.05.16

[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] Lua 스크립트 연동 + SOL2

1.개요이번엔 컴퓨터 그래픽스에 관한 내용은 아니지만 엔진을 만들어가는 과정중에 하나이기에 DX11이란 카테고리를 부여했습니다. Lua라는 언어를 개발하던 게임엔진에 연동하는 작업을 하려고 합니다. 그렇다면 이미 C++로 잘 개발되던 엔진에 어째서 Lua가 필요한 것일까요? 오늘 글에서는 Lua스크립트의 필요성과 Lua를 쓰는 이유 그리고 연동과정과 예시를 보여드릴 생각입니다. 2. Lua 스크립트의 필요성Lua스크립트를 굳이 연동하는 이유는 분명하게 존재합니다. 그 이유를 크게 4개로 분리했습니다. 게임 로직과 엔진 코드 분리기본적으로 엔진이 돌아가는 로직은 지금까지 DX11과 C++을 이용해서 개발되어 왔습니다.그러나 우리가 만드는 것은 결국 게임을 개발하는 에디터 입니다.그러므로 에디터를 사용하는 ..

DirectX11 2025.04.27

[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] Renderdoc 사용법 CubeMap 디버깅

1. 개요지난 Shadow글에서는 구현이 완료된 뒤에 내용을 정리한 글이기 때문에 막힘없이 쭉쭉 나아갔던것을 볼 수 있었습니다. 그러나 실제로 구현을 할때는 마치 끝이 보이는 어두컴컴한 터널을 걷는 기분이었습니다. 이 길이 맞는지도 모르고 끝까지 간다고 해서 출구가 있을지도 모르는 미지의 상황이었습니다. 코딩은 마치 우리의 인생과 참 많이 닮아 있습니다. 이 길이 맞는지는 아무도 모르고 끝까지 간다고 해서 원하는 결과를 낼 수 있을지도 모릅니다. 결국 해결할 수 있었던것은 동료들과 방향을 알려주는 다양한 도구들이었습니다. 혼자 걷는 것 보다는 둘이 낫고 나침반이라도 들고 걷는 편이 길찾기에 훨씬 유리합니다. 오늘은 개발중 생긴 문제들과 나침반 역할을 해준 Renderdoc에 대해 글을 작성해보겠습니다. ..

DirectX11 2025.04.23