Search Unity

올해 첫 테크 스트림(TECH Stream) 릴리스로 Unity 2019.1이 공개되었습니다. 이 릴리스에는 버스트 컴파일러(Burst Compiler), LWRP(Lightweight Render Pipeline, 경량 렌더 파이프라인) 및 셰이더 그래프(Shader Graph)와 같이 프리뷰에서 이제 정식 버전으로 제공되는 기능 외에 애니메이터, 모바일 개발자 및 그래픽스 전문가를 위한 혁신적인 기능과, 프로젝트 워크플로 및 에디터 작업을 간소화하는 업데이트가 다수 포함되어 있습니다. 또한 프로젝트 출시 전까지 안정된 엔진 상태를 유지하려고 하는 개발자를 위해 곧 Unity 2018.4 LTS(Long Term Support, 장기 지원) 버전을 릴리스할 예정입니다. Unity 2019.1에는 283개가 넘는 새로운 기능과 개선 사항이 포함되어 있습니다. 이 글에서는 먼저 주목할 만한 새로운 기능에 대해 간략하게 살펴본 다음 이어서 자세히 설명드리겠습니다. Unity 2019.1을 설치하여 사용해 보고 싶다면 이 글을 읽는 동안 바로 다운로드할 수 있습니다(아래 버튼을 클릭하거나, Unity Hub에서 접속 가능).

2019.1 다운로드

그래픽스 조명

SRP(Scriptable Render Pipeline, 스크립터블 렌더 파이프라인)과 셰이더 그래프는 Unity 2018.1에서 프리뷰 버전으로 도입되었습니다. 이제 Unity 2019.1에서 LWRP와 셰이더 그래프가 프리뷰가 아닌 정식 버전으로 출시되어 제작에 사용할 수 있습니다. 또한 아티스트는 GPU 라이트매퍼(프리뷰)에 대한 추가 기능 및 플랫폼 지원 외에도, HDRP(High-Definition Render Pipeline, 고해상도 렌더 파이프라인, 프리뷰) 및 포스트 프로세싱 스택(Post-Processing Stack, 프리뷰)의 역대급으로 개선된 기능을 접해볼 수 있습니다.

위 동영상 더 헤러틱(The Heretic)유니티 데모 팀이 제작한 새로운 단편 영상으로, GDC 2019에서 처음 공개되었습니다. Unity 2019.1에서 빌드되었으며 Unity 스크립터블 렌더 파이프라인(SRP) 아키텍처를 활용하였습니다. Unity 최신 HDRP 통합된 포스트 프로세싱 스택을 통해 실제 카메라가 보여주는 것과 매우 유사하며 실시간으로 렌더링되는 시네마틱 효과를 얻을 있었습니다.

아티스트용 개발

유니티는 아티스트를 위한 툴 개발에 주력하고 있습니다. 이번 릴리스에는 런타임 애니메이션 리깅(runtime animation rigging)이 추가되어 애니메이션을 더욱 기술적으로 잘 구현하고 조정할 수 있습니다. 또한 오디오, 비디오, DCC 및 월드 제작(world-building) 툴도 개선되었습니다. 마지막으로 타임라인(Timeline)은 이제 사용성이 검증된 패키지로, 새로운 타임라인의 시그널(Signals)을 이용하면 타임라인이 씬의 오브젝트와 간편하게 상호 작용할 수 있습니다.

모바일 기타 플랫폼

이번 릴리스에는 앱 패키지를 다시 빌드할 필요 없이 바로 패치하는 기능을 비롯하여 모바일 플랫폼에 대한 수많은 개선사항이 반영되었습니다. 따라서 개발 중에도 반복 작업을 보다 신속하게 수행할 수 있습니다. 또한 모바일 어댑티브 퍼포먼스(Mobile Adaptive Performance)가 프리뷰로 적용이 시작되어, 런타임 시 게임이 CPU 또는 GPU 바운드인지 알려주는 정보와 함께 발열 추세(thermal trends)에 대한 데이터를 제공하여, 모바일 게임 개발 전반의 디버깅 및 워크플로가 개선되었습니다. 그리고 이제 Linux용 Unity 에디터가 프리뷰로 제공됩니다.

성능 프로그래머 개발

버스트 컴파일러가 2019.1부터 프리뷰 단계가 종료되고 정식 버전으로 제공되면서 고성능 멀티스레드 데이터 지향 기술 스택(DOTS)을 계속 구축해 나아가고 있습니다. 이 외에도 대규모의 메가시티(Megacity) 데모를 제작할 수 있었던 DOTS 관련 툴이 다양하게 제공됩니다. 메가시티 데모는 여기에서 다운로드할 수 있습니다.

 

FPS 샘플 그룹의 아티스트 명과, 유니티의 DOTS 팀이 협업하여 불과 만에 미래 지향적인 도시 풍경을 만들어 냈습니다. Unity DOTS 기반의 프로젝트 지원을 위해 유니티는 Havok과 공동 개발한 완벽한 물리 솔루션도 소개합니다. 이 외에도 스택 트레이스 링크를 클릭하면 소스 코드 라인으로 이동하여 스택에 나열된 함수 및 호출을 탐색하고 텍스트 기반 검색 툴을 이용하여 콘솔 항목을 필터링하여 찾을 수 있도록 개선하였으며, 기존 가비지 컬렉터(Garbage Collector)에 대한 대안으로 점진적 가비지 컬렉터(Incremental Garbage Collector)를 실험 기능으로 사용해볼 수 있습니다.

워크플로 개선

런타임 시 뛰어난 성능을 보장하는 것도 중요하지만 에디터에서 작업할 때도 마찬가지로 성능이 중요합니다. 따라서 워크플로를 개선할 수 있는 방법을 집중해서 계속 찾고 있습니다. 에디터 단축키를 관리하고, 단축키를 다양한 컨텍스트 메뉴에 할당하고, 단일 인터페이스에서 기존 연결 상태를 간편하게 시각화할 수 있도록 단축키 관리자와 함께 시각적 인터랙티브 인터페이스와 API 를 제공합니다. 이제 새로운 SceneVis 컨트롤을 사용하면 게임 내에서 오브젝트의 가시성을 건드리지 않고도 씬 뷰에서 오브젝트를 빠르게 숨기고 표시할 수 있습니다. 또한 에디터 확장을 위해 에디터에서 도메인을 다시 로드하지 않고 플레이 모드로 들어가서 UI 요소를 사용할 수 있습니다.

2018.4 LTS 릴리스 출시 예정

Unity 릴리스는 테크(TECH) 스트림과 장기 지원(LTS) 스트림으로 나뉩니다. 2019년에는 3번의 테크 스트림 릴리스가 계획되어 있습니다. 2019.1은 오늘 공개되었고, 2019.2는 여름에, 2019.3은 늦가을에 릴리스될 예정입니다. 2019.1은 새로운 테크 스트림의 시작을 알리며, 최신 기능을 사용해 볼 수 있는 기회를 제공합니다. 새로운 기능, API 변경 또는 개선은 LTS 릴리스에 포함되어 있지 않습니다. LTS는 2018 테크 스트림의 연장선상으로, 업데이트와 수정 사항만 제공하므로 버전 번호는 2018.4가 되고, 2019년 테크 스트림은 2019.1로 시작됩니다. LTS 스트림은 게임/콘텐츠를 계속해서 개발 및 출시하고 안정적인 버전을 장기간 사용하고자 하는 사용자에게 적합합니다. 이 버전은 엔터프라이즈 지원 고객 문제, 콘솔 SKD/XDK 문제 또는 다수의 사용자가 게임을 출시하는 데 지장을 주는 중대한 변경과 같이 커뮤니티에 광범위하게 영향을 미치는 크래시, 성능 저하 및 이슈를 해결합니다. 각 LTS 스트림은 2년간 지원됩니다.

현재 2018 LTS는 테스트 단계에 있으며, 2019.1.0 버전에 이어 수 주 이내로 공개될 예정입니다. 어떠한 릴리스 스트림이 적합한 솔루션인지 블로그 게시물에서 자세히 알아보세요.

2019.1 새로운 기능

플랫폼

모바일

모바일 알림(프리뷰 패키지)

모바일 알림 프리뷰 패키지는 iOS(iOS 10 이상) 및 Android(4.1 이상)에서 반복적 또는 원타임 로컬 알림 스케줄링을 지원하여 리텐션 메카닉스 및 타이머 기반 게임플레이를 구현하는 데 도움을 줍니다. 이 패키지에 대한 자세한 내용은 여기를 참조하세요.

 

어댑티브 퍼포먼스(삼성)

Unity 2019.1에는 어댑티브 퍼포먼스가 프리뷰로 제공됩니다. 모바일 개발자가 당면한 가장 큰 과제 중 하나는 우수한 디자인과 원활한 플레이를 지원하면서도 하드웨어 과부하로 인한 스로틀링(성능 저하 및 비일관성)과 배터리 수명 단축이 발생하지 않는 게임을 제작하는 것입니다. 배터리 수명이 늘어나고, 발열이 줄어들면 게이머가 장시간 게임을 즐길 수 있어, 유저 리텐션이 향상되며 결국 게임이 더욱 큰 성공을 이루는 데 기여합니다. PC나 콘솔과 달리 모바일 하드웨어는 세심한 균형이 필요합니다. 디바이스 기능을 최대로 활용한다면 성능은 빠르게 저하됩니다. 이러한 문제를 해결하기 위해 유니티는 삼성과 협력하여 갤럭시 S10 및 갤럭시 폴드용 프로젝트를 최적화할 수 있는 삼성의 GameSDK 기반 어댑티브 퍼포먼스를 구현하였습니다. 어댑티브 퍼포먼스에 대한 자세한 내용은 여기를 참조하세요.

Unity Hub에서 Android SDK NDK 직접 설치

이제 Hub에서 Android Build Support 옵션의 일부로서 Android용 필수 컴포넌트를 모두 설치할 수 있습니다. 이 옵션을 통해 종속된 모든 컴포넌트를 한 번에 설치할 수 있으므로 별도로 수집하여 설치하지 않아도 됩니다. 고급 Android 사용자라면 기존대로 컴포넌트를 직접 설치하여 구성한 후 Android Studio를 사용할 수도 있습니다. 또한 2018.3부터는 Android Build Support에 OpenJDK를 기반으로 한 자체 Java 런타임이 함께 제공됩니다

Android Logcat 통합(프리뷰)

Android Logcat 패키지는 Android 기기로부터 수신되는 로그 메시지를 Unity 에디터에 표시하는 Unity 2019.1 호환 유틸리티이며, 이를 통해 Unity에서 직접 메시지를 제어하고 필터링할 수 있게 되어 디버깅 작업이 더 간편해졌습니다

Android에서 Scripts Only Build 패치 적용으로 빠르게 반복 작업 수행

개발 중 반복 작업(iterations)을 더 빨리 수행할 수 있도록 에디터에서 Scripts Only Build 옵션을 사용할 수 있습니다. 이를 통해 빌드 프로세스의 여러 단계를 건너뛰고 스크립트만 다시 컴파일한 다음, “Build And Run“을 선택하면 최종 패키지를 빌드하고 바로 배포합니다.

이제 이 기능이 더욱 확장되어, 사용자는 패키지를 다시 빌드하여 배포할 필요 없이 대상 기기에서 APK(Android만 해당)를 패치할 수 있습니다. 그러면 C# 코드에서 반복 작업하는 경우 다시 컴파일한 라이브러리만 기기로 전송됩니다. Unity에서 Scripts Only Build를 실행하려면 완전히 빌드한 프로젝트 빌드가 있어야 합니다.

AR/VR

AR 파운데이션(프리뷰)

Unity 개발자는 AR 파운데이션(AR Foundation)을 사용하여 AR 프로젝트의 구축을 빠르게 시작할 수 있습니다. 사용 중인 환경에 포함할 기능을 선택하면 한 번의 빌드로 ARKit 및 ARCore 기기 모두에 배포할 수 있습니다. 이 기능은 패키지 관리자를 통해 프리뷰로 제공되며 ARKit 및 ARCore 로우레벨 API가 통합 프레임워크로 되어 있습니다. 이 프레임워크는 개발 중에 당면하는 주요 문제를 해결하는 데 도움이 되는 추가 기능도 제공합니다.

AR 리모트(프리뷰)

이 기능을 사용하면 에디터와 기기 간 데이터 전송이 가능하므로, 기능을 테스트할 때마다 기기에 빌드할 필요가 없습니다. 이 기능에는 세션 리코딩 및 플레이백(Session Recording & Playback)이 포함되어 있어, 기기 상의 세션을 기록한 후 에디터에서 재생하는 방식으로 강력한 애플리케이션 테스트 또는 시각화 반복 수행이 가능합니다.

핸드헬드 AR 샘플

핸드헬드 AR 샘플은 AR 파운데이션을 기반의 씬, 프리팹 및 헬퍼 컴포넌트 모음으로 GitHub에서 제공되며, 평면 시각화, 오브젝트 배치 등을 수행하는 방법을 소개합니다. 여기에는 AR 파운데이션과 함께 LWRP를 사용하는 방법에 대한 예시도 포함되어 있습니다. 따라서 AR 프로젝트를 신속하게 구축 및 운용하는 데 필요한 모든 기본 정보를 얻을 수 있습니다.

그래픽스 개선 사항

AR/VR용 LWRP 지원

LWRP를 지원하는 AR 파운데이션이 프리뷰 패키지로 제공되어 이제 LWRP를 사용하여 AR 경험을 구현할 수 있습니다. 또한 이번 릴리스에서 최신 LWRP 패키지를 통해 LWRP의 성능 최적화는 물론 셰이더 그래프를 활용하여 Unity에서 공식 지원하는 모든 VR 플랫폼에 VR 경험을 구축할 수 있습니다. LWRP 업데이트에 대한 자세한 내용은 그래픽스 섹션을 참조하세요.

스테레오 렌더링 모드 폴백

타겟 기기에서 스테레오 인스턴싱(Stereo Instancing)이 지원되지 않을 경우, 스테레오 렌더링이 싱글 패스(더블 와이드) 렌더링으로 폴백(fallback)됩니다. 이제 특정 기기의 API가 스테레오 인스턴싱을 지원하는지 여부를 신경 쓰지 않고 더 성능이 우수한 스테레오 인스턴싱 렌더링 모드를 안심하고 사용할 수 있습니다. 이전 릴리스에서는 스테레오 렌더링 모드가 멀티 패스 렌더링으로 폴백되었습니다.

스테레오 인스턴싱용 포스트 프로세싱 지원

이번 릴리스와 최신 포스트 프로세싱 패키지에 포함된 모든 포스트 프로세싱 효과는 VR용으로 실행 가능하며, 이제 스테레오 인스턴싱 렌더링 모드를 지원합니다.

플랫폼 지원

Magic Leap용 빌트인 지원(Lumin OS)

이번 릴리스부터 Magic Leap One용 빌드를 지원합니다. 즉, Magic Leap 개발을 위해 지금까지는 Unity에서 임시로 제공했던 테크니컬 프리뷰 빌드를 사용했었으나, 이제는 Unity 릴리스를 사용할 수 있습니다.

WebGL

이번 릴리스부터 WebAssembly가 Unity WebGL의 기본 출력 포맷입니다. 또한 2018.3에서 지원이 중단된 asm js가 에디터 UI에서 삭제되었습니다. 따라서 asm js와 관련된 Use PreBuilt Engine 빌드 옵션이 더 이상 제공되지 않습니다. WebGL Player Settings도 업데이트되어 링커 타깃(Linker Target) 및 메모리 크기(Memory Size)가 각각 WebGLLinkerTarget.Wasm 및 32MB로 설정되고, 에디터 UI에서 삭제되었습니다. 하지만 에디터 스크립트를 통해 계속해서 이러한 설정을 수정할 수 있습니다. 이번 릴리스에서는 PlayerSettings.WebGL.threadsSupport를 통해 활성화할 수 있는 WebAssembly 멀티스레딩(실험 단계)도 사용 가능합니다. 자세한 내용은 포럼 게시글을 참조하세요.

Linux 에디터(프리뷰)

드디어 Linux용 Unity 에디터가 프리뷰로 제공됩니다! 최신 빌드는 Unity Hub에서 다운로드할 수 있습니다. 아직 미진한 부분이 있긴 하지만 계속 개선되는 모습을 보여드리겠습니다. Linux용 Unity 에디터가 실험 단계에서 프리뷰로 넘어오면서, 올해 연말에는 완벽하게 지원되는 버전을 공개할 수 있을 것으로 예상합니다. 우선적으로 지원할 구성 목록은 아래와 같습니다.

  • Ubuntu 16.04, 18.04
  • CentOS 7
  • x86-64 아키텍처
  • X11 Window System에서 실행되는 Gnome 데스크톱 환경
  • Nvidia 공식 전용 그래픽 드라이버, AMD Mesa 그래픽 드라이버
  • 에뮬레이션 또는 호환성 레이어 없이 기기/하드웨어에서 실행되는 데스크톱 폼 팩터

최상의 개발 환경을 위해 지원되는 구성 중 하나를 사용할 것을 권장합니다.

콘솔

비동기 컴퓨트 기능 향상

그동안 콘솔용 비동기 컴퓨트(Async Compute) 기능에 대해 몇 번 향상된 사항들을 소개한 적이 있습니다. 이제 비동기 컴퓨트 대기열에서 사용할 커맨드 버퍼(Command Buffer)를 위한 커맨드 버퍼 스크립트 함수의 범위가 확장되었습니다. 예를 들면 글로벌 셰이더 데이터를 설정하거나 임시 렌더 타겟을 관리하는 함수가 추가되었습니다. 또한 비동기 컴퓨트 대기열에 사용되는 커맨드 버퍼의 오류 처리를 개선했습니다. 이제 유효하지 않은 커맨드 버퍼 스크립트 함수가 사용되는 경우 즉시 피드백을 제공하므로 디버깅이 더욱 쉬워졌습니다.

PlayStation 4에서 커맨드 버퍼 체이닝 버퍼 연결

커맨드 버퍼 체이닝 및 버퍼 연결(Command Buffer Chaining & Concatenation)을 사용하면 GPU로 작업을 보내는 방식이 최적화됩니다. 특히 이전 방식으로는 GPU 오버헤드가 발생했던 네이티브 그래픽스 작업이 효율적으로 처리됩니다.

데스크톱

유니버설 Windows 플랫폼 ARM64 지원

ARM64 기기용 UWP에 대한 지원이 추가되었습니다. 대상 아키텍처에 맞는 ARM64를 선택하기만 하면 Windows 기반 ARM64 노트북에 배포할 수 있습니다.

디스플레이 해상도 대화창(또는 스크린 셀렉터)

사용자 데이터와 고객 리서치의 결과에 따라 이번 릴리스부터 Display Resolution Dialog의 기본값이 “disabled” 로 설정됩니다. 물론 Project Settings의 Display Resolution Dialog 드롭다운 메뉴에서 해당 기능을 언제든지 활성화할 수 있습니다(Player -> Resolution and Presentation > the Standalone Player Options). 디스플레이 해상도 대화창 관련 기능 업데이트에 대해서는 차후에 공유드리겠습니다.

엔진

데이터 지향 기술 스택(DOTS)

버스트 컴파일러 프리뷰 종료

C# 잡을 이용하여 타겟 플랫폼에 고도로 최적화된 기계어 코드를 생성하는 새로운 LLVM 기반 백엔드 컴파일러 기술로 2018.1 버전부터 버스트 컴파일러(Burst Compiler)가 도입되었습니다.

이번 릴리스부터 버스트 컴파일러의 프리뷰 단계가 종료되어 정식 버전으로 사용할 수 있습니다. 버스트 컴파일러를 사용하면 성능 향상을 위해 어셈블러 수준의 수작업 튜닝과 같은 힘든 로우 레벨 코딩 작업이 필요 없습니다. 기존과 동일하게 C#으로 코드를 작성하면 됩니다.

원본 C# 소스 코드를 비롯한 잡 및 시스템 명령어를 확인하려면 버스트 인스펙터(Burst Inspector)를 이용하면 됩니다.

새로운 오디오 렌더링/믹싱 엔진(실험 단계)

DSPGraph는 새로운 오디오 렌더링/믹싱 엔진으로 Unity C# 잡 시스템을 기반으로 하여 구축됩니다. 따라서 C#에서 자유롭게 확장 가능하며 버스트 컴파일러와 함께 사용할 수 있습니다. 메가시티(Megacity) 프로젝트에서 DSPGraph로 네온사인, 에어컨 실외기, 자동차 등을 포함한 100,000개의 유례를 찾을 수 없을 정도로 복잡하게 분산되어 있는 3D/공간 사운드 이미터를 지원하여 풍부하고 사실적인 음풍경(soundscape)을 제작할 수 있었습니다. DSPGraph는 내부 실험 단계 API로 올 후반기에 프리뷰 패키지로 다듬어 퍼블리시될 예정이며, 향후 출시될 DOTS 오디오 시스템의 토대가 될 것으로 기대됩니다. 메가시티 프로젝트 제작 관점에서 DSPGraph에 관심이 있다면 새로 추가된 DOTS 오디오 포럼에 참여해 주세요. 이곳에서 DSPGraph에 관한 질문을 하거나 오디오와 관련한 요청 사항을 알려주시기 바랍니다. 

서브 (실험 단계)

서브 씬(Sub Scenes)은 메가시티 프로젝트를 위해 제작된 툴박스에 포함되어 있습니다. 이 기능을 사용하면 게임 오브젝트를 엔티티로 일괄 전환하기 위한 그룹화 메커니즘으로 게임 오브젝트 씬(GameObject Scene)을 사용함으로써 게임 오브젝트와 DOTS 간의 격차를 해소할 수 있습니다. 서브 씬은 특히 메가시티와 같이 수백만 개의 게임 오브젝트가 엔티티로 전환되는 대규모 프로젝트를 작업할 때 유용합니다. 한 번에 제한된 수의 서브 씬에 대해서만 작업하면 되기 때문에 에디터에서 프로젝트를 관리하기가 훨씬 쉽고, 성능 면에서도 유리합니다. 이를 가리켜 “하이브리드(hybrid)” 워크플로라고 합니다.

전환된 서브 씬은 에디터 워크플로 개선 외에도 스트리밍 단위로 사용할 수 있습니다. 게임플레이 중에 로드 및 언로드할 수 있으며, 에디터에서 비동기식으로 로드할 수도 있습니다. 루트 게임 오브젝트에 Sub Scene 컴포넌트를 추가하여 게임 오브젝트 그룹을 엔티티로 전환할 수 있습니다. 게임 오브젝트를 서브 씬에서 편집하려면 그냥 열어서 수정만 하면 됩니다. 편집을 마치고 게임 오브젝트의 서브 씬을 닫으면 게임 오브젝트 그룹이 자동으로 엔티티로 전환됩니다. 서브 씬에서 변경된 게임 오브젝트는 루트 씬에 영향을 미치지 않으므로 여러 팀 구성원이 동시에 개별 서브 씬에 대해 협업을 쉽게 진행할 수 있습니다. 서브 씬 기능은 엔티티 패키지에 포함되어 있으며, 패키지 관리자에서 찾을 수 있습니다. 이 기능은 현재 실험 단계이며 문서화되지 않았으므로 주의하여 사용하시기 바랍니다.

메가시티 공개

메가시티는 FPS 샘플 그룹의 아티스트 2명과, ECS 팀의 협업을 통해 단 2개월만에 완성되었습니다. 날아다니는 차량, 수십만 개의 매우 디테일한 게임 오브젝트, 그리고 독특한 오디오 소스를 사용하여 미래의 도시를 생생하게 구현했습니다. 이 과정에서 엔티티 컴포넌트 시스템(ECS), C# 잡 시스템, 버스트 컴파일러 등 “퍼포먼스 바이 디폴트(Performance by Default, 개발자가 신경쓰지 않아도 엔진이 자체적으로 성능 최적화 수행)”를 슬로건으로 내건 모든 프로젝트에 적용되는 데이터 지향 기술 스택(DOTS)이 활용되었습니다.

메가시티는 Unity 2019.1부터 지원되는 DOTS와 Unity 2018.3부터 도입된 새로운 프리팹 워크플로를 복잡도가 높은 제작물에 어떻게 활용할 수 있는지를 잘 보여줍니다. 지금 데모를 다운로드하여 DOTS가 향후 프로젝트에 어떻게 기여할 수 있는지 살펴보시기 바랍니다. Nordeus의 몇몇 개발자가 메가시티 데모를 제작하는 과정에서 DOTS와 LWRP를 사용하여 고해상도 PC 프로젝트를 모바일 플랫폼용으로 손쉽게 구축한 방법을 보여주는 Nordeus 사례 연구를 읽어보시기 바랍니다. 전체 프로젝트는 여기에서 다운로드할 수 있습니다.

DOTS 기반 물리 시스템

유니티는 GDC 2019에서 완벽한 DOTS 기반 프로젝트 솔루션을 Unity로 구축하기 위한 Havok과의 제휴를 발표했습니다. 프로젝트에서 새로운 DOTS 프레임워크를 사용하는 경우 Unity 피직스(Unity Physics, 프리뷰)가 기본 물리 시스템이 됩니다. 이 시스템은 C# DOTS 프레임워크를 사용하여 작성되었으며 버스트 컴파일러와 C# 잡 시스템을 활용하여 고성능 시뮬레이션을 제공합니다. 상태 정보를 저장할 필요가 없는(stateless) 설계와, 캐싱(caching)을 활용하지 않는 방식으로 솔버를 크게 단순화하여 보다 네트워크 친화적인 물리 시스템을 구축하고 이를 제작 요구사항에 맞게 손쉽게 확장, 미세 조정 및 수정할 수 있습니다. Unity 피직스는 패키지 관리자를 통해 Unity 2019.1에서 제공됩니다.

 2019년 6월에는 매우 복잡한 물리 시뮬레이션이 필요한 DOTS 프로젝트에 사용할 수 있도록 Havok 피직스(Havok Physics) 패키지를 통합 제공할 예정입니다. 여기에는 Unity 피직스가 사용하는 것과 동일한 C# DOTS 프레임워크가 사용되지만, 네이티브 C++로 작성된 클로즈드 소스(closed source)인 전용 Havok 물리 엔진을 기반으로 한다는 차이점이 있습니다. Unity 피직스와 Havok 피직스 모두 동일한 데이터 프로토콜을 사용하도록 구축했으므로 콘텐츠 및 게임 코드를 한 번 제작하기만 하면 이후에 두 시스템 간에 데이터를 공유할 수 있습니다. 이를 통해 두 DOTS 기반 물리 솔루션 간에 원활하게 전환할 수 있으며 프로젝트에서 두 솔루션을 동시에 사용할 수도 있습니다.

프로젝트에서 DOTS 사용하지 않아도 기능을 사용할 있나요?

현재 프로젝트에서 게임 오브젝트 및 MonoBehaviour 프레임워크를 사용하고 있는 경우 기본 시스템으로 PhysX가 사용됩니다. 달라지는 것은 없습니다. 유니티는 게임 오브젝트 및 MonoBehaviour 기반 프로젝트도 지원할 수 있도록 Unity에서 PhysX 업데이트를 계속하여 지원 및 평가할 예정입니다.

PhysX 개선 사항

DOTS를 기반으로 하지 않는 프로젝트를 위해 PhysX 솔루션에 다양한 개선 기능이 추가되었습니다. 예를 들어, 이제 천(cloth)에서 씬 중력과 관계없이 자체 중력을 적용할 수 있으므로 미세 조정이 더욱 쉬워집니다. 또한 물리 디버그 뷰 컬러를 업데이트하여 사용자 환경을 좀 더 향상시키고, 기즈모 컬러와 일관성을 유지하였습니다. Rigidbody 컴포넌트 인스펙터에는 새로운 섹션이 추가되어 선속도(Velocity) 및 각속도(Angular Velocity), 질량 중심(Center of Mass) 및 관성 텐서(Inertia Tensor)와 같이 디버깅에 유용한 내부 정보를 확인할 수 있습니다.
새로 추가된 Physics.GetIgnoreCollision 함수는 특정 콜라이더의 충돌 기능이 활성화되었는지 여부를 쉽게 확인할 수 있게 해줍니다. 그리고 바디의 기본 최대 각속도가 7에서 50으로 늘어났습니다. 이를 통해 빠르게 움직이는 오브젝트에 대한 시뮬레이션과, 매우 도전적인 환경에서의 래그돌(ragdoll) 간 충돌 해상도 품질도 역시 개선될 것입니다. 또한 솔버가 바디를 더 빠르게 회전시켜 볼 수 있게 되어 더 적은 반복 작업으로 제약 조건(constraint)을 만족시킬 수 있습니다.

향상된 물리 멀티 씬

지금까지는 멀티 씬 환경에서 레이캐스트만 지원되었으나, 이번 릴리스부터 모든 씬 쿼리를 사용할 수 있습니다. 물리 디버그 뷰는 다중 물리 씬 또한 지원하므로 선택한 오브젝트가 어떤 물리 씬에 속하는지 확인할 수 있습니다. 또한 지정된 물리 씬에 어떠한 오브젝트가 속해 있는지 확인할 수 있습니다.

IL2CPP 개선 사항

스크립트 디버깅이 활성화되어 있을 때의 런타임 성능을 개선했습니다. IL2CPP로 생성한 코드의 성능도 최대 20% 개선되었습니다.

프로파일러 업데이트

Unity 프로파일러와 외부 프로파일러의 통합을 개선했습니다. 이제 Unity 개발 빌드에서 Android Systrace용 마커를 생성할 수 있습니다. 이렇게 하면 시스템 전체를 추적하는 Android Systrace 툴에서 Unity 이벤트 이름이 지정된 섹션을 시각화할 수 있습니다. 그런 다음 스케줄링, CPU 상태 및 시스템에서 실행 중인 기타 프로세스와 같은 OS 활동의 맥락에서 게임을 분석할 수 있습니다. 이전에 플러그인으로 제공되었던 네이티브 Systrace 지원이 이제 Unity 2019.1의 일부가 됩니다. 관리 중인 모든 스레드를 Mono 및 IL2CPP 스크립팅 백엔드에서 볼 수 있으며 모든 네이티브 Unity 스레드가 공개됩니다. 스레드에서의 활동이 프로파일러 창의 Timeline 뷰에 표시되며 모든 스레드가 프로파일러에 자동으로 등록됩니다. 또한 프로파일러에서 허용되는 기본 메모리 사용량이 플레이어에서는 4MB, 에디터에서는 64MB로 각각 늘어나, 디스크나 네트워크로 스트리밍하기 전에 더 많은 데이터를 축적할 수 있으며 오버헤드가 감소합니다. “-profiler-maxusedmemory” 커맨드 라인 인자를 사용하여 이 값을 제어할 수도 있습니다. 마지막으로, 새롭게 추가된 UnityEditor.Profiling.HierarchyFrameDataView API를 활용하면 모든 스레드에 있는 CPU 프로파일링 데이터를 빠르게 탐색하고, 프로파일러 창의 Hierarchy 뷰에서 사용할 수 있는 모든 정보와 관련 메타 데이터(예: GC.Alloc 콜 스택)를 수집할 수 있습니다.

프로파일 애널라이저(프리뷰)

새로운 프로파일링 패키지로 프로파일 애널라이저(Profile Analyzer)가 프리뷰로 제공됩니다. 이 패키지에는 한 번에 프레임을 여러 개 분석할 수 있는 기능이 추가되어 Unity 프로파일러의 싱글 프레임 분석 기능을 보완합니다. 이 기능은 Unity 버전을 업그레이드하고, 최적화로 인한 효과를 테스트하거나, 성능을 추적하는 것과 같이 개발 주기에 포함되어 성능을 더 포괄적으로 확인해야 하는 경우에 유용합니다. 프로파일 애널라이저는 Unity 프로파일러에 현재 로드되어 있거나 이전에 저장했던 프로파일 애널라이저 세션에서 로드된 활성 프레임 세트에서 가져온 CPU 프레임 및 마커 데이터를 분석합니다. 분석된 CPU 프레임과 마커 데이터는 히스토그램과 상자 그림(box and whisker plot)을 사용하여 요약되고 그래프로 표시되며, 이는 최소, 최대, 평균, 인스턴스 수, 범위, 그리고 마커가 처음 나타난 프레임 등 각 마커의 활동을 정렬해서 목록으로 보여줍니다.

프로파일 애널라이저의 Compare 뷰에서는 두 개의 데이터 세트를 한 번에 로드하여 최적화, 설정 변경 또는 Unity 버전 업데이트의 효과를 측정할 수 있습니다.

Single 뷰와 Compare 뷰 모두에서 제공되는 필터링 시스템을 사용하면 마커, 스레드, 프레임 및 스택 뎁스별로 분석을 제한할 수 있습니다.

점진적 가비지 컬렉션(실험 단계)

이번 릴리스에는 기존 가비지 컬렉터(GC) 대신 사용할 수 있는 점진적 가비지 컬렉터(Incremental Garbage Collector)가 실험 기능으로 도입되었습니다. 점진적 가비지 컬렉터는 GC 작업을 여러 개의 슬라이스로 분할할 수 있습니다. 즉, 점진적 가비지 컬렉터를 사용하면 프로그램 실행을 한 번에 오랫동안 중단하지 않고 여러 번에 걸쳐 짧게 중단할 수 있습니다. 이렇게 한다고 해서 GC 속도가 전체적으로 빨라지는 것은 아니지만, 여러 개의 프레임에 걸쳐 워크로드를 분산함으로써 프로젝트에서 원활한 애니메이션의 맥을 끊는 GC 스파이크 문제를 크게 줄일 수 있습니다. 자세한 내용은 블로그 게시물을 참조하시기 바랍니다.

ScriptableObject 리로드

이제 ScriptableObject는 에셋 임포트 중에 리로드됩니다. 즉, 에셋 임포트 전에 ScriptableObject를 로드했는데 디스크의 기본 에셋이 수정된 경우, ScriptableObject가 리로드되고 임포트가 완료되면 디스크의 에셋에서 새로운 값을 가져옵니다. 이번 변경 이전에는 ScriptableObject가 임포트 후에 언로드되어 같음 연산자(==)를 사용하여 비교할 경우 ScriptableObject가 null이 되었습니다. 리로드 기능은 ScriptableObject와, (재)임포트 전에 이미 로드된 네스티드 프리팹(nested Prefabs)에 대해서만 가능합니다. ScriptableObject 리로드와 관련한 자세한 내용은 여기에서 제공하는 코드 예제를 확인하시기 바랍니다.

어셈블리 정의 파일 – 버전 정의

이번 릴리스부터는 패키지 개발자가 Assembly Definition File 인스펙터에 새로 추가된 Version Defines 기능을 사용하여 패키지에서 C# 코드를 조건부로 사용할 수 있습니다.

소프트 레퍼런스

이제 어셈블리 정의 파일(asmdef) 레퍼런스가 누락된 경우 레퍼런스 누락 오류를 생성하는 대신 무시됩니다. 이를 통해 asmdef 어셈블리에 대한 레퍼런스 추가 여부는 일종의 옵션이 됩니다.

버전 정의

Assembly Definition File 인스펙터의 새로운 Version Defines 기능을 사용하면 프로젝트에서 현재 프로젝트에 설치되어 있는 패키지 및 모듈에 버전 범위에 따라 설정할 C# 전처리기 지시문을 정의할 수 있습니다. 이를 통해 선택 사항인 패키지의 기능에 대한 C# 코드에 #if 지시문을 작성할 수 있습니다.

에디터

프리팹

인스펙터에서 프리팹 에셋 편집

이번 릴리스에는 프로젝트 뷰에서 프리팹을 선택하면 인스펙터에서 프리팹 에셋을 편집할 수 있는 기능이 다시 추가되었습니다. 즉, 프리팹을 프리팹 모드에서 열거나, 편집을 위해 씬으로 드래그하지 않아도 됩니다.

단축키 관리자

에디터 단축키를 관리하고, 단축키를 다양한 컨텍스트 메뉴에 할당하고, 기존 연결 상태를 시각화하는 작업을 간편하게 할 수 있도록 단축키 관리자는 시각적 인터랙티브 인터페이스와 API 세트를 제공합니다. 연결이 중복되는 문제를 해결하기 위해, 인터페이스에서 여러 커맨드가 동일한 연결을 사용하지 않는지 확인할 수 있도록 시각화하고 그에 맞게 다시 매핑할 수 있도록 지원합니다. Shift+Control을 길게 누르면 사용할 수 있는 단축키를 확인할 수 있습니다. 모든 예약된 키와 예약되지 않은 키의 목록이 표시되며, 단축키를 커스텀 프로필에 보관하여 저장 및 공유하고 다른 시스템으로 옮겨 사용할 수도 있습니다. 새로운 컨텍스트 시스템을 통해 에디터 창에서 특정 컨텍스트 내에 커맨드를 등록할 수 있습니다. 이를 통해 툴 개발자는 커스텀 작업을 정의하고 이를 단축키로 지정할 수 있습니다. 이러한 단축키는 컨텍스트를 인식하도록 정의할 수 있으므로 적절한 컨텍스트에서만 사용이 가능합니다. 마지막으로 단축키 간 충돌을 시각화하고 이를 해결할 수 있습니다. 예를 들어, 여러 패키지에서 동일한 단축키를 사용하는 경우 에디터에서 알림을 표시하고, 충돌을 처리할 수 있도록 옵션을 제시합니다.

에디터 콘솔 개선

에디터 콘솔이 업데이트되었습니다. 이제 스택에 표시된 함수 호출에 해당하는 소스 코드 라인을 사용자가 찾아 들어갈 수 있도록 클릭 가능한 스택 추적 링크와, 콘솔 항목을 필터링할 수 있는 검색 툴이 제공됩니다.

퀵 서치(프리뷰)

새롭게 선보이는 퀵 서치(Quick Search) 툴은 에디터에 있는 여러 검색 대상(예: 에셋, 계층, 설정) 전체에서 검색을 용이하게 해줍니다. 또한 이 툴은 개발자가 검색 대상을 직접 포함시키기를 원하는 경우에도 확장할 수 있습니다. 이 기능은 현재 프리뷰로 제공됩니다. 자세한 내용은 포럼에서 확인할 수 있으며 사용 후 피드백을 제공해 주시기 바랍니다.

애니메이션

애니메이션 리깅(프리뷰)

새로운 애니메이션 리깅(Animation Rigging) 패키지를 사용하면 애니메이션을 더욱 기술적으로 잘 조정할 수 있습니다. 사전 정의된 애니메이션 제약 조건 세트를 사용하여 일반적인 캐릭터의 컨트롤 릭(Rig) 계층을 직접 빌드할 수 있습니다. 릭 제약 조건은 런타임에 컨트롤러 플레이어블 그래프(controller playable graph)에 후처리 작업으로 추가되는 애니메이션 작업 목록으로 전환됩니다. 이 새로운 애니메이션 리깅 패키지는 애니메이션 C# 잡을 기반으로 하므로, 안전한 멀티스레드 릭을 설정하여 변형을 절차적으로 제어하고, 유사(pseudo) 물리적 동작이나 보조 모션을 시뮬레이션하고, 전체 애니메이션을 수정할 수 있도록 지원합니다.

패키지에 포함된 사전 정의된 제약 조건 라이브러리를 사용하면 각기 용도가 다른 다양한 릭 설정을 구성한 다음 게임플레이 중에 이들을 적절할 시점에 동적으로 혼합하여 최종 애니메이션 성능을 제어할 수 있습니다.

마지막으로, 이 패키지는 확장성이 우수하므로 특정 제작 요건에 맞는 커스텀 제약 조건을 작성할 수 있습니다. 자세한 내용은 GDC 2019 기조 연설에서 확인하세요. 포럼에 참여하셔서 애니메이션 리깅 패키지에 대한 의견을 주시기 바랍니다!

Unity Hub 2.0(베타) 출시

새로운 UI/UX 아키텍처에는 Explorer/Finder에서 Sort & Search와 Reveal을 사용하여 가시성을 제공하고 검색에 도움이 되는 여러 기능이 포함되어 있습니다. 이제는 Hub의 기본 데스크톱 창 크기를 조절하고, Hub에서 직접 라이선스를 관리하며, Unity 라이선스를 먼저 활성화하지 않고도 Hub를 설치하여 실행할 수 있습니다. 또한 이번 릴리스에는 언어의 현지화 및 다국어화에 대한 지원과 네트워크 연결 점검을 처리하는 방법에 대한 몇 가지 개선 사항이 포함되어 있습니다. 자세한 내용은 Unity 포럼 게시글을 확인하세요.

런처 만료

이제 Unity Hub에서 프로젝트를 관리할 수 있으므로 빌트인 프로젝트 런처가 더 이상 에디터에 포함되지 않습니다. 이에 따라 프로젝트를 열고 생성하는 방식과 에디터에서 라이선스를 관리하는 방식이 크게 변경되므로 이에 관한 피드백을 Unity에 전달해 주시면 감사하겠습니다.
참고: 에디터의 커맨드 라인 인터페이스는 이번 변경의 영향을 받지 않으며 프로젝트 관리 및 라이선스 활성화 방식이 기존과 동일하게 유지됩니다. 아직 Hub를 다운로드/설치하지 않은 경우, 여기에서 최신 Hub 릴리스를 다운로드할 수 있습니다. 이미 Hub를 설치한 경우, 버전 1.3 이상으로 업데이트했는지 확인하시기 바랍니다(Hub 실행/재시작 시 자동 업데이트 프로세스 시작).

패키지 관리자 업데이트

이제 에디터에서 패키지 엔진 코어 간의 종속 관계를 시각화하고, GitHub 저장소에서 패키지를 직접 설치하고, Unity에서 호스팅하는 레지스트리와 커스텀 레지스트리를 함께 관리할 수 있습니다. 또한 이 릴리스에는 어셈블리 정의 레퍼런스에 대한 지원이 포함되어 있습니다(버전 정의 섹션 참조). Unity 패키지 관리자 포럼에 참여하여 관련 내용을 확인하거나, 2019.1 매뉴얼에서 자세한 내용을 확인하세요.

UI 요소

개발자가 UI 레이아웃 및 스타일을 빠르게 생성하고 편집할 수 있는 새로운 보류 모드 GUI 시스템을 마련했습니다. 이 새로운 GUI 시스템은 웹의 CSS, jQuery, HTML DOM 및 이벤트 시스템의 개념을 차용하여 Unity에서 UI를 더 쉽게 생성하고 최적화할 수 있도록 지원합니다. 또한 스타일 시트 및 동적/상황별 이벤트 처리 등과 같이 향상된 성능과 여러 새로운 기능이 제공됩니다. 새로운 시스템은 성능과 확장성을 둘 다 염두에 두고 구축되어 개발자가 UI를 빌드, 수정하고 이와 상호 작용할 수 있도록 기존의 광범위한 C# API가 제공됩니다. 익숙한 C# API, 이벤트 시스템, CSS, XML 임포트 형식은 사용자 인터페이스를 쉽게 빌드할 수 있게 해줍니다. UI 요소는 IMGUI를 대신하여 에디터 UI를 확장 및 생성하며 이후 릴리스에서는 uGUI를 대신하여 런타임 UI를 생성할 예정입니다.

그래픽스

파티클

C# 잡 시스템 지원

이제 스크립트와 네이티브 코드 간에 파티클 데이터를 복사하지 않고 C# 잡 시스템을 사용하여 파티클 데이터를 조작할 수 있습니다. 이를 설정하려면 IParticleSystemJob을 기반으로 하여 잡 구조체를 생성한 다음 SetJob을 사용하여 파티클 시스템에 연결합니다. 그러면 네이티브 파티클 업데이트가 실행된 후 스레드에서 호출됩니다.

메시 기능 개선

이번 릴리스에는 메시 파티클에 대한 많은 기능이 개선되었습니다. 예를 들어, 각 파티클에 할당된 메시를 스크립트에서 쿼리하고 할당할 수 있습니다. 이제 ParticleSystem.Particle 구조체에는 메시 인덱스를 가져오고 설정하는 메서드가 포함됩니다. 커스텀 버텍스 스트림에는 새로운 메시 인덱스 스트림이 있어 메시 인덱스를 셰이더로 전달할 수 있습니다. 이 인덱스를 사용하여 개별 메시에 맞는 커스텀 셰이더 코드를 작성할 수 있습니다. 텍스처 시트 애니메이션 모듈에는 파티클의 메시 인덱스에 따라 애니메이션의 행을 선택하는 새로운 행 모드가 포함되어 있습니다. 이를 통해 효과의 각 메시에 특정 애니메이션을 할당할 수 있습니다.

셰이더 그래프

셰이더 그래프는 셰이더를 빌드하기 위한 노드 기반의 시각적 인터페이스이며 이번 릴리스부터 정식으로 제작에 사용 가능합니다. 아티스트는 셰이더 그래프를 사용하여 코드 작성 없이 대상의 모습을 손쉽게 커스터마이징할 수 있습니다. 셰이더 그래프를 사용하면 노드를 드래그 앤 드롭하여 결과를 실시간으로 확인할 수 있습니다. 이러한 즉각적인 피드백을 통해 셰이더 전문가와 초보자 모두 디버깅 및 미세 조정을 간편히 수행할 수 있습니다. 셰이더 그래프의 새로운 주요 기능은 커스텀 노드를 시각적으로 생성할 수 있게 하는 네스티드 서브그래프(Nested Sub Graphs)입니다. 서브그래프는 다른 그래프에 중첩될 수(nestable) 있기 때문에 프로젝트나 스튜디오에 필요한 커스텀 콘텐츠 라이브러리를 정의할 수 있습니다. 이를 통해 테크니컬 아티스트는 전체 셰이더 파이프라인을 크게 손대지 않고도(non-destructive) 유연하게 제어할 수 있게 되어 테크니컬 아티스트에게 실험 정신과 창의성을 고무시킵니다. 새로운 셰이더 그래프 기능 및 권장 워크플로에 대한 자세한 내용은 GDC 2019 기조 연설을 참조하세요.

경량 렌더 파이프라인(LWRP)

이번 릴리스에서 LWRP가 정식 버전으로 제공됩니다. LWRP는 사전 빌드된 스크립터블 렌더 파이프라인(SRP)으로, 우수한 그래픽스 렌더링 성능을 제공하도록 최적화되었습니다. LWRP는 다양한 설정 옵션을 갖추고 있으며, 렌더링 설정을 전역으로 제어하거나, 카메라별로 제어할 수 있습니다. 또한 셰이더 그래프와 통합되어 커스텀 효과에 필요한 카메라 뎁스 및 컬러 텍스처를 유연하게 설정할 수 있습니다. 이 확장성이 뛰어난 플러그 앤 플레이 아키텍처는 커스텀 렌더 패스 생성을 가능하게 합니다. 또한 특정 효과를 구현하기 위해 렌더러를 오버라이드할 수 있습니다. LWRP를 사용하면 사용자는 작업의 유연성을 확보할 수 있고, 여러 플랫폼 간의 스케일러블(scaleable) 렌더링이 가능해 집니다. GitHub에서 소스 코드를 다운로드하여 LWRP를 추가로 커스터마이징할 수 있습니다. 2019.1에는 DPI가 높은 모바일 디바이스 화면에서 게임을 렌더링하는 동안 UI를 선명하게 유지할 수 있도록 UI 보존(UI preservation)과 함께 동적 스케일링(Dynamic Scaling) 지원이 추가되었습니다. 또한 SRP 배처(SRP Batcher)에 대한 지원과 소프트 파티클 및 왜곡(Soft Particles and Distortions)을 비롯하여 파티클 셰이더에 대한 여러 개선 사항을 추가하였습니다. 터레인 셰이더(Terrain Shader)와 베이크된 릿(Lit) 셰이더도 개선되었습니다. 이번 릴리스에는 더욱 효과적인 커스터마이징을 위한 커스텀 렌더러(Custom Renderer) 시스템이 새롭게 도입되었습니다. 그리고 비주얼 이펙트 그래프(Visual Effect Graph)에 대한 예비 지원이 추가되었습니다. LWRP 지원은 초기에 언릿(Unlit) 셰이더에서 사용할 수 있으며 계산 가능한 플랫폼으로 제한됩니다. LWRP에 대한 자세한 내용은 Unity 매뉴얼을 참조하세요.

고해상도 렌더 파이프라인(HDRP – 프리뷰)

HDRP는 컴퓨트 셰이더와 호환되는 최신 플랫폼을 대상으로 사전 빌드된 스크립터블 렌더 파이프라인으로 고품질의 그래픽 정확도를 보장합니다. HDRP는 이러한 설계를 바탕으로 게임에서 기술 데모에 이르기까지 무엇이든 최고의 해상도로 제작할 수 있는 툴을 제공합니다. 이번 릴리스에서 몇 가지 새로운 기능을 추가하여 아티스트를 위한 워크플로를 대폭 개선하였습니다. 이러한 변경으로 인해 이전에 작성한 데이터가 이 버전과 호환되지 않게 되어 다시 작성해야 하는 불편함이 있긴 합니다. 2018.3에서 업그레이드하는 사용자를 위해 마이그레이션 프로세스 가이드를 제작했습니다. 가이드는 여기에서 다운로드할 수 있습니다. 이 버전은 PC용 DX11과 DX12, Mac용 Metal, PC 용 Vulkan, Linux, Xbox One과 PS4를 지원합니다. HDRP는 2019.3 버전까지 프리뷰로 제공될 예정입니다. 참고: 이 릴리스는 HDRP 템플릿에서 HDRP 패키지 5.7.2로 제공됩니다. 앞서 언급한 기능을 활용하려면 템플릿 설치 후 패키지를 5.12.0 이상으로 업그레이드하는 것이 좋습니다.

플랫폼 지원 개선

2019.1에서 아티팩트의 감소를 비롯하여 Linux 및 Vulkan API에 대한 지원이 개선되었습니다. 아티팩트가 일부 남아있긴 하지만 전반적인 환경이 개선되었습니다.

더블 와이드 VR 출시

더블 와이드는 두 가지 뷰를 나란히 렌더링하는 VR용 느린 경로(slow path)입니다. 보다 최적화된 싱글 패스 인스턴스화 버전은 2019.2에서 출시됩니다. 이제 굴절(refraction), 왜곡(distortion), 피하 산란(subsurface scattering), 데칼(decals), 볼류메트릭(volumetric) 등 모든 HDRP 효과가 지원됩니다. 지원되는 기능에 대한 자세한 내용은 이 게시물을 참조하세요.

성능 개선

HDRP는 이제 ARGBHalf 대신 RGB111110Float의 컬러 버퍼 형식을 사용하여 셰이더 실행 속도를 높이고, 전반적인 성능을 개선했습니다. 2019.1에서는 방향 광원 한 개와, 단순한 머티리얼만 있는 경우 빠른 경로(fast path)를 지원합니다. CPU 시간을 줄이기 위해, 모션 벡터 오브젝트는 더 이상 뎁스 프리패스(depth prepass)를 사용하여 두 번 렌더링되지 않습니다. 스탠실 버퍼를 통해 왜곡을 최적화하였으며 셰이더 배리언트 스트리핑(shader variant stripping)을 개선하여 빌드 시간을 줄였습니다. 또한 2019.1에는 소프트웨어 다이내믹 해상도(Software Dynamic Resolution)에 대한 지원이 포함되어 모든 플랫폼에서 UI와 다른 스케일로 월드를 렌더링할 수 있습니다(플랫폼에 대한 하드웨어 다이내믹 해상도 지원 기능은 추후 소개 예정). C# 스크립트를 통해 원하는 해상도를 구현하기만 하면 됩니다. 마지막으로, 이제 투명한 머티리얼에 “저해상도(Low Resolution)”라는 렌더 패스 이름을 사용하여 1/4 해상도로 유사한 시각적 품질을 렌더링할 수 있습니다. 이 기능은 대규모 파티클의 오버드로우 성능을 개선할 때 유용합니다.

UI 및 카메라 지원 개선

이제 HDRP의 모든 UI 요소에 대한 멀티 에디션 지원과 기술 자료 수준 및 툴팁(tooltips) 기능이 향상되었습니다. 멀티 뷰포트(Multi ViewPort)에 대한 지원도 추가되어 분할 화면 렌더링이나 유사한 효과를 내기 위해 여러 대의 카메라를 하나의 렌더 타겟에 렌더링할 수 있습니다.
FrameSettings 및 HDRP 에셋 설정을 리팩터링하여 계산 시간을 줄이고 편집을 더 용이하게 하였습니다. 이제 HDRP 에셋 설정이 메모리 및 셰이더 배리언트에 미치는 영향을 확인할 수 있습니다. SMAA(SMAA 1X) 안티앨리어싱 기법에 대한 지원이 추가되어 성능(FXAA)과 품질(TAA) 간 균형을 맞출 수 있습니다. 이제 언릿 셰이더에서 애프터 포스트 프로세스(After Post-Process) 렌더 패스가 지원됩니다. HDRP는 포스트 프로세싱 패스 이후의 이 렌더 패스를 사용하는 오브젝트를 렌더링하므로 포스트 프로세싱의 영향을 받지 않습니다. 예를 들어 3D UI를 렌더링할 때 유용합니다.

디버그 모드 개선

이제 HDRP가 컬링을 위해 카메라를 멈출 수 있는 디버그 옵션을 포함하면서도 카메라가 렌더링 시점(point of view)으로부터 이동 가능한 상태를 유지하므로 특정 씬 뷰에 대해 무엇이 컬링되는지 확인할 수 있습니다. 또한 머티리얼 PBR 검증기와 이미시브 컬러 오버라이드도 제공됩니다.

렌더 파이프라인 마법사

이 마법사를 통해 HDRP를 사용할 때 올바르게 작동하도록 프로젝트 설정을 구성할 수 있습니다. 이 마법사는 잘못 구성된 항목을 강조 표시하고 이를 수정할 수 있도록 Fix 버튼을 제공하며, 새로운 커스텀 씬을 구성할 수도 있습니다.

기타 HDRP 개선 사항

더욱 효율적인 기즈모 제어, 셰이더 그래프 지원 및 불투명 데칼을 위한 이미시브 지원을 통해 데칼 기능이 향상되었습니다. 이제 레코더가 제대로 지원되어 HDRP로 영상을 녹화할 수 있습니다. 면직물에 대한 직물 광원 모델이 소니 픽쳐스 이미지웍스의 최근 연구를 반영하도록 개선되었습니다.
볼류메트릭 포그(volumetric fog) 또한 최적화되어 더욱 정교해졌습니다. 또한 밀도 볼륨(density volume)용 기즈모도 업데이트되었습니다. 광원 및 오브젝트에 태그를 지정하여 태그가 동일한 오브젝트만 특정 광원의 조명을 받도록 하는 광원 레이어는 이제 완벽하게 작동하며 그림자 제어를 정확하게 지원합니다. 피하 산란(subsurface scattering)을 위한 확산 프로파일(Diffusion Profile)이 2019.1에서 변경되었습니다. 이전에는 각 프로젝트의 확산 프로파일 목록이 16개의 프로필로 제한되었으나, 이제 확산 프로파일은 개별 에셋으로 공유/배포가 가능하며 프로파일은 뷰당 16개로 제한됩니다. 뷰에서 사용되는 현재 프로파일 목록은 볼륨 설정을 통해 제어됩니다. 기존의 확산 프로파일 시스템에서 새로운 시스템으로의 마이그레이션이 자동으로 수행되지만 셰이더 그래프에는 해당되지 않습니다. 이러한 확산 프로파일은 다시 작성해야 합니다. 또한 이 버전은 투명한 머티리얼에서 모션 벡터를 지원합니다. 투명한 머티리얼은 이전의 속도 버퍼 콘텐츠를 덮어써서 새로운 속도를 작성할 수 있습니다. 이는 머리카락과 같은 알파 블렌디드(Alpha Blended) 머티리얼에 유용합니다.

새로운 셰이더 및 셰이더 그래프 지원

2019.1에는 셰이더 그래프에서 사용할 수 있는 여러 개의 마스터 노드가 새로 추가되었습니다. HD Unlit 마스터 노드는 크로스 파이프라인 언릿이 액세스할 수 없었던 왜곡 또는 렌더링 패스 선택과 같은 전체 기능 세트에 액세스할 수 있게 해줍니다.
AxF 마스터 노드는 X-Rite AxF의 측정된 머티리얼 포맷을 지원합니다. AxF 머티리얼은 Unity 인더스트리 번들에 포함되어 제공되는 AxF 임포터와 함께 사용해야 합니다. AxF 임포터에는 AxF 머티리얼의 모든 설정이 자동으로 적용됩니다.
아티스트 친화적인 Kajiya Kay 기반 조명 모델에 기반한 새로운 Hair 마스터 노드 역시 사용 가능하며 더 나은 에너지 보존(energy conservation)과 더 많은 유연성을 제공하도록 개선되었습니다.

HDRP 및 셰이더 그래프

HDRP 전용 노드/동작이 새롭게 추가되었습니다. 이제 블러된 밉맵을 포함한 씬 컬러(Scene Color)를 샘플링하여 굴절 또는 왜곡을 대략적으로 시뮬레이션할 있습니다. 다만 컬러는 투명한 오브젝트에만 사용할 수 있습니다. 또한 Scene Depth 노드를 사용하면 로우(Raw), 선형(0과 1 사이) 또는 아이(Eye) 뎁스에 액세스할 수 있습니다. 릿(Lit) 마스터 노드에 DepthOffset 입력이 추가되어 뷰 벡터 방향으로 뎁스를 밀어넣거나 뺄 수 있습니다. 이 기능은 새로운 Parallax Occlusion Mapping 노드를 사용하여 광원으로부터의 섀도잉 효과를 얻으려 할 때 유용합니다.
또한 이제 모든 HDRP 마스터 노드는 베이크된 GI의 오버라이드를 지원합니다. 이 기능을 활성화하려면 Master Node 설정에서 Override Baked GI 체크박스를 선택합니다. 그러면 마스터 노드에 Baked GIBack Baked GI라는 두 가지 입력이 새롭게 추가됩니다. 이렇게 하면 간접 확산 조명과 투과(transmission) 각각에 자체적으로 베이크된 GI를 제공하거나 베이크된 GI 노드를 함께 사용하여 이를 수정할 수 있습니다. 베이크된 GI 프로퍼티의 기본값은 베이크된 GI 노드의 기본 출력과 같습니다.

조명 품질 및 컨트롤 개선

이번 릴리스에서 수많은 조명 기능들이 개선되었습니다. 과거에는 노출 범위와 정밀도의 제약 때문에 조명에 정확한 실제 월드/물리적 값을 사용할 수 없었습니다. 이제 조명 계산에 전노출(Pre-Exposure)이 사용됩니다. 다시 말해, 노출이 포스트 프로세싱 중에 프레임의 마지막 단계가 아닌, 조명 계산 자체에 적용되기 때문에 정밀도를 크게 개선하고 태양과 같은 광원에 대한 높은 빛 강도 값을 가질 수 있습니다. 또한 스카이 라이트, 이미시브 광원 및 기타 일부 광원은 이제 조명 차트에서 주로 레퍼런스 값으로 쓰이는 단위인 EV 대신에 EV100 단위를 사용합니다. 이러한 점이 2018.3과 가장 큰 차이점이기 때문에 프로젝트를 업그레이드하려면 빛 강도의 미세 조정이 필요할 수도 있습니다. 릿/언릿 셰이더와 릿/언릿 마스터 노드의 Emissive 프로퍼티가 개선되어 EV100 또는 Luminance 단위를 지원하며 Exposure Weight 컨트롤과 Emission 노드가 추가되었습니다. 이러한 컨트롤을 사용하면 정상적으로 노출된 경우에도 오브젝트에 블룸 효과를 주는 것이 가능합니다. 가령, 낮 시간 밝은 상태에서도 블룸 효과가 가능합니다.
사각 면 광원(rectangular area light)이 개선되어 쿠키 및 근사 영역 그림자를 지원합니다. 이 기능은 리소스 소모가 크므로 주로 고품질 모드나 시네마틱에 사용해야 합니다. 그리고 섀도우 마스크 지원이 추가되어 스페큘러 하이라이트를 유지하면서도 최상의 베이크된 소프트 섀도우 효과를 제공합니다.

반사 시스템 개선

이제 GPU가 반사 프로브를 베이크하게 되어 베이킹 시간이 단축되었습니다. 또한, 로드된 모든 반사 프로브를 조명 창에서 베이크할 수 있습니다. 반사 프로브가 조명 워크플로에 통합되어 반사 프로브 베이킹 프로세스가 간소화됩니다.

실시간 평면 반사 지원

실시간 평면 반사 지원이 추가되었습니다. 플레이백 과정에서 HDRP는 눈에 보이는 실시간 반사 및 평면 프로브만 렌더링합니다. 평면 및 반사 프로브는 이제 프레임 설정에 개별 컨트롤이 있으므로 실시간 또는 오프라인 렌더링을 모두 지원합니다.

HDRP에 포스트 프로세싱 기본 통합

2019.1에서는 포스트 프로세싱이 HDRP에 직접 통합되었으며 특별히 하이엔드 콘솔 및 데스크톱 플랫폼을 위한 성능과 품질을 고려해 만든 컴퓨트 셰이더 기반 포스트 프로세싱 효과의 커스텀 세트가 포함되었습니다. 이러한 새로운 포스트 프로세싱 툴 세트는 RT 핸들 시스템과 호환되며 다이내믹 해상도 기능을 지원합니다. 새로운 포스트 프로세싱 설정은 PPv2(포스트 프로세싱 스택 V2)와 호환되지 않기 때문에 2019.1로 업그레이드할 때는 모든 포스트 프로세싱을 다시 작성해야 합니다. 따라서 HDRP도 더 이상 PPv2를 지원하지 않습니다. FXAA, SMAA 및 TAA(Temporal Anti-Aliasing), 그리고 8비트 디더링 등의 포스트 프로세스 안티앨리어싱은 그레디언트를 부드럽게 하고 8비트 컬러 밴딩 현상을 제거하는 데 도움이 됩니다. 포스트 프로세스 안티앨리어싱은 카메라에서 직접 설정할 수 있습니다. 색 수차(Chromatic Aberration), 렌즈 왜곡(Lens Distortion) 및 비네트(Vignette)는 PPv2에서와 동일합니다. 필름 그레인(Film Grain)이 개선되어 절차적 노이즈 대신에 그레인 룩업 텍스처를 사용합니다. 또한 새로운 파니니 프로젝션(Panini Projection) 효과가 추가되었습니다.

파니니 프로젝션 효과 .

블룸은 이제 기노출된 값을 기반으로 임계값을 사용합니다. 따라서 특정 강도 값보다 높은 오브젝트 대신에 과잉 노출된 오브젝트만 블룸 효과가 적용됩니다. 컬러 그레이딩(Color Grading)은 PPv2의 “HDR 그레이딩” 모드가 개선된 버전입니다. 과거에는 하나의 커다란 컬러 그레이딩 패널이었던 것이 이제는 별도의 볼륨 컴포넌트로 분리되어 인스펙터의 복잡도를 줄였습니다. 뎁스오브필드(Depth of Field, 피사계심도)는 대폭 개선되었습니다. 이제 파라미터 애퍼처 셰이프 컨트롤을 제공하여 블레이드의 수와 곡률(curvature), 배럴 클리핑(barrel clipping), 아나모피즘(anamorphism)을 쉽게 구성할 수 있습니다. 이 효과는 이제 해상도와 무관합니다. 모션 블러(Motion Blur) 또한 품질과 성능 향상을 위해 재작업했습니다. 여기에는 새로운 알고리즘 수정 사항이 포함되어 아티펙트를 줄이는 동시에 보다 정밀하면서도 넓은 블러가 가능합니다.

비주얼 이펙트 그래프 개선

2019.1에서는 이제 HDRP의 뎁스 및 노멀 버퍼에 액세스할 수 있습니다. 비주얼 이펙트는 이제 메인 카메라에 대한 뎁스 또는 컬러와 같은 내부 HDRP 렌더링 버퍼에 액세스할 수 있고, 이를 시뮬레이션 패스(simulation pass) 과정에서 입력 텍스처로 사용할 수 있습니다. 따라서 파티클이 있는 씬 모핑과 뎁스 버퍼 충돌과 같은 기능을 쉽게 설정할 수 있습니다.

비주얼 이펙트 그래프(프리뷰)

영화 제작 분야 최고의 VFX 툴에서 아이디어를 얻어 완성된 비주얼 이펙트 그래프는 간편하고 유연한 노드 기반 시스템으로 게임과 기타 크리에이티브 콘텐츠를 위한 아름다운 효과를 신속하게 구현할 수 있습니다. 2019.1에는 몇 가지 개선과 새로운 기능이 추가되었으며 차세대 시각 효과를 만드는 데 도움이 되는 다양한 샘플도 포함되었습니다. 새로운 프리워밍(Prewarming) 기능을 사용하면 일정 시점까지 일부 효과를 사전 시뮬레이션할 수 있습니다. 이 기능은 완전히 개발된 상태로, 시간이 지나면서 커지는 연기 기둥과 같은 효과를 만드는 데 사용할 수 있습니다. 또한 라이트 프로브와 라이트 프로브 프록시 볼륨도 업데이트되었습니다. 노이즈 함수는 펄린(밸류 및 셀룰러 노이즈와 컬 배리에이션)을 통해 개선되었습니다. 이제 생성 시간과 생성 횟수 연산자를 사용하면 이전 프레임에서 생성된 파티클이 몇 개인지 즉시 셀 수 있습니다.

Vulkan용 네이티브 렌더링 플러그인 지원

이제 Vulkan에 대해 네이티브 렌더링 플러그인이 지원됩니다. 자세한 내용은 기술 자료예시를 참조하세요.

GPU 라이트매퍼(프리뷰)

이제 GPU 라이트매퍼에 적용되는 추가 기능 및 플랫폼 지원이 프리뷰로 제공됩니다. 이 기능을 macOS 및 Linux에서 사용할 수 있으며, 머티리얼의 양면 GI 플래그뿐 아니라 메시에서 그림자 드리우기 및 그림자 받기도 지원됩니다.

이 씬은 GPU 라이트매퍼를 사용하여 베이크되었습니다(에셋 제공: ArchVizPRO).

GPU 라이트매퍼는 이제 고성능의 전용 GPU를 사용하기 위해  기본 설정으로 에디터와 동일한 GPU가 사용됩니다. 물론 커맨드 라인을 사용하여 다른 GPU로 변경할 수도 있습니다. 자세한 내용은 기술 자료를 참조하세요.

Optix AI Denoiser에 대한 지원 추가

Optix AI Denoiser는 경로 추적 이미지 라이브러리에서 훈련된 딥러닝 기반 디노이저(Denoiser)입니다. 특히 필터링 옵션에 그치지 않고 성능을 크게 개선했습니다. 특히 샘플 수가 적은 경우 더 두드러지며, 누수(leaking)와 블러링(blurring)에 대한 복원력이 뛰어납니다. 필터와 함께 사용하면 훨씬 더 부드러운 라이트맵을 구현할 수 있습니다. 새로운 디노이저를 사용하면 샘플 수를 현저히 줄일 수 있기 때문에 기존보다 베이크 속도를 크게 높일 수 있습니다. 현재는 호환되는 Nvidia GPU와 함께 Windows에서만 사용할 수 있습니다.

환경의 중요도 기반 멀티 샘플링(MIS 환경)

MIS 환경은 큐브맵/HDRI에서 가장 중요한 영역을 샘플링하는 새로운 샘플링 방법입니다. 이 샘플링 기법은 많은 GI 광선을 반구에 쏘지 않고 중요한 영역(예: 태양과 같은 밝은 지점)에 광선의 초점을 맞춥니다. 이 기능을 사용하면 매우 불균일한 측정 HDRI 환경 맵이 적용된 씬을 베이크할 수 있습니다. 그리고 조명 창에 새로운 환경 샘플 파라미터가 추가되어 이 값은 직접 환경 속으로 추적되는 라이트맵 텍셀 당 광선의 수를 제어합니다.

기타 조명 개선

이제 라이트 프로브 기즈모는 노출 보정의 영향을 받습니다. 따라서 HDRP와 고강도 조명을 사용할 때 라이트 프로브에서 반복 작업을 보다 쉽게 할 수 있습니다.
새로운 Limit Lightmap Count 파라미터를 사용하면 특정 오브젝트 그룹에 대해 생성되는 최대 라이트맵 수를 지정할 수 있습니다. 이러한 기능은 리소스가 한정된 모바일 플랫폼용 게임을 제작할 때 특히 유용합니다. Realtime GIAsync Readback을 사용하면 CPU가 GPU 리드백(되읽기)를 기다릴 필요가 없습니다. 이를 통해 성능을 높이고 CPU 스파이크를 줄일 수 있습니다. 새로운 씬에서 Auto Generate는 기본 설정되어 있지 않으며, 하단 상태 표시줄에 링크를 추가하여 현재 Auto Generate 모드인지 여부를 보여줍니다.

LookDev 제거

에셋 확인을 위한 실험 기능이었던 LookDev가 삭제되었습니다. 이 기능은 개선 후 올해 후반에 SRP(LWRP 및 HDRP 지원 포함)용으로 다시 추가될 계획입니다.

에디터에서의 비동기 셰이더 컴파일 작업

Unity 에디터는 셰이더 컴파일을 바로 시작하지 않고, 렌더링에 특정 셰이더 배리언트가 처음으로 필요할 때까지 대기합니다. 하지만 이로 인해 셰이더 컴파일러 라운드트립에 상당한 시간이 소요될 수 있기 때문에 에디터가 멈출 수도 있습니다. 새로운 비동기 셰이더 컴파일 기능은 렌더링에서 컴파일을 분리하여 멈출 수 있는 문제를 방지하고, 컴파일이 완료될 때까지 일반 시안색의 더미 셰이더를 대신 사용합니다. 이는 에디터 전용 기능이며 게임에는 영향을 주지 않고 컴파일 속도만 높여줍니다.

하이 인플루언스 스킨 가중치

이제 스킨드 메시 렌더러용 API에서 최대 255개, 버텍스당 32개의 뼈대 인플루언스(Bone Influence)를 사용할 수 있습니다. 이렇게 하면 런타임에 스킨 가중치의 정확도를 외부 프로그램의 소스 콘텐츠에 맞게 유지할 수 있습니다. 이 기능은 입꼬리와 눈과 같이 고도의 디테일 영역에 뼈대 인플루언스가 5개 이상 필요한 본 기반(bone-based) 페이스 리깅(face-rigging)에 특히 유용합니다. 또한 부드럽게 변형되는 스키닝 분해를 사용하는 릭의 품질도 높아지므로 뼈대 수를 줄여도 더 부드러운 결과를 구현할 수 있습니다.

DCC

Sketchup 임포터 개선

이제 Sketchup 임포터(Sketchup Importer)의 UI가 업데이트되었습니다. 또한 Sketchup에서 사용 가능한 모든 카메라 유형(직교(orthographic), 원근(perspective) 및 2포인트)에 대해 카메라 임포트 지원을 추가했습니다. 마지막으로 모델 임포터의 머티리얼 탭 UI 성능이 향상되었습니다.

시네마틱

타임라인

시그널 및 마커

타임라인 시그널을 이용하면 타임라인이 씬의 오브젝트와 간편하게 상호작용할 수 있습니다. 시그널 이미터와 시그널 에셋을 사용하면 타임라인에 대해 사전 설정된 리액션 세트(Unity 이벤트)를 정의하는 시그널 리시버를 트리거할 수 있습니다. 시그널 이미터는 타임라인이 특정 시점을 지날 때 씬의 상태 변화를 트리거하는 데 사용됩니다. “이벤트” 대신에 “시그널”이라는 용어를 선택한 이유는 “시그널”이 “방송”이라는 개념을 뒷받침할 뿐만 아니라 기존의 Unity 이벤트 및 애니메이션 이벤트와의 혼동을 피할 수 있기 때문입니다. 또한 특정 동작이 적용된 커스텀 키프레임을 만드는 데 관심이 있는 사용자를 위해 “마커”를 도입했습니다. 마커를 사용하면 선택, 복사하여 붙이기, 모드 편집 등 클립과 동일한 방식으로 타임라인에서 오브젝트를 추가 및 조작할 수 있습니다. 마커에는 또한 애니메이션 클립, 활성화 클립, 컨트롤 클립 등과 같은 특수 기능이 있습니다. 이 포럼을 보시면 커스텀 마커를 만드는 방법을 배울 수 있습니다.

타임라인 오디오 개선

타임라인의 다양한 오디오 기능이 개선되었습니다. 예를 들면 타임라인 편집 작업을 하면서 개별 오디오 트랙에 대한 키를 제어/설정할 수 있습니다. 또한 이제 트랙마다 볼륨 및 팬 애니메이션뿐만 아니라 트랙에 심플 볼륨과 팬 컨트롤도 제공됩니다.

비디오

비디오 H.265 지원

이번 릴리스는 H.265 비디오 코덱을 지원합니다. 따라서 H.265 영화를 재생할 수 있고, 지원되는 다른 비디오 포맷을 H.265 코덱 포맷으로 변환할 수 있습니다. HEVC(High Efficiency Video Coding)라고 하는 H.265는 Advanced Video Coding(H.264) 이후의 비디오 압축 표준입니다. 비트 전송률이 동일할 때 H.264에 비해 H.265가 보다 나은 품질을 제공합니다.

동영상 레코더/플레이어에서 SRP 완벽 지원

이제 동영상 플레이어와 동영상 레코더에서 SRP가 완벽하게 지원됩니다. 따라서 HDRP 또는 LWRP를 통해 렌더링할 때 비디오 플레이어에서 동영상을 재생할 수 있습니다. 그리고 SRP를 사용할 때 비디오 레코더가 카메라의 입력을 처리하도록 업데이트되었습니다. 비디오 플레이어에 SRP 지원을 추가하는 과정에서 카메라 렌더 모드(근접/원거리 평면)에 영향을 주는 몇 가지 주요 버그를 해결하고 360 비디오(스테레오) 지원도 해결했습니다.

월드 구축

씬 가시성 툴

Unity SceneVis 컨트롤을 사용하면 게임 내에서 오브젝트의 가시성을 변경하지 않고도 씬 뷰에서 오브젝트를 빠르게 숨기고 표시할 수 있습니다. 씬이 더 디테일해지는 경우 특정 오브젝트를 임시로 숨겨야 할 때가 종종 있습니다. 이때 새로운 Isolate 모드를 사용하면 확인 및 편집을 위한 시야를 더 많이 확보할 수 있습니다. SceneVis는 계층 툴, 키보드 단축키 및 효과를 빠르게 활성화 또는 비활성화할 수 있는 툴바 토글을 통해 이 기능을 활성화합니다. 여기에서 자세한 내용을 확인하실 수 있습니다.

2D

스프라이트 셰이프 개선

2D 월드 구축 기능 개선

스프라이트 셰이프(Sprite Shape) 패키지가 여러 측면에서 개선되었습니다. 가령, 스프라이트 셰이프의 최종 2D 콜라이더를 스프라이트의 시각적 표현과 더 가까운 셰이프로 만들 수 있기 때문에 스프라이트 셰이프 렌더러에 더 잘 맞는 폴리곤과 에지 콜라이더를 추가할 수 있습니다. 또한 셰이프 컨트롤 포인트에 대해 미러링되지 않는(non-mirrored) 연속 탄젠트가 추가되었기 때문에 커브드 셰이프를 만들어 원하는 형태를 보다 정밀하게 구현할 수 있습니다.

2D 애니메이션 개선

새로운 2D 애니메이션 패키지(v2.1, 패키지 관리자를 통해 액세스)를 사용하면 에디터에서 스프라이트를 스키닝할 때와 런타임에서도 성능 향상을 느낄 수 있는데 이는 패키지가 C# 잡 시스템 및 버스트 컴파일러를 사용하여 빌드되었기 때문입니다. 이번 업데이트에는 이 툴을 사용하여 애니메이션된 캐릭터가 화면에 여러 개 있는 경우의 성능도 개선하였습니다. 참고: 이 버전은 이전의 2018.3과 호환되지 않습니다. Unity 2018.3을 사용하는 프로젝트의 경우에는 기존의 2D 애니메이션 패키지 v2.0을 사용하시기 바랍니다.

2D 물리

이제 모든 2D 물리 쿼리 시, 스토리지가 필요했던 예전과 달리 결과 .Net “List<T>”로 버퍼를 제공할 수 있습니다. 이는 리스트의 용량이 쿼리 결과를 포함할 만큼 충분한 경우 메모리가 할당되지 않는다는 점에서 스토리지와 동일한 장점을 갖습니다. 또한 리스트 용량이 관련 메모리 할당과 함께 자동으로 증가하기 때문에 필요한 메모리만 할당하면서 모든 쿼리 결과를 포함할 수 있다는 장점도 있습니다. 동일한 리스트를 재사용하면 할당은 최소한도로 유지되고 최종적으로는 더 이상의 할당이 발생하지 않게 됩니다.

2018.4 LTS – 곧 출시 예정

Unity 릴리스는 TECH 스트림과 LTS(Long-Term Support, 장기 지원) 스트림으로 구성됩니다. 모든 최신 기능이 포함된 TECH 스트림의 주요 릴리스는 1년에 3번 이루어집니다. 올해의 TECH 스트림은 2019.1, 2019.2 및 2019.3 버전으로 구성되며 버전별로 새로운 기능과 특징이 추가됩니다.
2018.x TECH 스트림 사이클의 마지막 버전이었던 2018.3은 이번 릴리스를 통해 새로운 버전 번호(2018.4)가 적용된 LTS 스트림으로 편입됩니다. 이는 2년 지원 일정이 시작되는 시점을 나타냅니다. TECH 스트림과 달리 LTS 스트림에는 새로운 기능, API 변경 또는 개선 사항이 없습니다. 하지만 대다수 커뮤니티나 콘솔 SDK/XDK에 영향을 주는 크래시, 성능 저하 및 이슈 또는 상당수 개발자의 게임 출시에 지장을 주는 중대한 문제를 해결할 것입니다. 버그 픽스가 적용된 TECH 스트림은 매주 릴리스되고, 버그 픽스가 적용된 LTS 스트림은 격주로 릴리스됩니다. LTS 스트림은 게임/콘텐츠를 계속해서 개발 및 출시하고 안정적인 버전을 장기간 사용하고자 하는 사용자에게 적합합니다 반면 TECH 스트림은 최신 기능을 사용하고 최신 Unity 기능에 액세스하기 원하는 개발자들을 위한 것입니다.

2019.2 알파 – 새로운 기능 체험 기회

먼저 2019.1의 완성과 출시를 돕기 위해 2019.1의 모든 새로운 기능을 사용하고 유용한 피드백을 주신 베타 커뮤니티에 감사의 말씀을 드립니다. 아직 베타 테스터가 아니라면 참여해 보세요. 최신 기능을 먼저 사용해 볼 수 있을 뿐 아니라 내 프로젝트가 새 버전과 호환되는지 확인해 볼 수도 있습니다. Unity의 성공에 기여하고 싶다면 포럼 또는 직접 참여를 통해 당사의 R&D 팀에 피드백을 제공해 주시기 바랍니다. 또한 Unity 이벤트에 초대되는 분들에게 특별한 선물도 드리고 있습니다. 먼저 최신 알파 또는 베타를 다운로드하고 유능한 베타 테스터가 되는 방법에 관한 가이드를 살펴보세요. 베타 뉴스와 업데이트, 유용한 팁을 이메일로 받아보려면 여기에서 가입하시기 바랍니다.

릴리스 노트

이번 릴리스에는 여기에서 하나하나 모두 언급하기 힘들 정도로 많은 새로운 기능과 개선된 기능(약 300개)이 포함되어 있습니다. 새로운 기능과 개선 사항, 수정의 전체 목록은 릴리스 노트에서 확인하실 수 있습니다.

83 코멘트

코멘트 구독

코멘트를 달 수 없습니다.

  1. Hi.
    Does the Unity support ARM64, Linux OS?
    If no, do you have plan to support it?

  2. Broken link on Megacity download link?

  3. A great new for those who like to build games.

  4. Where is this article in English; this is the Chinese version or maybe Korean…

  5. Emmanuel Hansen

    5월 10, 2019 9:57 오전

    Is it just me, or are the releases notes in Korean?

  6. christal gary

    5월 6, 2019 5:58 오전

    Unity2019.1 package manager’s install button is too small! I guess i download it at April Fool’s Day.

  7. After months of working on a project to access a working version, we are given the option to either keep the old 2018 forever like a software museum, or to remake the entire project from scratch to support 2019. Why? Why deprecate features after every update. Something as basic as opening a project from one version prior completely destroys the project. If you make any larger projects, you are forced to stagnate or start over after every basic upgrade. Zero backwards compatibility makes Unity an untenable tool for production. We simply cannot start over after every upgrade or keep the old version forever to make a 2 year project keep working.

    ——————————————
    Editor: https://www.mangazuki.online

  8. Kinematica?? Where?
    I’m waiting for the Kinematica! <3

  9. Also, why have an Upgrade project button? It’s like a cruel joke.
    And yes, I’ve tried the migration guide.

  10. Seriously, why do you guys keep doing this? Add amazing new features, but completely break projects from as little as one generation before? A simple HDRP project with one sphere and one LayeredLit material cannot be loaded from 2018 to 2019!? Materials come in black, json file states corrupted, cinemachine animations gone, intersecting objects automatically removed. Hours of lookdev for materials, animating, camera work, postprocesing, all in the garbage if we want to upgrade!? It’s almost like you have zero consideration or respect for the people who use your product. If Autodesk upgraded Maya and told production companies that all their projects will not open in the new version, there would be a riot. I would rather discard all of these great new features for a more stable upgrade option from another company if means keep months of work intact. The cost of starting over or losing features is not acceptable to us. Please do something about this since it seems that your devs only care about adding features not keeping basic production critical support between versions.

  11. Why is every update not backwards compatible? After months of working on a project to access a working version, we are given the option to either keep the old 2018 forever like a software museum, or to remake the entire project from scratch to support 2019. Why? Why deprecate features after every update. Something as basic as opening a project from one version prior completely destroys the project. If you make any larger projects, you are forced to stagnate or start over after every basic upgrade. Zero backwards compatibility makes Unity an untenable tool for production. We simply cannot start over after every upgrade or keep the old version forever to make a 2 year project keep working. I am looking elsewhere since the Microsoft, add a feature take a feature upgrade scheme is ridiculous in the real world.

  12. Would really appreciate if you guys simply made Hub optional and not compulsory. Seems backward that you would go from integrated to 2 separate applications, with Unity 2019 editor not able to Open or create any new projects while in the editor without Hub and the random failure of hub to even open projects it created. Trying to open projects directly just opens hub. Other than “HUB” , Unity 2019 is a quite a good release anyway (When HUB decides to work)

  13. Unity 2019 is here yes.

  14. Why is there a flash when you press play and stop play (see video ) ?

    https://www.youtube.com/watch?v=-JZNTZQ6T6s

  15. Fresh project using 2019.1, it doesn’t seem like selecting the camera shows any post processing option in the inspector?

  16. did the editor camera movement changed (in the scene view) it feels weird, and can i turn it off / how can i turn it off ?

  17. Editor Console “Improvements” don’t select the object in the hierarchy that made the call. That’s weird.

    1. You can use Debug.Log(object message, Object context) and put this.gameObject in context

  18. why there is still old text component? while we have textmesh pro?
    unity wants users to be confused?

    1. There’s a very big disadvantage of using TextMesh Pro instead of regular Text, that is multiple language support

      with TMP you need to create a very big fontmap to contain all the characters while with regular text you only need to make sure the supplied font file support all the languages

      1. With TextMesh Pro you have more control and flexibility on how you want to package your fonts for you project, whether they’re static or dynamic.

  19. what about Audio and Sounds?
    there was no effective difference between audio in unity 2017 and 2018. and still there is no Effective change in 2019. looks like unity forget about sounds. improvements like
    using a few audio sources on single game object with different positions(just like colliders).
    getting rid of only-Spherical sound range.
    etc…

  20. “UI Elements […] will replace uGUI for creating runtime UI in future releases”: is there more info about this? Will it be a completely separate system from uGUI?

    1. UI Elements is a completely different UI system. For now it only supports editor extensions but expect some announcements soon regarding runtime support. You can follow the development of UI Elements on the forums: https://forum.unity.com/forums/ui-systems-previews.178/

  21. Christopher Denizard

    4월 19, 2019 2:26 오전

    It is really good to see you effort to bring Unity officially to Linux! Many developers use Linux today and I believe it will consolidate Unity. Thanks very much, please, continue to be at Linux world, we need you there. Thanks a lot for that!

  22. OMG NOW We can use Shader Graph and LWRP in VR. ᕕ( ᐛ )ᕗ

  23. Testing out subscence (ECS) script. Basically, I setup my project similar to Megacity (much smaller scale with less subsences). When I run it inside the Editor, I stay above 60+fps always. But when running it as standalone build, the game is capped at 46fps. I used FPSCounter.cs (Unity standard asset) to display the fps display. Just wondering is there anything I need to do in Player Setting before making the build?

  24. expérimental review
    Please focus road map on workflow

  25. Hello
    In this version, has changed scripting language of the ‘Project Tiny’ from Typescript to C#?

    1. Hello Julia,
      Not yet but soon. See the update I posted on the forum
      https://forum.unity.com/threads/c-update-for-project-tiny.643000/
      JC

  26. Since Unity Hub now is now only available option to get and run editor how do one should pass environment variables to editor since you don’t have control over it inside Hub and forum post about including modifying command line options still unanswered from year 2018?

  27. There is any news about supporting Webgl in Mobile ? Tiny 3D… ?

    1. Hi Albert,
      Please follow the Project Tiny forum for roadmap & updates:
      https://forum.unity.com/forums/project-tiny.151/
      JC

  28. “You can now also enter Play mode without Domain Reload from the Editor” – wait what? Can’t find anything about this in the release notes, but sounds amazing. So play mode can be a lot faster now?

    1. That feature is not actually in 2019.1 but still in active development. I’ve removed that bit from the blog post. Sorry for the inconvenience.

  29. Is there any improvement for terrian system in 2019.1 and can you reference me any video to help me understand how to do raycasting with dots.

    1. Charles Beauchemin

      4월 17, 2019 3:15 오후

      you can check this video from our GDC presentation: https://www.youtube.com/watch?v=qUk2islpbLI

  30. Great release!
    The ScriptableObject link should go to #reloading not #reloading-of btw

    1. Thanks for pointing that out! Should be fixed now.

  31. Unity Hub: Error! Download file is corrupted. I can’t download it using Unity Hub. Sometimes when the download is near of 100% an error occurred and I have to start the download from zero again. This is so frustrating. There are any other alternative, please?

    1. Charles Beauchemin

      4월 17, 2019 3:14 오후

      you can try the Download Assistant, with the link provided on this page: https://unity3d.com/unity/whats-new/2019.1.0

  32. immeasurability

    4월 17, 2019 1:24 오전

    Where Shader Graph in standart render?
    Where NeoFur shader? (2016)
    Where Curved UI? (2017)
    What of all this is in the standard unit 2019? not out box!
    Where procedure sky in HDRP?
    How use Multiple cameras with UI in HDRP and LRP? (Base Camera(Depth=0), UI Camera(Depth=1))
    Why it is impossible to edit by default several selected scripts, without the extension of the editor script?
    Why, starting from 2018, the editor opens a few minutes with an empty project?
    Why contact array in Rigibody2D by one collider, have 2 or more hits, but return only 1?
    Where joint in new rigidbody?
    How merge new Physics and old?
    Where Wheel angle rotation on wheelColliders?
    What are all these new things for, if they cannot be used together, but only for different tasks?
    How reimport self shader to HDRP,LRP?
    Wher fix for limit rigidbody rotation?

    thist real need -> WHERE 8-16 Bones by skinned mesh in 2019 years? this real need, for one model of base hero charter, not for all units!

    We need Shader Graph in standart render, in HDRP-LRP many problems yet…

    Good job, but not for mas use(

    1. Charles Beauchemin

      4월 17, 2019 1:45 오전

      please refer to this page for Unity Roadmap https://unity3d.com/unity/roadmap

  33. Nice work Unity team!

  34. This version have Dark Theme in personal edition?

    1. I also wonder if the dark theme is ever going to come to the personal edition. 25000 votes made this feature the most requested feature before they took down the entire feature request website. The free light theme introduces some massive eye strain for me and many, many others. Why do they lock away an already available feature, a feature that all other software provides for free?

  35. Where is the Package Manager located? It is not under the Windows Tab!

    1. Charles Beauchemin

      4월 16, 2019 10:11 오후

      There is a known issue that the Package Manager will not appear if you have compilation errors in your console. Close Unity and restart it to have it appear again.

  36. Where is the package manager now? It is not under the Windows Tab.

  37. Having some issues upgrading. Most of them I could resolve by just removing the Library folder and upgrading packages. Now I only have a file in the textmesh pro stuff that doesn’t compile (that I didn’t write myself). I can’t uninstall that since my project uses this a lot.

    Going to wait a while before I try to upgrade again.

    Did I hear “submit a bug report”? Yes, but it is such a shaky experience overall upgrading Unity with the installed packages all going crazy so I feel like there is a huge non-existing testing phase that need to take place on the Unity side before even considering releasing this.
    All of these features look great btw, it is such a shame that an upgrade from 2018.3 (latest) is a pain

    1. Charles Beauchemin

      4월 16, 2019 10:14 오후

      Did you try “Reset Packages to defaults” option? Then you can add again the packages you needed.

      1. No, I didn’t try that. Thanks for the help. Sorry also about my rather depressing comment, I am actually excited about this release.

  38. When will you add native support for Consulo IDE?
    And why do you support premium Rider, but not free Consulo?

    1. Mist Walrumder

      4월 17, 2019 5:23 오전

      That’s because unity charges companies like jetbrains starting at 10,000,000 per year for inclusion. If they can’t pay one year or are open source or free and can’t afford integration they won’t include it. It’s part of their business model. That’s also why you see things like Vuforia and special Samsung integration options – it’s all about taking money from all sides for them

      1. Lots of lies here, probably unintentional. I’m all for calling out obvious money deals (Samsung + Adaptive Perf) but Unity doesn’t do anything special to support Rider.

        JetBrains writes and maintains its own open-source plugin to interact with Unity. https://github.com/JetBrains/resharper-unity

        Also, Visual Studio Code is a different free IDE that works with Unity. (VS Code should not to be confused with VS Windows or Xamarin/”VS for Mac”)

        JetBrains may certainly be paying Unity to get extra support for developing their plugin faster, but its not a requirement.

  39. Ippokratis Bournellis

    4월 16, 2019 8:57 오후

    This release might prove pretty significant.
    For me personally, each feature that is labeled production-ready deserves my time and efforts, seeing LWRP, Shader Graph, DOTS finally coming out of preview makes me very optimistic.
    Every feature is significant (for example everything Editor-related is what you deal with day to day) but DOTS might make the difference.
    I am very happy that Joachim and his team persisted and delivered.
    Congrats.

  40. Some amazing changes for sure! What is I don’t understand is what the “Animation Rigging” is about? I don’t understand what it is supposed to do, what problem it should solve? Animations, IK and blending are nothing new, what does it change? It can visualize a rig? It can rig at runtime? Sorry, but it’s just very unclear to me and I don’t even understand the meaning of the name. “Animation Rigging” that a rig can be animated is nothing new, neither the name or description seem to make sense to me. The video doesn’t explain anything and just shows some animations.

  41. Ippokratis Bournellis

    4월 16, 2019 8:24 오후

    Congratulations – so many features are, at last, out of beta !!!
    This is one of the most significant releases I have seen so far – at last, most parts of the new rendering pipeline AND the DOTS are not in preview anymore.
    I am much more optimist now regarding the time I have invested in learning Unity than I was 24 hours ago.

    1. Note that only Burst is out of preview. Unity.Entities (ECS) is still in preview.

  42. Yay for the Linux editor making its jump into Preview! That’s great news.

  43. I’m impressed by the amount of awesomeness in this release. So many promising looking new features and improvements. Congratulations!

  44. immeasurability

    4월 16, 2019 7:19 오후

    Where Shader Graph in standart render?
    Where NeoFur shader? – https://www.youtube.com/watch?v=bl61E2j_q-U (2016)
    Where Curved UI? – https://www.youtube.com/watch?v=MISGNXYWcrQ (2017)
    What of all this is in the standard unit 2019? not out box!
    Where procedure sky in HDRP?
    How use Multiple cameras with UI in HDRP and LRP? (Base Camera(Depth=0), UI Camera(Depth=1))
    Why it is impossible to edit by default several selected scripts, without the extension of the editor script?
    Why, starting from 2018, the editor opens a few minutes with an empty project?
    Why contact array in Rigibody2D by one collider, have 2 or more hits, but return only 1?
    Where joint in new rigidbody?
    How merge new Physics and old?
    Where Wheel angle rotation on wheelColliders?
    What are all these new things for, if they cannot be used together, but only for different tasks?
    How reimport self shader to HDRP,LRP?
    Wher fix for limit rigidbody rotation?

    thist real need -> WHERE 8-16 Bones by skinned mesh in 2019 years? this real need, for one model of base hero charter, not for all units!

    We need Shader Graph in standart render, in HDRP-LRP many problems yet…

    Good job, but not for mas use(

  45. bhavin shankarbhai machhi

    4월 16, 2019 6:45 오후

    Where is visual scripting???

    1. Charles Beauchemin

      4월 16, 2019 7:22 오후

      Visual Scripting got moved to 2020.1 and will support DOTS.
      See more here: https://forum.unity.com/threads/unity3d-getting-visual-scripting-in-2019-2.577084/page-2#post-4146832

  46. When the extensibility of HDRP PPv3 will be implemented? This is crusial thing, without it you basicly can not try out 2019.x versions for your existing projects.

    1. Really impressive release, thanks! Love the GI additions, where are they leading? Can I have some more quality information about the GI improvements and how I can utilise them / plans Unity has? Thanks again!

      1. Jesper Mortensen

        4월 17, 2019 9:56 오전

        We are pushing hard on making lightmapping simple and efficient. After all we have a lot of mobile projects where this workflow is crucial. More clever sampling (like MIS), hardware utilization for performance and denoising are going to receive attention. Usability is also key, and there we are looking into improving lightmap packing and simplifying how pathtracing is set up. Also, a lot of focus is going into making light probes much more a key player in lighting. Finally, scalability and performance will be focussed upon. Have a look at the 19.2 beta that is going out soon for more details. And the Global Illumination forum is a good place for these discussions: https://forum.unity.com/forums/global-illumination.85/.

  47. Does the unnecessary dependencies of LWRP removed? Because it is bound to the Physics, AR and VR packages, bloating my webgl build sizes

    1. Charles Beauchemin

      4월 16, 2019 6:50 오후

      Physics is needed for volume blending in Postprocessing. We will be looking at making the dependencies lighter in a future release of the package.

      1. Looks like the Scriptable Render Pipeline is the same poorly implemented library before and breaks any project it is added to unless we manually go and hand update every shader – even in your own companies examples. It creates a fractured ecosystem and there is no technical reason it can’t let us use the existing shaders on top of it – it is just another half measure implementation that needs to get scrapped for a more intuitive solution. I too wish you guys would try harder sometimes, I wish I could get by in life with half finished projects kicked out for release :D

  48. Alejandro Castan

    4월 16, 2019 3:53 오후

    Great Job Unity !!!
    Sorry for my ignorance but I am interested in learning with the Megacity demo for mobile by Nordeus. Since I saw a link to donwload it but it seems the Megacity demo done for Unity (with HDRP and DOTS) and not the Nordeus demo, for it, Could I get the Megacity demo done with LWRP an DOTS? Would it be possible? Thanks for giving us more tools for the developers !!!

    1. Thanks, Alejandro,
      Nordeus helped to bring it to LW and Mobile, we used it for the Adaptive Performance Demo and it can find the download link in the blog post: https://blogs.unity3d.com/2019/04/01/higher-fidelity-and-smoother-frame-rates-with-adaptive-performance/

  49. All new features are very exciting! And thank you for returning an ability edit prefabs in Project out of scene :) Very appreciate!

  50. That is a lot of preview/experimental features but some good stuff too like “the performance of code generated by IL2CPP has been improved by up to 20%.”.
    Will this speed boost make it into 2018.4 LTS?

    1. Charles Beauchemin

      4월 16, 2019 3:22 오후

      some improvements will be backported to 2018.4, but some of those are the results of systems being refactored or re-written and this can’t be brought back to 2018.4

  51. Updated UnityHub to 1.6.1 and the 2019.1 is on Beta Release…is it correct?

    1. Charles Beauchemin

      4월 16, 2019 2:42 오후

      It should now appear in the Official Release section in the Hub. If not, you can quit and restart the Hub to update its list.

      1. thanks Charles, its on the right section now

  52. Why is it still in the beta releases section on Unity Hub?

    1. Charles Beauchemin

      4월 16, 2019 2:27 오후

      Hi SmileySpidey, thanks for reporting this. We will be fixing it in the next hour.

      1. Is this the same as the RC release? I installed the f1 RC and in beta’s I’m only seeing f2? Or is f2 the release version?

        1. Charles Beauchemin

          4월 16, 2019 2:41 오후

          2019.1.0f2 is the final release version. It should now appear in the Official Release section in the Hub. If not, you can quit and restart the Hub to update its list.