본문 바로가기
개발/Unity

[Unity][DOTS] Unity.Mathematics 라이브러리 사용하기

by 가리봉맨 2020. 1. 28.
반응형

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-Technologies/Unity.Mathematics

The C# math library used in Unity providing vector types and math functions with a shader like syntax - Unity-Technologies/Unity.Mathematics

github.com

 

Unity.Mathematics 라이브러리에 대한 최신 소식은 아래 유니티 포럼의 아래 포스트에서 확인할 수 있다. 

https://forum.unity.com/threads/unity-mathematics-available-on-github.526100/

 

Unity.Mathematics available on github

Hello, We are making the `Unity.Mathematics` library available at https://github.com/Unity-Technologies/Unity.Mathematics This is the library used...

forum.unity.com

끝.

반응형

댓글