Steps to Amplify Your Scene
1. Drag the AmplifyManager prefab into your scene's Hierarchy.
2. Drag your main camera to AmplifyManager's "Target Camera" slot. This way, Amplify takes care of adding the necessary AmplifyRuntime component to your camera automatically.
3. Create an AmplifyTexture asset using the "Create"" button located in the the Project tab.
4. Select the AmplifyManager and set the "Asset" field to your recently created AmplifyTexture.
5. You are now ready to start assigning Amplify compatible shaders to your materials. After you switch the shader, Amplify will start monitoring the textures belonging to this material and add them to the virtual texture incrementally, as necessary. The virtual texture will be resized automatically to fit new textures.
The shaders should be an exact match to those provided by Unity. The only difference is that they are recognized by Amplify and virtual texturing can be applied on the surfaces that use them.
You can batch this process by using one of Amplify's tools that may be found in the "Amplify>Tools..." menu. To do this, simply press the "Unity to Amplify" button in the tools window. This process will turn every compatible Unity material into an virtualized Amplify material.
Note: Automatic virtual texture resizes, which occur when the texture being added doesn't fit in the currently available space, requires a full rebuild. To avoid automatic resizes, you can set a fixed target size manually by selecting the desired AmplifyTexture and setting the "Virtual Width" and "Virtual Height" properties first, then pressing the "Rebuild" button.
Error handling
When an error occurs or you cancel the Amplify build process, Amplify will auto-deactivate by disabling the AmplifyManager component.
While Amplify remains deactivated, a placeholder material will be shown instead of any virtualized materials. This means that, if your scene is shown with textures similar to the image below, your AmplifyManager was probably deactivated for some reason and you should have a look at your console to see if any errors were thrown by Amplify.
To reactivate Amplify goto your scene Hierarchy, select your AmplifyManager object and activate the AmplifyManager component listed in the Inspector.
Notes:
- Make sure that all warnings or errors are fixed before reactivating Amplify.
- If an incremental build was canceled, it will be resumed after reactivation.
Transparent Surfaces
Semi-opaque or Transparent surfaces cannot be virtualized by Amplify and these surfaces may block virtualized surfaces' texture tiles from being streamed. For example, when you add a Particle System or some other asset with a transparent material, virtualized surfaces behind it may not stream correctly. To fix this, all you need to do is change the layer these objects to TransparentFX. This way they'll be automatically ignored by Amplify because the default AmplifyManager's "Culling Mask" is set to include only the Default layer.
You can also solve this problem by creating a new layer specifically for Amplify surfaces. Then setting this Layer on all virtualized objects and changing AmplifyManager's "Culling Mask" to include only that layer, exclusively.
Note: To clarify, only virtualized surfaces need to be "seen" by Amplify, all others are just getting in the way of the sensor that detects which parts of the virtual texture should be streamed in.
Dynamically Instantiated Prefabs
In order to virtualize a dynamic asset — one that is currently not in the scene, e.g. a character that spawns dynamically — you need to drag it into the "Dynamic Prefabs" list, listed in the AmplifyManager's Inspector. You may add as many prefabs as you need to this list.
Steps to Deploy a Build Powered by Amplify
To deploy an Amplify-enabled build you simply have to click on the "Amplify>Build" menu option. This menu also contains a "Amplify>Build And Run" that will run the application right after deployment. Both options will perform a regular build first, using your current settings, before automatically deploying all virtual textures belonging to scenes included in the build.
Technical Artistic Considerations
- Material instances are not supported during the editing process and therefore simply ignored. However, there's no limitation against creating instances of Amplify-supported materials.
- Due to current limitations, each unique material must be only assigned to a unique Amplify Texture at any given time.
- Unity's map Tiling and Offset properties are ignored in Amplify replacement materials. All these transforms should be included in the model's primary UV coordinates.
- Texture import settings are currently ignored. E.g. generating normal maps from grayscale height maps, or alpha from grayscale are not yet supported.
- Textures must be in one of the following formats: BMP, DDS, EXR, HDR, JPG, PNG, PSD, TGA, TIFF. Unsupported formats will be defaulted. More formats may be added in the future.
- All textures should have power-of-two (POT) dimensions on both sides. Non-power-of-two (NPOT) textures will be rescaled to the next closest POT dimension. Avoid NPOT at all costs because it'll slow down VT processing.
- All textures should have dimensions equal or larger than 128 pixels. Textures smaller than 128 pixels will be rescaled to match this requirement.
- For best results, the size of input textures should match on a per-material basis. Smaller textures will be rescaled using a cheap bilinear filter to match the largest texture on the material.
- Non-square power-of-two textures are supported, however, not recommended due to irregular virtual texture packing.
- If the same square size is used for all textures, the virtual texture packing layout will be optimal.
- Use Repeat texture wrapping mode only when absolutely necessary. Clamp on every other case.
For more technical information, please refer to "Amplify/Docs/Readme.txt"
Contacts
Feel free to get in touch with us if you need additional information. We will gladly do our best to answer all your questions.
For general inquiries: info@insidious.pt
For technical support: support@insidious.pt (customers only)