123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243 |
- import type { RawTexture } from "../Textures/rawTexture";
- import type { Vector2 } from "../../Maths/math.vector";
- import type { Nullable } from "../../types";
- import type { Color3 } from "../../Maths/math.color";
- /**
- * Interface which defines the available methods for a GreasedLineMaterial
- */
- export interface IGreasedLineMaterial {
- /**
- * Normalized value of how much of the line will be visible
- * 0 - 0% of the line will be visible
- * 1 - 100% of the line will be visible
- */
- visibility: number;
- /**
- * Line base width. At each point the line width is calculated by widths[pointIndex] * width
- */
- width: number;
- /**
- * Turns on/off dash mode
- */
- useDash: boolean;
- /**
- * @see GreasedLinePluginMaterial.setDashCount
- * Number of dashes in the line.
- * Defaults to 1.
- */
- dashCount: number;
- /**
- * Dash offset
- */
- dashOffset: number;
- /**
- * Length of the dash. 0 to 1. 0.5 means half empty, half drawn.
- */
- dashRatio: number;
- /**
- * Whether to use the colors option to colorize the line
- */
- useColors: boolean;
- /**
- * The mixing mode of the color paramater. Default value is GreasedLineMeshColorMode.SET.
- * MATERIAL_TYPE_SIMPLE mixes the color and colors of the greased line material.
- * MATERIAL_TYPE_STANDARD and MATERIAL_TYPE_PBR mixes the color from the base material with the color and/or colors of the greased line material.
- * @see GreasedLineMeshColorMode
- */
- colorMode: GreasedLineMeshColorMode;
- /**
- * Colors of the line segments.
- * Defaults to empty.
- */
- colors: Nullable<Color3[]>;
- /**
- * If false then width units = scene units. If true then line will width be reduced.
- * Defaults to false.
- */
- sizeAttenuation: boolean;
- /**
- * Color of the line. Applies to all line segments.
- * Defaults to White.
- */
- color: Nullable<Color3>;
- /**
- * The method used to distribute the colors along the line.
- * You can use segment distribution when each segment will use on color from the color table.
- * Or you can use line distribution when the colors are distributed evenly along the line ignoring the segments.
- */
- colorsDistributionType: GreasedLineMeshColorDistributionType;
- /**
- * Defaults to engine.getRenderWidth() and engine.getRenderHeight()
- * Rendering resolution
- */
- resolution: Vector2;
- /**
- * You can provide a colorsTexture to use instead of one generated from the 'colors' option
- */
- colorsTexture: Nullable<RawTexture>;
- /**
- * Allows to change the color without marking the material dirty.
- * MATERIAL_TYPE_STANDARD and MATERIAL_TYPE_PBR material's shaders will get recompiled if there was no color set and you set a color or when there was a color set and you set it to null.
- * @param value the color
- * @param doNotMarkDirty the flag
- */
- setColor(value: Nullable<Color3>, doNotMarkDirty?: boolean): void;
- /**
- * Set the colors
- * @param colors colors array
- * @param lazy if true the colors texture will not be updated
- * @param forceNewTexture forces to create a new colors texture
- */
- setColors(colors: Nullable<Color3[]>, lazy: boolean, forceNewTexture?: boolean): void;
- /**
- * Creates and sets the colors texture from the colors array which was created in lazy mode
- */
- updateLazy(): void;
- }
- /**
- * Material types for GreasedLine
- * {@link https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param/greased_line#materialtype}
- */
- export declare enum GreasedLineMeshMaterialType {
- /**
- * StandardMaterial
- */
- MATERIAL_TYPE_STANDARD = 0,
- /**
- * PBR Material
- */
- MATERIAL_TYPE_PBR = 1,
- /**
- * Simple and fast shader material not supporting lightning nor textures
- */
- MATERIAL_TYPE_SIMPLE = 2
- }
- /**
- * Color blending mode of the @see GreasedLineMaterial and the base material
- * {@link https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param/greased_line#colormode}
- */
- export declare enum GreasedLineMeshColorMode {
- /**
- * Color blending mode SET
- */
- COLOR_MODE_SET = 0,
- /**
- * Color blending mode ADD
- */
- COLOR_MODE_ADD = 1,
- /**
- * Color blending mode ADD
- */
- COLOR_MODE_MULTIPLY = 2
- }
- /**
- * Color distribution type of the @see colors.
- * {@link https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/param/greased_line#colordistributiontype}
- *
- */
- export declare enum GreasedLineMeshColorDistributionType {
- /**
- * Colors distributed between segments of the line
- */
- COLOR_DISTRIBUTION_TYPE_SEGMENT = 0,
- /**
- * Colors distributed along the line ingoring the segments
- */
- COLOR_DISTRIBUTION_TYPE_LINE = 1
- }
- /**
- * Options for GreasedLineMaterial
- */
- export interface GreasedLineMaterialOptions {
- /**
- * Line width. If sizeAttenuation os false scene units will be used for width.
- * Defaults to 0.1 if @see sizeAttenuation is false, or to 1 if it's true.
- */
- width?: number;
- /**
- * If false then width units = scene units. If true then line will width be reduced.
- * Defaults to false.
- */
- sizeAttenuation?: boolean;
- /**
- * Type of the material to use to render the line.
- * Defaults to StandardMaterial.
- */
- materialType?: GreasedLineMeshMaterialType;
- /**
- * Color of the line. Applies to all line segments.
- * Defaults to White.
- */
- color?: Color3;
- /**
- * Color mode of the line. Applies to all line segments.
- * The pixel color from the material shader will be modified with the value of @see color using the colorMode.
- * Defaults to @see GreasedLineMeshColorMode.SET
- */
- colorMode?: GreasedLineMeshColorMode;
- /**
- * Colors of the line segments.
- * Defaults to empty.
- */
- colors?: Color3[];
- /**
- * If true, @see colors are used, otherwise they're ignored.
- * Defaults to false.
- */
- useColors?: boolean;
- /**
- * Sampling type of the colors texture
- * Defaults to NEAREST_NEAREST.
- */
- colorsSampling?: number;
- /**
- * The method used to distribute the colors along the line.
- * You can use segment distribution when each segment will use on color from the color table.
- * Or you can use line distribution when the colors are distributed evenly along the line ignoring the segments.
- */
- colorDistributionType?: GreasedLineMeshColorDistributionType;
- /**
- * If true, dashing is used.
- * Defaults to false.
- */
- useDash?: boolean;
- /**
- * @see GreasedLinePluginMaterial.setDashCount
- * Number of dashes in the line.
- * Defaults to 1.
- */
- dashCount?: number;
- /**
- * Offset of the dashes along the line. 0 to 1.
- * Defaults to 0.
- * @see GreasedLinePluginMaterial.setDashOffset
- */
- dashOffset?: number;
- /**
- * Length of the dash. 0 to 1. 0.5 means half empty, half drawn.
- * Defaults to 0.5.
- * @see GreasedLinePluginMaterial.setDashRatio
- */
- dashRatio?: number;
- /**
- * Sets the line length visibility.
- * 0 - 0% of the line will be visible.
- * 1 - 100% of the line will be visible.
- * @see GreasedLinePluginMaterial.setVisibility
- */
- visibility?: number;
- /**
- * Defaults to engine.getRenderWidth() and engine.getRenderHeight()
- * Rendering resolution
- */
- resolution?: Vector2;
- /**
- * Whether to use camera facing for the line.
- * Defaults to true.
- */
- cameraFacing?: boolean;
- /**
- * You can provide a colorsTexture to use instead of one generated from the 'colors' option
- */
- colorsTexture?: RawTexture;
- }
|