프로그래밍 462

GPGPU와 GPU 프로그래밍

GPU 프로그래밍을 공부하기에 앞서,GPU 프로그래밍이 필요한 이유를 이해하기 위해서는GPGPU(General-Purpose GPU)의 개념을 이해해야 한다.그리고 GPGPU를 이야기하려면 먼저그래픽 처리 장치(Graphics Processing Unit, GPU)가 무엇인지 알아야 한다. 그래픽카드라는 이름에서도 알 수 있듯 GPU는 컴퓨터 그래픽스 연산에 특화된 연산 장치이다.그래픽스 연산은 화면에 그림을 그리는 연산이라 이해하면 된다. 컴퓨터 내부에서는 물체나 공간에 대한 정보 또는이미지 정보가 인간이 눈으로 볼 수 없는 데이터 형태로 저장된다.따라서 이를 눈으로 보기위해 데이터를 해석해서 화면에 그리는 작업이 필요하다.이러한 그래픽 연산을 위해 개발된 연산 장치가 바로 그래픽 카드, GPU이다. ..

3월 말 PainPoint

빌드 후에 bp로 짠 로직이 정상 작동하지 않는 오류가 있었다.이는 패키징 설정 문제 였으나,패키징 과정에서 자동으로 bp의 참조가softpointer로 치환되는 것이 오류의 원인으로 보았다. 그 이유는, 에디터 플레이로는 값이 서로 잘 전달되었지만,패키징 이후에는 값이 얕은 참조가 되었을 때 생기는 오류로 보였다.혹은 값이 잘 전달되지 않았을 때 생기는 경우의 오류였기에 해당포인터 오류로 판단하였다. 어떻게 오류를 수정해나가고 있긴 하지만,이번 기회로 OSCS,그리고 언어에 대한 이해, 엔진에 대한 이해를 좀 더 스스로에게 요구하는 계기가 되었다.

프로그래머스 LV.2 예상 대진표

https://school.programmers.co.kr/learn/courses/30/lessons/12985 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr    #include using namespace std;int solution(int n, int a, int b){ int answer = 0; while(a != b) { // %2 를 더해준 이유는 홀수일 경우를 위해서이다. a = (a/2) + (a%2); b = (b/2) + (b%2); answer++; } return answer;}   GitHub :..

언리얼 컴포지션

언리얼 컴포지션이란? 언리얼 컴포지션은 객체 지향 설계의 핵심 개념 중 하나인 Composition (컴포지션)을 언리얼 엔진에서 구현하는 방법을 의미한다. 이는 단순한 상속(Inheritance, Is-A 관계)만으로는 해결하기 어려운 복잡한 객체 설계 문제를,Has-A 관계를 통해 해결하는 기법이다. 주요 개념Has-A 관계:상속이 “~이다”라는 관계라면, 컴포지션은 “~을 가진다”라는 관계이다. 예를 들어, 게임 캐릭터가 여러 개의 컴포넌트(무기, 방어구, 스킬 등)를 갖는 경우, 이를 각각의 독립 객체로 구성해 관리할 수 있다.언리얼 엔진에서의 컴포지션 구현:언리얼 엔진에서는 UObject 기반의 오브젝트를 조합하여 복잡한 객체를 구성하는데, 이를 위해 두 가지 주요 방법을 사용한다.필수적 포함:..

UE5 2025.03.22

언리얼 오브젝트 리플렉션 시스템

언리얼 리플렉션 시스템이란? 리플렉션 시스템은 프로그램이 실행시간에 자기 자신을 조사하는 기능이다.이는 언리얼 엔진 테크놀로지의 근간을 이루는 것으로,에디터의 디테일 패널, 시리얼라이제이션, 가비지 콜렉션, 네트워크 리플렉션,블프/C++ 커뮤니케이션 등 다수의 시스템에 탑재된 것이다. 그러나 C++는 어떠한 형태의 리플렉션도 지원하지 않아,언리얼에는 자체적으로 C++ 클래스, 구조체, 함수, 멤버 변수, 열거형 관련 정보를수집, 질의, 조작하는 별도의 시스템이 구축되어 있다.전형적으로 이러한 리플렉션은 '프로퍼티 시스템'이라고 부르는데,'리플렉션'은 그래픽 용어이기도 하기 때문이다. 즉 리플렉션과 프로퍼티 시스템은 같은 뜻을 가리키는동의어이다. 리플리케이션 시스템은 옵션이다.리플렉션 시스템에 보이도록 했..

UE5 2025.03.18

D2D11HollowKnight - StatePatern을 Class화 하는 장점

FSM은 한 번에 한 가지 상태만 가질 수 있기에상태 변화에 크게A상태 진입 -> A상태 진행 중 -> A상태 탈출 -> B상태 진입이런 순으로 나눌 수 있다.즉, 하나의 상태를 3가지의 상태로 또 쪼갤 수 있는 것이다. State 패턴을 가질 수 있는 클래스와그 3가지 상태를 구분하는 Enum Class를 하나 둔다. enum class EState{ Enter, Exit, Ing, None};class State{public: State(class StateComponent* owner, std::string key, State* val); virtual ~State() {}; virtual void Update() = 0; virtual void LateUpdate() = 0; virtual voi..

Unity - BroadCasting, SendMessage, BroadcastMessage

유니티의 BroadCasting 유니티는 게임 오브젝트에 브로드캐스팅라는 기능으로실행을 관리한다. 브로드 캐스팅의 실행 방식 모든 오브젝트에 같은 메시지를 보낸다.해당 기능이 없다면 무시하고,이후 해당 메시지를 실행할 수 있는 기능이 있다면그 기능을 실행하도록 하는 것이다. 그렇다면, 이 브로드 캐스팅을 떠올렸을 때,모든 오브젝트가 가지는 공통된 함수를 생각해보자. 대표적으로 Start와 Update가 떠오를 것이다. Start는 처음 게임이 시작 되었을 때 한번 호출된다.그렇다는 것은 Start관련 브로드 캐스팅은 단 한 번 실행된다는 것이다. Update는 매 틱마다 브로드 캐스팅이 실행되는 것이다. 이런 브로드 캐스팅으로 관리된다는 것은모든 오브젝트 들이 기본적으로 가지고 태어나는 함수들을 의미한다..

Unity 2025.03.16