전체 글 116

BOTW Climbing시스템(젤다의 전설 벽타기) -3

5. Animation 애니메이션은 참고한 사이트에서 추천하는 Climbing Animation Set을 사용했다. Climbing으로의 전환은 기본적으로 Input을 통해서만 가능하고 Enum값을 통해 애니메이션을 조정했다. Climbing으로의 전환 전에 거치는 과정을 통하여 전환 애니메이션을 실행하고 Climbing Idle로 가도록 하였다. BlendSpace의 기본 구성은 아래와 같다. * Asset에 방향별 애니메이션이 잘 구분되어 있어 따로 작업하지 않고 집어 넣기만 하였다. 각 축의 최소값과 최대값이 -120 ~ 120인것은 멤버변수로 MaxClimbingSpeed가 120으로 설정되어 있기때문. 케릭터가 Climbing을 하기 위해서는 BS에 Up/Down 과 Left/Right에 넣어줄..

Unreal Engine 2023.09.28

BOTW Climbing시스템(젤다의 전설 벽타기) -2

OnMovementUpdated - 등반의 준비가 어느 정도되면 SetMovementMode를 통해 PhyCustom을 호출 할 수 있다. 이때 앞서 설명했듯이 여러종류의 PhysCustom이 존재할 경우 호출할 수 있도록 하기 위해 두번째 매개변수로 Custom Enum을 받는다. 3. Input 등반을 시작하고 중지하기 위해 TryClimbing 및 CancelClimbing의 두 함수와 함께 플레이어의 의도를 저장하는 부울 bWantsToClimb를 만든다. bWantsToClimb이 true인지 확인하여 OnMovementUpdated의 코드를 대체할 수도 있다. *Input Mapping Context에 설정되어 있는 Climbing과 CancelClimbing. 각 입력에서 호출되는 함수에서는..

Unreal Engine 2023.09.28

BOTW Climbing시스템(젤다의 전설 벽타기) -1

참고: https://www.vitorcantao.com/post/climbing-system/ - 젤다 벽타기 제작 Recreating the Climbing System from Zelda BOTW in Unreal (C++) Introduction The Legend of Zelda: Breath of the Wild needs no introduction. It’s a game that redefined the modern open-world formula. It’s all about exploration, discovery, and freedom. As such, movement plays a fundamental role in making the game loop www.vitorcantao...

Unreal Engine 2023.09.28

SIMD(Single Instruction Multi Data)

SIMD란 Single Instruction Multiple Data의 약자로, 하나의 명령어로 여러개의 데이터를 한번에 처리하는 기법입니다. 일반적인 프로그램의 경우 대부분 SISD(Single Instruction Single Data)으로 구현되어 있고, 이것은 기본적인 폰노이만 컴퓨터가 사용하는 방식입니다. 하지만 동영상 인코딩, 그래픽 렌더링 등의 작업에 SIMD를 적용하였을 때는 성능적으로 큰 이득을 취할 수 있습니다. SISD VS SIMD SIMD (Single Instruction, Multiple Data) 아키텍처의 병렬 처리는 동일한 명령어를 사용하여 여러 데이터 요소에 대한 동작을 동시에 수행하는 것을 의미합니다. 이를 통해 여러 데이터 요소에 대한 연산을 병렬로 처리하여 처리량을..

컴퓨터 지식 2023.09.28

Compute Shader

개념 GPGPU(General-Purpose computing on GPU)를 이용해 대규모 병렬처리를 수행하는 쉐이더 동시에 수많은 대상(~ 수십만, 수백만 단위)에 대해 동일한 연산(함수)을 처리해야 할 때 사용한다. 컴퓨트 쉐이더를 연산에 사용하는 예시로 VFX Graph가 있다. 확장자는 .compute ※ GPGPU(General Purpose Graphics Procesiing Units) 그래픽 처리를 위한 보조장치였떤 GPU를 보완하여 컴퓨터의 중앙처리 장치인 CPU를 대신하여 모든 데이터 연산 및 처리를 하는 GPU 상의 범용 계산 장치

3D Rendering 2023.09.28

Tiled Forward Shading(Forward+)

포워드의 단점인 여러개의 라이팅을 다루는데 한계가 있는 점을 보완한 렌더링. 라이트를 타일별로 컬링하여 적용되는 라이트들만을 타일별로 구분하여 픽셀 셰이더 단계에서 적용. 렌더링 과정을 간단히 요약하자면 아래와 같습니다. 1. 화면을 NxN 타일 크기로 나누고, 타일과 교차되는 Light 들을 각 타일에 할당합니다. 2. 실제 오브젝트를 렌더링할때, 현재 픽셀이 어느 타일에 포함되는지 찾고, 찾은 타일에 포함되어있는 라이트들을 가져와 현재 픽셀에 적용합니다. Tiled Forward Rendering은 Tiled Deferred Rendering의 확장 혹은 수정 버젼입니다. 이 둘과 비교해서 Tiled Forward Rendering의 장점은 아래와 같습니다. Transparency 지원 하드웨어 MS..

3D Rendering 2023.09.28

TBDR(Tile-based (Deffered) GPU)

또한, TBR에서 변형되어 파생한 Tile Based Deferred Rendering(이하 TBDR) 라는 방식도 있습니다. 이 방식은 기본적으로는 TBR입니다. 다만 버텍스 쉐이더에서 트랜스폼 연산을 거치고나서 바로 픽셀 쉐이더로 넘기는 것이 아닙니다. 대신 버텍스 쉐이더의 결과를 중간 데이터를 담는 파라미터 버퍼에 담아둡니다. (이 버퍼를 ImgTec에서는 파라미터 버퍼라 부르고, ARM에서는 폴리곤 리스트라 부르는 등 여러 이름이 존재하지만 편의상 파라미터 버퍼로 통일하여 칭하겠습니다.) 이 파라미터 버퍼에 담은 후 픽셀 쉐이더로 바로 넘기는 것이 아니라, 매 드로우 콜 마다 버텍스 쉐이더의 결과를 계속 담아둡니다. 그 후 모든 드로우콜이 끝나면 그때서야 비로소 타일을 렌더링하고 프레임버퍼에 출력..

3D Rendering 2023.09.28