본문 바로가기

전체 글

(8)
Const const 는 데이터 선언을 할 때 객체 또는 변수를 수정할 수 없음을 지정하는 수식어로, 해당 값이 상수임을 지정하고 코드 상에서 수정할 수 없도록 컴파일러에서 세팅하게 됩니다.C++ 에서 정의된 const 값은 상수 식 대신 사용할 수 있습니다.const int maxarray = 255;char store_char[maxarray]; // allowed in C++; not allowed in C멤버 함수를 const 로 선언하면 호출되는 객체 또는 변수를 수정하지 않는 "읽기 전용" 함수임을 지정합니다. 상수 멤버 함수는 비정적 데이터 멤버를 수정하거나 상수가 아닌 멤버 함수를 호출할 수 없습니다. 상수 멤버 함수를 선언하려면 인수 목록의 닫는 괄호 뒤에 const 를 선언해야 합니다. 즉, 상..
UPROPERTY 언리얼 프로그래밍에서는 UCLASS, UFUNCTION, UPROPERTY 매크로를 사용하여 언리얼 엔진에 새로운 클래스, 함수, 변수를 인식시킬 수 있습니다. 여기서 UPROPERTY 는 지정자와 메타 태그를 통해 속성을 지정할 수 있습니다. UPROPERTY([specifier, specifier, ...], [meta(key=value, key=value, ...)]) Type VariableName; 지정자는 해당 속성이 언리얼 엔진과 에디터에 어떻게 작용할지를 결정할 수 있고, 메타 태그는 해당 속성의 변수를 어떻게 노출시킬지를 정해줄 수 있습니다. UPROPERTY(EditAnywhere, Meta = (Bitmask)) int32 BasicBits; UPROPERTY 지정자는 종류가 매우 다..
Pointer - vs - Reference 포인터 ( Pointer ) 는 개체의 메모리 주소를 저장하는 변수입니다. 즉, 어떠한 데이터가 메모리에 저장될 때, 데이터가 시작되는 주소가 포인터 변수에 담기게 되는 것입니다. 참조 ( Reference ) 는 포인터와 마찬가지로 데이터의 주소를 저장하긴 하지만, 포인터와는 달리 초기화되고 나면 다른 개체를 참조하거나 Null 로 설정하는 것이 불가능합니다. 둘의 차이는 매개변수를 전달하는 방식에서도 확인할 수 있습니다. 일반적으로 매개변수를 포인터로 사용하면 Call by Address 라고 하고, 레퍼런스로 사용하면 Call by Reference 라고 합니다. Call by Address 일 경우 void CallByAddress(int* address) { *address = 20; std::..
Blueprint - vs - C++ Blueprint 개요 언리얼에서 노드 기반 인터페이스를 통해 게임플레이 요소를 구현하는 비주얼 스크립팅 시스템입니다. 일반적인 스크립팅 언어와 같이 엔진 내 객체 지향형 클래스 또는 오브젝트를 정의하는 데 사용됩니다. 특징 수정이 쉽고, 게임에 바로 적용해볼 수 있습니다. 프로그래밍 언어에 쓰이는 복잡한 용어를 외울 필요가 없기 때문에 진입 장벽이 낮습니다. 내장 툴이 존재하여 원하는 기능을 검색하고, 그 기능이 언리얼에 있는지 쉽게 찾아볼 수 있습니다. 언리얼 전용으로 만들어진 언어라서 컨셉 충돌이 일어나지 않습니다. 디자이너나 아티스트가 사용하기 쉽게 설계되어 있습니다. C++ 개요 텍스트 기반의 언어로, 새 게임플레이 클래스를 생성하면 컴파일 후 모든 변경사항이 언리얼에 반영됩니다. 언리얼에서 클..
Effect - Outline 이번에는 Toon Shader에 관련된 유니티 코리아 강의 영상을 보았습니다. 저는 그 중에서 Toon Shader에 많이 사용되는 Outline에 대해 얘기를 해보겠습니다. Outline을 표현하는 방법은 여러개가 있지만, 이 영상에서 소개하는 것은 같은 모델을 2개로 만든 후, 한 모델을 좀 더 크게 검은색으로만 그려서 Outline을 표현하는 방식입니다. 하지만 위의 그림처럼 단순히 스케일만 늘릴 경우, 모델이 복잡한 모양일수록 외곽 모양이 엇나가는 모습을 보일 수 있습니다. 따라서 이상적인 외곽선을 표현하려면 아래의 그림처럼 모델의 노멀 벡터 방향으로 크기를 늘려야 합니다. 하지만 모델의 노멀 벡터 방향으로만 Outline 모델을 확장하면, 실제 모델이 아래의 그림처럼 Outline 모델에 가려지..
Effect - Aura 이번에는 유니티 코리아에서 제공하는 영상인 유니티 셰이더그래프 튜토리얼 #1 LWRP 로 아우라를 만들어보자 https://www.youtube.com/watch?v=VvK7sLbbLYE 를 통해, 아우라 이펙트를 구현해보았습니다. 해당 영상에서는 URP(Universal Rendering Pipeline) 환경에서 아우라 이펙트 셰이더를 제작하고 있으므로, 저도 똑같은 URP 환경에서 진행하였습니다. 셰이더 실습에 사용할 3D 모델은 현재 무료 배포 중인 원신이라는 게임의 캐릭터 모델을 이용하였습니다. https://like-tea.tistory.com/337 원신 공식 모델링 다운 사이트 모음 (4.0 버전까지) 원신 공식 모델링 다운 사이트 모음 찾는 캐릭터는 Ctrl + F 로 검색해서 찾아보세요..
Graphics API 모두 아시다시피 유니티는 멀티플랫폼을 지원하는 엔진입니다. 유니티가 안드로이드, IOS, PC 등의 다양한 플랫폼을 지원할 수 있는 이유는, 중간 과정에서 각 플랫폼에 따라 적합한 그래픽스 API를 지원하고 있기 때문입니다. 각 그래픽스 API에 대해 간단히 살펴본다면, 1. Open GL Open Graphics Library의 줄임말로, 그래픽 하드웨어(GPU)와 통신할 수 있도록 지원해주는 API 또는 표준 규격을 뜻합니다. Open GL은 GPU를 이용한 하드웨어 가속화를 통해 렌더링을 하여 2D, 3D 벡터 그래픽을 표현할 수 있게 합니다. 하드웨어 가속 : 어떤 작업을 CPU가 처리하는 것이 아닌 해당 작업에 최적화된 다른 하드웨어(그래픽 카드, 사운드 카드, ...)에게 작업을 전송하여, 해..
Definition of Shader 셰이더의 기본 정의를 검색해보면 컴퓨터 그래픽스 분야에서 주로 그래픽 하드웨어의 렌더링 효과를 계산하는 소프트웨어 명령의 집합이라고 나옵니다. 즉, GPU를 제어하는 스크립트라고 볼 수 있는 것입니다. 셰이더의 현대적인 이용은 1988년 5월 픽사에 의해 출판된 렌더맨 인터페이스와 함께 대중에 도입되었다고 합니다. 렌더맨 인터페이스를 간략히 설명한다면 언어의 문법은 C언어와 유사하고, 표준함수와 다섯 종류의 셰이더( Surface, Light, Volume, Imager, Displacement )를 정의하고 있다고 합니다. 변위(Displacement) : 텍스처화된 표면상에 존재하는 점의 실제 기하학적 위치가 텍스처에 저장된 값에 따른 표면 법선에 따라 대체되는 매핑입니다. 주로 돌출된 표면을 표현할..