분류 전체보기(44)
-
블로그 이전
원래 옵시디언을 사용해서 Local 환경에서만 공부한 내용을 정리하고 있었습니다. 강의를 구매해서 공부한 내용이 대부분이라서 온라인에 공개하면 안되서 개인적으로만 가지고 있었는데 프로젝트를 진행하면서 옵시디언에 일단 글을 적고 복사해서 Tistory에 글을 작성하니 글이 이상해졌습니다. 어차피 옵시디언에 공부한 내용을 계속 작성할텐데 나중에 공개적으로 작성한 글을 그대로 블로그 형식으로 올릴 수 있게 그냥 Quartz + Github Page를 조합해서 블로그를 만들었습니다. https://jin-sukkim.github.io/Blog/ indexJEngine 블로그에 오신 것을 환영합니다! 🚀 이곳은 게임 엔진 개발과 컴퓨터 공학 관련 노트를 공유하는 공간입니다.jin-sukkim.github.io..
2025.10.23 -
엔진 개발 04 - CPU와 GPU 병렬처리, Command와 Resource Transition
CPU와 GPU를 모두 사용해 최적의 성능을 얻으려면 병렬로 사용하지만 중간중간 동기화도 필요함이때 동기화는 병렬성을 망치기에 최소화해야 함Command Queue와 Command ListGPU에는 Command Queue가 있고 CPU는 렌더링 Command들을 Command List를 만들어 API를 통해 Queue에 제출함중요한 점은 이 명령들을 GPU가 즉시 실행하는건 아니고 처리할 준비가 되어야지 실행되기 시작함즉, GPU가 이전에 제출된 명령들을 처리하느라 바쁘면 명령들은 Queue에 그냥 남아있음CPU가 명령을 Queue에 제출하면 GPU가 Queue에서 명령을 뽑아서 처리Command Queue가 비면 GPU가 놀게되고, 꽉 차있으면 GPU가 명령을 처리해 자리가 생길때까지 CPU가 놀게 ..
2025.10.22 -
엔진 개발 03 - DirectX 12를 사용하기 전에 꼭 알아야 하는 개념들
목표Direct3D의 역할 이해Direct3D에서 COM의 역할 이해2차원 이미지의 저장방식, 페이지 전환, 깊이 버퍼링 Multi-Sampling 같은 그래픽 개념성능 카운터 함수들을 이요해 고해상도 타이머 값을 얻기Direct3D 초기화Direct3D 12 개요Direct3D는 GPU를 제어하는 저수준 Graphics API3차원 그래픽 가속 기능을 이용해 3D World를 렌더링 가능응용 프로그램과 그래픽 하드웨어 사이에 Direct3D라는 Interface를 통해 GPU에 명령을 주는데 Driver가 내부적으로 해당 명령을 받아서 일하므로 세부사항은 걱정할 필요가 없음단 NVIDIA, AMD, Intel 등 GPU 제조사의 Driver에서 DX12를 지원해야함DX12에 몇 가지 새로운 렌더링 기능..
2025.10.22 -
엔진 개발 02 - Log 시스템
이전에도 프로젝트를 진행하면서 규모가 작다면 그냥 코드를 한 줄씩 디버깅해도 문제가 없었는데 규모가 커지면서 기능별로 클래스를 분류하니 디버깅이 어려웠습니다. 디버깅의 편의성을 위해서 Logging을 위한 Class를 만들어주었습니다.강의 내용을 참고하고 AI를 활용해 주석을 추가해줬습니다.Logger Class전체적인 코드 변화는 아래 링크의 Github의 features branch에서 해당 Commit ID를 확인https://github.com/Jin-SukKim/JEngine/tree/featuresCommit ID : 49a2911f71c8c9ef74619c0d00bb9e4a2c89c862public:... static Logger& getInstance() { static Logg..
2025.10.19 -
엔진 개발 01 - 프로젝트 초기 설정
프로젝트 생성엔진 프로젝트를 시작하기 하기 위해 Git과 VS2022 설정을 해줬습니다.규모가 작은 아주 간단한 계산기 같은 프로젝트면 상관없겠지만 렌더러와 같은 클래스가 많아지고 기능이 이것저것 많이 들어가는 경우 Project를 여러개 만들어서 Dependency를 설정해주는 것이 코드를 정리하기 더 좋은 것 같습니다.추가적으로 클래스가 많아지면 기능별로 클래스를 따로 폴더별로 묶어서 분류하는게 관리하기 종하집니다.일단 Application, Asset, Engine 3개의 프로젝트를 만들어줬습니다.여기서 Application과 Asset은 그냥 Empty Project로 아무것도 없이 만들었고 Engine은 이번 프로젝트의 Core 부분으로 Static Library로 프로젝트를 생성했습니다.Ass..
2025.10.18 -
엔진 개발 00 - 시작
엔진 개발의 시작여태까지 강의를 보고 따라하면서 WinAPI + C++, C++ + DirectX11 조합으로 간단한 렌더러나 엔진은 구현했습니다.그런데 이렇게 진행한 대부분의 엔진의 코드는 지금 계속 공부하면서 되돌아보면 간단한 구조로 어느정도 하드코딩되어서 그냥 순차적으로 나열해 구현되어 있는 것 같습니다. 즉, 진짜 엔진의 구조로 만들어진게 아니라 그냥 순차적으로 코딩해 만들었지만 그냥 Singleton, Composition 등 약간의 디자인 패턴과 클래스로 나눠 두었을 뿐 추상화 작업은 거의 이루어지지 않았습니다.그런데 이번에 HongLab의 Real-Time Rendering With Vulkan 강의를 듣고 확장 가능한 엔진을 어떻게 만들면 좋을지 알았습니다. 여태 공부한 그래픽스 이론과 이..
2025.10.16