Material editor is designed for materials customization. When used for 3D objects, materials determine how surface of these objects will interact with lighting.
New material can be created as a separate resource or inside existing object. Basic way to create resources is using New button in the Ribbon.
Another way is to create material using the context menu in the Resources Window. You need open the context menu on the 'Base\Scene common\Material', after select 'New Resource of This Type'.
A window for creating an object will appear. It basically needs to specify a file name. There are also additional parameters that for starters are easier to use default values.
Next, click 'Create and Close' to finish creation.
Materials, like any other engine components, can be created inside other components. For example, a material can create inside a scene or inside a scene object. Read more about creating resources.
By default, when material is created, a new 'Shader graph' nested component is added. This component is a Flow Graph, and designed for setting up textures of material, and specifying how do those mix up. On the screenshot below, two tabs are opened in the 'MyMaterial.material' document. The first one 'Root object' is material object, second 'Shader graph' is a Flow Graph.
To edit material parameters, one needs to click on the material node title.
|Blend Mode||Defines how/if the rendered object is blended with the content of the render target.|
|Two Sided||Whether the material use double-sided rendering.|
|Shading Model||The reflection mode of the incoming light.|
|Base Color||Diffuse albedo for non-metallic surfaces, and specular color for metallic surfaces.|
|Metallic||Whether a surface appears to be dielectric (0.0) or conductor (1.0). Often used as a binary value (0 or 1).|
|Roughness||Perceived smoothness (1.0) or roughness (0.0) of a surface. Smooth surfaces exhibit sharp reflections.|
|Reflectance||Fresnel reflectance at normal incidence for dielectric surfaces. This directly controls the strength of the reflections.|
|Normal||The material normals. This property is intented to be used with normal mapping.|
|Displacement||The height offset that is specified by the texture.|
|Displacement Scale||The scale for Displacement.|
|Ambient Occlusion||Defines how much of the light is accessible to a surface point.|
|Emissive||The color and intensity of light emitted from the surface.|
|Opacity||The opacity of the surface.|
|Opacity Mask Threshold||Transparency threshold for Masked mode.|
|Clear Coat||Strength of the clear coat layer.|
|Clear Coat Roughness||Perceived smoothness or roughness of the clear coat layer.|
|Clear Coat Normal||A detail normal used to perturb the clear coat layer using bump mapping (normal mapping).|
|Anisotropy||Amount of anisotropy.|
|Anisotropy Direction||Local surface direction. Used by anisotropic materials only.|
|Anisotropy Direction Basis||The direction basis. Used by anisotropic materials only.|
|Thickness||Object thickness. Used for subsurface scattering only.|
|Subsurface Power||Amount of subsurface scattering.|
|Sheen Color||Specular tint to create two-tone specular fabrics.|
|Subsurface Color||Tint for the diffuse color after scattering and absorption through the material.|
|Shininess||The shininess of material.|
|Position Offset||Vertices position offset. Performed in vertex shader.|
|Ray Tracing Reflection||Amount of ray-tracing reflection. Used for screen space reflection.|
|Receive Shadows||Whether the surface receive shadows from other sources.|
|Receive Decals||Whether it is possible to apply decals the surface.|
|Advanced Blending||Enables advanced blending mode. In this mode, it is possible to configure blending for each channel separately.|
|Affect Base Color||Whether to write the Base Color.|
|Affect Metallic||Whether to write the Metallic.|
|Affect Roughness||Whether to write the Roughness.|
|Affect Reflectance||Whether to write the Reflectance.|
|Affect Ambient Occlusion||Whether to write the Ambient Occlusion.|
|Affect Emissive||Whether to write the Emissive.|
|Affect Geometry||Whether to write the normals, height data.|
In order to bind a texture to specific material parameter, one needs to do two things. First one should find texture in resources, and drag it to graph editor. As a result, texture will appear as a node of the graph.
Second, one should connect RGBA channel of a texture to a 'Base Color' of material.
Besides textures, one can use logical blocks for building material.
There is special filtering mode called Shaders at Resources Window.
In this mode only types that supported in material editor are shown.
These objects could be dragged to material editor workspace in the same way as textures.
The material editor supports the ability to set parameters to the material outside of the material. This is done using the Component_ShaderParameter component. The parameters could be configured to pick value from any kind of sources. For example it could be engine time, some parameter of scene object, a property of another resource.
First, drag Component_ShaderParameter to a workspace.
Next, set up data source. In this example engine time is used as a data source (All types\NeoAxis\Time\Current).
After the object has been configured, it can be connected to the graph.
Shader scripts provides the ability to use shader code in materials and fullscreen effects.
Material can be assigned to different types of objects. In this section it is described how to assign material to a 3D model in the scene.
If you haven't saved your material yet, now is the time to do this. One can save document by clicking Save button or by pressing Ctrl+S.
In order to assign material, one needs to pick material in Resources window, then drag & drop material on 3D model.