Fantasy Adventure Environment Documentation

Fantasy Adventure Environment

Fantasy Adventure Environment
Author: jonathan
Version: 1.3.0
Dated: 30 May 2017

Fantasy Adventure Environment #

Thank you for purchasing the Fantasy Adventure Environment!

Please consider rating the package through your download list or leave a review at the store page once you’re familiar with it.

Your feedback is instrumental to the future of this package!

Rate     Review

Feedback and suggestions can be made in the forum thread:

This manual is intended to clarify the use of the package.

Suggest edit
Last updated on February 17, 2018
0 of 0 users found this section helpful

Version 2 #

A revision of this package is in the works, which presents the opportunity to make some major changes and improvements. This will be a free update for existing users.

Most, if not all of this will be a creative process. When this will be available is currently to early to indicate.

Removal of Substance materials

Due to the vastly different workings of Substances between Unity 2017 and 2018, and the liable state of the plugin, Substance materials will be removed from the package. In their stead, static textures will be created. These are still editable through image processing software such as Photoshop and Gimp.

Source files (.sbs) for the terrain materials will be made available on Gumroad for a small fee.

Revised demo scene

A work-in-progress preview:

via Gfycat

A larger demo scene opens the door for new tree types, and possibly other assets.

Wind animation improvements

Trees will appear to bend in the wind, resulting in a more convincing appearance.

The WindController script will be equipped with a internal delay, allowing values such as wind speed and strength to slowly adapt to any changes, rather than abruptly.

Suggest edit
Last updated on November 1, 2018
0 of 0 users found this section helpful

Compatibilty #

This minimum supported version at this time is Unity 2017.1

Unity 2018.1 and newer
These versions work without any issues. Please note that there is a 2018.1-specific version of the package, in order to get this, download and import the package from within the editor running 2018.1 or newer.

VR has been tested with Single-Pass Stereo Rendering where no issues have been encountered. LOD transitions do not work correctly, which is a known issue in Unity. While the assets are compatible with VR, you’ll still need to keep an eye out for performance. For instance, using the demo scene directly in a VR project would not be ideal.

The included water shader does not work properly. This is, however, not the case for the actual Stylized Water Shader package.

Mobile platforms, WebGL and DirectX 9 are not supported.

The package is tested on a late-2011 Macbook Pro. Unfortunately, this device is one generation behind of Metal support, so I cannot test this properly. OpenGL runs without any issues.

Playstation 4 and Xbox One remain untested since dev kits are extremely hard to obtain. Every console user reported to have no issues on these platforms. If you’re developing for these platforms and find yourself having issues, please get in touch as I’d be happy to work towards a solution!

Nintendo Switch
While technically it’s possible to use the assets on a Nintendo Switch, performance will be poor as it’s close to mobile hardware. Of course this depends entirely on the utilization, so it’s difficult to determine.

Asset Store

Compatible packages:

  • Vegetation Studio (Shader integration with Pro version)
  • Gaia
  • Micro- or MegaSplat

Incompatible packages:

  • uNature
Suggest edit
Last updated on November 3, 2018
4 of 4 users found this section helpful

Support #

Should you run into any issues or have questions/feedback, please do not hesitate to reach out! I will do my best to respond as soon as I can.

Unity forums thread:


Twitter: @_staggart_

Suggest edit
Last updated on September 27, 2018
1 of 1 users found this section helpful

Refunds #

Please refer to our refund policy

Suggest edit
Last updated on May 30, 2017
1 of 1 users found this section helpful

Getting started #


Import the Unity package through the Asset Store download manager (Found under Window->Asset Store). Please be sure to download the assets in your current Unity version, as the package has been submitted separately for 2017 and 2018 and up. Meaning if you upgrade from Unity 2017 to 2018, you will have to re-download and import the package.

You may receive a warning message about obsolete APIs, it is completely safe to run the API updater.

In Unity 2017.3, there will be several warnings reading the following:

warning CS0618: `UnityEngine.ProceduralMaterial’ is obsolete: `Built-in support for Substance Designer materials has been deprecated and will be removed in Unity 2018.1. To continue using Substance Designer materials in Unity 2018.1, you will need to install a suitable third-party external importer from the Asset Store.’

This is harmless, and unfortunately not something that can be solved in this version.

There are several demo scenes included:

FAE_Demo1: The main demo scene, demo scene, which is intended to demonstrate the practical uses of the assets. In order to start building your world, you can browse the prefabs in the /Prefabs folder and use them as you see fit.

FAE_AssetOverview: A scene with all the assets lined up and their LODs

FAE_RocksDemo: All the rock assets showcased, and some best practice examples.

FAE_CliffCoverageDemo: A demo scene which makes use of the cliff coverage shader, and a demonstrates the use of a “coverage map”.

Unity terrain

It’s important to note that the vegetation items will not work on the terrain as “Detail objects”. This is because they have LODs, which is incompatible. It is also undesirable to use the assets in this way, since the shader would be overridden by the built-in terrain grass shader.

Instead, add the vegetation items as “Tree Objects”. This also applies to assets like Gaia or Map Magic.

I highly recommend using tools such as Easy Scatter or Mesh Brush, which have a lot more options for distribution.

Other topics

Suggest edit
Last updated on November 3, 2018
3 of 3 users found this section helpful

Substance in Unity 2018 #

Substance materials will be removed in version 2.0 of this package. It is not recommended to use them at this time.

When downloading and importing the package in Unity 2018, all the Substance materials have been removed from the package.

If you’d like to use Substance materials, you are required to install the Substance in Unity plugin first. Only version 2.1 is supported.

Once, you have this installed, go to Help->Fantasy Adventure Environment, the following window will appear:

(If this menu item is not available, you’ll have to redownload the package to get the 2018-specific version of the package)

Here you can choose to switch between regular materials (using regular textures) and materials using Substance-generated textures.

Suggest edit
Last updated on November 3, 2018
1 of 2 users found this section helpful

Environment set up #

In order to recreate the demo scene’s environmental settings, the following steps can be taken:

Go to Window/Lighting

  • Set the Ambient Source to a white color in the Lighting tab found under Window/Lighting.
  • Enable Fog, set to Exponential with a value of 0.007
  • Assign the FAE_Skybox material to the Skybox field.
  • Disable Precomputed Realtime GI

Directional Light:

  • On your directional light, assign the FAE_Lensflare asset in the Flare field if you wish.
  • Control the intensity of the sun shaft effects through the Directional Light’s color’s alpha channel

Post effects:

  • Grab the Post Processing Stack package from the asset store
  • Add the “PostProcessingBehaviour” script to your camera and assign the included FAE_PostProcessingProfile profile asset.


  • Add a WindController object to your scene, for the wind animations on the trees and vegetation to work. You can do so through the menu: GameObject/3D Objects/FAE Wind Controller
  • Select your terrain and add the PigmentmapGenerator script. The first time, the pigment map will automatically be generated. If not, press the “Generate” button.
  • (Optional) Add a CliffAppearance object to your scene, which will allow you to modify the material properties of all rocks at once. You can find a prefab for this in the Fantasy Adventure Environment/Prefabs/Effects folder, which is pre-configured with the default rock materials.
  • (Optional) Look for the FoliageBender prefab in the /Prefabs/Effects and drag it into your player, move the object to the feet/base of the player. This will make the grass and foliage bend away from this position. Currently, you can only have one of these objects active at a time.

More detailed information on these features can be found in the scripts section.

Suggest edit
Last updated on February 20, 2018
5 of 5 users found this section helpful

Features #

Suggest edit
Last updated on May 30, 2017
1 of 1 users found this section helpful

Wind controller #

The shaders used for both the trees and the vegetation utilize a custom wind animation method. In order to control this effect a “FAE_WindController” script component must be active in the scene. You can find a preconfigured prefab under the Prefabs/Effects/ folder. Or you can create one through the menu: GameObject/3D Objects/FAE Wind Controller

See the scripts section for detailed information about this script.

Currently, only the Wind Speed parameter can be changed at runtime. Other parameter may induce jittering during the value changes.

Suggest edit
Last updated on May 1, 2018
0 of 0 users found this section helpful

Pigment map #

This script must be added to your terrain object. It generates a color map texture (pigment map) and heightmap (stored in the alpha channel) for the FAE/Grass shader (see shaders section). Which can be utilized in the material to tint the grass by the terrain’s color and have the height taper off where there is no grass texture painted.

Unfortunately only one texture is supported as a height source at the time. So if you have multiple textures on your terrain that represent grass, it’s best to set the dropdown to “None” and not use the height feature altogether.

This script is compatible with any third-party terrain shader, and will not impair their functionality.

Attaching this script to your terrain will load its pigment map on startup. So it’s possible to be used in multiple scenes. Do note that only one pigment map can be assigned to the grass shader at a time.

Once this map is generated, you can adjust the minimum and maximum grass height in any material using the FAE/Grass shader, as well as the pigment map’s influence on the material.


Multi-terrain setups
To render a pigment map from multiple terrain tiles, add the script to an empty GameObject (preferably the parent object of your terrain tiles). Please note this object must be active in a build, in order to load and assign the pigment map to the grass shader.

Once you’ve done this, a list will appear in the inspector, allowing you to add the terrain objects.

Mesh terrains
The script also works with mesh terrains. However, like Unity terrain’s, the size must be uniform, and the pivot point must be in the corner. If a mesh terrain fails to meet these requirements the pigment map will not line up accordingly.

When using a mesh terrain, option to flip or rotate the pigment map will be available, in case your mesh’s UV’s are set up differently.

Suggest edit
Last updated on September 14, 2018
0 of 0 users found this section helpful

Foliage bending #

The Foliage and Grass shaders support basic player interaction. In order to enable this, the “FoliageBender” script component must be attached to a GameObject in the scene, parented to the player. You can only have one of these scripts active at a time.

Once added, move it to the base/feet of your player:

You can grab the “FoliageBender” prefab found under Prefabs/Effects/.

Materials using the foliage and grass shaders feature a “BendingInfluence” parameter which determines how much influence the Grassbender has on the material.

Vegetation Studio

The grass shader supports Vegetation Studio’s TouchReact system. To enable this on the grass material check the “Use Vegetation Studio TouchReact” checkbox. For further information, please refer to the documentation:

Suggest edit
Last updated on May 1, 2018
2 of 2 users found this section helpful

Cliff appearance #

The CliffAppearance script allows you to modify multiple cliff/rock materials at once. The settings are are loaded as soon as the object is enabled. So it allows you to quickly apply different settings, or save the object as a prefab to serve as a preset.

Essentially this means you can have different looks per scene, while using the same materials.

By toggling the “Coverage” shader you can add snow, sand or grass to your rocks. Through the use a coverage map, you can determine where on the terrain this effect should show:

You can make such a map by taking a (rough) top-down screenshot of your terrain and bring it into an image editing program. By painting over it with a black/white map (black meaning no coverage, white meaning fully covered) the effect can be centralized. You should save this to a texture and assign it to the “Coverage map” slot in the inspector.

Tip: Photoshop PSD files work in Unity (they are converted during the build process).

Currently, it is not possible to have multiple textures on the rocks. For instance grass in one place, and snow in another. As this would require the shader to hold a lot of texture maps, which is taxing on performance. Instead, you’d have to use a separate CliffAppearance object with different material instances assigned to the cliffs.


Suggest edit
Last updated on November 3, 2018
1 of 1 users found this section helpful

Fog sheet #

The fog sheet is a quad mesh which fades out/in based on its distance from the camera. It can be used to highlight certain areas (push/pull concept) or to enunciate a silhouette.

The shader has an optional texture slot, to add, for instance, a cloud texture.

You can see how it’s being used in ABZU in the following GDC talk: (17:57 mark)

Suggest edit
Last updated on August 7, 2017
2 of 2 users found this section helpful

Scripts #

All scripts are in the “FAE” namespace.


The shaders used for both the trees and the vegetation utilize a custom wind animation method. In order to control this effect a “FAE_WindController” script component must be active in the scene. You can find a preconfigured prefab under the Prefabs/Effects/ folder.

For ease of use, you can find a prefab for this in the Fantasy Adventure Environment/Prefabs/Effects folder.

By keeping this object in the scene, it is possible to have different wind settings per scene. However, it is safe to remove it, as the settings will be saved in the shaders.


Used to modify the shader properties of the FAE/Cliff shader across multiple materials.

Attach this script to any object in your scene and assign the materials using the FAE/Cliff shader. The values set in the inspector are applied as you change them, or whenever the object is enabled.

For ease of use, you can find a prefab for this in the Fantasy Adventure Environment/Prefabs folder.

This could be used to, for instance, load different settings based on the scene. You could save the object as a prefab to use it as sort of a preset.


Tells the FAE/Foliage and FAE/Grass shaders from which position in the world it should bend away from, and by which strength/radius.


Suggest edit
Last updated on November 3, 2018
0 of 0 users found this section helpful

Shaders #

All shaders have been made using Amplify Shader Editor, and thus can be modified using it. Please make sure you are using the latest version from as this can avoid a lot of headaches.

Please note that I cannot provide support for the use of ASE and modified shaders are no longer subject to user support.

The shaders included in the package can be found under the “FAE” section in the shader dropdown list.


Used by the grass. Features light transmission, wind animations, bending and the heightmap/pigment map functionality.


Used by the vegetation. Features color variation through wind, bending, light transmission and wind animations

Tree Branch

Shader used on the tree branches, which enables wind animation and stylized rendering.

Tree Trunk

Simple PBR shader, uses the Albedo map’s alpha channel for the roughness.

This shader is required on a tree for the global wind motion to work.


Features a tri-planar projected color map, and detail normals. Roughness is sampled from the albedo map’s alpha channel.

Cliff Coverage

Same functionality as the Cliff shader, but with the addition of a coverage feature


Opacity is controlled by a distance factor from the surface, to the camera. Optional texture slot.


Used with the Sunshaft/Long and Sunshaft/Short assets.

Cross-pans a sun shaft texture horizontally. And features distance and intersection fading. The Directional Light’s color’s alpha channel controls the intensity of the effect.

Sunshaft particle

Does much of the same as the Sunshaft shader but is tailored to be used with a ParticleSystem. Where the “Color over lifetime” feature can be used to fade out the sunshaft through the alpha channel.

The Directional Light’s color’s alpha channel controls the intensity of the effect.


A simplified version of the Stylized Water Shader, considered to be a “lite” version of the complete package. Limited in functionality and customization.

Suggest edit
Last updated on November 3, 2018
0 of 0 users found this section helpful

Vegetation Studio #

The package assets have been tested with Vegetation Studio. Since version 1.0.5 compatibility was added.

Vegetation Studio makes excellent use of GPU Instancing (available since Unity 5.6), which allows you to create extensive dense vegetation at a fraction of the performance cost.

As of version 1.2.1, Instanced Indirect rendering is supported for all vegetation.

This frame is merely 140 drawcalls.

The grass shader supports Vegetation Studio’s TouchReact system. To enable this on the grass material check the “Use Vegetation Studio TouchReact” checkbox. For further information, please refer to the documentation:


Suggest edit
Last updated on November 3, 2018
1 of 1 users found this section helpful

Polycount and LODs #

Many users might like to know the polycount of the various assets before purchasing, hence this list containing the polycount and consequent LODs.

Note: All trees are saved as Unity asset files, because they were modified through script in order to bake wind information.


Asset name LOD0 LOD1 LOD2
Tree_A 2497 1871 930
Tree_B 1912 1472 752
Tree_C 2321 1737 952
Birch_A 1107 963 891
Birch_B 469 242 164
Birch_C 745 203 167
Spruce_A 1324 876 312
Spruce_B 1124 720 256
Spruce_C 1068 708 248
Pine_A 1048 608 436
Palm_A 884 408 180
Palm_B 910 540 288
Palm_C 1214 552 336
Willow_A 2675 1496 660
Willow_B 3560 1888 1022

Note: All trees have a billboard after LOD2, which is 8 polygons.


Asset name LOD0 LOD1 LOD2
Cliff_A 3994 1996 796
Cliff_B 3994 1996 796
Cliff_C 3994 1996 796
Cliff_D 1994 996 396
Cliff_E 996 496 246
Cliff_F 1994 996 496
RockCluster_A 1160 572 278
RockCluster_B 336 160
RockCluster_C 268
RockCluster_D 156


These items have few to no LODs as the polycount is already low. Flowers are around 12 polygons, whereas their clustered counterparts are around 60 polygons

Suggest edit
Last updated on January 4, 2018
0 of 0 users found this section helpful

Performance Guidelines #

This environment pack was produced for desktop/console platforms, as such the visual fidelity does not come very cheap. Development was done on a laptop with an i7-4700HQ, a GTX765M (comparable to a desktop GTX650) and 8GB of RAM, where the demo scene performed around 40-70fps. On machine powered by a GTX960 it performed around 120fps.

At this time of writing, the average framerate in the downloadable demo is 93 FPS, across +850 reports.


All shaders support GPU instancing, which is available since Unity 5.6. It sees a huge performance improvement. Be sure the “Enable Instancing” checkbox is ticked on the used materials. Using a system like Vegetation Studio is highly recommended.

It’s important to know that Static Batching has been disabled on the tree prefabs. Otherwise GPU Instancing will fail to work.

Occlusion Culling

Also note how in the demo scene, the line of sight is broken at several points:

This is beneficial for Occlusion Culling, which avoids rendering objects that aren’t visible. Thus, reducing the rendering overhead.


Increasing the “Pixel error” value in your terrain settings, also has a huge impact on performance.

Be sure the splatmap (referred to as “control texture” in the terrain settings) is not set too high. If you need a higher resolution it’s advised to split the terrain up into multiple pieces. Rather than using a single 2x2km terrain with a 2048px splatmap, that would be a huge performance killer.

GPU instancing will be disabled for objects painted as terrain trees when light probes are enabled for them. So be sure to disable this in your terrain’s settings.

Vegetation Studio

This package is something I cannot recommend enough if you plan on having a vast amount of vegetation. It fully utilizes GPU Instancing and culls all vegetation with minimal overhead (much faster than Occlusion Culling). All the FAE shaders are supported by this package.

Suggest edit
Last updated on April 3, 2018
1 of 1 users found this section helpful

Troubleshooting #

Unity 2018+ Substance errors

A separate version of the package was submitted for Unity 2018.1 and newer. Re-download and import the package from the Asset Store to grab this version-specific package.

Console errors and warnings related to Substance materials

Since Unity 2018.1 support for Substance materials has been removed. In Unity 2017.3 and 2017.4, related warnings will be shown in the console.

These warnings are completely harmless, and unfortunately not something I can circumvent.

Trees and vegetation turn white and orange in Unity 2017.1 (and newer)

A separate version of the package was submitted for Unity 2017.1, because the shaders require some modification to work. To elevate this issue, re-download the package from the Asset Store in your new Unity version.

Only re-importing the shaders is sufficient!

Shader console warnings

Automatically setting target of LOD_FADE_CROSSFADE to 3.0

This warning automatically occurs when a shader uses LOD crossfading in Unity 2017.1+. This is unfortunately not a something that can be circumvented, but is completely harmless.

GLSL compilation errors on MacOS using Unity 2018.1

This is a Unity bug regarding the internal LOD crossfading shader code. These errors only occur in this Unity version, and only when using Forward rendering. I’ve submitted a bug report for this issue. Unfortunately there is nothing I can do about it solve this.


You might experience some issues with lightmaps, such as black spots. Though, this is not directly attributed to the asset. Since LOD1 and up do not support lightmaps, but are rather lit by light probes you may notice visible popping.

All assets have been optimized for lightmaps since version 1.2.1

Grass is grey

This means the grass material wants to use a pigment map, but there is none available.

Adding the PigmentmapGenerator script to your terrain will elevate this.

If you don’t wish to use this functionality, turn down the “PigmentmapInfluence” parameter on the grass material.

Shadow disappear when camera moves around

This is a general issue with Occlusion Culling, you may have moved things around a lot and will have to re-bake Occlusion for your scene. Baking your scene with a lower “Smallest Occluder” value may solve this.

Object appear completely black

This was a shader issue attributed to OSX or DirectX 9, which has been fixed since version 1.0.3

Suggest edit
Last updated on August 24, 2018
1 of 1 users found this section helpful

Using the shaders with custom assets #

Should you like to use the FAE/Branch shader on a tree outside of this package it must conform to a requirement, namely the Ambient Occlusion (AO). Which must be baked into the mesh’s vertex colors. This is used for shading and animation purposes.

Certain information is required to be baked into a tree mesh’s vertex colors:

Red: Ambient Occlusion
Green: Wind influence
Blue: Thickness
Alpha: Stiffness

Note: As of version 1.2.1 the Blue and Alpha channel were swapped. If your custom tree uses the old layout, check the “Legacy vertex colors” checkbox. This is set to be removed in v1.3.0

Generally any software that can bake Ambient Occlusion into the RGB vertex color channels will suffice. Stiffness (Alpha channel) is less straight forward, since this represents a gradient from the base of the tree, to its tip. This information was calculated and baked using a proprietary tool, which will not be made available to end-users as it pertains source files and some third party source code.

For vegetation assets using the FAE/Foliage shader much of the same holds true. Where the AO information is used to determine which parts are not affected by wind or player interaction. As well as several other shading functions.  


The tree shaders will also work with SpeedTree trees made using the Unity SpeedTree modeler.

To enable the wind animations check the “Sample SpeedTree wind” box on your branch and trunk material. The wind implementation is not the same as the SpeedTree shaders, so the animations you see in the modeler will not be the same, but similar.

Shaders used on the Standard Assets SpeedTree trees


Suggest edit
Last updated on October 17, 2018
1 of 1 users found this section helpful
Suggest Edit