|
@@ -14857,168 +14857,431 @@ declare module BABYLON {
|
|
}
|
|
}
|
|
|
|
|
|
declare module BABYLON {
|
|
declare module BABYLON {
|
|
- class AnaglyphPostProcess extends PostProcess {
|
|
|
|
- private _passedProcess;
|
|
|
|
- constructor(name: string, options: number | PostProcessOptions, rigCameras: Camera[], samplingMode?: number, engine?: Engine, reusable?: boolean);
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-declare module BABYLON {
|
|
|
|
- class BlackAndWhitePostProcess extends PostProcess {
|
|
|
|
- degree: number;
|
|
|
|
- constructor(name: string, options: number | PostProcessOptions, camera: Camera, samplingMode?: number, engine?: Engine, reusable?: boolean);
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-declare module BABYLON {
|
|
|
|
- class BlurPostProcess extends PostProcess {
|
|
|
|
- direction: Vector2;
|
|
|
|
- protected _kernel: number;
|
|
|
|
- protected _idealKernel: number;
|
|
|
|
- protected _packedFloat: boolean;
|
|
|
|
- /**
|
|
|
|
- * Gets the length in pixels of the blur sample region
|
|
|
|
- */
|
|
|
|
- /**
|
|
|
|
- * Sets the length in pixels of the blur sample region
|
|
|
|
- */
|
|
|
|
- kernel: number;
|
|
|
|
- /**
|
|
|
|
- * Gets wether or not the blur is unpacking/repacking floats
|
|
|
|
- */
|
|
|
|
- /**
|
|
|
|
- * Sets wether or not the blur needs to unpack/repack floats
|
|
|
|
- */
|
|
|
|
- packedFloat: boolean;
|
|
|
|
- constructor(name: string, direction: Vector2, kernel: number, options: number | PostProcessOptions, camera: Nullable<Camera>, samplingMode?: number, engine?: Engine, reusable?: boolean, textureType?: number);
|
|
|
|
- protected _updateParameters(): void;
|
|
|
|
- /**
|
|
|
|
- * Best kernels are odd numbers that when divided by 2, their integer part is even, so 5, 9 or 13.
|
|
|
|
- * Other odd kernels optimize correctly but require proportionally more samples, even kernels are
|
|
|
|
- * possible but will produce minor visual artifacts. Since each new kernel requires a new shader we
|
|
|
|
- * want to minimize kernel changes, having gaps between physical kernels is helpful in that regard.
|
|
|
|
- * The gaps between physical kernels are compensated for in the weighting of the samples
|
|
|
|
- * @param idealKernel Ideal blur kernel.
|
|
|
|
- * @return Nearest best kernel.
|
|
|
|
- */
|
|
|
|
- protected _nearestBestKernel(idealKernel: number): number;
|
|
|
|
- /**
|
|
|
|
- * Calculates the value of a Gaussian distribution with sigma 3 at a given point.
|
|
|
|
- * @param x The point on the Gaussian distribution to sample.
|
|
|
|
- * @return the value of the Gaussian function at x.
|
|
|
|
- */
|
|
|
|
- protected _gaussianWeight(x: number): number;
|
|
|
|
- /**
|
|
|
|
- * Generates a string that can be used as a floating point number in GLSL.
|
|
|
|
- * @param x Value to print.
|
|
|
|
- * @param decimalFigures Number of decimal places to print the number to (excluding trailing 0s).
|
|
|
|
- * @return GLSL float string.
|
|
|
|
- */
|
|
|
|
- protected _glslFloat(x: number, decimalFigures?: number): string;
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-declare module BABYLON {
|
|
|
|
- class ColorCorrectionPostProcess extends PostProcess {
|
|
|
|
- private _colorTableTexture;
|
|
|
|
- constructor(name: string, colorTableUrl: string, options: number | PostProcessOptions, camera: Camera, samplingMode?: number, engine?: Engine, reusable?: boolean);
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-declare module BABYLON {
|
|
|
|
- class ConvolutionPostProcess extends PostProcess {
|
|
|
|
- kernel: number[];
|
|
|
|
- constructor(name: string, kernel: number[], options: number | PostProcessOptions, camera: Camera, samplingMode?: number, engine?: Engine, reusable?: boolean);
|
|
|
|
- static EdgeDetect0Kernel: number[];
|
|
|
|
- static EdgeDetect1Kernel: number[];
|
|
|
|
- static EdgeDetect2Kernel: number[];
|
|
|
|
- static SharpenKernel: number[];
|
|
|
|
- static EmbossKernel: number[];
|
|
|
|
- static GaussianKernel: number[];
|
|
|
|
|
|
+ class BoundingBoxRenderer {
|
|
|
|
+ frontColor: Color3;
|
|
|
|
+ backColor: Color3;
|
|
|
|
+ showBackLines: boolean;
|
|
|
|
+ renderList: SmartArray<BoundingBox>;
|
|
|
|
+ private _scene;
|
|
|
|
+ private _colorShader;
|
|
|
|
+ private _vertexBuffers;
|
|
|
|
+ private _indexBuffer;
|
|
|
|
+ constructor(scene: Scene);
|
|
|
|
+ private _prepareRessources();
|
|
|
|
+ private _createIndexBuffer();
|
|
|
|
+ _rebuild(): void;
|
|
|
|
+ reset(): void;
|
|
|
|
+ render(): void;
|
|
|
|
+ renderOcclusionBoundingBox(mesh: AbstractMesh): void;
|
|
|
|
+ dispose(): void;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
declare module BABYLON {
|
|
declare module BABYLON {
|
|
- class DisplayPassPostProcess extends PostProcess {
|
|
|
|
- constructor(name: string, options: number | PostProcessOptions, camera: Nullable<Camera>, samplingMode?: number, engine?: Engine, reusable?: boolean);
|
|
|
|
|
|
+ class DepthRenderer {
|
|
|
|
+ private _scene;
|
|
|
|
+ private _depthMap;
|
|
|
|
+ private _effect;
|
|
|
|
+ private _cachedDefines;
|
|
|
|
+ constructor(scene: Scene, type?: number);
|
|
|
|
+ isReady(subMesh: SubMesh, useInstances: boolean): boolean;
|
|
|
|
+ getDepthMap(): RenderTargetTexture;
|
|
|
|
+ dispose(): void;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
declare module BABYLON {
|
|
declare module BABYLON {
|
|
- class FilterPostProcess extends PostProcess {
|
|
|
|
- kernelMatrix: Matrix;
|
|
|
|
- constructor(name: string, kernelMatrix: Matrix, options: number | PostProcessOptions, camera: Nullable<Camera>, samplingMode?: number, engine?: Engine, reusable?: boolean);
|
|
|
|
|
|
+ class EdgesRenderer {
|
|
|
|
+ edgesWidthScalerForOrthographic: number;
|
|
|
|
+ edgesWidthScalerForPerspective: number;
|
|
|
|
+ private _source;
|
|
|
|
+ private _linesPositions;
|
|
|
|
+ private _linesNormals;
|
|
|
|
+ private _linesIndices;
|
|
|
|
+ private _epsilon;
|
|
|
|
+ private _indicesCount;
|
|
|
|
+ private _lineShader;
|
|
|
|
+ private _ib;
|
|
|
|
+ private _buffers;
|
|
|
|
+ private _checkVerticesInsteadOfIndices;
|
|
|
|
+ constructor(source: AbstractMesh, epsilon?: number, checkVerticesInsteadOfIndices?: boolean);
|
|
|
|
+ private _prepareRessources();
|
|
|
|
+ _rebuild(): void;
|
|
|
|
+ dispose(): void;
|
|
|
|
+ private _processEdgeForAdjacencies(pa, pb, p0, p1, p2);
|
|
|
|
+ private _processEdgeForAdjacenciesWithVertices(pa, pb, p0, p1, p2);
|
|
|
|
+ private _checkEdge(faceIndex, edge, faceNormals, p0, p1);
|
|
|
|
+ _generateEdgesLines(): void;
|
|
|
|
+ render(): void;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
declare module BABYLON {
|
|
declare module BABYLON {
|
|
- class FxaaPostProcess extends PostProcess {
|
|
|
|
- texelWidth: number;
|
|
|
|
- texelHeight: number;
|
|
|
|
- constructor(name: string, options: number | PostProcessOptions, camera?: Nullable<Camera>, samplingMode?: number, engine?: Engine, reusable?: boolean, textureType?: number);
|
|
|
|
|
|
+ class GeometryBufferRenderer {
|
|
|
|
+ private _scene;
|
|
|
|
+ private _multiRenderTarget;
|
|
|
|
+ private _effect;
|
|
|
|
+ private _ratio;
|
|
|
|
+ private _cachedDefines;
|
|
|
|
+ private _enablePosition;
|
|
|
|
+ renderList: Mesh[];
|
|
|
|
+ readonly isSupported: boolean;
|
|
|
|
+ enablePosition: boolean;
|
|
|
|
+ constructor(scene: Scene, ratio?: number);
|
|
|
|
+ isReady(subMesh: SubMesh, useInstances: boolean): boolean;
|
|
|
|
+ getGBuffer(): MultiRenderTarget;
|
|
|
|
+ dispose(): void;
|
|
|
|
+ private _createRenderTargets();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
declare module BABYLON {
|
|
declare module BABYLON {
|
|
- class HighlightsPostProcess extends PostProcess {
|
|
|
|
- constructor(name: string, options: number | PostProcessOptions, camera: Nullable<Camera>, samplingMode?: number, engine?: Engine, reusable?: boolean, textureType?: number);
|
|
|
|
|
|
+ class OutlineRenderer {
|
|
|
|
+ private _scene;
|
|
|
|
+ private _effect;
|
|
|
|
+ private _cachedDefines;
|
|
|
|
+ zOffset: number;
|
|
|
|
+ constructor(scene: Scene);
|
|
|
|
+ render(subMesh: SubMesh, batch: _InstancesBatch, useOverlay?: boolean): void;
|
|
|
|
+ isReady(subMesh: SubMesh, useInstances: boolean): boolean;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
declare module BABYLON {
|
|
declare module BABYLON {
|
|
- class ImageProcessingPostProcess extends PostProcess {
|
|
|
|
- /**
|
|
|
|
- * Default configuration related to image processing available in the PBR Material.
|
|
|
|
- */
|
|
|
|
- protected _imageProcessingConfiguration: ImageProcessingConfiguration;
|
|
|
|
|
|
+ class RenderingGroup {
|
|
|
|
+ index: number;
|
|
|
|
+ private _scene;
|
|
|
|
+ private _opaqueSubMeshes;
|
|
|
|
+ private _transparentSubMeshes;
|
|
|
|
+ private _alphaTestSubMeshes;
|
|
|
|
+ private _depthOnlySubMeshes;
|
|
|
|
+ private _particleSystems;
|
|
|
|
+ private _spriteManagers;
|
|
|
|
+ private _opaqueSortCompareFn;
|
|
|
|
+ private _alphaTestSortCompareFn;
|
|
|
|
+ private _transparentSortCompareFn;
|
|
|
|
+ private _renderOpaque;
|
|
|
|
+ private _renderAlphaTest;
|
|
|
|
+ private _renderTransparent;
|
|
|
|
+ private _edgesRenderers;
|
|
|
|
+ onBeforeTransparentRendering: () => void;
|
|
/**
|
|
/**
|
|
- * Gets the image processing configuration used either in this material.
|
|
|
|
|
|
+ * Set the opaque sort comparison function.
|
|
|
|
+ * If null the sub meshes will be render in the order they were created
|
|
*/
|
|
*/
|
|
|
|
+ opaqueSortCompareFn: Nullable<(a: SubMesh, b: SubMesh) => number>;
|
|
/**
|
|
/**
|
|
- * Sets the Default image processing configuration used either in the this material.
|
|
|
|
- *
|
|
|
|
- * If sets to null, the scene one is in use.
|
|
|
|
|
|
+ * Set the alpha test sort comparison function.
|
|
|
|
+ * If null the sub meshes will be render in the order they were created
|
|
*/
|
|
*/
|
|
- imageProcessingConfiguration: ImageProcessingConfiguration;
|
|
|
|
|
|
+ alphaTestSortCompareFn: Nullable<(a: SubMesh, b: SubMesh) => number>;
|
|
/**
|
|
/**
|
|
- * Keep track of the image processing observer to allow dispose and replace.
|
|
|
|
|
|
+ * Set the transparent sort comparison function.
|
|
|
|
+ * If null the sub meshes will be render in the order they were created
|
|
*/
|
|
*/
|
|
- private _imageProcessingObserver;
|
|
|
|
|
|
+ transparentSortCompareFn: Nullable<(a: SubMesh, b: SubMesh) => number>;
|
|
/**
|
|
/**
|
|
- * Attaches a new image processing configuration to the PBR Material.
|
|
|
|
- * @param configuration
|
|
|
|
|
|
+ * Creates a new rendering group.
|
|
|
|
+ * @param index The rendering group index
|
|
|
|
+ * @param opaqueSortCompareFn The opaque sort comparison function. If null no order is applied
|
|
|
|
+ * @param alphaTestSortCompareFn The alpha test sort comparison function. If null no order is applied
|
|
|
|
+ * @param transparentSortCompareFn The transparent sort comparison function. If null back to front + alpha index sort is applied
|
|
*/
|
|
*/
|
|
- protected _attachImageProcessingConfiguration(configuration: Nullable<ImageProcessingConfiguration>, doNotBuild?: boolean): void;
|
|
|
|
|
|
+ constructor(index: number, scene: Scene, opaqueSortCompareFn?: Nullable<(a: SubMesh, b: SubMesh) => number>, alphaTestSortCompareFn?: Nullable<(a: SubMesh, b: SubMesh) => number>, transparentSortCompareFn?: Nullable<(a: SubMesh, b: SubMesh) => number>);
|
|
/**
|
|
/**
|
|
- * Gets Color curves setup used in the effect if colorCurvesEnabled is set to true .
|
|
|
|
|
|
+ * Render all the sub meshes contained in the group.
|
|
|
|
+ * @param customRenderFunction Used to override the default render behaviour of the group.
|
|
|
|
+ * @returns true if rendered some submeshes.
|
|
*/
|
|
*/
|
|
|
|
+ render(customRenderFunction: Nullable<(opaqueSubMeshes: SmartArray<SubMesh>, transparentSubMeshes: SmartArray<SubMesh>, alphaTestSubMeshes: SmartArray<SubMesh>, depthOnlySubMeshes: SmartArray<SubMesh>) => void>, renderSprites: boolean, renderParticles: boolean, activeMeshes: Nullable<AbstractMesh[]>): void;
|
|
/**
|
|
/**
|
|
- * Sets Color curves setup used in the effect if colorCurvesEnabled is set to true .
|
|
|
|
|
|
+ * Renders the opaque submeshes in the order from the opaqueSortCompareFn.
|
|
|
|
+ * @param subMeshes The submeshes to render
|
|
*/
|
|
*/
|
|
- colorCurves: Nullable<ColorCurves>;
|
|
|
|
|
|
+ private renderOpaqueSorted(subMeshes);
|
|
/**
|
|
/**
|
|
- * Gets wether the color curves effect is enabled.
|
|
|
|
|
|
+ * Renders the opaque submeshes in the order from the alphatestSortCompareFn.
|
|
|
|
+ * @param subMeshes The submeshes to render
|
|
*/
|
|
*/
|
|
|
|
+ private renderAlphaTestSorted(subMeshes);
|
|
/**
|
|
/**
|
|
- * Sets wether the color curves effect is enabled.
|
|
|
|
|
|
+ * Renders the opaque submeshes in the order from the transparentSortCompareFn.
|
|
|
|
+ * @param subMeshes The submeshes to render
|
|
*/
|
|
*/
|
|
- colorCurvesEnabled: boolean;
|
|
|
|
|
|
+ private renderTransparentSorted(subMeshes);
|
|
/**
|
|
/**
|
|
- * Gets Color grading LUT texture used in the effect if colorGradingEnabled is set to true.
|
|
|
|
|
|
+ * Renders the submeshes in a specified order.
|
|
|
|
+ * @param subMeshes The submeshes to sort before render
|
|
|
|
+ * @param sortCompareFn The comparison function use to sort
|
|
|
|
+ * @param cameraPosition The camera position use to preprocess the submeshes to help sorting
|
|
|
|
+ * @param transparent Specifies to activate blending if true
|
|
*/
|
|
*/
|
|
|
|
+ private static renderSorted(subMeshes, sortCompareFn, camera, transparent);
|
|
/**
|
|
/**
|
|
- * Sets Color grading LUT texture used in the effect if colorGradingEnabled is set to true.
|
|
|
|
|
|
+ * Renders the submeshes in the order they were dispatched (no sort applied).
|
|
|
|
+ * @param subMeshes The submeshes to render
|
|
*/
|
|
*/
|
|
- colorGradingTexture: Nullable<BaseTexture>;
|
|
|
|
|
|
+ private static renderUnsorted(subMeshes);
|
|
/**
|
|
/**
|
|
- * Gets wether the color grading effect is enabled.
|
|
|
|
|
|
+ * Build in function which can be applied to ensure meshes of a special queue (opaque, alpha test, transparent)
|
|
|
|
+ * are rendered back to front if in the same alpha index.
|
|
|
|
+ *
|
|
|
|
+ * @param a The first submesh
|
|
|
|
+ * @param b The second submesh
|
|
|
|
+ * @returns The result of the comparison
|
|
*/
|
|
*/
|
|
|
|
+ static defaultTransparentSortCompare(a: SubMesh, b: SubMesh): number;
|
|
/**
|
|
/**
|
|
- * Gets wether the color grading effect is enabled.
|
|
|
|
|
|
+ * Build in function which can be applied to ensure meshes of a special queue (opaque, alpha test, transparent)
|
|
|
|
+ * are rendered back to front.
|
|
|
|
+ *
|
|
|
|
+ * @param a The first submesh
|
|
|
|
+ * @param b The second submesh
|
|
|
|
+ * @returns The result of the comparison
|
|
*/
|
|
*/
|
|
- colorGradingEnabled: boolean;
|
|
|
|
|
|
+ static backToFrontSortCompare(a: SubMesh, b: SubMesh): number;
|
|
/**
|
|
/**
|
|
- * Gets exposure used in the effect.
|
|
|
|
|
|
+ * Build in function which can be applied to ensure meshes of a special queue (opaque, alpha test, transparent)
|
|
|
|
+ * are rendered front to back (prevent overdraw).
|
|
|
|
+ *
|
|
|
|
+ * @param a The first submesh
|
|
|
|
+ * @param b The second submesh
|
|
|
|
+ * @returns The result of the comparison
|
|
|
|
+ */
|
|
|
|
+ static frontToBackSortCompare(a: SubMesh, b: SubMesh): number;
|
|
|
|
+ /**
|
|
|
|
+ * Resets the different lists of submeshes to prepare a new frame.
|
|
|
|
+ */
|
|
|
|
+ prepare(): void;
|
|
|
|
+ dispose(): void;
|
|
|
|
+ /**
|
|
|
|
+ * Inserts the submesh in its correct queue depending on its material.
|
|
|
|
+ * @param subMesh The submesh to dispatch
|
|
|
|
+ */
|
|
|
|
+ dispatch(subMesh: SubMesh): void;
|
|
|
|
+ dispatchSprites(spriteManager: SpriteManager): void;
|
|
|
|
+ dispatchParticles(particleSystem: IParticleSystem): void;
|
|
|
|
+ private _renderParticles(activeMeshes);
|
|
|
|
+ private _renderSprites();
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+declare module BABYLON {
|
|
|
|
+ class RenderingManager {
|
|
|
|
+ /**
|
|
|
|
+ * The max id used for rendering groups (not included)
|
|
|
|
+ */
|
|
|
|
+ static MAX_RENDERINGGROUPS: number;
|
|
|
|
+ /**
|
|
|
|
+ * The min id used for rendering groups (included)
|
|
|
|
+ */
|
|
|
|
+ static MIN_RENDERINGGROUPS: number;
|
|
|
|
+ /**
|
|
|
|
+ * Used to globally prevent autoclearing scenes.
|
|
|
|
+ */
|
|
|
|
+ static AUTOCLEAR: boolean;
|
|
|
|
+ private _scene;
|
|
|
|
+ private _renderingGroups;
|
|
|
|
+ private _depthStencilBufferAlreadyCleaned;
|
|
|
|
+ private _autoClearDepthStencil;
|
|
|
|
+ private _customOpaqueSortCompareFn;
|
|
|
|
+ private _customAlphaTestSortCompareFn;
|
|
|
|
+ private _customTransparentSortCompareFn;
|
|
|
|
+ private _renderinGroupInfo;
|
|
|
|
+ constructor(scene: Scene);
|
|
|
|
+ private _clearDepthStencilBuffer(depth?, stencil?);
|
|
|
|
+ render(customRenderFunction: Nullable<(opaqueSubMeshes: SmartArray<SubMesh>, transparentSubMeshes: SmartArray<SubMesh>, alphaTestSubMeshes: SmartArray<SubMesh>, depthOnlySubMeshes: SmartArray<SubMesh>) => void>, activeMeshes: Nullable<AbstractMesh[]>, renderParticles: boolean, renderSprites: boolean): void;
|
|
|
|
+ reset(): void;
|
|
|
|
+ dispose(): void;
|
|
|
|
+ private _prepareRenderingGroup(renderingGroupId);
|
|
|
|
+ dispatchSprites(spriteManager: SpriteManager): void;
|
|
|
|
+ dispatchParticles(particleSystem: IParticleSystem): void;
|
|
|
|
+ dispatch(subMesh: SubMesh): void;
|
|
|
|
+ /**
|
|
|
|
+ * Overrides the default sort function applied in the renderging group to prepare the meshes.
|
|
|
|
+ * This allowed control for front to back rendering or reversly depending of the special needs.
|
|
|
|
+ *
|
|
|
|
+ * @param renderingGroupId The rendering group id corresponding to its index
|
|
|
|
+ * @param opaqueSortCompareFn The opaque queue comparison function use to sort.
|
|
|
|
+ * @param alphaTestSortCompareFn The alpha test queue comparison function use to sort.
|
|
|
|
+ * @param transparentSortCompareFn The transparent queue comparison function use to sort.
|
|
|
|
+ */
|
|
|
|
+ setRenderingOrder(renderingGroupId: number, opaqueSortCompareFn?: Nullable<(a: SubMesh, b: SubMesh) => number>, alphaTestSortCompareFn?: Nullable<(a: SubMesh, b: SubMesh) => number>, transparentSortCompareFn?: Nullable<(a: SubMesh, b: SubMesh) => number>): void;
|
|
|
|
+ /**
|
|
|
|
+ * Specifies whether or not the stencil and depth buffer are cleared between two rendering groups.
|
|
|
|
+ *
|
|
|
|
+ * @param renderingGroupId The rendering group id corresponding to its index
|
|
|
|
+ * @param autoClearDepthStencil Automatically clears depth and stencil between groups if true.
|
|
|
|
+ * @param depth Automatically clears depth between groups if true and autoClear is true.
|
|
|
|
+ * @param stencil Automatically clears stencil between groups if true and autoClear is true.
|
|
|
|
+ */
|
|
|
|
+ setRenderingAutoClearDepthStencil(renderingGroupId: number, autoClearDepthStencil: boolean, depth?: boolean, stencil?: boolean): void;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+declare module BABYLON {
|
|
|
|
+ class AnaglyphPostProcess extends PostProcess {
|
|
|
|
+ private _passedProcess;
|
|
|
|
+ constructor(name: string, options: number | PostProcessOptions, rigCameras: Camera[], samplingMode?: number, engine?: Engine, reusable?: boolean);
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+declare module BABYLON {
|
|
|
|
+ class BlackAndWhitePostProcess extends PostProcess {
|
|
|
|
+ degree: number;
|
|
|
|
+ constructor(name: string, options: number | PostProcessOptions, camera: Camera, samplingMode?: number, engine?: Engine, reusable?: boolean);
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+declare module BABYLON {
|
|
|
|
+ class BlurPostProcess extends PostProcess {
|
|
|
|
+ direction: Vector2;
|
|
|
|
+ protected _kernel: number;
|
|
|
|
+ protected _idealKernel: number;
|
|
|
|
+ protected _packedFloat: boolean;
|
|
|
|
+ /**
|
|
|
|
+ * Gets the length in pixels of the blur sample region
|
|
|
|
+ */
|
|
|
|
+ /**
|
|
|
|
+ * Sets the length in pixels of the blur sample region
|
|
|
|
+ */
|
|
|
|
+ kernel: number;
|
|
|
|
+ /**
|
|
|
|
+ * Gets wether or not the blur is unpacking/repacking floats
|
|
|
|
+ */
|
|
|
|
+ /**
|
|
|
|
+ * Sets wether or not the blur needs to unpack/repack floats
|
|
|
|
+ */
|
|
|
|
+ packedFloat: boolean;
|
|
|
|
+ constructor(name: string, direction: Vector2, kernel: number, options: number | PostProcessOptions, camera: Nullable<Camera>, samplingMode?: number, engine?: Engine, reusable?: boolean, textureType?: number);
|
|
|
|
+ protected _updateParameters(): void;
|
|
|
|
+ /**
|
|
|
|
+ * Best kernels are odd numbers that when divided by 2, their integer part is even, so 5, 9 or 13.
|
|
|
|
+ * Other odd kernels optimize correctly but require proportionally more samples, even kernels are
|
|
|
|
+ * possible but will produce minor visual artifacts. Since each new kernel requires a new shader we
|
|
|
|
+ * want to minimize kernel changes, having gaps between physical kernels is helpful in that regard.
|
|
|
|
+ * The gaps between physical kernels are compensated for in the weighting of the samples
|
|
|
|
+ * @param idealKernel Ideal blur kernel.
|
|
|
|
+ * @return Nearest best kernel.
|
|
|
|
+ */
|
|
|
|
+ protected _nearestBestKernel(idealKernel: number): number;
|
|
|
|
+ /**
|
|
|
|
+ * Calculates the value of a Gaussian distribution with sigma 3 at a given point.
|
|
|
|
+ * @param x The point on the Gaussian distribution to sample.
|
|
|
|
+ * @return the value of the Gaussian function at x.
|
|
|
|
+ */
|
|
|
|
+ protected _gaussianWeight(x: number): number;
|
|
|
|
+ /**
|
|
|
|
+ * Generates a string that can be used as a floating point number in GLSL.
|
|
|
|
+ * @param x Value to print.
|
|
|
|
+ * @param decimalFigures Number of decimal places to print the number to (excluding trailing 0s).
|
|
|
|
+ * @return GLSL float string.
|
|
|
|
+ */
|
|
|
|
+ protected _glslFloat(x: number, decimalFigures?: number): string;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+declare module BABYLON {
|
|
|
|
+ class ColorCorrectionPostProcess extends PostProcess {
|
|
|
|
+ private _colorTableTexture;
|
|
|
|
+ constructor(name: string, colorTableUrl: string, options: number | PostProcessOptions, camera: Camera, samplingMode?: number, engine?: Engine, reusable?: boolean);
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+declare module BABYLON {
|
|
|
|
+ class ConvolutionPostProcess extends PostProcess {
|
|
|
|
+ kernel: number[];
|
|
|
|
+ constructor(name: string, kernel: number[], options: number | PostProcessOptions, camera: Camera, samplingMode?: number, engine?: Engine, reusable?: boolean);
|
|
|
|
+ static EdgeDetect0Kernel: number[];
|
|
|
|
+ static EdgeDetect1Kernel: number[];
|
|
|
|
+ static EdgeDetect2Kernel: number[];
|
|
|
|
+ static SharpenKernel: number[];
|
|
|
|
+ static EmbossKernel: number[];
|
|
|
|
+ static GaussianKernel: number[];
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+declare module BABYLON {
|
|
|
|
+ class DisplayPassPostProcess extends PostProcess {
|
|
|
|
+ constructor(name: string, options: number | PostProcessOptions, camera: Nullable<Camera>, samplingMode?: number, engine?: Engine, reusable?: boolean);
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+declare module BABYLON {
|
|
|
|
+ class FilterPostProcess extends PostProcess {
|
|
|
|
+ kernelMatrix: Matrix;
|
|
|
|
+ constructor(name: string, kernelMatrix: Matrix, options: number | PostProcessOptions, camera: Nullable<Camera>, samplingMode?: number, engine?: Engine, reusable?: boolean);
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+declare module BABYLON {
|
|
|
|
+ class FxaaPostProcess extends PostProcess {
|
|
|
|
+ texelWidth: number;
|
|
|
|
+ texelHeight: number;
|
|
|
|
+ constructor(name: string, options: number | PostProcessOptions, camera?: Nullable<Camera>, samplingMode?: number, engine?: Engine, reusable?: boolean, textureType?: number);
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+declare module BABYLON {
|
|
|
|
+ class HighlightsPostProcess extends PostProcess {
|
|
|
|
+ constructor(name: string, options: number | PostProcessOptions, camera: Nullable<Camera>, samplingMode?: number, engine?: Engine, reusable?: boolean, textureType?: number);
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+declare module BABYLON {
|
|
|
|
+ class ImageProcessingPostProcess extends PostProcess {
|
|
|
|
+ /**
|
|
|
|
+ * Default configuration related to image processing available in the PBR Material.
|
|
|
|
+ */
|
|
|
|
+ protected _imageProcessingConfiguration: ImageProcessingConfiguration;
|
|
|
|
+ /**
|
|
|
|
+ * Gets the image processing configuration used either in this material.
|
|
|
|
+ */
|
|
|
|
+ /**
|
|
|
|
+ * Sets the Default image processing configuration used either in the this material.
|
|
|
|
+ *
|
|
|
|
+ * If sets to null, the scene one is in use.
|
|
|
|
+ */
|
|
|
|
+ imageProcessingConfiguration: ImageProcessingConfiguration;
|
|
|
|
+ /**
|
|
|
|
+ * Keep track of the image processing observer to allow dispose and replace.
|
|
|
|
+ */
|
|
|
|
+ private _imageProcessingObserver;
|
|
|
|
+ /**
|
|
|
|
+ * Attaches a new image processing configuration to the PBR Material.
|
|
|
|
+ * @param configuration
|
|
|
|
+ */
|
|
|
|
+ protected _attachImageProcessingConfiguration(configuration: Nullable<ImageProcessingConfiguration>, doNotBuild?: boolean): void;
|
|
|
|
+ /**
|
|
|
|
+ * Gets Color curves setup used in the effect if colorCurvesEnabled is set to true .
|
|
|
|
+ */
|
|
|
|
+ /**
|
|
|
|
+ * Sets Color curves setup used in the effect if colorCurvesEnabled is set to true .
|
|
|
|
+ */
|
|
|
|
+ colorCurves: Nullable<ColorCurves>;
|
|
|
|
+ /**
|
|
|
|
+ * Gets wether the color curves effect is enabled.
|
|
|
|
+ */
|
|
|
|
+ /**
|
|
|
|
+ * Sets wether the color curves effect is enabled.
|
|
|
|
+ */
|
|
|
|
+ colorCurvesEnabled: boolean;
|
|
|
|
+ /**
|
|
|
|
+ * Gets Color grading LUT texture used in the effect if colorGradingEnabled is set to true.
|
|
|
|
+ */
|
|
|
|
+ /**
|
|
|
|
+ * Sets Color grading LUT texture used in the effect if colorGradingEnabled is set to true.
|
|
|
|
+ */
|
|
|
|
+ colorGradingTexture: Nullable<BaseTexture>;
|
|
|
|
+ /**
|
|
|
|
+ * Gets wether the color grading effect is enabled.
|
|
|
|
+ */
|
|
|
|
+ /**
|
|
|
|
+ * Gets wether the color grading effect is enabled.
|
|
|
|
+ */
|
|
|
|
+ colorGradingEnabled: boolean;
|
|
|
|
+ /**
|
|
|
|
+ * Gets exposure used in the effect.
|
|
*/
|
|
*/
|
|
/**
|
|
/**
|
|
* Sets exposure used in the effect.
|
|
* Sets exposure used in the effect.
|
|
@@ -15414,269 +15677,6 @@ declare module BABYLON {
|
|
}
|
|
}
|
|
|
|
|
|
declare module BABYLON {
|
|
declare module BABYLON {
|
|
- class BoundingBoxRenderer {
|
|
|
|
- frontColor: Color3;
|
|
|
|
- backColor: Color3;
|
|
|
|
- showBackLines: boolean;
|
|
|
|
- renderList: SmartArray<BoundingBox>;
|
|
|
|
- private _scene;
|
|
|
|
- private _colorShader;
|
|
|
|
- private _vertexBuffers;
|
|
|
|
- private _indexBuffer;
|
|
|
|
- constructor(scene: Scene);
|
|
|
|
- private _prepareRessources();
|
|
|
|
- private _createIndexBuffer();
|
|
|
|
- _rebuild(): void;
|
|
|
|
- reset(): void;
|
|
|
|
- render(): void;
|
|
|
|
- renderOcclusionBoundingBox(mesh: AbstractMesh): void;
|
|
|
|
- dispose(): void;
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-declare module BABYLON {
|
|
|
|
- class DepthRenderer {
|
|
|
|
- private _scene;
|
|
|
|
- private _depthMap;
|
|
|
|
- private _effect;
|
|
|
|
- private _cachedDefines;
|
|
|
|
- constructor(scene: Scene, type?: number);
|
|
|
|
- isReady(subMesh: SubMesh, useInstances: boolean): boolean;
|
|
|
|
- getDepthMap(): RenderTargetTexture;
|
|
|
|
- dispose(): void;
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-declare module BABYLON {
|
|
|
|
- class EdgesRenderer {
|
|
|
|
- edgesWidthScalerForOrthographic: number;
|
|
|
|
- edgesWidthScalerForPerspective: number;
|
|
|
|
- private _source;
|
|
|
|
- private _linesPositions;
|
|
|
|
- private _linesNormals;
|
|
|
|
- private _linesIndices;
|
|
|
|
- private _epsilon;
|
|
|
|
- private _indicesCount;
|
|
|
|
- private _lineShader;
|
|
|
|
- private _ib;
|
|
|
|
- private _buffers;
|
|
|
|
- private _checkVerticesInsteadOfIndices;
|
|
|
|
- constructor(source: AbstractMesh, epsilon?: number, checkVerticesInsteadOfIndices?: boolean);
|
|
|
|
- private _prepareRessources();
|
|
|
|
- _rebuild(): void;
|
|
|
|
- dispose(): void;
|
|
|
|
- private _processEdgeForAdjacencies(pa, pb, p0, p1, p2);
|
|
|
|
- private _processEdgeForAdjacenciesWithVertices(pa, pb, p0, p1, p2);
|
|
|
|
- private _checkEdge(faceIndex, edge, faceNormals, p0, p1);
|
|
|
|
- _generateEdgesLines(): void;
|
|
|
|
- render(): void;
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-declare module BABYLON {
|
|
|
|
- class GeometryBufferRenderer {
|
|
|
|
- private _scene;
|
|
|
|
- private _multiRenderTarget;
|
|
|
|
- private _effect;
|
|
|
|
- private _ratio;
|
|
|
|
- private _cachedDefines;
|
|
|
|
- private _enablePosition;
|
|
|
|
- renderList: Mesh[];
|
|
|
|
- readonly isSupported: boolean;
|
|
|
|
- enablePosition: boolean;
|
|
|
|
- constructor(scene: Scene, ratio?: number);
|
|
|
|
- isReady(subMesh: SubMesh, useInstances: boolean): boolean;
|
|
|
|
- getGBuffer(): MultiRenderTarget;
|
|
|
|
- dispose(): void;
|
|
|
|
- private _createRenderTargets();
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-declare module BABYLON {
|
|
|
|
- class OutlineRenderer {
|
|
|
|
- private _scene;
|
|
|
|
- private _effect;
|
|
|
|
- private _cachedDefines;
|
|
|
|
- zOffset: number;
|
|
|
|
- constructor(scene: Scene);
|
|
|
|
- render(subMesh: SubMesh, batch: _InstancesBatch, useOverlay?: boolean): void;
|
|
|
|
- isReady(subMesh: SubMesh, useInstances: boolean): boolean;
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-declare module BABYLON {
|
|
|
|
- class RenderingGroup {
|
|
|
|
- index: number;
|
|
|
|
- private _scene;
|
|
|
|
- private _opaqueSubMeshes;
|
|
|
|
- private _transparentSubMeshes;
|
|
|
|
- private _alphaTestSubMeshes;
|
|
|
|
- private _depthOnlySubMeshes;
|
|
|
|
- private _particleSystems;
|
|
|
|
- private _spriteManagers;
|
|
|
|
- private _opaqueSortCompareFn;
|
|
|
|
- private _alphaTestSortCompareFn;
|
|
|
|
- private _transparentSortCompareFn;
|
|
|
|
- private _renderOpaque;
|
|
|
|
- private _renderAlphaTest;
|
|
|
|
- private _renderTransparent;
|
|
|
|
- private _edgesRenderers;
|
|
|
|
- onBeforeTransparentRendering: () => void;
|
|
|
|
- /**
|
|
|
|
- * Set the opaque sort comparison function.
|
|
|
|
- * If null the sub meshes will be render in the order they were created
|
|
|
|
- */
|
|
|
|
- opaqueSortCompareFn: Nullable<(a: SubMesh, b: SubMesh) => number>;
|
|
|
|
- /**
|
|
|
|
- * Set the alpha test sort comparison function.
|
|
|
|
- * If null the sub meshes will be render in the order they were created
|
|
|
|
- */
|
|
|
|
- alphaTestSortCompareFn: Nullable<(a: SubMesh, b: SubMesh) => number>;
|
|
|
|
- /**
|
|
|
|
- * Set the transparent sort comparison function.
|
|
|
|
- * If null the sub meshes will be render in the order they were created
|
|
|
|
- */
|
|
|
|
- transparentSortCompareFn: Nullable<(a: SubMesh, b: SubMesh) => number>;
|
|
|
|
- /**
|
|
|
|
- * Creates a new rendering group.
|
|
|
|
- * @param index The rendering group index
|
|
|
|
- * @param opaqueSortCompareFn The opaque sort comparison function. If null no order is applied
|
|
|
|
- * @param alphaTestSortCompareFn The alpha test sort comparison function. If null no order is applied
|
|
|
|
- * @param transparentSortCompareFn The transparent sort comparison function. If null back to front + alpha index sort is applied
|
|
|
|
- */
|
|
|
|
- constructor(index: number, scene: Scene, opaqueSortCompareFn?: Nullable<(a: SubMesh, b: SubMesh) => number>, alphaTestSortCompareFn?: Nullable<(a: SubMesh, b: SubMesh) => number>, transparentSortCompareFn?: Nullable<(a: SubMesh, b: SubMesh) => number>);
|
|
|
|
- /**
|
|
|
|
- * Render all the sub meshes contained in the group.
|
|
|
|
- * @param customRenderFunction Used to override the default render behaviour of the group.
|
|
|
|
- * @returns true if rendered some submeshes.
|
|
|
|
- */
|
|
|
|
- render(customRenderFunction: Nullable<(opaqueSubMeshes: SmartArray<SubMesh>, transparentSubMeshes: SmartArray<SubMesh>, alphaTestSubMeshes: SmartArray<SubMesh>, depthOnlySubMeshes: SmartArray<SubMesh>) => void>, renderSprites: boolean, renderParticles: boolean, activeMeshes: Nullable<AbstractMesh[]>): void;
|
|
|
|
- /**
|
|
|
|
- * Renders the opaque submeshes in the order from the opaqueSortCompareFn.
|
|
|
|
- * @param subMeshes The submeshes to render
|
|
|
|
- */
|
|
|
|
- private renderOpaqueSorted(subMeshes);
|
|
|
|
- /**
|
|
|
|
- * Renders the opaque submeshes in the order from the alphatestSortCompareFn.
|
|
|
|
- * @param subMeshes The submeshes to render
|
|
|
|
- */
|
|
|
|
- private renderAlphaTestSorted(subMeshes);
|
|
|
|
- /**
|
|
|
|
- * Renders the opaque submeshes in the order from the transparentSortCompareFn.
|
|
|
|
- * @param subMeshes The submeshes to render
|
|
|
|
- */
|
|
|
|
- private renderTransparentSorted(subMeshes);
|
|
|
|
- /**
|
|
|
|
- * Renders the submeshes in a specified order.
|
|
|
|
- * @param subMeshes The submeshes to sort before render
|
|
|
|
- * @param sortCompareFn The comparison function use to sort
|
|
|
|
- * @param cameraPosition The camera position use to preprocess the submeshes to help sorting
|
|
|
|
- * @param transparent Specifies to activate blending if true
|
|
|
|
- */
|
|
|
|
- private static renderSorted(subMeshes, sortCompareFn, camera, transparent);
|
|
|
|
- /**
|
|
|
|
- * Renders the submeshes in the order they were dispatched (no sort applied).
|
|
|
|
- * @param subMeshes The submeshes to render
|
|
|
|
- */
|
|
|
|
- private static renderUnsorted(subMeshes);
|
|
|
|
- /**
|
|
|
|
- * Build in function which can be applied to ensure meshes of a special queue (opaque, alpha test, transparent)
|
|
|
|
- * are rendered back to front if in the same alpha index.
|
|
|
|
- *
|
|
|
|
- * @param a The first submesh
|
|
|
|
- * @param b The second submesh
|
|
|
|
- * @returns The result of the comparison
|
|
|
|
- */
|
|
|
|
- static defaultTransparentSortCompare(a: SubMesh, b: SubMesh): number;
|
|
|
|
- /**
|
|
|
|
- * Build in function which can be applied to ensure meshes of a special queue (opaque, alpha test, transparent)
|
|
|
|
- * are rendered back to front.
|
|
|
|
- *
|
|
|
|
- * @param a The first submesh
|
|
|
|
- * @param b The second submesh
|
|
|
|
- * @returns The result of the comparison
|
|
|
|
- */
|
|
|
|
- static backToFrontSortCompare(a: SubMesh, b: SubMesh): number;
|
|
|
|
- /**
|
|
|
|
- * Build in function which can be applied to ensure meshes of a special queue (opaque, alpha test, transparent)
|
|
|
|
- * are rendered front to back (prevent overdraw).
|
|
|
|
- *
|
|
|
|
- * @param a The first submesh
|
|
|
|
- * @param b The second submesh
|
|
|
|
- * @returns The result of the comparison
|
|
|
|
- */
|
|
|
|
- static frontToBackSortCompare(a: SubMesh, b: SubMesh): number;
|
|
|
|
- /**
|
|
|
|
- * Resets the different lists of submeshes to prepare a new frame.
|
|
|
|
- */
|
|
|
|
- prepare(): void;
|
|
|
|
- dispose(): void;
|
|
|
|
- /**
|
|
|
|
- * Inserts the submesh in its correct queue depending on its material.
|
|
|
|
- * @param subMesh The submesh to dispatch
|
|
|
|
- */
|
|
|
|
- dispatch(subMesh: SubMesh): void;
|
|
|
|
- dispatchSprites(spriteManager: SpriteManager): void;
|
|
|
|
- dispatchParticles(particleSystem: IParticleSystem): void;
|
|
|
|
- private _renderParticles(activeMeshes);
|
|
|
|
- private _renderSprites();
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-declare module BABYLON {
|
|
|
|
- class RenderingManager {
|
|
|
|
- /**
|
|
|
|
- * The max id used for rendering groups (not included)
|
|
|
|
- */
|
|
|
|
- static MAX_RENDERINGGROUPS: number;
|
|
|
|
- /**
|
|
|
|
- * The min id used for rendering groups (included)
|
|
|
|
- */
|
|
|
|
- static MIN_RENDERINGGROUPS: number;
|
|
|
|
- /**
|
|
|
|
- * Used to globally prevent autoclearing scenes.
|
|
|
|
- */
|
|
|
|
- static AUTOCLEAR: boolean;
|
|
|
|
- private _scene;
|
|
|
|
- private _renderingGroups;
|
|
|
|
- private _depthStencilBufferAlreadyCleaned;
|
|
|
|
- private _autoClearDepthStencil;
|
|
|
|
- private _customOpaqueSortCompareFn;
|
|
|
|
- private _customAlphaTestSortCompareFn;
|
|
|
|
- private _customTransparentSortCompareFn;
|
|
|
|
- private _renderinGroupInfo;
|
|
|
|
- constructor(scene: Scene);
|
|
|
|
- private _clearDepthStencilBuffer(depth?, stencil?);
|
|
|
|
- render(customRenderFunction: Nullable<(opaqueSubMeshes: SmartArray<SubMesh>, transparentSubMeshes: SmartArray<SubMesh>, alphaTestSubMeshes: SmartArray<SubMesh>, depthOnlySubMeshes: SmartArray<SubMesh>) => void>, activeMeshes: Nullable<AbstractMesh[]>, renderParticles: boolean, renderSprites: boolean): void;
|
|
|
|
- reset(): void;
|
|
|
|
- dispose(): void;
|
|
|
|
- private _prepareRenderingGroup(renderingGroupId);
|
|
|
|
- dispatchSprites(spriteManager: SpriteManager): void;
|
|
|
|
- dispatchParticles(particleSystem: IParticleSystem): void;
|
|
|
|
- dispatch(subMesh: SubMesh): void;
|
|
|
|
- /**
|
|
|
|
- * Overrides the default sort function applied in the renderging group to prepare the meshes.
|
|
|
|
- * This allowed control for front to back rendering or reversly depending of the special needs.
|
|
|
|
- *
|
|
|
|
- * @param renderingGroupId The rendering group id corresponding to its index
|
|
|
|
- * @param opaqueSortCompareFn The opaque queue comparison function use to sort.
|
|
|
|
- * @param alphaTestSortCompareFn The alpha test queue comparison function use to sort.
|
|
|
|
- * @param transparentSortCompareFn The transparent queue comparison function use to sort.
|
|
|
|
- */
|
|
|
|
- setRenderingOrder(renderingGroupId: number, opaqueSortCompareFn?: Nullable<(a: SubMesh, b: SubMesh) => number>, alphaTestSortCompareFn?: Nullable<(a: SubMesh, b: SubMesh) => number>, transparentSortCompareFn?: Nullable<(a: SubMesh, b: SubMesh) => number>): void;
|
|
|
|
- /**
|
|
|
|
- * Specifies whether or not the stencil and depth buffer are cleared between two rendering groups.
|
|
|
|
- *
|
|
|
|
- * @param renderingGroupId The rendering group id corresponding to its index
|
|
|
|
- * @param autoClearDepthStencil Automatically clears depth and stencil between groups if true.
|
|
|
|
- * @param depth Automatically clears depth between groups if true and autoClear is true.
|
|
|
|
- * @param stencil Automatically clears stencil between groups if true and autoClear is true.
|
|
|
|
- */
|
|
|
|
- setRenderingAutoClearDepthStencil(renderingGroupId: number, autoClearDepthStencil: boolean, depth?: boolean, stencil?: boolean): void;
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-declare module BABYLON {
|
|
|
|
class Sprite {
|
|
class Sprite {
|
|
name: string;
|
|
name: string;
|
|
position: Vector3;
|
|
position: Vector3;
|