Who am I?

Unity / Unreal Developer and 3D Artist

What I write about

Recent Posts

Recent Blog Posts

Here's a list of optimisation tips collected together from various sources for faster access:

Watch the whole videos linked below to get additional explanations.

Optimization tips for maximum performance – Part 1 | Unite Now 2020

Use arrays or lists if you need to access elements fast by index. Use dictionary if you often need to add or remove elements.

Use object pools instead of instantiating and destroying objects Destroying objects creates a lot of garbage. Create a pooling system and reuse unused objects.

Use Scriptable Objects for storing gen...

Unity's Timeline component is a powerful NLE animation system with a highly modular internal structure.

As such it can be interesting to access parts of it via the API:

// PlayableDirector references to the timeline asset called PlayableAsset
PlayableAsset playableAsset = director.playableAsset;

// Cast it to a proper timeline asset
TimelineAsset timeline = (TimelineAsset)playableAsset;

// Get all the timeline tracks as TrackAsset
IEnumerable<TrackAsset> trackAssets = timeline.GetOutputTracks();

// Iterate through all the tracks
foreach (TrackAsset trackAsset in trackAssets)


Initial download size on the web is very important and Unity is, at least in its basic form, by nature not the perfect choice for building small, efficient WebGL applications.

But there are a lot of dials and buttons to press, allowing us to tune the size even without having to resort to Project Tiny.

I set out to see how small I could get a WebGL build. As reference I took the default Unity Universal Render Pipeline template and went through all the optimization options.


Render Pipeline Publish Compression Texture Compression Shader Stripping Code Stripping Size on Disk

Here's a collection of shader algorithms in node form for the Amplify Shader Editor. Useful, should you ever want to build a shader with custom lighting and are too lazy to do it in code.



Simply the dot product between the surface normal and light direction in world space.



The dot product between the surface normal and the normal half way between view direction and light direction. The hardness can be adjusted by power with the hardness as exponent.



The dot product between the surface normal and the view direction. This is basically the incidence angle and can be us...

Location Distance Type Attraction Limits Park Limits
Gertrudenhof Hürth 9 km Extended Farm
Krewelshof Lohmar 20 km Extended Farm
Irrland Kevelaer 100 km Outdoor Park often max. weight 60kg max. age 12 for children
Bubenheimer Spieleland Nörvenich 38 km Outdoor Park
Bobbolandia Grevenbroich 30 km Outdoor Park
Sommerrodelbahn & Erlebniswelt Eifeltor Mechernich 48 km Outdoor Park
Hoplop Pulheim 12 km Indoor Park
Phantasia Land Brühl 17 km Theme Park often min. height 1.00m - 1.20m
Movie Park Bottrop 87 km Theme Park often min. height 1.00m - 1.30m, often min. age 6

Some current and up coming main stream VR headsets

Tethered VR

Headset Year Price Resolution / Eye Panel Field of View Tracking
HTC Vive 2016 599 € 1080 x 1200 @ 90 Hz OLED 110° External IR Lights (6 DOF)
HTC Vive Pro 2018 1399 € 1440 x 1600 @ 90 Hz OLED 110° External IR Lights (6 DOF)
Valve Index 2019 1079 € 1440 x 1600 @ 90/120/144 Hz LCD 135° External IR Lights (6 DOF)
Oculus Rift 2016 499 € 1080 x 1200 @ 90 Hz OLED 110° External IR Cameras (6 DOF)
Oculus Rift S 2019 449 € 1280 × 1440 @ 80 Hz LCD 110° Internal Cameras (6 DOF)
HP Reverb 2019 600 $ 2160 x 2160 @ 90 Hz LCD 114...

Jumping on the hype train about Blender 2.8 and while it's looking nice, getting to grips with new software is always hard.

Documentation for 2.8 is currently being updated.

I therefore compiled a list of hotkeys that I found useful for working with Blender:

Key Action
Shift + Space Open Toolbar Menu
Right Mouse Open Vertex / Edge / Face Context Menu
Alt + E Open Selected Tool Menu (will enable numeric value entry!)
Ctrl + V Open Vertex Menu
Ctrl + E Open Edge Menu
Ctrl + F Open Face Menu
U Open UV Menu
T Toggle Left Toolbar
Shift + A Open Mesh Primitives Menu

Optimisation tips for various platforms taken from various Unity/Unite talks:

Mobile VR:

Youtube: Unity LA 2018: Going for Speed Maximizing Performance on Oculus Go


  • Enable Single-Pass Stereo
  • Static Batching - One material per Mesh and mark meshes as static.
  • Bake Lighting - Per-pixel lights break batches.
  • Occlusion Culling - Don't draw stuff you can't see.
  • If Umbra fails build custom occlusion engine - Interiors work better with a custom portal engine.
  • Oculus Go can handle large textures - 4096x4096
  • Oculus Go can do small head translations in addition to head rotation.


  • Faster Fragmen...

Here is a quick cheat sheet on how to add a proper ssh key for Sourcetree / Bitbucket from a Windows system with the PuTTY Key Generator.

Screenshot of PuTTY Key Generator

The process is not complicated by any means, but getting things mixed up simply results in Bitbucket or Sourcetree rejecting the key, making tracking down the problem more difficult than it should be.

Steps are:

  1. Press Generate to create the key.
  2. Press Save private key to save the private key to disk.
  3. Copy the public key from the text area box above into the clipboard.
  4. Paste the public key into the Bitbucket > Settings > SSH Keys section on the website.