전체 글 390

D3D11 Ray Tracing Vector 핵심 정리

Ray Tracing 이란? 광선 추적 또는 레이 트레이싱(ray tracing)은 가상적인 광선이 물체의 표면에서 반사되어, 카메라를 거쳐 다시 돌아오는 경로를 계산하는 것이다. 적게는 물체 하나가 반사하는 빛만 계산하면 되지만 많게는 물체를 구성하는 입자 하나하나의 빛을 전부 계산해야 되기 때문에 렌더링을 하는 데 있어 시간이 많이 소요되는 기술이다. 영상을 만드는 과정에서는 렌더링한 이미지 자체를 저장하는 것이기에 시간에 영향을 덜 받지만, 실시간으로 이러한 작업을 해야하는 게 비디오 게임 등의 경우엔 이를 위해서 많은 계산이 필요하여 컴퓨터 연산 속도가 중요해진다. 수학과 프로그래밍 프로그래밍에서 수학은 낯설기 때문에 어렵게 느껴지는 측면이 강한 것이지, 이러한 흐름을 어떻게 프로그래밍에 적용을 ..

그래픽스/DX11 2023.11.27

상황에 맞는 키워드 (Context-Sensitive Keywords)

상황에 맞는 키워드(Context-Sensitive Keywords) 상황에 맞는 키워드는 오직 특정 문맥에서만 인식할 수 있는 언어 요소이다. 특정 맥락을 벗어나면, 상황에 맞는 키워드는 유저가 정의하는 기호가 될 수 있다. ( = Context-sensitive keywords are language elements that are recognized only in specific contexts. Outside the specific context, a context-sensitive keyword can be a user-defined symbol.) 키워드 목록 abstract delegate event finally for each, in initonly internal literal over..

C++/ CX 와 C++/ CLI 의 차이

C++/ CX(C++ component extensions, c++ 컴포넌트 확장) C++/ CX(C++ component extensions, c++ 컴포넌트 확장)는 마이크로 소프트가 window phone8 과 window 8과 같은 새로운 윈도 런타임을 지원하기 위해 고안한, C++를 확장한 언어 규격이다. 문법이 C++/CLI과 유사하지만, 컴파일한 결과물은 C++/CLI의 Managed Code가 아닌 Native Code이다. 현재 Visual studio 12이상에서 사용 가능하다. C++/CLI(C++/ 공통 언어 기반) C++/CLI(C++/ 공통 언어 기반)은 Managed Extensions for C++ 대신 사용하기위해 고안된 마이크로 소프트사의 언어 규격이다. 예전의 Manag..

런타임 게임 아키텍처

아키텍처란? 아키텍처란 간단히 말해, 하나의 서비스가 어떻게 구성되며 어떻게 작동된다라는 것을 표현한 것이다. 주로 시스템 구성 및 동작 원리와 구성 요소 간의 관계 및 시스템 외부 환경과의 관계를 묘사한다. 런타임 게임 아키텍처 게임 엔진은 크게 제작 도구와 런타임 구성 요소로 나뉜다. 먼저, 런타임 구성 요소를 살펴보고 제작 도구에 관해 살펴보겠다. 게임 엔진은 그 자체로 거대한 소프트웨어 시스템이라 할 수 있다. 여타 소프트웨어와 마찬가지로 게임 엔진도 계층적으로 구성된다. 상위 계층은 하위 계층에 의존하지만 그 반대는 아니다. 하위 계층이 상위 계층에 의존할 때 '순환 의존(circular dependency)'라고 한다. 선형 의존(순환 의존)은 시스템 간의 불필요한 결합을 생기게 하고, 테스트..

C++ 오류 처리

오류처리 C++에서, 프로그램의 예기치 않은 행동을 처리하는 수단은 크게 두 가지이다. 하나는 단언 (assertion)이고 다른 하나는 예외(exception)이다. 전자는 프로그래밍의 실수를 검출하기 위한 것이고, 후자는 프로그램이 더 이상 정상적으로 실행될 수 없을 정도의 어떤 예외적인 상황을 방지하기 위한 것이다. 사실 이 둘의 구분이 항상 명확하지는 않다. 해더 헤더의 assert 매크로는 C에서 물려받은 것이지만 여전히 유용하다. 이 매크로는 주어진 표현식을 평가해서, 만일 결과가 false이면 즉시 프로그램을 종료한다. 이 매크로는 프로그래밍 실수를 검출하는 데 사용해야 한다. 예를 들어 음이 아닌 실수의 제곱근을 계산하는 어떤 알고리즘을 구현한다고 가정했을 때, 수학에서 음수가 아닌 수의 ..

effective c++

TR1 TR1 C++ 표준 라이브러리에 새로 추가되는 기능들에 대한 명세이다. 새로 추가된 기능들은 클래스 및 함수 템플릿이 주류인데, 해시 테이블, 참조 카운팅 방식 스마트 포인터, 정규 표현식 등이다. TR1의 모든 구성요소는 tr1 네임스페이스에 들어 있고, tr1 네임스페이스는 std 네임스페이스 안에 중첩되어 있다. Boost C++ 라이브러리를 제공하는 단체로 TR1의 구성요소 대부분이 이곳에서 만들어졌다. TR외의 유익한 많은 것들을 참고할 수 있다. http://boost/org C++의 구성 방식과 규칙 C++는 다중패러다임 프로그래밍 언어로 절차적 프로그래밍을 기본으로 객체 지향, 함수식, 일반화 프로그래밍을 포함하여 메타프로그래밍 개념까지 지원한다. C++을 구성하는 하위 언어 C언어..

언리얼 내의 포인터

관리되지 않는 메모리와 관리되는 메모리 관리되지 않는 메모리는 malloc()/free() , new/delete가 있으며, 관리되는 메모리는 NewObject와 ConstructObject 사용이 있다. 또한 이들을 수동 메모리 해제를 위해 언리얼은 UObject::ConditionalBeginDestroy() 멤버 함수를 호출한다. 오브젝트 추적에 대한 용이함으로는 스마트 포인터와 TScopedPointer를 사용하여 가능하다. 언리얼 스마트 포인터 언리얼 스마트 포인터란? C++11의 스마트 포인터의 디자인을 커스텀하여 구현(implementation. SW공학 내의 구현 의미)한 것으로, C++의 스마트 포인터 라이브러리는 일반 객체를 위한 라이브러리이므로, 언리얼 오브젝트에 사용하기에..

UE5 2023.11.02