Introducing CTS

The Complete Terrain Shader for Unity 3D

Introducing CTS

Give your terrain the AAA treatment it deserves with CTS, the Complete Terrain Shader for Unity 3D!

A collaboration between environmental and shader specialists Bartlomiej Galas and terrain specialist Adam Goodrich, CTS melds our collective expertise to create a terrain shading system that is Fast, Powerful, and most importantly Easy to Use!

If your terrain is looking a little tired and you want to give it a modern face lift then you have come to the right place!

CTS is a modern AAA PBR terrain shader that gives your terrain a massive facelift. CTS uses the latest shading techniques to remove tiling, increase the color and variation in your environments, and with features like height blending, tessellation, procedural snow, geological banding, detail and global normals, cutouts and color map support can really make your terrains pop!

CTS comes with a professional texture library that can be applied with a click to instantly change the look and feel of your scenes, and works much like the Unity Post Processing profile system and can be tweaked at run time to get your environment just right.

Key Features:

  • 16 PBR texture sets in 1 pass – fast;
  • Standard work flow – compatible & easy;
  • UV Mixing – removes tiling;
  • Detail Mixing – adds interest & reduces tiling;
  • Geological Layering – adds interest;
  • Detail Mixing – adds interest & reduces tiling;
  • Dynamic Snow Cover – with a slider;
  • Dynamic Snow Glitter – with a slider;
  • Dynamic Water Cover – with a slider;
  • Height Blending – relative texture blends;
  • Lite, Basic, Advanced & Tesselation variants;
  • Ambient Occlusion – realistic shadows;
  • Color Maps – enhanced terrain coloring;
  • Grass Maps – tint colormaps from terrain grasses;
  • Cutout Support – on terrain and colormaps;
  • Mesh Support* – light weight alternative to terrain;
  • Profile Based – similar to Unity Post FX;
  • Texture Library – 48 quality sets, 20 helpers;
  • Substance Support** – save time on exports;
  • Seasons & Weather – Rain, Snow & Seasonal variation, easily integrated;
  • Sample swamp and landcape scenes included, excluding 3D models;
  • VR Compatible;

* Mesh support requires terrain based work flow to configure shader correctly.

** Substance support has temporarily been removed from Unity 2018.x version, and will be added again when Allegorithmic release their substance plugin.

Per Texture Control of:

  • Albedo, Normal, Height, Ambient Occlusion;
  • Near and far tiling – reduces tiling;
  • Tinting – matching & seasonal variation;
  • Brightness – texture matching;
  • Smoothness – reflection & wetness;
  • Height blending – relative texture heights;
  • Height depth – relative texture depth;
  • Triplanar – no more terrible cliffs;
  • Detail strength – use it as needed;
  • Geo strength – use it as needed;
  • Snow amount – control snow cover;
  • Snow / Water – angle, height, hardness;
  • Snow / Water tint – vary color by usage;
  • ColorMap strength – near and far;
  • ColorMap masking;

Hardware support:

  • Shader model 3.5+ (basic + advanced);
  • Shader model 4.6+ (tesselation);
  • Direct X 11 / 12;
  • Open GL ES 3.0;
  • WebGL 2.0;
  • Metal;

Shaders are limited by texture array support, and consequently do not support DX9, OpenGLES 2.0 or Web GL1.0.

CTS was created in collaboration by NatureManufacture & Procedural Worlds

Check our reviews and buy CTS:

You can see what our customers are saying and buy CTS on the Unity Asset Store.


Here are some sample CTS applications so that you can get a sense of how they will perform on your computer.

3rd October 2017

CTS Performance, Swamp & Landscape Demos.


Unity Asset Store – Unity Forums – NatureManufacture – Procedural Worlds

Welcome to CTS – The Complete Terrain Shader for Unity 3D. This page shows the basic workflows, and also how to access the help system built into CTS. To see this in action please check the tutorials section.

CTS Overview

The CTS terrain shading system is a Profile based shading system for Unity.

A Profile is a scriptable object that stores the settings and textures used by CTS to shade your terrain. It is used to generate a customised set of texture arrays containing specially packed textures that are uses by CTS to render your terrain.

Once a Profile has been created, it can be applied at any time and the terrain will take on the characteristics and textures that have been defined in that Profile. This is usually an instantaneous update.

Another benefit of this approach is that you can modify Profile in-game and have them persist out of the game back in edit mode, so you can customise everything from the perspective of your user.

CTS Directories

  • Procedural Worlds – Main directory for all Procedural Worlds products
    • CTS – Main CTS directory
      • Demo – Contains 3 demo scenes to test the CTS core functionality
      • Prefabs – Contains prefabs used the demo scenes (comes with a handy little FPS counter that you can use in your project)
      • Profiles – This is where new CTS Profiles will be placed on creation. You can move them later to store them elsewhere.
        • Arrays – Contains the texture array files that are created when baking a CTS profile
        • Materials – Contains persistent terrain materials that are created when disconnecting a CTS profile from a terrain
        • Splatmaps – Contains persistent copies of terrain splatmap data when disconnecting a CTS profile from a terrain
        • Terrain Layers – Contains Terrain Layer asset files created by CTS. These files contain the texture prototype information. You can can configure the Terrain Layer path for each CTS Profile individually.
      • Scripts – Contains the core logic of CTS
      • Shaders – Contains the various CTS shaders used for terrain rendering
      • Substances – Contains extracted textures from substances that you used in a CTS Profile.
      • Terrains – Where materials and global normal maps are created for each terrain in your scene – you can move them later
      • Textures Core – These are the core technical textures which are required for certain features of CTS, for example detail normal maps, geo maps, snow and water textures.
      • Texture Library – A great collection of fantastic textures you can use
    • Framework – Contains shared scripts and libraries used by various Procedural Worlds products

NOTE – You can move CTS around in your project, but the directory structure below should be preserved to prevent potential issues. You must also leave the CTS_ReadMe.txt file in the main CTS directory as this is what is used by CTS to locate CTS in your project.

CTS Workflow

Setting Up Your Existing Terrain For CTS Rendering – First Time

Note: Adding CTS to yout terrain alters your terrain data object. It is recommended to backup your project before just in case anything goes wrong.

  1. The first step to set CTS up on any new terrain is to select Component -> CTS -> Add CTS To Terrain.
    This will iterate though all of the active terrains in your scene and add the CompleteTerrainShader component to them. This component is resonsible for setting your terrain up for rendering through the CTS shaders and applying the profile specific settings to the terrain.
  2. The next step is to select Window -> Procedural Worlds -> CTS -> Create And Apply Profile
    This will create a new Profile in your CTS / Profiles directory, will add the current textures of the terrain into the new profile and apply it to all of your CTS terrains. This is generally quite fast, but the actual speed will depend on the speed of your development environment.
  3. The next step is to configure your Profile. There are a lot of settings that you can fine-tune to make your terrain look beautiful. Please check out the tutorials for more information on this.

Applying An Existing Profile To Your Terrain

NOTE: This will replace the textures in the terrain with the textures in the Profile. Since this alters your terrain data it might be best to backup your project before in case anything goes wrong.

  1. Make sure that CTS has been added to the terrain (see step 1 above). If there is no CTS component on the terrain yet, you can simply add it via Component -> CTS -> Add CTS To Terrain.
  2. Click on the Profile in the Asset Hierarchy – by default the Profiles are stored in the CTS / Profiles directory.
  3. Scroll down to the bottom of the Profile, click the Apply Profile button and confirm the popup. This will apply this Profile to all the CTS terrains in your scene.

Adding Or Removing Textures On Your Terrain (and updating the Profile)

  1. Make sure that CTS has been added to your terrain and that this Profile has been applied to your terrain.
  2. Click on the terrain object and add the new textures in the usual way via the unity terrain inspector.
  3. Open the CTS Profile and Click “Bake Textures” – This will load the textures from the terrain into your Profile and also regenerate your texture arrays.
  4. Please Note: You need to bake the textures again every time you make changes to the terrain textures, especially when adding or removing textures or you might run into visual issues on your terrain.

Editing Textures In Your Profile (and updating the Terrain with the texture changes)

  1. Make sure that CTS has been added to your terrain and that the Profile has been applied to your terrain.
  2. Click on the Profile and update the texture by dragging the texture into the appropriate slot or selecting a different texture via the texture picker.
  3. If the texture is an albedo or normal texture, it will immediately be applied into the terrain. If the texture is used by the texture arrays that are used for terrain rendering in CTS, then the Profile will turn RED.
  4. If the Profile turns RED, then click “Bake Textures” – This will load the textures from the terrain into your Profile, the new textures on top, and then regenerate your texture arrays. You will only see texture changes in your terrain after this has been done.

Adding Weather to Your Terrain

  1. Make sure that CTS has been added to your terrain and that a Profile has been applied to your terrain.

  2. Click Window -> CTS -> Add Weather Manager. This will add a CTS Weather Manager object to your scene. It will also iterate through every terrain and add a CTS Weather Controller to it. The Weather Manager is the central point that sends weather updates to the weather controllers on each terrain.

  3. Change the weather either by script on the Weather Manager, or via the custom interface in CTS. You can control the rain, snow and seasons (tints the terrain based on the seasonal colors you select).

Optimization For Runtime

In your CTS Profile you can find the following settings that help you optimizing the rendering performance during runtime:

  1. Compression Settings – You can select the desired compression format for the CTS texture arrays according to your target platform. Note that changing the compression formats can result in longer texture baking times.
  2. LOD Distance – Controls the distance after which CTS will use a reduced shader system with less details to render distant terrain.
  3. Strip Textures – This option will remove all textures from the terrain at runtime, and run the terrain directly from CTS as a first pass shader. It will reduce gpu memory usage on all terrains, and drawcalls on terrains with more than 4 textures.

Optimizing For A Build

When optimizing your terrain for a build, you can choose to disconnect the profile to minimize build filesize, terrain material creation time and memory profile during runtime:
Disconnecting a profile means CTS will create a persistent material for that terrain, and remove all references to terrain textures and the CTS profile itself.

Disconnecting a profile will:

  • Create a persistent material in the Profiles\Material folder
  • Create persistent copy of the terrain splatmaps in the Profiles\Splatmaps folder
  • Remove references to the CTS profile, normal, color map and cutout mask texture
  • Remove all splatmap prototypes / terrain layers from the terrain
  • Remove all splatmaps from the terrain data object

Connecting a profile will

  • Re-apply the last used CTS profile to the terrain to restore a full editable state again (as before the disconnect)
  • Restore all splatmap prototypes / terrain layers on the terrain (based on the CTS profile info)
  • Restore the profile, normal, color map and cutout mask texture in the CTS component
  • Restore the terrain splatmaps in the terrain data object from the persistent copies

You can disconnect / reconnect via a button on the CTS component on the terrain, or perform these operation en masse with two Window menu entries:

Window > Procedural Worlds > CTS >

Disconnect ALL Terrains
Reconnect ALL Terrains

This system is limited in so far as that it relies on the associated files staying intact between disconnect and reconnect. If you would delete the persistent copies of the splatmaps for example, it is not possible to restore the splatmap again later on reconnect. It is recommended to use this only before/after a build and to back up your project first.

Scripted Rendering Pipeline (HDRP / LWRP) Support

If you plan to use rendering pipelines in your project, you need to install additional packages from the package manager. Please install these packages IN THE EXACT VERSION:

  • Lightweight RP 4.8.0 (for use of the Lightweight Rendering Pipeline)
  • High Definition RP 4.8.0 (for use of the High Definition Rendering Pipeline)
  • Core RP Library 4.8.0 (for use of the High Definition Rendering Pipeline)

Choosing the right version is important, else the shaders will not work correctly! In a project that is using a LWRP / HDRP asset in the Graphics settings, CTS will pick the correct shader automatically upon profile creation. If the rendering pipeline is switched in an existing project, you just need to select the terrain in your project hierarchy or re-apply the CTS profile to update to the correct shader type.

Substance Support

CTS comes with built in support for Allegorithmics / Adobes Substance sytem. In Unity versions with native Substance support (below 2018.1) you can just assign substances in the Profile texture slots. In Unity versions without native Substance support (2018.1+) you will need to install the Allegorithmic Substance plugin from the asset store:

Download the Substance Plugin

Once the plugin is installed, you will be able to assign substances in the CTS Profile just as with native support before.

CTS Texture Management

The primary texture management operations are:

Bake Textures -> Pick the textures up out of the terrain, apply them to your Profile, and create the arrays that the shader needs.

Update Texture In Profile -> Applies the texture to the Profile and the terrain, changes Profile colour to red if re-baking is required.

Apply Profile -> Take the textures in the Profile and applies them to the terrain (WARNING: This will replace what was there before).

Bake Normals -> Will create a global normal map for each terrain and assign it to the CTS shader. This is only needed when you change terrain heights.

CTS Help System

CTS is largely a self documenting system. To show documentation within CTS hit the question mark at the top of each CTS component. This will show or hide CTS help. You can also click on the button to come to the web site here for more information. The video tutorials in particular are a great source of information.

Lorem Ipsum


Mea cu sonet definiebas, ne officiis partiendo evertitur pro. Adhuc inani tantas eum cu, ius purto ornatus complectitur no, nemore ancillae euripidis mel te. Eum exerci scaevola id. Mel consul putant epicuri cu. Ex pri abhorreant repudiandae.

Mea cu sonet definiebas, ne officiis partiendo evertitur pro. Adhuc inani tantas eum cu, ius purto ornatus complectitur no, nemore ancillae euripidis mel te. Eum exerci scaevola id. Mel consul putant epicuri cu. Ex pri abhorreant repudiandae.

« 1 of 4 »