Spaces:
Sleeping
Sleeping
| import { Plane } from './../math/Plane'; | |
| import { EventDispatcher } from './../core/EventDispatcher'; | |
| import { WebGLRenderer } from './../renderers/WebGLRenderer'; | |
| import { Shader } from './../renderers/shaders/ShaderLib'; | |
| import { BlendingDstFactor, BlendingEquation, Blending, BlendingSrcFactor, DepthModes, Side, StencilFunc, StencilOp, PixelFormat } from '../constants'; | |
| import { ColorRepresentation } from '../utils'; | |
| import { Color } from '../math/Color'; | |
| import { Texture } from '../textures/Texture'; | |
| export interface MaterialParameters { | |
| alphaTest?: number | undefined; | |
| alphaToCoverage?: boolean | undefined; | |
| blendDst?: BlendingDstFactor | undefined; | |
| blendDstAlpha?: number | undefined; | |
| blendEquation?: BlendingEquation | undefined; | |
| blendEquationAlpha?: number | undefined; | |
| blending?: Blending | undefined; | |
| blendSrc?: BlendingSrcFactor | BlendingDstFactor | undefined; | |
| blendSrcAlpha?: number | undefined; | |
| clipIntersection?: boolean | undefined; | |
| clippingPlanes?: Plane[] | undefined; | |
| clipShadows?: boolean | undefined; | |
| colorWrite?: boolean | undefined; | |
| defines?: any; | |
| depthFunc?: DepthModes | undefined; | |
| depthTest?: boolean | undefined; | |
| depthWrite?: boolean | undefined; | |
| fog?: boolean | undefined; | |
| name?: string | undefined; | |
| opacity?: number | undefined; | |
| polygonOffset?: boolean | undefined; | |
| polygonOffsetFactor?: number | undefined; | |
| polygonOffsetUnits?: number | undefined; | |
| precision?: 'highp' | 'mediump' | 'lowp' | null | undefined; | |
| premultipliedAlpha?: boolean | undefined; | |
| dithering?: boolean | undefined; | |
| side?: Side | undefined; | |
| shadowSide?: Side | undefined; | |
| toneMapped?: boolean | undefined; | |
| transparent?: boolean | undefined; | |
| vertexColors?: boolean | undefined; | |
| visible?: boolean | undefined; | |
| format?: PixelFormat | undefined; | |
| stencilWrite?: boolean | undefined; | |
| stencilFunc?: StencilFunc | undefined; | |
| stencilRef?: number | undefined; | |
| stencilWriteMask?: number | undefined; | |
| stencilFuncMask?: number | undefined; | |
| stencilFail?: StencilOp | undefined; | |
| stencilZFail?: StencilOp | undefined; | |
| stencilZPass?: StencilOp | undefined; | |
| userData?: any; | |
| } | |
| /** | |
| * Materials describe the appearance of objects. They are defined in a (mostly) renderer-independent way, so you don't have to rewrite materials if you decide to use a different renderer. | |
| */ | |
| export class Material extends EventDispatcher { | |
| constructor(); | |
| /** | |
| * Sets the alpha value to be used when running an alpha test. Default is 0. | |
| * @default 0 | |
| */ | |
| alphaTest: number; | |
| /** | |
| * Enables alpha to coverage. Can only be used with MSAA-enabled rendering contexts. | |
| * @default false | |
| */ | |
| alphaToCoverage: boolean; | |
| /** | |
| * Blending destination. It's one of the blending mode constants defined in Three.js. Default is {@link OneMinusSrcAlphaFactor}. | |
| * @default THREE.OneMinusSrcAlphaFactor | |
| */ | |
| blendDst: BlendingDstFactor; | |
| /** | |
| * The tranparency of the .blendDst. Default is null. | |
| * @default null | |
| */ | |
| blendDstAlpha: number | null; | |
| /** | |
| * Blending equation to use when applying blending. It's one of the constants defined in Three.js. Default is {@link AddEquation}. | |
| * @default THREE.AddEquation | |
| */ | |
| blendEquation: BlendingEquation; | |
| /** | |
| * The tranparency of the .blendEquation. Default is null. | |
| * @default null | |
| */ | |
| blendEquationAlpha: number | null; | |
| /** | |
| * Which blending to use when displaying objects with this material. Default is {@link NormalBlending}. | |
| * @default THREE.NormalBlending | |
| */ | |
| blending: Blending; | |
| /** | |
| * Blending source. It's one of the blending mode constants defined in Three.js. Default is {@link SrcAlphaFactor}. | |
| * @default THREE.SrcAlphaFactor | |
| */ | |
| blendSrc: BlendingSrcFactor | BlendingDstFactor; | |
| /** | |
| * The tranparency of the .blendSrc. Default is null. | |
| * @default null | |
| */ | |
| blendSrcAlpha: number | null; | |
| /** | |
| * Changes the behavior of clipping planes so that only their intersection is clipped, rather than their union. Default is false. | |
| * @default false | |
| */ | |
| clipIntersection: boolean; | |
| /** | |
| * User-defined clipping planes specified as THREE.Plane objects in world space. | |
| * These planes apply to the objects this material is attached to. | |
| * Points in space whose signed distance to the plane is negative are clipped (not rendered). | |
| * See the WebGL / clipping /intersection example. Default is null. | |
| * @default null | |
| */ | |
| clippingPlanes: any; | |
| /** | |
| * Defines whether to clip shadows according to the clipping planes specified on this material. Default is false. | |
| * @default false | |
| */ | |
| clipShadows: boolean; | |
| /** | |
| * Whether to render the material's color. This can be used in conjunction with a mesh's .renderOrder property to create invisible objects that occlude other objects. Default is true. | |
| * @default true | |
| */ | |
| colorWrite: boolean; | |
| /** | |
| * Custom defines to be injected into the shader. These are passed in form of an object literal, with key/value pairs. { MY_CUSTOM_DEFINE: '' , PI2: Math.PI * 2 }. | |
| * The pairs are defined in both vertex and fragment shaders. Default is undefined. | |
| * @default undefined | |
| */ | |
| defines: undefined | { [key: string]: any }; | |
| /** | |
| * Which depth function to use. Default is {@link LessEqualDepth}. See the depth mode constants for all possible values. | |
| * @default THREE.LessEqualDepth | |
| */ | |
| depthFunc: DepthModes; | |
| /** | |
| * Whether to have depth test enabled when rendering this material. Default is true. | |
| * @default true | |
| */ | |
| depthTest: boolean; | |
| /** | |
| * Whether rendering this material has any effect on the depth buffer. Default is true. | |
| * When drawing 2D overlays it can be useful to disable the depth writing in order to layer several things together without creating z-index artifacts. | |
| * @default true | |
| */ | |
| depthWrite: boolean; | |
| /** | |
| * Whether the material is affected by fog. Default is true. | |
| * @default fog | |
| */ | |
| fog: boolean; | |
| /** | |
| * Unique number of this material instance. | |
| */ | |
| id: number; | |
| /** | |
| * Whether rendering this material has any effect on the stencil buffer. Default is *false*. | |
| * @default false | |
| */ | |
| stencilWrite: boolean; | |
| /** | |
| * The stencil comparison function to use. Default is {@link AlwaysStencilFunc}. See stencil operation constants for all possible values. | |
| * @default THREE.AlwaysStencilFunc | |
| */ | |
| stencilFunc: StencilFunc; | |
| /** | |
| * The value to use when performing stencil comparisons or stencil operations. Default is *0*. | |
| * @default 0 | |
| */ | |
| stencilRef: number; | |
| /** | |
| * The bit mask to use when writing to the stencil buffer. Default is *0xFF*. | |
| * @default 0xff | |
| */ | |
| stencilWriteMask: number; | |
| /** | |
| * The bit mask to use when comparing against the stencil buffer. Default is *0xFF*. | |
| * @default 0xff | |
| */ | |
| stencilFuncMask: number; | |
| /** | |
| * Which stencil operation to perform when the comparison function returns false. Default is {@link KeepStencilOp}. See the stencil operation constants for all possible values. | |
| * @default THREE.KeepStencilOp | |
| */ | |
| stencilFail: StencilOp; | |
| /** | |
| * Which stencil operation to perform when the comparison function returns true but the depth test fails. | |
| * Default is {@link KeepStencilOp}. | |
| * See the stencil operation constants for all possible values. | |
| * @default THREE.KeepStencilOp | |
| */ | |
| stencilZFail: StencilOp; | |
| /** | |
| * Which stencil operation to perform when the comparison function returns true and the depth test passes. | |
| * Default is {@link KeepStencilOp}. | |
| * See the stencil operation constants for all possible values. | |
| * @default THREE.KeepStencilOp | |
| */ | |
| stencilZPass: StencilOp; | |
| /** | |
| * Used to check whether this or derived classes are materials. Default is true. | |
| * You should not change this, as it used internally for optimisation. | |
| */ | |
| readonly isMaterial: true; | |
| /** | |
| * Material name. Default is an empty string. | |
| * @default '' | |
| */ | |
| name: string; | |
| /** | |
| * Specifies that the material needs to be updated, WebGL wise. Set it to true if you made changes that need to be reflected in WebGL. | |
| * This property is automatically set to true when instancing a new material. | |
| * @default false | |
| */ | |
| needsUpdate: boolean; | |
| /** | |
| * Opacity. Default is 1. | |
| * @default 1 | |
| */ | |
| opacity: number; | |
| /** | |
| * Whether to use polygon offset. Default is false. This corresponds to the POLYGON_OFFSET_FILL WebGL feature. | |
| * @default false | |
| */ | |
| polygonOffset: boolean; | |
| /** | |
| * Sets the polygon offset factor. Default is 0. | |
| * @default 0 | |
| */ | |
| polygonOffsetFactor: number; | |
| /** | |
| * Sets the polygon offset units. Default is 0. | |
| * @default 0 | |
| */ | |
| polygonOffsetUnits: number; | |
| /** | |
| * Override the renderer's default precision for this material. Can be "highp", "mediump" or "lowp". Defaults is null. | |
| * @default null | |
| */ | |
| precision: 'highp' | 'mediump' | 'lowp' | null; | |
| /** | |
| * Whether to premultiply the alpha (transparency) value. See WebGL / Materials / Transparency for an example of the difference. Default is false. | |
| * @default false | |
| */ | |
| premultipliedAlpha: boolean; | |
| /** | |
| * Whether to apply dithering to the color to remove the appearance of banding. Default is false. | |
| * @default false | |
| */ | |
| dithering: boolean; | |
| /** | |
| * Defines which of the face sides will be rendered - front, back or both. | |
| * Default is THREE.FrontSide. Other options are THREE.BackSide and THREE.DoubleSide. | |
| * @default THREE.FrontSide | |
| */ | |
| side: Side; | |
| /** | |
| * Defines which of the face sides will cast shadows. Default is *null*. | |
| * If *null*, the value is opposite that of side, above. | |
| * @default null | |
| */ | |
| shadowSide: Side | null; | |
| /** | |
| * Defines whether this material is tone mapped according to the renderer's toneMapping setting. | |
| * Default is true. | |
| * @default true | |
| */ | |
| toneMapped: boolean; | |
| /** | |
| * Defines whether this material is transparent. This has an effect on rendering as transparent objects need special treatment and are rendered after non-transparent objects. | |
| * When set to true, the extent to which the material is transparent is controlled by setting it's .opacity property. | |
| * Default is false. | |
| * @default false | |
| */ | |
| transparent: boolean; | |
| /** | |
| * Value is the string 'Material'. This shouldn't be changed, and can be used to find all objects of this type in a scene. | |
| * @default 'Material' | |
| */ | |
| type: string; | |
| /** | |
| * UUID of this material instance. This gets automatically assigned, so this shouldn't be edited. | |
| */ | |
| uuid: string; | |
| /** | |
| * Defines whether vertex coloring is used. Default is false. | |
| * @default false | |
| */ | |
| vertexColors: boolean; | |
| /** | |
| * Defines whether this material is visible. Default is true. | |
| * @default true | |
| */ | |
| visible: boolean; | |
| /** | |
| * An object that can be used to store custom data about the Material. It should not hold references to functions as these will not be cloned. | |
| * @default {} | |
| */ | |
| userData: any; | |
| /** | |
| * This starts at 0 and counts how many times .needsUpdate is set to true. | |
| * @default 0 | |
| */ | |
| version: number; | |
| /** | |
| * Return a new material with the same parameters as this material. | |
| */ | |
| clone(): this; | |
| /** | |
| * Copy the parameters from the passed material into this material. | |
| * @param material | |
| */ | |
| copy(material: Material): this; | |
| /** | |
| * This disposes the material. Textures of a material don't get disposed. These needs to be disposed by {@link Texture}. | |
| */ | |
| dispose(): void; | |
| /** | |
| * An optional callback that is executed immediately before the shader program is compiled. | |
| * This function is called with the shader source code as a parameter. | |
| * Useful for the modification of built-in materials. | |
| * @param shader Source code of the shader | |
| * @param renderer WebGLRenderer Context that is initializing the material | |
| */ | |
| onBeforeCompile(shader: Shader, renderer: WebGLRenderer): void; | |
| /** | |
| * In case onBeforeCompile is used, this callback can be used to identify values of settings used in onBeforeCompile, so three.js can reuse a cached shader or recompile the shader as needed. | |
| */ | |
| customProgramCacheKey(): string; | |
| /** | |
| * Sets the properties based on the values. | |
| * @param values A container with parameters. | |
| */ | |
| setValues(values: MaterialParameters): void; | |
| /** | |
| * Convert the material to three.js JSON format. | |
| * @param meta Object containing metadata such as textures or images for the material. | |
| */ | |
| toJSON(meta?: any): any; | |
| } | |