Impostor is a gaming technology technique, mainly used in LOD processes to optimize drastically your mesh located in the background of your real-time 3D experiences without loosing any visual quality. 



It consists in creating multiple maps of your mesh from a number of Point of View, rendered on Quad (above), a Bounding box (12 triangles) or a custom mesh , which will fade automatically to create a seamless render experience.



These impostors can be either Octahedron or Semi Octahedron depending on your need. It basically only creates maps for the "upper" world, cutting your "sphere of views" in half, which means 2x more quality. 


It's 2x quality because the algorithm will create the same number of views, but only from above. If you seek for the same quality, so more performance, just decrease the Atlas Size value.


Pixyz Impostor supports: 


  • Object intersections
  • Shadow casting & receiving
  • GPU Instancing (activated by default)
  • LOD crossfade


Instanciation of a mesh with 140k triangles

Real Mesh (execution time of a frame)

Impostor 

100

9,09 ms

2,77 ms

400

29,41 ms

3,17 ms

800

62,5 ms

4,01 ms

1600

111 ms

5,78 ms



WARNING        Pixyz Impostor doesn't work with Trees created from the Unity Built-in Tree generation since they already include an optimization process.


WARNING        Pixyz Impostor only works with built-in Render Pipeline. Compatibility with URP and HDRP scene is in our short-term roadmap



How to use 


From the Toolbox > Remeshing, you will find the new Impostor function:



  • Maps Resolution: The resolution of texture maps baked to render the impostor (ex 4096 x 4096)
  • Atlas Size: The square root of the size of the Atlas of the different captured frames. The higher the value is, the smoother the transition between frames will be but more demanding in terms of performance.
  • Impostor Type:
    • Octahedron: The impostor is active from any point of view (like a 360° sphere).
    • Hemi octahedron: Only create impostor for the upper half of sphere in order to optimize performances. *Use this when your user can't get under your model (like in video games).
  • Render On: The geometry on which the impostor is rendered (Quad, Oriented Bounding box, custom mesh). The choice is defined by the FPS analysis you will make of your scene. Why?


Because even if there aren't any "rendered pixels" on the Quad, it still represents more calculation for your graphic cards. So you need to check if getting more triangles through OBB or Custom Mesh is more effective than having more "transparent" pixels. 


Here all the yellow area is still calculated even though there aren't any rendered pixels


The Impostor's topology wraps better the initial mesh than with a quad.


  • Save Maps: Save the maps generated at a custom location


Pixyz Impostor Shader 


Our impostor leverage a dedicated shader that you can correct if needed. For instance, if impostor's shadows are reflected on the model itself, you can tweak the Shadow Bias parameter.