Make The Imposter Material
Now you should have a series of rendered imposter images. To make use of these textures, you will need to create a material that uses the ImposterUVs material function by clicking and dragging the function from the Content Browser into your Imposter Material Graph:
This function sets up the UVs, Normals, and WorldPositionOffset for your material. There are a few parameters you need to define to match your Imposter setup:
Frames X (S)
This should be the number of frames on the X axis for your imposter. For example if you specified 16 rotations around Z there will be 16 frames on the X axis.
Fixed Z (B)
This is a Boolean option that should only be set to True when using an imposter with "Single Rotation Axis". This makes the calculations much cheaper.
Frames Y (S)
This should be the number of frames on the Y axis. For square aspect ratios this should always match the frame Y. If you entered an aspect ratio of 2:1, then the Y frames would be half of the X frames.
This is how wide your resulting sprite will be.
This is how Tall your resulting sprite will be.
Defaults to AbsoluteWorldPosition and should be left untouched in most cases. Can be used if you want to trick the function into displaying the imposter at a weird angle or if you want to use custom data to represent locations.
This is a debug only setting. What this feature does is break up the sprite's Z rotation into a set of discreet steps rather than smoothly interpolating across the entire range. This prevents popping from looking worse due to how imposters are baked. With smooth sprite interpolation, the imposter appears to overshoot its rotation at each frame transition. This fixes that when the value equals 1. You can set to 0 to see what it looks like disabled. Mostly noticeable from above an imposter mesh.
The imposter sprites can be rotated around the specified axis. This allows you to randomly rotate various copies of the same imposter sprite in the world so that they do not look the same.
Rotation Axis (V3)
This setting is currently disabled. The rotation axis always defaults to 0,0,1 or around Z. There were some issues when trying to support any rotation axis but this support may be added in the future.
This should be your normalmap texture. What this does is rotate the normal to match your specified Rotation value.
Contains transformed normalmap, connect to material Normal input.
Contains WPO for camera facing sprite, connect to World Position Offset input.
This is the UVs for the Imposter textures. Any Imposter textures you place in the material should have this output as the UVs. That includes the normalmap which will then appear to loop back into the function in the "Normals" input.
This is an experimental feature that was not fully implemented. It is the start of the ability to have two or more texture lookups that are one phase ahead and/or behind and fade/dissolve between them to reduce popping.
This is what your material should look like:
You probably noticed the Constant Bias Scale node that takes input from the normal map texture. This is needed to re-balance the colors for world space normals.
Example Full Imposters:
Example Single Rotation Axis imposters: