EveryDay.DevUp

[Unity] 오픈월드 심리스의 Unity 구현 본문

Unity

[Unity] 오픈월드 심리스의 Unity 구현

EveryDay.DevUp 2025. 2. 17. 23:49

https://www.youtube.com/watch?v=pQ0lb9OxxbE&t=756s

오픈 월드의 기술적 난관

- 지형 (터레인)

: 헤이트 맵과 여러개의 레이어(돌, 풀)을 블렌딩해서 만들게 됨

: 퀄리티와 메모리 이슈가 있음

- 빛과 그림자

: 라이트맵, 쉐도우 맵 사용 불가 

- 긴 로딩

- 에셋 관리

유니티의 해결 방안

- 터레인

: 빅 터레인 시스템

=> 멀리보이는 터레인과 가까이 보이는 터레인을 분할

=> 터레인을 메시로 변경한 뒤 HLOD로 베이크하는 방식을 사용

=> 가까운 지역에서는 클립맵 지형을 사용 -> 로우 에셋에서 실시간으로 생성하는 방법 (컴퓨트 셰이더)

=> 클립맵 지형에서는 HLOD를 끔. 클립맵은 지형에 매우 높은 해상도의 텍스처를 맵핑하는 것

=> 가까운 지역 : 클립 맵, 먼 지역 : HLOD 를 사용 HLOD는 미리 베이크하여 사용

https://techartnomad.tistory.com/330

 

[번역] 유니티 버추얼 텍스처를 구현합니다.

저자기술적 배경가상 텍스처는 주로 여러 가지 이유로 인해 고해상도 텍스처를 실시간 렌더링에 직접 표시할 수 없는 문제를 해결하기 위해 사용됩니다. 메모리 제한, 플랫폼 

techartnomad.tistory.com

https://docs.unity3d.com/kr/2021.3/Manual/svt-streaming-virtual-texturing.html

 

가상 텍스처링 스트리밍 - Unity 매뉴얼

가상 텍스처링 스트리밍(SVT)은 씬에 고해상도 텍스처가 많을 때 GPU 메모리 사용량과 텍스처 로드 시간을 줄이는 기능입니다. 이 기능은 텍스처를 타일로 분할하고, 필요할 때 분할된 타일을 GPU

docs.unity3d.com

https://highfence.tistory.com/51

 

[UE4] Virtual Texturing과 Clipmap

Virtual Texturing(VT)이란 오픈 월드 게임등의 대규모 텍스쳐 사용에 따른 메모리 문제를 해결하기 위해, OS의 Virtual memory 알고리즘을 텍스쳐 시스템에 적용한 것이다. 메모리란 언제나 한정된 자원이

highfence.tistory.com

https://www.youtube.com/watch?v=s4-0Rd2btaw

- 오브젝트

: HLOD (계층 구조 LOD) 

=> LOD 개체를 그룹으로 묶어서 Level에 따라서 단순화된 메시와 메터리얼로 표현함

: Instancing - GPU Culling

=> 워크스레드에서 어셋을 로딩하고 인스턴싱한 다음에 GPU에서 컬링과 LOD 계산을함 (컴퓨트 셰이더)

=> 인다이렉트 드로잉을 사용 : GPU를 통해 렌더링 명령을 보내는 대신, 그래픽 api를 사용하여 렌더링 상태를 한번에 저장하거나 처리하는 방식. 버퍼에 렌더링 명령을 미리 저장해 두고, 나중에 그 명령을 GPU가 읽어서 실행

https://darkcatgame.tistory.com/184

https://docs.google.com/presentation/d/1xxy7ouNLvLhFBdHa1YXj8iWzaMOTPqgT/edit#slide=id.p2

 

Instanced Static Mesh 시스템 개발 .pptx

Instanced Static Mesh 시스템 개발 유니티 엔진 GPU Instancing Renderer 시스템 오지후 email : dhwlgn12@gmail.com blog : https://darkcatgame.tistory.com/

docs.google.com

 

 

Unity GPU Indirect Drawing 구현 가이드 & ISM 시스템 개발 과정

개요유니티 엔진에서 GPU Driven Rendering 시스템 구현을 위한 구조화 버퍼 설계 활용, 셰이더 및 렌더러 구현에 대한 내용을 소개합니다. 주요 내용드로우콜 원리 설명과 DrawInstanced 이해GPU에 렌더

darkcatgame.tistory.com

- 라이트 & 쉐도우

: Voxelized Shadow

=> 공간을 복셀화해서 쉐도우를 그리는 방법

https://www.youtube.com/watch?v=uJMCilrmztE&t=10s

https://www.youtube.com/watch?v=kgYfXFPLOQs

=> APV(어답티브 프로브 볼륨)을 사용하면 오픈월드에서 라이트닝이 지원 가능 (카메라에 보이는 부분만 동적으로 로딩해서 사용 가능)

- Open World Scene Manager

: 프로시저 오픈 월드 툴

=> 아티스트가 사용할 수 있는 씬과 맵 제작 툴을 별도로 제공

https://www.inven.co.kr/webzine/news/?news=289321

 

유니티로 시간 변화가 반영되는 빅월드 만들기

인벤이 직접 주최하는 '인벤 게임 컨퍼런스(Inven game conference, 이하 IGC 2023)'가 금일(13일) 성남시 판교 경기창조경제혁신센터 지하 1층 국제회의장에서 개최됐다. 컨퍼런스 행사의 첫 번째 순서로

www.inven.co.kr

빅월드의 해결 방안

- Dots기반 터레인 사용 (Dots 기반 서브 씬을 사용)

- 스페이싱 스트리밍

- HLOD대신 인스턴싱을 활용함

: Dots 인스턴싱을 사용함

- 가까운 곳은 Cascade Shadow를 활용하고, 원거리는 Contact Shadow를 사용함

https://docs.unity3d.com/kr/2023.2/Manual/shadow-cascades.html

 

섀도우 캐스케이드 - Unity 매뉴얼

섀도우 캐스케이드를 사용하면 원근 앨리어싱, 즉 방향 광원의 실시간 그림자가 카메라와 가까이 있을 때 픽셀화되어 보이는 문제를 해결할 수 있습니다.

docs.unity3d.com

 

'Unity' 카테고리의 다른 글

[Unity] 시네머신 3.x  (0) 2025.02.15
[Unity] 셰이더 기초 강좌  (0) 2025.02.02
[Unity] URP (Universal Render Pipeline) 의 개념  (0) 2025.01.25
[Unity] Sprite Atlas Memory Profiler Test  (0) 2025.01.25
[Unity] Fake null  (0) 2021.12.20