Material Definition
Last updated
Last updated
This is the documentation of Roomle's V2 material. If you are looking for information on legacy materials, look .
Materials in Roomle are JSON files with defined attributes. One main material JSON and several texture JSON files (one for each texture variant).
Base color in sRGB color space
If a diffuse texture is present, its texel values will get multiplied with the basecolor in linear color space.
For diffuse reflection, avoid extreme values (0.0 or 1.0) and leave some headroom (min:0.04 and max:0.9).
Example: default white
0.0
is perfectly smooth with sharp reflections
1.0
is completely matte/dull surface due to lots of microsurface scattering
Default 0.85
Metallness of material
1.0
for metals
0.0
for dielectrics
A physical material is always either metal or non-metal (conductor or dielectric). Mixed values only make sense to mimic the appearance of layered materials (e.g. a bit of dust on a metal surface)
Default 0.0
Opacity factor
0.0
is completely invisible
1.0
completely opaque (the default)
Mode how the material is calculated over the background. If now transparency is used in a material stay at default OPAQUE
. Possible values are OPAQUE
, BLEND
, and MASK
.
Transmission factor. Useful for creating transparent materials like glass.
If an object is transmissive, its basecolor is used as transmissive color. This is useful to create colored glass.
0.0
fully opaque (the default) 1.0
is completely transmissive with (fresnel) reflections and specular highlights
transmissionIOR
is the transmissive index of refraction (IOR), controlling the angle in which light is refracted when entering/leaving. At the moment this won't have effect in real-time renderings.
Default is IOR of plate glass ( https://en.wikipedia.org/wiki/List_of_refractive_indices )
Example: clear glass (assuming the basecolor is completely white)
Alpha testing - use with alpha channel (opacity) texture
Fragment only gets rendered if alpha value is greater than this value.
defaults to 0.0
, meaning no alpha cutoff
By default in real-time renderings a back-face culling is applied. This means polygons/triangles are only visible from one side. If doubleSided
is true, they are visible from both sides.
Useful for billboards, semi-transparent fabrics or plant leaves.
Default: false
If an occlusion texture is present, its values are scaled by this factor.
0
results in no occlusion, 1.0
is full occlusion (default).
Emissive parts of the mesh appear shadeless. This color is an RGB multiplier for an emission map and the result is also multipied by the Emissive Intensity
Emission Map * Emissive Color * Emissive Intensity = EMISSION RESULT
so if either of the values is
0.0
or#000000
the result will be#000000
meaningNO EMISSION
Multiplier for the clearcoat intensity map (CCRG) [0.0 to 1.0]
Multiplier for the clearcoat roughness map (CCRG) [0.0 to 1.0]
Multiplier for the clearcoat normal map (CCXYZ) [0.0 to 1.0]
Color of the sheen effect
intensity of the sheen effect
Factor on how wide spread the sheen effect appears [0.0 to 1.0]
This is a number that defines the thickness of the volume beneath the surface. It is given in the coordinate space of the mesh. If the valuis 0, the material is thin-walled; otherwise, it is a volume boundary. The range is
[0.0 to 1.0]`
Defines the color that white light turns into due to absorption when reaching the attenuation distance. It is a color value that changes the appearance of the material as light passes through it.
This property specifies the distance at which the full attenuation effect is applied. Light traveling through the material will be absorbed more as it travels further, resulting in a darker color at greater distances. [0.0 to 1.0]
Here is a example texture file:
Width and height in pixels
If 1, texture repeats itself in both axes Default: 0
URL of image file
Real world width/height.
Necessary for universal texture application with correct scaling/sizing. The idea is that this texture/material can be applied to many different objects with a consistent size/scaling appearance as long as they fulfill this requirements:
The UVs are absolute in a certain unit (millimeter in our case)
Default: 0.0 (results in a uniform texture scale of 1.0, ordinary/normalized UV application)
A 3D quad has the measurement 10 cm by 20 cm. Its correct UVs are in the rect x:0/y:0 to x:100/y:200. The texture we want to apply spans 50 by 50 mm.
The resulting texture tileable will be x = 50; y = 50. This way the texture is tiled twice on the x axis and 4 times on the y axis.
Describes how texture channels are mapped to material channels.
RGB: Albedo color
RGBA: Albedo color plus alpha channel (opacity)
XYZ: Normal map (Open GL style Y-up)
ORM: Combined occlusion/roughness/metallic map (similar to glTF 2.0 specification)
EMRGB: Emission color
CCRG: Clear coat intensity and roughness
CCXYZ: Clear coat normal map
SHRGBA: Sheen color and roughness
SPRGBA: Specular color and intensity
TTRG: Transmission degree and thickness
Texture channel assignments
RGB
basecolor red
basecolor green
basecolor blue
-
RGBA
basecolor red
basecolor green
basecolor blue
alpha
XYZ
normal x
normal y
normal z
-
ORM
occlusion
roughness
metallic
-
EMRGB
emissive color red
emissive color green
emissive color blue
-
CCRG
clear coat intensity
clear coat roughness
-
-
CCXYZ
clear coat normal map x
clear coat normal map y
clear coat normal map z
-
SHRGBA
sheen effect color r
sheen effect color g
sheen effect color b
sheen effect roughness
SPRGBA
specular color r
specular color g
specular color b
specular intensity
TTRG
Transmission degree
transmission thickness
-
-
Default: RGB
The texel values are in linear color space and are multiplied with their respective factor property values:
Metallic texel values are multiplied with the metallic factor value.
Occlusion texel values are multiplied with the occlusion strength factor value.
Roughness texel values are multiplied with the roughness factor value.
The occlusion is used in real-time rendering only.
Multiplier for and [0.0 to 1.0]
Graphical explanation of composing a combined ORM texture