Procedural PBR Materials

Functions that build tileable PBR-material texture sets at runtime. Each painter returns a MaterialMaps triple: a colour map, a tangent-space normal map, and a metallic-roughness map. Each map is a MaterialPixelBuffer ({ data: Uint8ClampedArray, width, height }) carrying RGBA8 pixels in row-major order.

Painters are grouped into four categories:

  • Masonry — brick, concrete, limestone, granite.
  • Interior finishes — marble, oak, painted plaster, asphalt, ceramic tile, carpet, wallpaper.
  • Metals — polished steel, brushed steel, copper, chrome, gold, aluminium, brass.
  • Glass — tinted dielectric.

Each painter takes a single size argument (the square texture's pixel side). The output tiles seamlessly through use of the periodic noise primitives exported from the same module.

import {paintBrick} from "@xeokit/sdk/model/procgen/paintMaterials";

const {color, normal, mr} = paintBrick(256);

sceneModel.createTexture({
id: "brick_color",
imageData: color,
encoding: sRGBEncoding
});
sceneModel.createTexture({
id: "brick_normal",
imageData: normal,
encoding: LinearEncoding
});
sceneModel.createTexture({
id: "brick_mr",
imageData: mr,
encoding: LinearEncoding
});

Interfaces

HeatMapGridOptions
HeatMapStop
MaterialMaps
MaterialPixelBuffer
PaintAluminiumOptions
PaintAsphaltOptions
PaintBlueprintPaperOptions
PaintBrassOptions
PaintBrickOptions
PaintBrushSteelOptions
PaintCarpetOptions
PaintCeramicTileOptions
PaintChromeOptions
PaintConcreteOptions
PaintCopperOptions
PaintCopperRoofOptions
PaintGlassOptions
PaintGoldOptions
PaintGraniteOptions
PaintHeatMapGeometry
PaintHeatMapOptions
PaintHeatMapResult
PaintIronOptions
PaintLimestoneOptions
PaintMarbleOptions
PaintOakOptions
PaintPlasterOptions
PaintPlatinumOptions
PaintPolSteelOptions
PaintRustyMetalOptions
PaintSilverOptions
PaintTitaniumOptions
PaintWallpaperOptions
PaintWoodPlankOptions
RepaintHeatMapColorOptions
RepaintHeatMapColorParams

Variables

DEFAULT_HEATMAP_RAMP

Functions

flatMR
flatNormal
heightToNormal
newPixelBuffer
paintAluminium
paintAsphalt
paintBlueprintPaper
paintBrass
paintBrick
paintBrushSteel
paintCarpet
paintCeramicTile
paintChrome
paintConcrete
paintCopper
paintCopperRoof
paintGlass
paintGold
paintGranite
paintHeatMap
paintIron
paintLimestone
paintMarble
paintMR
paintOak
paintPlaster
paintPlatinum
paintPolSteel
paintRustyMetal
paintSilver
paintTitanium
paintWallpaper
paintWoodPlank
periodicFbm
periodicHash2
periodicNoise2
repaintHeatMapColor

References

clamp01 → base.math.clamp01