Amplify Impostors

by [email protected]

Detail this asset from Unity Asset Store: Original Link

This is a paid asset, but now you can download Amplify Impostors Free.

Amplify Impostors v0.9.7.007 (Latest version)

Download Now

Amplify Impostors v0.9.7.006

Download Now

Amplify Impostors v0.9.7.005

Download Now

Amplify Impostors v0.9.7.002

Download Now

Amplify Impostors BETA v0.9.7.001

Download Now

* * Amplify Bundle – Save 25% * *
Amplify Shader Editor – Award-winning node-based shader editor
Amplify Impostors – 1-Click Impostor Creator
Amplify LUT Pack – 200+ LUT Grading Presets

Learn more: Bundle Details

1-Click Impostor Creator!
Optimize your projects with ease by using next-generation Billboard Impostors.

What are Impostors?
Impostors are camera facing quads, or simple polygonal shapes, that replace complex geometry by rendering a fake 3D representation of the original object.

Flexible
Impostors can be moved, rotated, scaled, receive and cast shadows, intersect other objects or impostors, and can be used with LODGroup or any third-party LOD system.

Modern
Making full use of GPU-based instancing, our tool provides Spherical and Octahedron Impostor techniques, the latter being capable of performing smart transitions between different views.

Features
• 1-Click Bake!
• Octahedron and Spherical Impostors
• Billboard Shape Editor
• Smart Blending between views
• Hardware Instancing
• Depth-write for Object Intersections
• Forward and Deferred rendering
• LWRP and HDRP support (v4.9.0+)
• URP support (v7.1.0+)
• Full Lighting and Shadowing
• Dithered LOD Cross-Fade
• LODGroup compatible
• Custom Material Baking

Upcoming Features
• Dynamic Impostors
• Batch Processing

Technical Considerations
Currently, standard baking is only supported if the shader exposes a Deferred path, such as Unity Standard shaders. However, the Impostors created can be used in both Forward and Deferred modes. Baking objects with custom shaders is supported via Custom Material Baking

Please check our Roadmap for more information on upcoming features. This tool is currently in development, performance and quality will be gradually improved in upcoming releases.

Manual: Amplify Wiki
Discuss here: Unity Forum Thread

Make the change, use the professional tools you crave. Our products are developed by industry professionals and our support team always goes one step beyond to resolve any possible issues our clients might have.

Get in touch, we would love to hear your story, help promote and feature your work.

References
Octahedral Impostors by Ryan Brucks
Chapter 21. True Impostors by Eric Risser
Real-time Realistic Rendering and Lighting of Forests by Eric Bruneton, Fabrice Neyret

Description
Amplify Impostors is a small but powerful tool that allows the creation of different types of Impostors, which are substitutes of complex high polycount objects made from flat and simple polygons, that render a fake version of the original object (hence the name). Much like traditional sprites, they usually consist of a single flat quad polygon or simple polygonal shapes and, like classic billboards, always face the camera. Think of them as a camera facing cardboard version of the object you want to render. The common purpose of using such technique is to be able to represent far distant objects with a very low polycount, for instance, trees, bushes, rocks, ruins, buildings, props, etc.

There are various ways these impostors can be created, each with their own advantages and disadvantages. This tool intends to provide the most useful and popular techniques while making the process of creating them as simple as possible.

Installation
Open AmplifyImpostors.unitypackage
After Unity loads it will display the “Importing package” window, select All and click Import
Quick Start Instructions
Select a game object in the scene or a prefab in your project
In the inspector window search for and add the “Amplify Impostor” component
Press “Bake Impostor” and select where you want to save the impostor files
Current Features
Impostor Types
Three pre-baked Impostor types are currently supported

(Real mesh on the left, impostor on the right)

Spherical: Takes multiple shots in a typical latitude-longitude format. The shader is simpler and faster and the impostor looks mostly okay from close distances, but popping between frames is fairly noticeable. This can be mitigated somewhat by increasing the axis frame count at expense of resolution.
Octahedron [1]: Takes multiple shots in a icosphere format. This is done to guarantee a fixed neighbor count of three, so that at any given position relative to the camera we can blend the nearest three frames. This has the benefit of removing popping between frames. On the other hand the shader complexity is higher and, when looking at closes distances, the blending becomes too obvious with noticeable ghosting artifacts.

HemiOctahedron [1]: The hemi variant is similar to regular octahedron, with the difference on taking the same amount of shots but only from the upper hemisphere of the object, effectively doubling the precision of the blending. The downside though is that, by not baking the lower hemisphere, it produces incorrect results when looking from below. This approach is typically used only if you know the object will always be viewed from above (ie: top-down cameras).
Realtime Rendering
Each one of these pre-baked solutions render surface component maps in order to support realtime lighting. This comes with support for:

Scriptable Render Pipeline (HD and LW) (v4.9.0+)
Standard/Legacy Forward and Deferred rendering
Dynamic Lights and Shadows
Depth writing for object intersections
Global Illumination
Baked Lightmaps (via custom baking)
GPU instancing
Dithering cross fade
Others
Custom Packed Maps: Render up to 4 maps and a custom material for standard material baking and up to 8 different maps using custom baking (support for PNG and uncompressed TGA)Albedo (RGB) | Alpha Mask (A)
Specular (RGB) | Smoothness (A)
Object Normals (RGB) | Depth (A)
Emission (RGB) | Ambient Occlusion (A)
Custom Shape Editor: Automatically generates a custom shape to remove most of the transparent areas of the impostor to reduce overdraw. Also supports manual editing.
Baking Presets: Defines presets for baking impostors which also contain various import and export options.
Scriptable Render Pipeline
In order to use Amplify Impostors with SRP, be sure to import the required package(AmplifyImpostorsPluginsEditorResourcesRenderPipelinePackages)

The Inspector
The inspector for the impostor is divided in two main sections, one is to setup its basic definitions and the other gives access to more advanced bake settings.

Here’s the main inspector:

Impostor Asset: This is a reference to the asset that will hold most of the impostor data so if you have multiple impostor of the same object this data will be shared among them. This asset is created automatically for you with the create or bake button but you can also right-click in the project folder and create an empty one.
LOD Group: This a reference for a LOD Group in case it exists. This allows to automatically setup the impostor in the given LOD Group. The inspector will try to fill this reference for you when you add the component.
References: These are the references to the renderers that will be used to bake the impostor. You can limit what you bake to the impostor by changing these references accordingly. The inspector will try to fill this reference for you when you add the component.
Plus Button: Open the file browser and creates an impostor asset and automatically assigns it to the component. Doing this also makes the baking settings available.
Bake Impostor: Bakes the impostor using the current data asset and given path.
When an impostor asset is assigned to the component you can configure the advance bake settings:

Bake Type: Technique used for both baking and rendering the impostor. Three different techniques are currently supported with more coming in the future. See Impostor Types.
Texture Size: The texture size in pixels for the final baked images. Higher resolution images provides better results at closer ranges, but are heavier in both storage and runtime. Big texture sizes are rarely necessary considering the purpose of the impostor is being rendered at far distances. Various presets are offered and, if a custom resolution is necessary, press the lock icon at the right to allow for custom size fields.
Axis Frames: The amount frames per axis. For instance, a value of 16 represents a total 256 different shots for a single impostor (16 x 16 = 256). For spherical impostors it’s possible to have different number of frames per axis by pressing the lock button at the right.
Pixel Padding: The bleeding size in pixels. Bleeding/padding expands the edge pixels of the individual shots to avoid rendering artifacts caused by mipmapping. A value of 32 means the image will expand to every direction by 32 pixels.
LOD Insert Mode: A rule of how the impostor will be automatically included in the LOD Group. This is only available on first bake and it will automatically change the renderers in the References field appropriately.Do Nothing: Does nothing.
Replace Culled: Replaces the culled part of LOD Group to an impostor. Uses Last LOD as reference.
Replace Last: Replaces the last LOD of LOD Group to an impostor. Uses the previous LOD as reference.
Replace All Except First: Replaces all LODs of LOD Group to an impostor except the first. Uses the first LOD as reference.
Replace Specific: Replaces the target index LOD of LOD Group to an impostor. Uses the previous LOD as reference.
Replace After Specific: Replaces all LODs after the target index LOD of LOD Group to an impostor. Uses that LOD as reference.
Insert After: Inserts a new LOD as an impostor after the target index LOD. Uses that LOD as reference.
LOD Target Index: It’s the index target for the insert mode. Only available if the current insert mode supports changing the target.
Billboard Mesh
The baker uses unity’s built in shape editor to find a good approximation of the shape in place. This approximation might still need improvements in terms of polycount and shape, so some additional options are provided to better control it. Usually there’s no need to touch these settings, but there might exist some odd cases where even the manual mode is necessary for some finer adjustments.

Max Vertices [4,16]: By defining a maximum number of vertices it ensures the final created amount does not exceed it. If that happens, each vertex that contribute with the smallest area to the shape will be removed until the specified value is met.

Outline Tolerance [0,1]: This parameter allows the final shape to more tightly fit the object by increasing its number or vertices. A tolerance of 0 will make sure the generated shape encapsulates the entire object, even if it means a more loose and simplified mesh, while a value of 1 will try to fit the shape as close as possible with a reasonable number of vertices.

Normal Scale [0,1]: This scales the vertices out according to the shape normals. If the shape touches the preview quad borders, they get clamped and vertices are eliminated if necessary. A quick way to produce a quad is to max this value out.

In the manual mode you can still use the automatic tools but you can further tweak each vertex position individually.

Bake Preset
Sometimes you want to bake an impostor with standard settings but with one or two changes, this bake preset allows you to create and use a preset of configurations to customize the baking result. This is particular useful for custom baking, as it’s also used to link the shader and baked textures to the final impostor material.

With the first field you can select your previously created preset or you can create a new one. Do note that you can only change the preset itself in the preset inspector when you select the preset file. Otherwise, all changes done in the impostor inspector are just individual overrides that are saved per impostor. This is reason that, by default, all other fields are greyed out and locked.

Bake Shader: This is the shader used to bake the impostor. When empty it uses the deferred pass of the same shader the original object has automatically.
Runtime Shader: This is the shader that actually uses the baked result and renders the impostor. When empty it uses the default shaders that come with the package automatically.

RT#: The numbered Render Texture output file. Which can be toggled ON and OFF in case you only need to rebake some maps.
Suffix: The texture file suffix and material property reference. This will be used to correctly link the output texture to the proper field in the final material.
Scale: This is a relative scale parameter that allows to automatically configure the texture import settings to resize the texture into half, quarter and eighth of the original size. Useful to reduce individual texture size if you don’t need all maps to be at full resolution.
sRGB: This marks the texture importer to use color sRGB standard or Linear information. As a rule of thumb, set it to true if the information is color and false if it’s just data.
Compression: Changes the texture importer compression setting. Higher compression means smaller textures but also longer baking times and lower texture quality.
Format: Final file format, for now only PNG and uncompressed TGA. TGA is faster to bake and save to disk but takes more disk space. This does not affect the compression and quality of the texture.
Ov (Override Mask): This is a multi select mask field that allows you to control which parameters you want to override. You can override just one parameter or the whole texture output setup.

Global Preferences
Some behaviors of the inspector and resulting bakes can be changed globally. You can find these settings in Edit > Preferences > Impostors.

New Impostor Default Path: At the first bake, and if not set, the editor will suggest a relative folder when the object is a prefab or an instance of one. It will then remember the path for every subsequent bake. You can change the proposed folder here by using a relative valid path. If you want to keep all your impostors at the same place and don’t be bothered again, you can also set them in a global folder by changing the option to Global, you can then use the right browse button.
Texture Importer Settings: When rebaking the impostor with a different texture resolution you can change how the inspector behaves here (options are self-explanatory):Ask if resolution is different
Don’t ask, always change
Don’t ask, never change
Create LODGroup if not present: Setting this ON will automatically create a hierarchy with LOD Groups and setup the original object with the impostor in it. Only works if original object doesn’t already has a LOD Group.
Suffixes: By default the files generated share the same name as the original object with an added suffix, you can change the suffixes here.

Related Posts

Leave a Comment