전체 글 390

물리 기반 렌더러 - 레이 트레이싱 (1)

문학적 프로그래밍은 어떠한 코딩에서든 가장 중요하다. 하지만, 필자가 이해하는 문학적 프로그래밍과 여러분이 아는 문학적 프로그래밍은 다를 수 있다. 또한 책에서 이야기하는 문학적 프로그래밍은 다를 수 있다. 개인적으로 필자는 문학적 프로그래밍 == 좋은 코드라고 생각한다. 번역을 할 때 불필요하게 중복된 표현은 독자의 해석을 어렵게 만든다. 필자는 글이나 코드 또한 작성자의 생각을 논리적으로 깔끔하게 작성해야 한다고 생각한다. 그렇게 노력해도 코드나 글 자체는 깔끔하지 않을 수 있지만, 그렇게라도 해야지 독자로 하여금 더 나은 이해를 낳을 수있다. 그게 컴파일이 됐던 같이 일하는 동료가 되었던 말이다. 그렇다면 논리적으로 깔끔한 코드란 뭘까? 물리 법칙 기반 렌더러에 관한 코드라면 물리 법칙에 벗어나지 ..

그래픽스 2023.10.13

부동소수점

부동 소수점 C / C++ , 자바와 같은 프로그래밍 언어에는 수를 표현하기 위해 크게 두 가지 타입을 제공한다. 바로 정수 타입과 부동소수점 타입이다. 부동소수점타입과 정수타입을 나누어 놓은 이유는 매우 간단하다. 부동소수점은 실수를 완벽하게 표현할 수 없다. 사실 정수조차 제대로 표현하지 못한다. 떄문에 본래 목적의 일부분만을 나타낼 뿐이다. 부동소수점은 아주 작은 수와 아주 큰 양수를 표현하기 위해 도입되었다. 고정소수점과 부동소수점 부동소수점이란 실수를 표현할 때 소수점의 위치를 고정하지 않은 것을 말한다. 고정소수점은 나타낼수 있는 범위가 무척 한정된다. 그에 비해서 부동소수점은 고정소수점보다 훨씬 넓은 범위의 수를 표현할 수 있는 장점이 있다. 그래서 프로그래밍에서 실수를 표현할 때는 부동소수..

데이터베이스 트리거

데이터 베이스 트리거란? 데이터 베이스 트리거는 테이블에 대한 이벤트에 반응해 자동으로 실행되는 작업을 말한다. 여기서 트리거란, 영어로 trigger 방아쇠라는 뜻인데, 방아쇠를 당기면 그로 인해 총기 내부에서 알아서 일련의 작업을 수행하고 총알이 날아간다. 이처럼 데이터 베이스에도 트리거가 있는데, 데이터 베이스에서의 트리거는 특정 테이블에 INSERT, DELETE, UPDATE 같은, DML문이 수행되었을 때, 데이터 베이스에서 자동으로 동작하도록 작성된 프로그램이다. 즉, 사용자가 직접 호출하는 것이 아닌, 데이터베이스에서 자동적으로 호출하는 것이 가장 큰 특징이다. 트리거는 테이블과 뷰 데이터베이스 작업을 대상으로 정의할 수 있으며, 전체 트랜잭션 작업에 대해 (1) 발생되는 트리거와 (2) ..

좌표계, 트랜스폼, 유닛 그리고 구조

이번 시간에 배우는 것들 > 카테시안 좌표계에 대한 이해와 UE4 트랜스폼과의 연관성> 이동(Move), 회전(Rotation), 크기(Scale)> 액터(Actor)를 위한 그리드 시스템과 측정> 씬 구성과 구조> 액터 그룹화, 레이어, 부착하기 이번 시간에는 좌표계와 트랜스폼에 대해 학습하고 3D 공간에서 콘텐츠를 만들기 위해그리드를 어떻게 사용하는지 배운다. 에디터에서 특정 액터를 제어하기 위해 어떠한 트랜스폼 종류를사용해야 하는지 알아볼 것이며 이러한 트랜스폼들을 어떻게 사용해야 하는지 알아본다.다음으로 외부 소프트웨어에서 만든 애셋을 올바르게 UE4로 가져오기 위해 그리트 시스템과 측정에 대해 알아본다.마지막으로 UE4에서 사용되고 있는 구성 체계를 사용해 어떻게 프로젝트를 깔끔하고 읽기 쉽게 ..

UE5 2023.06.20

게임플레이 프레임워크 이해하기

이번에 배우는 것들> 콘텐츠 예제 프로젝트 다운로드 및 설정> 애셋 가져오기> 다른 프로젝트의 콘텐츠 가져오기> 게임플레이 프레임워크 소개  언리얼 엔진 4는 2D 인디 게임에서부터 3D AAA 게임 타이틀,인터랙티브 애플리케이션, 건축 시각화, VR 경험에 이르기까지 이러한 모두를 개발하는 데사용될 수 있는 매우 강력한 애플리케이션이다.UE4는 PC, 콘솔, 모바일 HRML5와 같은 매우 다양한 플랫폼에서동작하는 콘텐츠를 제작할 수 있게 해준다.UE4 에디터는 게임 개발의 매우 복잡한 작업을 처리하지만,개발자가 쉽게 사용할 수 있는 환경을 제공한다.다른 컴퓨터 프로그램들과 마찬가지로 UE4는 학습 곡선이 존재한다.이번 시간에는 몇 가지 기술과 프로젝트의 구조,UE4를 위한 기본적인 게임플레이 프레임워크..

UE5 2023.06.14

Unreal Blueprint 입문

언리얼 엔진 다운로드 및 설치시 유의사항 프리뷰 버전 에픽은 새로운 버전의 엔진을 버그 테스트하기 위해 프리뷰 버전(Preview Version)을 올리는데,최신 버전을 받되 프리뷰 버전을 받지 말자. 프리뷰 버전이 안정화되고 나면언제나 새로운 엔진으로 업그레이드할 수 있다. 첫번째 프로젝트 만들기 UE4가 다운로드되면 첫 번째 프로젝트를 만드는게 게임을 만들기 위해서는 당연히 필요한 과정이다.UE4를 처음 실행하면 프로젝트 브라우저가 나타난다.프로젝트 브라우저는 프로젝트 탭을 가지고 있으며 여기서 작업하는 모든 프로젝트를 볼 수 있다. 새로운 프로젝트 탭은 이미 만들어져있는 게임 모드 템플렛을 기반으로 새로운 프로젝트를 만들 수 있다.때문에 프로젝트 브라우저에서 해당 프로젝트를 클릭하면 그 프로젝트로 ..

UE5 2023.06.14

포인터 & 함수 포인터 & 깊은 복사 & 얕은 복사 & 생성자 & 오버로딩 & explicit & 형변환 연산자 & R-value , L-value

포인터 지금까지 변수 선언으로 메모리에 공간을 확보하고, 그곳을 데이터를 넣고 꺼내 쓰는 공간으로 사용했다. 변수명은 그러한 메모리 공간을 식별할 수 있는 이름이었다. 그러나 변수는 선언된 블록({}), 함수 내부로 사용이 제한되어 있다. 같은 변수명을 사용했다 하더라도 블록이나 함수가 다르면 별도의 저장 공간을 확보하므로 전혀 다른 변수로 사용되는 것이다. 그래서 사용 범위를 벗어난 경우도 데이터를 공유할 수 있는 새로운 방법이 포인터 개념이다. 메모리의 주소 메모리라는 것은 우리가 데이터를 넣고 꺼내 쓰는 공간으로, 그 위치를 식별할 수 있어야 한다. 프로그램은 사용하는 메모리의 위치를 주소 값으로 식별할 수 있다. 메모리의 위치를 식별하는 주소 값은 바이트 단우로 구분된다. 이 값은 0부터 시작하고..

우선순위 큐와 힙 (Priority Queue & Heap)

1. 우선순위 큐 1.1 우선순위 큐란? 큐(Queue)는 먼저 들어오는 데이터가 먼저 나가는 FIFO(First In First Out) 형식의 자료구조이다. 우선순위 큐 (Priority Queue)는 먼저 들어오는 데이터가 아니라, 우선순위가 높은 데이터가 먼저 나가는 형태의 자료구조이다. 우선순위 큐는 일반적으로 힙(Heap)을 이용하여 구현한다. 1.2힙이란? 힙(Heap)은 우선순위 큐를 위해 고안된 완전이진트리 형태의 자료구조이다. 여러 개의 값 중 최댓값 또는 최솟값을 찾아내는 연산이 빠르다. 힙의 특징 완전이진트리 형태로 이루어져 있다. 부모노드와 서브트리간 대소 관계가 성립된다. (반정렬 상태) 이진탐색트리(BST)와 달리 중복된 값이 허용된다. 힙의 종류 최대 힙(Max Heap) 부..