Material Editor

Overview

Our proprietary game engine uses standard metallic PBR pipeline for material authoring.
New materials can easily be created after navigating to a folder, right click on empty space, and select Create > Material.

Material editor can be opened by double clicking an existing material in the resource browser.

Inspector

Shader

You can select apporopriate shader from this Shader Selection widget.
There are a few mainly used shaders; most important ones are pbr_metallic and pbr_shading.

pbr_shading

This shader is heavily used and exists just because our engine did not use PBR shading pipeline in the early years of development, most content was not created for PBR pipeline, so this shader is created to support our already existing content and only used during the transition phase.
New content should not use this shader, instead you should use pbr_metallic.

pbr_metallic

This is what you should use most of the time. This shader uses standard metallic PBR pipeline and inputs are compatible with most texture authoring softwares.
Inputs:
Albedo and Normal: These are pretty standard, outputs of texture authoring softwares can directly be used. Specular: This texture uses its 4 channel for different purposes. Red channel contains Metallic information, Green channel contains Glossiness (inverse of Roughness), Blue channel contains Ambient Occlusion, and Alpha channel contains Translucency (for vegetation shaders only)

grass

This shader is a derivative of pbr_metallic, and should only be used on grass meshes. Contains special effects like wind animation, sway animation, smooth LOD transition, color multiplication from terrain, etc.

flora_leaf

This shader is a derivative of pbr_metallic, and should only be used on leaf parts of trees / bushes. Contains special effects like wind animation, sway animation, color multiplication from terrain, smooth LOD transition, translucency (Alpha channel of Specular texture), etc.

flora_bark

This shader is a derivative of pbr_metallic, and should only be used on bark parts of trees / bushes. Contains special effects like wind animation, smooth LOD transition, etc.

Textures

This panel is used to set input textures of shaders.
Texture names are self explanatory but there are a few special cases.

Diffuse2Map

This input is used internally by engine to create special effects / blendings like Shield Banner Paintings, Banner texture in this slot will only appear where Diffuse 1 Texture contains alpha. Usage of this texture really depends on the shader used.

DetailNormalMap

This input is used to create micro imperfections and additional high frequency detail on top on regular normal mapping. Scale of this texture can be adjusted in Texture Settings panel

HeightMap

This input is used in both Parallax Occlusion Shading, and Displacement.

Decal(___)Map

These inputs are used internally by engine to create skinned decals on entities (like blood and mud on agents).

Texture Settings

This setting can be used to adjust textures further for more variation and tweaking. Some settings are only used for some special shaders to pass custom parameter.

Areamap Scale

Used internally for parameter passing.

Specular Coef

Metallic channel (Red channel of Specular texture) is multiplied by this value in shader.

Gloss Coef

Gloss channel (Green channel of Specular texture) is multiplied by this value in shader.

Ambient Occlusion Coef

AO channel (Blue channel of Specular texture) is multiplied by this value in shader.

Normal Depth

Normal textures X and Y channels are multiplied by this value. If you set a value close to Zero, surface will appear more flat since X and Y values will be close to zero and only Z direction is contributed to normal mapping.

Detail Normal Scale

This parameters sets how many times the detail textures should tile. Higher values increases frequency.

Parallax Mode

You can select displacement method to use for this material. Options are, Parallax or Displacement. Both require a heightmap texture. Parallax uses Parallax Occlusion Mapping in shader, Displacement uses hardware tesselation.

Parallax Amount

Intensity of displacement effect.

Parallax Offset

Sets the middle value to a desired height. (Value of 0.5 in heightmap).

Material Shader Flags

You can enable and disable some compile time conditionals in shaders to enable/disable some effects. These are compile time flags and the Material shader will be compiled with these flags.
Some important onces are:

use_detailnormalmap

This flag should be enabled to utilize Detail Normal Map feature.

alpha_test

Diffuse 1 textures alpha values are used as a cut-out texture. Alpha threshold can be specified in Transparency panel.

use_specular

This flag should be enabled in all cases. It is only here for lagecy reasons.

use_procedural_wind_animation

Can be enabled to create a very simple and cheap, sine wave wind effect. Mostly used for tents / flags. (Should not be mistaken with cloth physics feature).

self_illumination

Enables self illumination. Illumination texture should be specified in Diffuse 2. Brightness parameters can be adjusted in Vector Arguments panel.

use_specular_from_diffuse

Never ever use this. It is only used in pbr pipeline transitioning phase and only here for legacy reasons. Simply grayscales the diffuse texture, and uses it as specular texture.

use_double_colormap_with_mask_texture

Used internally to create team color effect in clothing. A special texture is created to specify which parts of clothing should be affected by team colors. A simple Red / green texture for primary and secondary colors is specified in Diffuse 2 texture. Primary and Secondary colors are set by gameplay code as Factor Colors.

Transparency

Alpha blend mode and Alpha Test threshold values can be specified here.
Multi Pass Alpha feature can also be enabled here. This technique renders the mesh twice with both alpha test and alpha blend to create bulky but smooth looking alpha testes meshes. (Alpha test in middle areas for high coverage but smooth alpha blended gradients on edges, such as Hair).

Others

This panel is usually for technical / internal usage and mostly used to create materials for core engine features.

Vector Arguments

This panel contains two Vector Arguments. Both containing 4 real values, with a total of 8.
These vector arguments are used as parameters for some special shader effects, like setting the brightness of Self Illumination, speed and direction of Texture Sweep, etc.
What changes with which vector argument is really depends on the effects it is used for.

Factor Colors

These colors are multiplied with internal Factor Color on meshes that are usually changed using gameplay code. If you really want some texture to be slightly darker, greener etc. you can multiply them using this panel.

Vertex Layout

This panel used to specify Vertex Layout that should be used by Vertex Shaders.

Bump Map

Should be enabled in most cases (Standard PBR requires this).

Skinning and Skinning Precise

If your material is going to be used with a skinned mesh, enable Skinning, if your skinned mesh is quite large that has important small polygons (like eyes) enable Skinning Precise. (This disables some optimizations so only use if it is really necessary).

Double UV

Enable if your custom shaders require double UV channels.

PostFX

Used internally by engine.