Ricardo Teixeira from Amplify Creations presented their smart optimization solution that uses next-generation Billboard Impostors. Amplify Impostors will allow you to optimize your assets of any size in no time.
I think the biggest question users usually have is “what exactly are impostors?” Impostors are camera facing quads, or simple polygonal shapes, that replace complex geometry at a distance by rendering a fake 3D representation of the original asset that can either be baked in-editor or created at runtime. The great thing about this type of optimization is that it can be done entirely in-editor without needing to crunch your assets beforehand. You could conceivably bring in even higher-poly geometry specifically for Impostor creation (large forests and buildings). Additionally, we’re also going to provide a dynamic Impostors that will enable runtime baking in cases where we’re dealing with animated objects, such as crowds or foliage.
Traditional LOD assets are great but there was a need for a more flexible and immediate solution fit for specific cases, and that didn’t require any drastic pipeline changes. Once created, our impostors work great by themselves, with Unity LOD Groups, or with any other third-party LOD system as you would expect with any other asset. For users not familiar with Unity, this means that you have full control of how and when impostors are displayed, the type of transition between the impostor asset and the actual model, and how it should scale depending on the hardware.
How does it work?
Amplify impostors are created by rendering a set of perspectives into different atlas textures, storing information ranging from material data to volumetric information. This pre-baked or runtime data is then used by our advanced shader to display the correct view depending on the camera position. What really sells the effect is the fact that our impostors provide full lighting support, cast and receives shadows, can be moved/rotated/scaled, and even intersected with other objects or impostors.
*Note: Checker Plane used as an example only, not actual impostor mesh.
Our main focus is to give the users a way to customize every aspect of the baking process, from the shaders used to the amount and layout of the data we store. Most notably, we provide automated Impostor polygonal mesh generation, that can be tweaked manually, in order to reduce waste while maximizing savings in bandwidth and overdraw.
Going forward, users will also be able to extend any Impostor baking or surface shaders, for any given material, to fit any particular pipeline requirements.
The Novelty of the Approach
The aforementioned ability to render them from any angle, with proper lighting and shadowing, intersecting any other object as expected, combined with the ability to freely transform them is truly what sets them apart from traditional billboards. They convey an accurate perception of volumetry.
We implemented a technique known as Octahedron impostors that allows for smart/smooth transitions between different views. This technique, developed by Ryan Brucks and popularized by its use in Fortnite, has been around for some time but, after exhausting the existing options for our own game, we decided to focus on developing a more stable, community-driven, and feature complete alternative.
We also provide Spherical impostors, although they don’t display smooth blending between each view, they make use of a low complexity shader that’s quite useful for some assets such as higher-resolution impostors or distant large assets for backdrops.
Impostor creation works in a very simple manner, you just need to add the component to your object and bake, it’s quite flexible even when it comes to working with existing LOD Groups.
GPU-based instancing plays a big part in draw call reduction but the tool also allows you to bake large sets of objects into a single impostor asset that makes use of a single material regardless of the original count; it’s great for objects constructed using large quantities of models and materials or single models using large quantities of materials.
For even greater flexibility, Amplify impostors will soon be fully compatible with Amplify Shader Editor, our award-winning and shader editor for Unity, allowing for unique custom shader use with a next-generation impostor system in Unity. Scriptable Render Pipeline support, both for HD and Lightweight, will also be added soon ensuring that you can make the most out of the latest Unity technology.
Scope of Use
The sky’s the limit, even though impostors are not meant to be used as a 1-1 replacement for standard geometry, we’re very curious to see what developers come up with. Typical workflows do involve displaying the actual mesh at close range and the impostor from a certain distance, but there’s nothing wrong in using the impostor by itself if it works well for your project, be it for stylized or realistic assets.
Higher polycount models, or repeated assets, are usually a great place to start; complex trees, rocks, and boulders, or even entire houses, street props, and vehicles seen from a distance; you’ll even be able to create runtime impostors soon, perfect for animated meshes such as characters or swaying vegetation. Since it allows for object intersection and translations, it’s a great way to populate large spaces such as forests or open terrains; imagine taking high-resolution Megascans content and scattering it without worrying about managing LOD levels by drastically reducing draw call and overall polycount using impostors – it’s extremely fun to play with!
Photogrammetry is a great use case, with impostors you can rest assured that you go from thousands of tris to single digits with a single click. There’s nothing like trying it out for yourself, you could very well get away with a close-up impostor in some situations; fast paced or even driving games are great candidates.
Impostors work great on Desktops, Consoles, Mobile (Fortnite is an excellent example), and even VR. In our own case, we use it extensively, it really makes a difference on lower spec hardware such as the Nintendo Switch.
Amplify Impostors can be purchased directly at the Unity Asset Store:
You can only use it in your own projects for now but we plan to offer you the means to distribute your own pre-baked impostors as you see fit. This is not as straightforward as it seems as it involves distributing parts of our tool but, regardless of the solution, it will come at no additional cost to existing users.
For larger studios with specific requirements, we’re always available at firstname.lastname@example.org to discuss possible solutions.
Ricardo Teixeira, a member of Amplify Creations
Interview conducted by Kirill Tokarev