유니티 Overdraw는 왜 성능을 크게 떨어뜨리는가? (GPU Bound 최적화 핵심)
유니티 Overdraw는 GPU 성능을 확인할 때 반드시 이해해야 하는 개념입니다. 앞선 글에서는 CPU Bound와 GPU Bound를 구분하는 방법, 그리고 CPU Bound 상황에서 Draw Call과 Batching이 왜 중요한지 정리했습니다. 이번 글에서는 GPU Bound 상황에서…
Series Archive
게임 개발 및 프로그래밍에 관련된 주제에 대한 카테고리 입니다.
유니티 Overdraw는 GPU 성능을 확인할 때 반드시 이해해야 하는 개념입니다. 앞선 글에서는 CPU Bound와 GPU Bound를 구분하는 방법, 그리고 CPU Bound 상황에서 Draw Call과 Batching이 왜 중요한지 정리했습니다. 이번 글에서는 GPU Bound 상황에서…
유니티 Draw Call이 많아지면 왜 성능이 떨어질까요? 유니티 드로우콜을 줄여야 한다는 이야기는 많이 들어봤지만, 실제로 왜 줄여야 하는지 정확히 이해하지 못한 경우가 많습니다. 이전 글을 통해 유니티 FPS가 떨어지는 이유를 파악했다면, 이제 다음…
유니티 FPS 떨어지는 이유는 무엇일까요? 유니티를 활용해 프로젝트를 진행하다 보면 최적화 관련된 고민을 하는 순간이 올 때가 있습니다. “갑자기 FPS가 60에서 30으로 떨어졌다” “최적화를 한다고 했는데도 성능이 좋아지지 않는다” “Draw Call을 줄였는데 왜 그대로지?”…
🚀 들어가며 게임을 만들다가 이런 경험을 해보셨을 겁니다. 컴퓨터가 빠르면 게임이 빨라지고 컴퓨터가 느리면 게임이 느려진다 같은 코드인데 실행 환경에 따라 게임 속도가 달라집니다. 이 문제를 해결하는 핵심 개념이 바로 deltaTime입니다. 🎯 문제 상황…
📚 입력 시스템 시리즈 1편: GetAsyncKeyState로 키 입력 처리 2편: Pressed / Held / Released 상태 관리 3편: 입력 시스템을 엔진 구조로 확장 🚀 들어가며 이전 글에서는 키 입력을 단순히 확인하는 것을 넘어서, Pressed…
📚 입력 시스템 시리즈 1편: GetAsyncKeyState로 키 입력 처리 2편: Pressed / Held / Released 상태 관리 3편: 입력 시스템을 엔진 구조로 확장 🚀 들어가며 이전 글에서는 GetAsyncKeyState를 이용해 입력 상태 관리하는 방법을 살펴봤습니다.…
📚 입력 시스템 시리즈 1편: GetAsyncKeyState로 키 입력 처리 2편: Pressed / Held / Released 상태 관리 3편: 입력 시스템을 엔진 구조로 확장 🚀 들어가며 게임을 만들다 보면 가장 먼저 필요한 기능 중 하나가…
📚 델리게이트 시리즈 1편: 함수 포인터 2편: std::function 3편: Delegate 구현 4편: 엔진 스타일 Delegate 🚀 들어가며 이전 글에서는 std::function을 기반으로👉 멀티캐스트 델리게이트 구조를 직접 구현해봤습니다. class Delegate { public: void Add(std::function<void()> func) {…
📚 델리게이트 시리즈 1편: 함수 포인터 2편: std::function 3편: Delegate 구현 4편: 엔진 스타일 Delegate 🚀 들어가며 이전 글에서는 std::function과 람다를 이용해👉 유연한 콜백 구조를 만드는 방법을 살펴봤습니다. std::function<void()> func = []() { std::cout…
📚 델리게이트 시리즈 1편: 함수 포인터 2편: std::function 3편: Delegate 구현 4편: 엔진 스타일 Delegate 🚀 들어가며 이전 글에서는 함수 포인터를 이용해👉 함수를 나중에 실행하는 콜백 구조를 만들어봤습니다. void Execute(void (*callback)()) { callback(); }…