프로그래밍 282

물리 기반 렌더러 - 레이 트레이싱 (2) - 카메라

레이 트레이싱 (2) - 카메라 레이 트레이싱에서 카메라란? 대부분의 사람들이 카메라를 사용하고, 이러한 카메라의 기본 기능에 익숙하다. 게임 엔진에서 카메라는 뷰포트에 보이는 장면을 보여준다. 카메라와 렌더러는 뗄 수 없는 관계이다. 어떻게 그릴 것이냐는 카메라의 위치, 카메라로 들어오는 광량에 따라 갈리니까 말이다. 카메라는 이미지를 저장하거나 보여주고, 한 조각의 필름이나 전자 센서에 이미지를 기록하기도 한다. 세상에서 사진을 찍는 가장 간단한 장치는 핀홀 카메라이다. 핀홀 카메라는 한쪽 면에 작은 구멍이 뚫린 빛이 새지 않는 박스로 구성되어있다. 구멍이 열러 있을 때 빛이 이 구멍으로 들어와서 다른 면에 부착된 사진 원진에 조사된다. 단순하지만 이런 종류의 카메라는 현재도 여전히 사용되며, 주로 ..

그래픽스 2023.10.16

레이 트레이싱 Ray-trace 예제와 원리

극사실적 렌더링의 목표는 사진과 구분할 수 없을 정도의 3D 장면 이미지를 생성한 것이다. 거의 대부분의 극사실적 렌더링 시스템은 레이트레이싱(ray-tracing)알고리즘에 의존한다. 사실 레이트레이싱은 매우 단순한 알고리즘이다. 환경에 있는 물체와 간섭하고 반사되는 장면을 지나는 광선 경로를 추적하는 방법이다. 레이 트레이싱에 깊게 알기 앞서, DX12 API에 있는 레이 트레이싱 샘플을 살펴보자. (번역 수준이 높지 않으니 원문을 통해 이해하길 추천) - 출저, NVIDIA DEVELOPER (https://developer.nvidia.com/rtx/raytracing/dxr/dx12-raytracing-tutorial-part-1) By Martin-Karl Lefrançois and Pasca..

그래픽스/DX12 2023.10.15

물리 기반 렌더러 - 레이 트레이싱 (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