본문 바로가기

분류 전체보기

(19)
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 로 검색해서 찾아보세요..
Vector 셰이더에서는 물체의 재질 등을 표현하기 위해 여러 연산이 자주 발생하기 때문에 수학적 지식이 많이 동반됩니다.특히 수학적 연산이 많이 소요되는 분야는 라이팅 관련 분야인데, 표면과 그에 비추는 빛만 해도 표면 벡터(Surface)와 조명 벡터(Directional Light)의 방향 및 크기가 계산에 이용됩니다. 앞서 말한 벡터는 셰이더 및 그래픽스 분야에서 중요한 개념 중 하나이며, 벡터 자체는 크기와 방향만을 가지고 있는데, 이를 통해 위치, 방향, 속도, 색상, UV 등을 표현할 수 있는 범용성을 가지고 있습니다. 벡터의 길이는 흔히 알려져 있는 피타고라스의 정리를 이용하여 구할 수 있는데 이러한 성질을 이용하여 여러 벡터의 길이를 1이라는 고정된 길이로 조정하는 단위화(Normalize)를 수..
2022 KAKAO BLIND RECRUITMENT > 양궁대회 문제 요약 카카오배 양궁대회가 열렸다고 합니다. 라이언이 저번 대회 우승자라서, 라이언에게 패널티를 부여한다고 하네요. 이러한 역경을 극복하고, 라이언이 최대 점수차를 내면서 이기는 경우를 구하는 문제입니다. 문제 핵심 조건 1. 각 점수를 많은 화살로 맞췄다고 해도, 점수는 단일로 들어간다. 2. 라이언과 상대방이 같은 점수를 같은 화살량으로 맞췄으면, 점수는 상대방의 것이 된다. (패널티) 문제 풀이 저는 테스트 시간이 넉넉하게 주어져 있어서 그냥 완전탐색으로 풀었습니다. 먼저 나중에 최선의 우승 케이스를 가려낼 목록을 하나 만듭니다. 주어진 화살 수를 각 점수의 과녁에 배치하는 전체 경우의 수를 재귀를 이용하여 구하고, 거기서 라이언이 이기는 경우의 수만 일단 우승 케이스 목록에 담습니다. 여기서 ..