starry / backend /libs /three /materials /Material.d.ts
k-l-lambda's picture
feat: add Python ML services (CPU mode) with model download
2b7aae2
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;
}