목록Categories (1099)
KoreanFoodie's Study
언리얼 에러 : Missing '*' in Expected a pointer type 핵심 : 1. UFUNCTION 함수의 인자로, UStruct 타입이 있는데 포인터 형식이 아닐 경우 2. 추후 추가 3. 추후 추가 언리얼 에러 로그 중 아래와 같은 내용이 뜰 때가 있다 : Missing '*' in Expected a pointer type 위와 같은 에러의 경우, 정확히 뭘 고치라는지 몰라 헤멜때가 있다. 그럴 때는 아래와 같은 상황을 체크해 보자! 1. UFUNCTION 함수의 인자로, UStruct 타입이 있는데 포인터 형식이 아닐 경우 다음과 같은 예제를 보자 : UFUNCTION() void OnSomeEvent(UObject* InObject, UUserWidget& InWidget); ..
이 강의는 유투브에 무료로 공개되어 있는 한정현 교수님의 컴퓨터 그래픽스 강좌를 정리한 글입니다. 자세한 내용은 강의를 직접 들으시거나 책을 구입하셔서 확인해 보세요. 강의 자료는 깃헙 링크에 올라와 있습니다. 요약 : 1. GPU 테셀레이션을 이용해 복잡한 표면을 실시간에 생성할 수 있는데, 대표적으로 변위 매핑(Displacement Mapping) 과 PN-삼각형이 있다. 실제로는 변위 매핑을 많이 사용한다. 2. 먼저, 컨트롤 쉐이더는 패치(patch) 정보를 받아, 테셀레이션을 얼마나 잘게 쪼개 진행할지를 테셀레이터에게 알려준다. 그럼 테셀레이터는 레벨에 맞게 패치를 쪼개 정의역(Domain) 을 생성한다. 생성 쉐이더는 2차원 메시의 각 정점마다 사각형 패치의 한 점을 생성한 후, 하이트 맵(..
이 강의는 유투브에 무료로 공개되어 있는 한정현 교수님의 컴퓨터 그래픽스 강좌를 정리한 글입니다. 자세한 내용은 강의를 직접 들으시거나 책을 구입하셔서 확인해 보세요. 강의 자료는 깃헙 링크에 올라와 있습니다. 요약 : 1. 베지어 곡선은, 주어진 정점(control point)을 잇는 곡선이다. 점이 N 개 있을때, N-1 차 베지어 곡선을 만들 수 있는데, 그냥 선형 보간을 여러 번 반복해서 취하면 된다. 이 기법을 드 카스텔조 알고리즘이라고 한다. 2. 테셀레이션은, 컴퓨터가 곡선 및 곡면을 처리하는 방식으로, 베지어 곡선 및 곡면을 작은 선분이나 폴리곤의 조합으로 쪼개는 과정을 의미한다. 간격이 작을 수록 더 매끈한 곡면을 만들 수 있을 것이다. 컨트롤 포인트를 기준으로 선형 보간을 반복하여 패치..
[언리얼] 어떤 개념 : 어떻게 하기 핵심 : 1. 2. 3. 언리얼 서밋 온라인 2022 를 훑어 보면서, 최적화 및 프로파일링과 관련한 내용이 있어 기록차 요약해 보려 합니다. 현재 개발 중인 버전이 언리얼5 가 아니라서 아쉬운 부분은 있지만... 일단 알아두면 많은 도움이 되겠죠 😅 언리얼 서밋 온라인 2022 를 보며 내용을 정리했으니, 궁금하신 분은 풀 영상을 보시길 바랍니다! 😄 Hitching 이 언제 발생하는지 파악하여 어떤 부분에서 병목현상이 발생하는지 파악해야 한다. 카트라이더의 경우 GameThread 에서 병목이 발생하여 이를 집중적으로 다루었다고 함. 강의에서는 다루지 않았지만... RenderThread 의 경우, PSO 캐시를 통해 최적화를 진행하였다고 한다. 관련 내용은 공식..
언리얼 인사이트 핵심 : 1. 언리얼 인사이트는 최적화를 위해 프로파일링을 쉽게 도와주는 유용한 툴이다. 2. 게임 쓰레드, 렌더 쓰레드 등 어디에서 병목 현상이 일어나는지를 파악하자 3. 모바일 기기로도 utrace 를 내보내어 분석을 할 수 있다! 언리얼 인사이트라는 툴을 통해 언리얼 최적화 및 프로파일링을 한 번 해 보자! (만약 소스빌드에서 시작할 경우, UnrealInsight 모듈을 빌드하면 UnrealInsights.exe 파일이 생긴다. UnrealInsights-Win64-DebugGame 라는 이름일 수도 있음 😅) 애플리케이션을 실행하면 Trace Sessions(트레이스 세션) (1), Trace Store Directory(트레이스 스토어 디렉터리) (2) 제어, New Conne..
이 강의는 유투브에 무료로 공개되어 있는 한정현 교수님의 컴퓨터 그래픽스 강좌를 정리한 글입니다. 자세한 내용은 강의를 직접 들으시거나 책을 구입하셔서 확인해 보세요. 강의 자료는 깃헙 링크에 올라와 있습니다. 요약 : 1. Phong 라이팅 모델은 local illumination 을 만들어내는 데는 유용하지만, 전역 조명(Global Illumination) 을 자연스럽게 만들어내기 위해서는, 3 가지 추가적인 요소를 고려해야 한다. 즉, 그림자 광선(Shadow Ray), 반사광(Reflection Ray), 굴절광(Transmitted/Refraction Ray) 을 반영해야 한다. 2. 레이 트레이싱 기법은 재귀적으로 Ray 값들을 계산하여 색상을 계산한다. 각 Ray 는 Primary Ray ..
이 강의는 유투브에 무료로 공개되어 있는 한정현 교수님의 컴퓨터 그래픽스 강좌를 정리한 글입니다. 자세한 내용은 강의를 직접 들으시거나 책을 구입하셔서 확인해 보세요. 강의 자료는 깃헙 링크에 올라와 있습니다. 요약 : 1. 쉐도우 매핑(Shadow Mapping) 은 그림자를 처리하기 위해 Vertex Shader 에서 light source 로부터 각 surface 점까지의 깊이값과 visibility 값을 저장하는 기법을 의미한다. 2. Pass 1 에서는 각 표면까지의 깊이값 z 를, Pass 2 에서는 실제 점까지의 거리 d 를 저장하여, 이를 비교해서 Shadow 여부를 결정한다. Nearest Sampling 과 Bilinear Interpolation 둘 다 별 도움은 되지 않으므로, PC..
이 강의는 유투브에 무료로 공개되어 있는 한정현 교수님의 컴퓨터 그래픽스 강좌를 정리한 글입니다. 자세한 내용은 강의를 직접 들으시거나 책을 구입하셔서 확인해 보세요. 강의 자료는 깃헙 링크에 올라와 있습니다. 요약 : 1. 고해상도 메시에서, 실시간으로 라이팅을 처리하는데는 비용이 많이 들 것이다. 이를 해결하기 위해, 노말 매핑(Normal Mapping) 과 저해상도 메시를 사용하여 효율적으로 그럴듯한 라이팅 효과를 만들어낼 수 있다. 2. 노말 맵을 만드는 대중적인 방법으로는 Height Field 가 있다. 메시에서 한 점에 인접한 4개의 점에서 각 2개의 점씩 직선의 방정식을 만든 다음, 두 직선 벡터에 대해 외적을 취하는 방법이다. 그럼 (x, y) 좌표에 대한 z 의 값을 방정식으로 표현할..
동적으로 위젯 생성하기 핵심 : 1. UUserWidget 은 CreateWidget, UWidget 은 ConstructWidget 을 사용해 위젯을 생성하자. 2. 생성 후, 그냥 WidgetTree 에 붙이기만 하면 된다. 3. AddChild 같은 함수로 부모자식 관계를 설정할 수 있다! 이전 글에서 동적으로 액터 컴포넌트를 만드는 방법을 기록한 적이 있는데, 이번에는 위젯을 동적으로 만드는 법을 알아보자. 코드는 사실 매우 간단하다 😄 원하는 위젯 클래스를 UUserWidget 으로부터 상속받아 만들었다고 하자. 그럼 아래와 같은 식으로 쓰면 된다 : // UTextBlock 을 동적으로 생성하여 WidgetTree 에 붙인다 UTextBlock* textBlock = WidgetTree->Co..
보호되어 있는 글입니다.