DOTS의 성능 향상 효과를 최대한 끌어내기 위해서는 JobSystem + Brust 컴파일러 조합을 사용해야 한다. 그런데 이 조합 하에서는 UnityEngine.Vector3 같은 Vector 타입이나 기존 수학 API를 사용할 수 없다. Unity.Mathematics라는 새로운 수학 라이브러리를 사용해야 한다. 유니티에서 제공하는 모든 ECS 데모 프로젝트에서 이 라이브러리를 사용 중이라고 한다.
유니티 에디터의 패키지 매니저(Package Manager)에서 Mathematics를 설치(Install)하면 해당 라이브러리를 사용할 수 있다.
라이브러리를 설치한 뒤, 아래와 같이 C# using 지시문을 사용해서 라이브러리가 제공하는 타입이나 함수를 사용하면 된다.
using static Unity.Mathematics.math;
namespace MyNamespace
{
using Unity.Mathematics;
...
var v1 = float3(1,2,3);
var v2 = float3(4,5,6);
v1 = normalize(v1);
v2 = normalize(v2);
var v3 = dot(v1, v2);
...
}
Unity.Mathematics 라이브러리는 병렬 프로그래밍에 능숙한 그래픽스 프로그래머들에게 보다 친숙한 형태의 수학 API를 제공하려는 목적에서 만들어졌다고 한다. 위 예제의 float4, float3 같은 타입은 HLSL이나 GLSL 같은 쉐이더 언어에서 사용하는 타입 이름과 같다. normalize 함수 또한 마찬가지다.
라이브러리 소스가 공개돼 있는데 아래 Github 링크를 통해 얻을 수 있다. DOTS의 하위 프로젝트들이 대부분 그렇듯이 아직 개발 진행 중인 프로젝트로 PR(Pull Request)을 보낼 수 없다.
https://github.com/Unity-Technologies/Unity.Mathematics
Unity.Mathematics 라이브러리에 대한 최신 소식은 아래 유니티 포럼의 아래 포스트에서 확인할 수 있다.
https://forum.unity.com/threads/unity-mathematics-available-on-github.526100/
끝.
'개발 > Unity' 카테고리의 다른 글
[Unity DOTS] 공식 샘플 프로젝트 완전 분석 1편 (7) | 2020.05.20 |
---|---|
[Unity] 콘솔 창 Error Pause 옵션 (408) | 2020.03.23 |
[Unity][DOTS] System에서 Entity 데이터에 접근하는 다양한 방법 (2) | 2019.10.24 |
[Unity][DOTS] ECS System에서 기존(Non-ECS) Component 제어하기 (0) | 2019.09.17 |
[Unity] NGUI + Spine 연동 (2) | 2019.08.30 |
댓글