Taos API Reference
    Preparing search index...

    Class PbrMaterial

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    name?: string

    Optional human-readable name (e.g. the source glTF material name). Display only — the editor surfaces it in the Inspector; the renderer never keys on it.

    transparent: boolean = false

    True for alpha-blended materials. ForwardPass routes these through its transparent sub-pass (after opaque) with depth-write disabled.

    cullMode: GPUCullMode = 'back'

    Face-culling mode used when a pass builds this material's render pipeline: 'back' (default) culls back faces, 'front' culls front faces, 'none' draws both sides. A per-draw doubleSided flag (e.g. mixed-winding tile content) forces 'none' regardless of this setting. Passes fold this into their pipeline cache key, so it may differ between instances sharing a shaderId.

    depthBias: number = 0

    Constant polygon depth-bias applied when a pass builds this material's render pipeline. A positive value nudges this material's fragments toward the camera (the pass multiplies it by RenderContext.depthBiasSign so the sign is correct under standard- or reversed-Z), so coincident geometry drawn on top of other surfaces — draped vector overlays / decals sitting exactly on terrain — wins the depth test instead of Z-fighting. 0 (default) adds no bias. Units follow WebGPU depthBias (depth-buffer units; for a float depth target the effective offset scales with the fragment's exponent, so depthBiasSlopeScale is usually the more robust knob). Passes fold it into their pipeline cache key, so it may differ between instances sharing a shaderId.

    depthBiasSlopeScale: number = 0

    Slope-scaled companion to depthBias (WebGPU depthBiasSlopeScale): bias proportional to the polygon's depth slope, so steeply-angled draped geometry gets more offset where it needs it (grazing angles) and less where it doesn't. Same toward-the-camera sign convention as depthBias. 0 (default) = no slope bias. Also part of the pipeline cache key.

    shaderId: "pbr" = 'pbr'

    Stable per-subclass identifier. All instances with the same shaderId MUST produce identical getShaderCode output and identical getBindGroupLayout layouts on a given device — the pass uses this as the pipeline cache key.

    albedo: [number, number, number, number]
    roughness: number
    metallic: number
    specular: number

    Dielectric specular reflectance scalar (F0 = 0.08·specular). Default 0.5.

    specularColor: [number, number, number]

    Dielectric specular color tint (F0 rgb). Default [1,1,1].

    clearcoat: number

    Clear-coat strength (KHR_materials_clearcoat). Default 0 (no coat).

    clearcoatRoughness: number

    Clear-coat roughness. Default 0.

    clearcoatNormalToGeometric: boolean

    Coat uses the smooth geometric normal instead of the base normal. Default false.

    clothWrap: number

    Cloth diffuse-wrap strength [0,1] (Filament cloth). Default 0.

    sheenColor: [number, number, number]

    Sheen color (KHR_materials_sheen). Default [0,0,0] (no sheen).

    sheenRoughness: number

    Sheen roughness. Default 0.

    iridescence: number

    Thin-film iridescence strength (KHR_materials_iridescence). Default 0.

    iridescenceIor: number

    Thin-film IOR. Default 1.3.

    iridescenceThickness: number

    Thin-film thickness in nm. Default 400.

    diffuseTransmission: number

    Diffuse transmission strength (KHR_materials_diffuse_transmission). Default 0.

    diffuseTransmissionColor: [number, number, number]

    Transmitted diffuse tint. Default [1,1,1].

    subsurface: number

    Subsurface scattering strength (engine shading model). Default 0 (off).

    subsurfaceColor: [number, number, number]

    Subsurface scattered-light tint. Default [1,1,1].

    transmission: number

    Refractive transmission strength (KHR_materials_transmission). Default 0.

    ior: number

    Index of refraction (KHR_materials_ior). Default 1.5.

    thickness: number

    Volume thickness in world units (KHR_materials_volume). Default 0 (thin).

    attenuationColor: [number, number, number]

    Beer-Lambert absorption color. Default [1,1,1] (none).

    attenuationDistance: number

    Absorption distance. Default Infinity (none).

    dispersion: number

    Chromatic dispersion strength (KHR_materials_dispersion). Default 0.

    emissiveFactor: [number, number, number]
    uvOffset?: [number, number]
    uvScale?: [number, number]
    uvTile?: [number, number]
    uvRotation: number

    UV rotation in radians (glTF KHR_texture_transform). Default 0.

    alphaCutoff: number

    MASK alpha-test threshold; 0 disables (glTF alphaCutoff). Default 0.

    pixelated: boolean

    Nearest (point) texture filtering instead of linear. Default false.

    normalScale: number

    Tangent-space normal XY multiplier (glTF normalTexture.scale). Default 1.

    unlit: boolean

    Unlit shading (KHR_materials_unlit) — skips lighting/IBL. Default false.

    anisotropyStrength: number

    Anisotropy strength (KHR_materials_anisotropy). Default 0 (isotropic).

    anisotropyRotation: number

    Anisotropy direction angle in radians. Default 0.

    texCoordMask: number

    Per-texture UV-set selector bitmask (glTF texCoord); see PbrMaterialOptions.texCoordMask. Default 0.

    transmissionMap?: Texture

    Per-pixel transmission/thickness maps — read by the TransmissionPass, not part of this material's group-2 bind group.

    thicknessMap?: Texture

    Accessors

    Methods