I am trying to learn the most performant way to make an imposter in Unity manually - not using pre-fabricated solutions.

My first guess is that it should be achieved by using RenderTexture and a second camera and then taking different "snapshots" of different angles of the objec. If there are better alternatives in terms of performance (even if more difficult to implement), I would love to hear about.

In case that is the only path, then I have learned how to render from a camera to a texture via script, but I still couldn't figure it out how do the following, which is what I need to do first: how to render-to-texture a specific object without the background of the camera (i.e. with rest of texture being transparent) in a performant manner?

Pointers, suggestions or at least link recommendation will be great.

Thanks in advance.

  • \$\begingroup\$ This question already contains the answer: render the object to a texture with a second camera, using a transparent clear colour. There's no particular trick to this. I see this was asked back in May - @AndraSol, have you successfully implemented this feature since then? If not, can you include details of where you're stuck? \$\endgroup\$
    – DMGregory
    Commented Sep 18, 2016 at 23:02

1 Answer 1


There are a variety of different imposter techniques.

Level of detail is probably the easiest to achieve, but has two main drawbacks. The noticeable 'pop' effect when you swap between low and high resolution models, solved by gradual transitions between LODs. The second problem is that it's MUCH more work for the artist to generate LODs for every single model. There's a GDC talk which about an automated way to generate LODS - "Automated Level of Detail Generation for HALO: REACH"

A simpler technique would be billboarding, where you use only a flat polygon, instead of a low resolution mesh. This polygon faces the camera, and is textured from a render of your model. This method requires having multiple different views of your object, much like how the enemies in doom. You could prerender all your views to a texture atlas. Modern games use this approach, like Far Cry 3 https://www.youtube.com/watch?v=9P3EI17kHaI

You could also have several different static billboards, and combine them like in this unity package https://forum.unity3d.com/threads/abi-automatic-3d-billboard-imposters-released.204579/

But the best way (which I think you want) is dynamically rendering your billboards, like in this gamasutra article. http://www.gamasutra.com/view/feature/130911/dynamic_2d_imposters_a_simple_.php This was first done by Jurrassic Park: Trespasser in 1998, so it's not a new technique. Check out the code review here http://fabiensanglard.net/trespasser/index.php Scroll down to the section on wavelets to see their imposters.

Except the standard LOD approach, your first step would probably to find a render texture tutorial. The orientation of the renderTexture camera must be the same as your main camera, but cropped around the gameObject for efficency. You will need to isolate the gameObject(s) you want to render with a culling mask. And set the camera's clear flags so that you get a transparent background. Then render an imposter billboard in place of the original object.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .