/*! * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. */ import { AssetContainer, AssetLike, AssetUserType, Color3, Color3Like, Color4, Color4Like, Guid, Vector2, Vector2Like } from '..'; import { Patchable } from '../internal'; import { AssetInternal } from './assetInternal'; import { Asset } from './asset'; /** * Describes the properties of a Material. */ export interface MaterialLike { /** The base color of this material. */ color: Partial; /** The main (albedo) texture asset ID */ mainTextureId: Guid; /** The main texture's offset from default */ mainTextureOffset: Vector2Like; /** The main texture's scale from default */ mainTextureScale: Vector2Like; /** The lighting-independent color of this material. */ emissiveColor: Partial; /** The emissive (unlit) texture asset ID */ emissiveTextureId: Guid; /** The emissive texture's offset from default */ emissiveTextureOffset: Vector2Like; /** The emissive texture's scale from default */ emissiveTextureScale: Vector2Like; /** How the color/texture's alpha channel should be handled */ alphaMode: AlphaMode; /** Visibility threshold in masked alpha mode */ alphaCutoff: number; } /** * Controls how transparency is handled. */ export declare enum AlphaMode { /** The object is rendered opaque, and transparency info is discarded. */ Opaque = "opaque", /** * Any parts with alpha above a certain cutoff ([[Material.alphaCutoff]]) * will be rendered solid. Everything else is fully transparent. */ Mask = "mask", /** * A pixel's transparency is directly proportional to its alpha value. */ Blend = "blend" } /** * Represents a material on a mesh. */ export declare class Material extends Asset implements MaterialLike, Patchable { private _color; private _mainTextureId; private _mainTextureOffset; private _mainTextureScale; private _emissiveColor; private _emissiveTextureId; private _emissiveTextureOffset; private _emissiveTextureScale; private _alphaMode; private _alphaCutoff; private _internal; /** @hidden */ get internal(): AssetInternal; /** @inheritdoc */ get color(): Color4; set color(value: Color4); /** @returns A shared reference to this material's texture asset */ get mainTexture(): import("./texture").Texture; set mainTexture(value: import("./texture").Texture); /** @inheritdoc */ get mainTextureId(): Guid; set mainTextureId(value: Guid); /** @inheritdoc */ get mainTextureOffset(): Vector2; set mainTextureOffset(value: Vector2); /** @inheritdoc */ get mainTextureScale(): Vector2; set mainTextureScale(value: Vector2); /** @inheritdoc */ get emissiveColor(): Color3; set emissiveColor(value: Color3); /** @returns A shared reference to this material's texture asset */ get emissiveTexture(): import("./texture").Texture; set emissiveTexture(value: import("./texture").Texture); /** @inheritdoc */ get emissiveTextureId(): Guid; set emissiveTextureId(value: Guid); /** @inheritdoc */ get emissiveTextureOffset(): Vector2; set emissiveTextureOffset(value: Vector2); /** @inheritdoc */ get emissiveTextureScale(): Vector2; set emissiveTextureScale(value: Vector2); /** @inheritdoc */ get alphaMode(): AlphaMode; set alphaMode(value: AlphaMode); /** @inheritdoc */ get alphaCutoff(): number; set alphaCutoff(value: number); /** @inheritdoc */ get material(): Material; /** The list of animations that target this actor, by ID. */ /** The list of animations that target this actor, by name. */ /** INTERNAL USE ONLY. To create a new material from scratch, use [[AssetManager.createMaterial]]. */ constructor(container: AssetContainer, def: AssetLike); copy(from: Partial): this; /** @hidden */ toJSON(): AssetLike; private materialChanged; /** @hidden */ breakReference(ref: AssetUserType): void; } //# sourceMappingURL=material.d.ts.map