Unity Products:Amplify Texture 2/Manual

From Amplify Creations Wiki
Revision as of 16:50, 12 April 2017 by AmplifyWiki (talk | contribs) (Amplify Texture Manager)
Jump to: navigation, search


1. Open AmplifyTexture####.unitypackage

2. After Unity loads it will display the “Importing package” window, select All and click Import

3. Amplify Texture should now be installed in your Unity project and it should have the following directory structure:

YourProject\Assets\AmplifyTexture\Tools (Full Version)

Third Party Packages

When Amplify Texture 2 detects a compatible third party product it will give you the option to automatically import the necessary pre-converted AT compatible shaders. When using the Alloy, Skyshop or other compatible products, make sure that when importing the provided Unity package that it corresponds to the third party shader version in your Project.


Steps to Amplify Your Scene

1. Add the Amplify Texture Manager to your scene.


2. Create a new Virtual Texture Asset and configure the appropriate values as required.


Virtual Textures

Virtual Texture setup is crucial in order to fully take advantage of the features provided. Keep in mind that you can use several virtual textures per-scene, it’s a good practice to seperate virtual textures by type in order to avoid rebuilding the entire collection. e.g. 1 Virtual Texture characters and another for vehicles.


Hardware Level

  • Amplify Texture 2 streams all the textures required in a set of tiles. This is a quick and simple way to setup your target hardware by limiting the maximum size per-tile.

Virtual Size

  • The actual pixel size of the virtual texture, from 32 thousand square pixels up to 256 thousand.

Tile Size

  • Maximum tile size set in the Hardware Level option, although currently there is only 1 value this might be subject to change.

Compression Type

  • Overall compression mode for the virtual texture, Lossy or Lossless.

UV Coord Set

  • Unique UV Channel to use, subject to change.

Additionally, as you can see from the image on the right, you can also trigger a virtual texture update, rebuild or material update, directly in the inspector window.


Layout Preset

  • Pre-made Channel layouts for specific third party frameworks such as Alloy, Skyshop and Lux.


  • In this area, depending on your project requirements, you can define which Channels should be virtualized. Click on any channel to edit its individual compression value or Shader Property.

3. Define which Material folders will be monitored by the Virtual Texture.


This is one of the most important steps in setting up Amplify Texture 2. Here you can directly define which material folders should be included in a given virtual texture, you can add as many folders as required.

Alternatively, if you plan on using a single Virtual Texture, simply add the Unity Asset Project Folder in order to include all the compatible materials available.

4. Add the created Virtual Texture into the Amplify Texture Manager.


Amplify Texture Manager

Virtual Textures

  • Array of Virtual Texture Assets used in the scene, you can set its size and elements at any time.

Targeted Cameras

  • Array of cameras that will be able to stream and view virtualized content. For performance reasons, only the active camera should be listed. By default, AT will use the active camera, this option is useful for multi-camera setups. For most projects, unless you encounter specific issues, you wont need to add your camera to the array.

Multi GPU

  • Here you can set the amount of GPUs used for Alternate Frame Rendering (AFR).

Editor Runtime

  • Values set here apply only to the Unity Editor, the runtime values are set in the Amplify Camera Component.

Cache Size

  • Streamed Page Size directly correlates to VRAM used, think of it as an overall quality setting.

Pages Per Frame

  • On lower end devices, lowering this value will attenuate CPU usage.

Streaming Threads

  • Direct control of working threads.

Pre Pass Width/Height

  • Amplify Texture 2 uses a pre-pass method in order to determine which tiles to stream.

Auto Pre Pass Dimensions

  • Overrides the values above.

Pre Pass Fov/Scale (Pixels)

  • You can set a higher Fov value in order to stream more adjacent tiles; adjusting the Fov will not alter the visual representation of the Fov in the Unity Camera Component.

Auto Pre Pass Fov Dimensions

  • Overrides the values above.

Mip Bias

  • A positive bias makes a texture appear extra blurry, while a negative bias sharpens the textures. Think of it as Sharpness based on distance, closest to farthest tile.

Debug Display

  • Here you can toggle the debug view for Cache, Table, and Pre Pass.

5. The next step is to create an Amplify Texture Camera.


6. Alternatively you can add the Amplify Texture Runtime script to your own camera.


Amplify Texture Runtime

Cache Size

  • Streamed Page Size directly correlates to VRAM used, think of it as an overall quality setting.

Pages Per Frame

  • On lower end devices, lowering this value will attenuate CPU usage.

Streaming Threads

  • Direct control of working threads.

Pre Pass Width/Height

  • Amplify Texture 2 uses a pre-pass method in order to determine which tiles to stream.

Auto Pre Pass Dimensions

  • Overrides the values above.

Pre Pass Fov/Scale (Pixels)

  • You can set a higher Fov value in order to stream more adjacent tiles; adjusting the Fov will not alter the visual representation of the Fov in the Unity Camera Component.

Auto Pre Pass Fov Dimensions

  • Overrides the values above.

Mip Bias

  • A positive bias makes a texture appear extra blurry, while a negative bias sharpens the textures. Think of it as Sharpness based on distance, closest to farthest tile.

Debug Display

  • Here you can toggle the debug view for Cache, Table, and Pre Pass.

7. Finalizing the scene setup.

Automatic Conversion

Amplify Texture 2 provides a simple method of automatically converting your standard Unity scene into an amplified version or vice versa. Alternatively, you can setup your scene as you would with any other shaders and trigger the Virtual Texture build process manually.

After setting up AT2, simply open the Tool window and click on “Unity to Virtual”. That’s all you need to do in order to amplify your existing scene


Manual Conversion

Alternatively, you can directly add your materials as you would with any other shaders and simply trigger the virtual texture build when required. By applying a Amplify Texture compatible shader and saving your scene, Amplify Texture 2 will automatically build the required virtual textures. Applying or creating virtualized Unity materials follows the same steps as Standard Materials, the only difference being the shader used.


Likewise, using third party shader frameworks is just as simple.


In Unity 5(1), after importing the shader package the legacy Unity 4 shaders will still be available for use. Do note that Unity 5 virtual textures can only be used with the new Standard(Metallic)/Standard Specular shaders, for legacy Unity 4(2) shaders use the Unity 4 virtual texture preset.



Installation & Update Issues

When upgrading from very early development builds we strongly recommend doing a complete re-install. A new installation will ensure that Amplify Texture 2 performs as expected.

1. Close Unity and Backup any custom data.

2. Delete the Amplify Texture folder [PROJECT]/Assets/AmplifyTexture

3. Delete the native AT2 DLLs AmplifyTextureNative.dll and AmplifyTextureNativeEditor.dll, both present in [PROJECT]/Assets/Plugins/x86 and the /x86_64 folder.

4. Delete the AT2 Cache Folder [PROJECT]/Library/AmplifyCache

5. Follow the installation instructions in chapter 1.

Installing the full version over the trial version with your scene open may cause some Unity errors related to native plugins. To avoid these, unload your scene – or shutdown Unity – and delete any Amplify Texture related DLLs in the “Assets/Plugin” folder – where the native plugins reside – before loading up your project again importing the new package.


Do not install Amplify Texture over our older product “Amplify Virtual Texturing” or “Amplify Texture 1”, this will certainly cause technical issues. Only one of the plugins may be used at any time.

We advise you to always use the latest version of Amplify Texture 2.

Abnormal Third Party Materials

1.Check if the third party package version matches the provided AT2 package.

2.Make sure the Virtual Texture is using the correct Preset and that the required channels are active; Diffuse, Specular, Normal etc.

Keep in my that in Unity 5 the legacy AT2 shaders use the Unity 4 Preset; the Unity 5 Presets are reserved for the new Standard and Standard Specular Setup shaders.


Debug Information

1. Runtime debug information can be enabled in the Amplify Texture Camera component. Visible only during Play mode using the active camera. 1 – Texture Tiles, 2 – Culling Pre-Pass, 3 – Page Table.


2. Editor debug information can be enabled in the Amplify Texture Manager component . Visible only in the editor Game window during edit mode using the active Editor windows view camera. 1 – Texture Tiles, 2 – Culling Pre-Pass,


Common Pitfalls & Possible Solutions

Black Scene without textures

  • Possible incorrect cull mask setup, check the cull mask options in the Amplify Texture Manager component. Non-virtualized materials/object layers should be removed from the selection.

Missing page file warnings

  • The virtual texture was not built or is empty due to miss configuration or other possible issues.

Material search folder warnings or virtual texture not building

  • Check if the virtual texture is pointing into the correct folder(s).

Virtual texture not updating

  • There were significant shader changes, “Force Update Materials” in the virtual texture inspector panel. In some cases if the problem is not solved users should rebuild the virtual texture.

Textures are blurred during play

  • Check if the active camera has the Amplify Texture Runtime component and the state (on/off). If the component is off check the log for possible errors.

Textures are blurred when occluded by particles or semi-transparent materials

  • Add all non-virtualized materials, such as particles for example, to a specific layer and disable it in the Amplify Texture manager culling mask options. The non-virtualized semi-transparent materials block the pre-pass process used to determine which materials to stream.

Incorrect normal maps, color inconsistencies

  • Do not use any of the Unity image tools such as “normal map from grays” and do not use the Unity automatic CMYK to RGB conversion.

Unexpected code issues on existing projects with previously working AT2 non-source code builds

  • As of Alpha 32 the full AT2 version includes source code that might conflict with some of your existing Classes.

If you are still experiencing AT2 related issues, please contact support@amplify.pt with the Log Information (if available), Unity & AT2 Version, Render Mode, DirectX Version and OS Information; any additional information would be extremely helpful in our debug process.

Warnings & Error handling

When an error occurs or you cancel the Virtual Texture build process, Amplify Texture will auto-deactivate by disabling the Manager component.


While Amplify Texture 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 Manager was probably deactivated for some reason and you should have a look at your console to see if any errors were thrown by AmplifyTexture.


To reactivate Amplify Texture goto your scene Hierarchy, select your “AT » Manager” object and activate the “AmplifyTextureManager” component listed in the Inspector.



Some warnings will require user action in order to continue.


This warning appears when the default search folder is not set in a used Virtual Texture; to proceed, simply add the appropriate folder and rebuild the Virtual Texture.

  • Make sure that all warnings or errors are fixed before reactivating the Manager.
  • If an incremental build was canceled, it will be resumed after reactivation.

How To Convert Your Own Shaders

You can convert any of your existing shaders to support texture virtualization, except semi-opaque/transparent. We provide a conversion pack to demonstrate how a regular shader like “Bumped Specular” can be adapted to work with virtualized textures.


Amplify Texture 2 – Shader Conversion Pack: Download

Third Party Physically Based Shaders

Using compatible third party shaders with Amplify Texture 2 is extremely simple and quick to setup.

1. Import your preferred third-party package, Alloy, Skyshop or Lux. Be sure to use the latest version made available by the developer; using older versions may cause some shaders to display incorrectly.

2. Double-click on your package of choice located in “\AmplifyTexture\ThirdParty\” in order extract the AT2 compatible shaders. After extraction, you should see a folder with the same name as the third-party shader package.


Note: We do not recommend moving the created folders at this stage, however, you may do so if you keep all folders at same level.

e.g. If you moved the Marmoset Folder from the Asset Folder root to “Assets\External Frameworks\”, in order to avoid possible issues, you would have to move the Amplify Texture folder as well.

3. Create a Virtual Texture using the preset required and activate the required channels. e.g. Skyshop Preset + Specular Layer, we will be using a Bumped Specular Material as an example.


4. You are now ready to use third-party amplified shaders; simply select the shader and apply as you would with any other standard shader. Do note that depending on how you organize your folders the shader location in the Material Dialog might change; below is an example of the extraction result in step 2; “\AmplifyTexture\ThirdParty\”.


Tessellation & Displacement Support

Amplify Texture 2 supports Virtualized Displacement and Tessellation, to take advantage of this technique simply set your Unity Project Player Settings to DX11 and apply the AT2 Tessellation Shader to your Material.


Be sure to use appropriate texture padding, especially if you are using Multi-Tile Uv collections. If you notice displacement seams on your model, insufficient padding is probably the cause.


If recreating the texture is not an option you can always expand the texture edges in order to approximate padding. Manually with the Photoshop Minimum and Maximum filter or with Solidify.

Solidify for Photoshop: Windows Mac

Recommended Texture Padding

128×128 – 2px
256×256 – 2px
512×512 – 4px
1024×1024 – 8px
2048×2048 – 16px
4096×4096 – 32px
8192×8192 – 64px
16384×16384 – 128px

Transparent Surfaces and GUI/HUD Elements

Semi-opaque or Transparent surfaces cannot be virtualized and these surfaces may block virtualized surfaces’ texture tiles from being streamed. For example, when using GUI/HUD or similar elements, Particle System or other assets with a transparent materials, 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 because the default Manager’s “Culling Mask” is set to include only the Default layer.


You can also solve this problem by creating a new layer specifically for virtualized surfaces. Then setting this Layer on all virtualized objects and changing Manager’s “Culling Mask” to include only that layer, exclusively.


Note: Only virtualized surfaces need to be “seen” by Amplify Texture.

Artistic and Technical Considerations


  • 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 will 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. E.g. match diffuse map size to normal map to avoid wasting space.
  • When using Multi-Tile UV collections, avoid using special characters in your filenames. Some non-alphanumeric characters may throw off the detection process, instead try to use simple naming conventions. e.g. “Character1Diffuse.1001.tga”, “Character1Normal_x0_y0.tga”, “Character1Occlusion_x1_y1.tga”
  • 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.

Culling Mask

This plug-in works by using analyzing surfaces visible from the camera in order to select which tiles to load from the large virtual texture. More often than not, however, these surfaces may be blocked by transparent decals, particles, vegetation, or even partially covered by fully opaque or cutout/alpha-test surfaces. When this happens, due to this technique’s inability to handle transparent objects or multiple layers of opaque surfaces, the system will not be able to select and stream the correct pages, usually resulting in blurry tiles.

Amplify Texture provides a mechanism to prevent surfaces using regular materials from interfering with tile visibility analysis. This mechanism is provided by setting the Culling Mask field, in the Manager, to a value that identifies only surfaces that have been virtualized (contain Amplify Texture-compatible materials). Additionally, you may find a tool in the “Window/Amplify Texture/Tools” menu that will automatically traverse the whole scene and assign a specific layer to these virtualized/Amplified objects. After assigning a specific layer to these objects, and setting the Manager’s Culling Mask to the same value, these objects and their surfaces will be exclusively analyzed by the system without interference from regular Unity surfaces.

Multi-Tile UV Workflow

Multi-Tile UV workflows allow you to take your texture resolution into unrivaled levels of detail. Other than the increase in possible quality and overall texel density, this workflow brings a multitude of improvements regarding performance and management of texture collections.

Performance is key, you can take advantage of Multi-Tile UV workflows even if you are not aiming at extreme resolutions. Any texture tile collection, regardless of the number, will be considered to be a single texture by Amplify Texture 2. As you can imagine this brings fantastic opportunities for scene optimization without compromising texture quality.

Using Multi-Tile UV collections with Amplify Texture 2 is extremely simple. Our technology will automatically batch entire collections, be it MARI UDIM tiles, Zbrush, Mudbox or compatible naming conventions.

Most mainstream authoring software supports multi-tile uv’s. In very simple terms, it simply means that you can use more than 1 texture per material ID. Take a simple character for example, in the past if you wanted to use 1 texture for the body and 1 texture for the head, you would end up with 2 draw calls and wasted texel space, not to mention the added work and possible issues of dividing the actual mesh. With Amplify Texture 2 you can go beyond the usual 0,1 UV space without compromising performance.


The possibilities are endless, imagine adding hundreds of 16k tiles to a terrain, batching dozens of textures in an entire set of shared materials for a given large level down to less than 10 texture draw calls; you are free from the usual limitations.

1. To use a texture collection, simple add the first tile to your Amplify Texture compatible Material and hit CTRL-S to save the scene. All the tiles will be automatically added to the virtual texture.


Note: Amplify Texture 2, like MARI, fully supports overlapped UV quadrants. (UV clusters/ across several tiles). Dividing your UV’s into isolated tiles is not mandatory.


When using the Amplify Texture 2 Terrain Shader, Unity Terrains will automatically use Normals and Color Multi-Tile Collections without needing to manually adjust the UV’s.


Users can still use Terrain Displacement Maps (RAW) but they will not be virtualized. Terrain support is currently in development, more features will be added in the future.


External Multi-Tile Bake Tools and Additional Resources

Many authoring software developers have already expanded on their Multi-Tile UV support and functionalities. In this section, we briefly cover, not in any particular order, some of main suites used across different fields. From Autodesk 3ds Max to Maya & Mudbox, Pixologic Zbrush, The Foundry MARI & Modo, 3D-Coat, World Machine and Global Mapper.


3ds Max

Multi-Tile UV Bake Tool for 3dsMax: This Tool is free for all Amplify Texture 2 users and will be included in the AT2 Unity Package.

Multi-Tile UV Bake Tool: Manual

Multi-Tile Bake Tool

  • Supports all rendering engines, vanilla and external, Vray, Brazil etc.
  • Any image format, including Exr and HDR.
  • Perfect for games, architectural previsualization and other simulations.
  • Fully supports MARI UDIM, Zbrush and Mudbox Tile export.
  • Takes all bake information directly from pre-set Render To Texture settings.
  • Automatically scans for available tiles, bakes and names collections accordingly to tile type and UV position.
  • Multi-Object automated batch bake.
  • Includes several override options, such as collection texture and padding size, UV bake channel, folder scheme etc.
  • Experimental tools for Post-Bake UV transfer, auto-tile generation (automatic Flatten and Pack) and texel density override.


Maya offers more flexible creation and bake tools when compared with 3ds Max. Although possible, the Multi-Tile bake process is mostly manual.



Maya Multi-Tile UV: Quick Start Tutorial]

Third-Party Scripts

Vray Dirt Bake by Andrew Kin: Homepage - Download

MARI UDIM Bake Tool by Will Earl: Homepage - Download


Mudbox fully supports Multi-Tile UV Mapping, sculpting, texturing and baking of tile collections; and it even supports interchangeable Ptex – UV bakes.


Tutorial Mudbox Multi-Tile UV: Quick Start Tutorial


MARI is the industry standard for advanced, non-destructive, 3D Paint. Built around the concept of Multi-Tile UV and texture virtualization, it fully supports all required operations, including interchangeable Ptex – UV bakes.



MARI: Learning Resources


MODO combines powerful animation, sculpting, effects and rendering in a next generation 3D modeling integrated package. A all-in-one industry leading solution, from hobbyist to VFX Powerhouses, MODO is your gateway into professional level, affordable tools.



MODO: Learning Resources

MODO Baking UI Toolkit: UDIM Workflow

MODO: UDIM Workflow


Zbrush fully supports Multi-Tile UV Mapping, sculpting, UV Generation with UV Master, texturing and baking of tile collections.


Export is easily accessible via the Multi Map Exporter; in order to use Multi-Tile UV in your meshes simply use UV Groups, found under Polygroups.


Manual Reference: Multi Map Exporter Multi Map Exporter: Reference PDF

3D Coat

3D-Coat is a all-in-one toolbox for sculpting, texturing and retopology.



Multi UV: Overview

World Machine

World Machine is an extremely powerful suite for procedural terrain generation, simulations of nature eroding processes and interactive editing. You can build and export high resolution heightfields, textures and meshes; full integrated tile export support.



World Machine: Manual

Global Mapper

Global Mapper is an affordable and easy-to-use GIS Data processing application that offers access to an unparalleled variety of spatial datasets and integrated tile export support.


Note: In order to export collections compatible with AT2 or similar naming conventions some tile export options will have to be adjusted.

    1. Specify the pixel size per-texture tile exported.
    2. Separate Column/Rows.
    3. Numbered export.
    4. Start at 0 with prefix “x”.
    5. Start at 0 with prefix “y”.
    6. Do not prepend 0s.
    7. This is one of the most important steps, without it tile collections will not be exported properly.

The same applies when adding grid areas to your workspace.



Global Mapper: Tutorials

World Composer

World Composer is a great way to quickly extract data sets from the Microsoft Bing Map service. You can easily extract Heightmaps and Colormaps up to 16kx16k pixels; do keep in mind that AT2 only supports the exported image result from World Composer, single images or compatible _x _y tile sets.


Product Page

World Composer: Unity Asset Store

VR Devices & Multiple Camera Setups

Amplify Texture 2 fully supports VR devices. In addition, AT2 is fully configurable and allows for flexible multi-camera setups.


Add the Amplify Texture Camera component to the Main Camera (eye). Alternatively, you can add the Main Camera (eye) to the camera list in the Amplify Texture Manager, the AT2 camera component will be automatically added.


Add the Amplify Texture Camera component to the Main Oculus camera. Alternatively, you can add the Main Camera to the camera list in the Amplify Texture Manager, the AT2 camera component will be automatically added.

Compatible Devices

Add the Amplify Texture Camera component to the Main Camera responsible for drawing your game view, it’s usually the camera used for standard image effects. Alternatively, you can add your Main Camera to the camera list in the Amplify Texture Manager, the AT2 camera component will be automatically added.

Multiple Camera Setups for Legacy Hardware or Custom Requirements


In order to use multiple cameras, simply set the number of cameras required and add them to the appropriate slots in the Amplify Texture Manager.


Note: Each active listed camera will independently stream from the available virtual textures; as a result, although it may not be an issue for 2 cameras, as you increase the number, so will the necessary computing resources.

Consider the following; if both cameras point roughly to the same area, in other words, if you could fit the entire area covered by 2 cameras into a 3rd camera with a slightly higher FOV, it would be best to use the 3rd camera for Virtual Texture Streaming, processing requirements would be considerably reduced. Camera position offset exaggerated in the image below as an example.



When a fatal error occurs within Amplify Texture, an error dump file is generated containing critical information to help solve the problem. You may find this file in the root of your assets folder — e.g. “YourProject/Assets/amperr.dump” — after a critical error. Please include this file when reporting fatal errors.

To file error reports, questions or suggestions, feel free to get in touch directly.

Legacy Updates (2.0.3 a32)

Updating from version version 2.0.3 a32 or higher

As of version 2.0.3 a32, we simplified the process of updating Amplify Texture 2. From Trial to Full, or simply when updating your current full version. The following instructions apply both to Unity 4.6 and Unity 5.

    1. Disable the Amplify Texture Manager component – or create a new empty scene.
    2. Close and reopen Unity.
    3. Import the new package.
    4. The update is complete and ff you followed all the steps required, all the component connections should still be active.

Updating from version version 2.0.3 a31 or lower

Updating the trial or full version to the latest amplify texture 2 build, version 2.0.3 a 32 and up involves a few manual steps. The following instructions apply both to Unity 4.6 and Unity 5.

    1. Disable the Amplify Texture Manager component – or create a new empty scene.
    2. Close Unity.
    3. Delete the native AT2 DLLs AmplifyTextureNative.dll and AmplifyTextureNativeEditor.dll, both present in [PROJECT]/Assets/Plugins/x86 and the /x86_64 folder.
    4. Reopen Unity.
    5. Import the AT2 new package.
    6. If you followed all the steps required, you are now ready to take advantage of the latest AT2 version and all the great features available. Keep in mind that updating from older versions to 2.0.3 a 32 or higher will likely break your component connections.

Third Party Libraries

This software uses the FreeImage open source image library. See http://freeimage.sourceforge.net for details. FreeImage is used under the FreeImage Public License, version 1.0. This software uses jpeg-compressor, by Rich Geldreich. See http://code.google.com/p/jpeg-compressor for details