Force Method Inlining in Burst

Tags: ,

Burst 1.0.1 is a patch-level update to the original 1.0.0 release, but it actually contains a useful new feature: we’re now able to force methods to be inlined. Read on to see how!

Read the rest of this article »

2 Comments

Adding Unions to Burst

Tags: , ,

We’ve seen how to add unions to C#, but does this work with the new Burst compiler? Today we’ll put it to the test and see if it can handle some of the more advanced struct customization features in C#!

Read the rest of this article »

2 Comments

Assertions in Burst

Tags: , , ,

Assertions are an incredibly handy tool, but do they work in Burst-compiled jobs? Today we’ll find out!

Read the rest of this article »

2 Comments

Burst vs. IL2CPP: Generics

Generics, be they variables, methods, or functions, are language features that trigger IL2CPP surprises. Can Burst do better? Let’s find out!

Read the rest of this article »

5 Comments

Dangers of Arrays in Burst

Tags: , ,

Normally Burst-compiled jobs can’t use managed arrays, but there’s an exception for static readonly fields. This comes with several dangers, which we’ll explore today.

Read the rest of this article »

No Comments

How IL2CPP Calls Burst

Tags: , ,

Ever wonder how code compiled with IL2CPP can call code compiled by Burst? Today we’ll dive into the details and find out!

Read the rest of this article »

No Comments

Job-Safe APIs in Unity 2019.1

Tags: , ,

With each new release of Unity, more and more job-safe APIs are added. Today we’ll look at the new ones and learn how we can move even more code into high-performance C# jobs.

Read the rest of this article »

2 Comments

Throwing Exceptions in Burst-Compiled Jobs

Tags: , ,

Unity’s Burst compiler imposes an interesting subset of C#. The “no managed objects” rule of thumb is not always correct. Today we’ll look at eExceptions, which are managed objects but are partially supported by Burst. What’s allowed and what’s banned? Read on to find out.

Read the rest of this article »

1 Comment

Burst’s FloatPrecision and FloatMode: Don’t Assume

Tags: , ,

Unity 2019.1’s new Burst job compiler has two options to increase performance even further: FloatPrecision and FloatMode. By sacrificing some exactness in our calculations, we should be able to increase speed. Today’s article is about using those options and examining the results to verify the results.

Read the rest of this article »

6 Comments

Use the Right Type for the CPU

Tags: , , ,

The Unity.Mathematics package documentation has a curious statement: “Note that currently, for an optimal usage of this library, it is recommended to use SIMD 4 wide types (float4, int4, bool4…)” Today we’ll explore why we should consider using float4, not float3, after years of using Vector3.

Read the rest of this article »

5 Comments