@babylonjs/core
Version:
Getting started? Play directly with the Babylon.js API using our [playground](https://playground.babylonjs.com/). It also contains a lot of samples to learn how to use it.
102 lines (101 loc) • 3.83 kB
TypeScript
import type { UniformBuffer } from "../../Materials/uniformBuffer.js";
import { Vector2 } from "../../Maths/math.vector.js";
import type { BaseTexture } from "../../Materials/Textures/baseTexture.js";
import type { Nullable } from "../../types.js";
import type { IAnimatable } from "../../Animations/animatable.interface.js";
import type { EffectFallbacks } from "../effectFallbacks.js";
import { MaterialPluginBase } from "../materialPluginBase.js";
import { MaterialDefines } from "../materialDefines.js";
import type { Scene } from "../../scene.js";
import type { AbstractMesh } from "../../Meshes/abstractMesh.js";
import type { PBRBaseMaterial } from "./pbrBaseMaterial.js";
/**
* @internal
*/
export declare class MaterialAnisotropicDefines extends MaterialDefines {
ANISOTROPIC: boolean;
ANISOTROPIC_TEXTURE: boolean;
ANISOTROPIC_TEXTUREDIRECTUV: number;
ANISOTROPIC_LEGACY: boolean;
MAINUV1: boolean;
}
/**
* Plugin that implements the anisotropic component of the PBR material
*/
export declare class PBRAnisotropicConfiguration extends MaterialPluginBase {
private _isEnabled;
/**
* Defines if the anisotropy is enabled in the material.
*/
isEnabled: boolean;
/**
* Defines the anisotropy strength (between 0 and 1) it defaults to 1.
*/
intensity: number;
/**
* Defines if the effect is along the tangents, bitangents or in between.
* By default, the effect is "stretching" the highlights along the tangents.
*/
direction: Vector2;
/**
* Sets the anisotropy direction as an angle.
*/
set angle(value: number);
/**
* Gets the anisotropy angle value in radians.
* @returns the anisotropy angle value in radians.
*/
get angle(): number;
private _texture;
/**
* Stores the anisotropy values in a texture.
* rg is direction (like normal from -1 to 1)
* b is a intensity
*/
texture: Nullable<BaseTexture>;
private _legacy;
/**
* Defines if the anisotropy is in legacy mode for backwards compatibility before 6.4.0.
*/
legacy: boolean;
/** @internal */
private _internalMarkAllSubMeshesAsTexturesDirty;
/** @internal */
_markAllSubMeshesAsTexturesDirty(): void;
/** @internal */
private _internalMarkAllSubMeshesAsMiscDirty;
/** @internal */
_markAllSubMeshesAsMiscDirty(): void;
/**
* Gets a boolean indicating that the plugin is compatible with a given shader language.
* @returns true if the plugin is compatible with the shader language
*/
isCompatible(): boolean;
constructor(material: PBRBaseMaterial, addToPluginList?: boolean);
isReadyForSubMesh(defines: MaterialAnisotropicDefines, scene: Scene): boolean;
prepareDefinesBeforeAttributes(defines: MaterialAnisotropicDefines, scene: Scene, mesh: AbstractMesh): void;
bindForSubMesh(uniformBuffer: UniformBuffer, scene: Scene): void;
hasTexture(texture: BaseTexture): boolean;
getActiveTextures(activeTextures: BaseTexture[]): void;
getAnimatables(animatables: IAnimatable[]): void;
dispose(forceDisposeTextures?: boolean): void;
getClassName(): string;
addFallbacks(defines: MaterialAnisotropicDefines, fallbacks: EffectFallbacks, currentRank: number): number;
getSamplers(samplers: string[]): void;
getUniforms(): {
ubo?: Array<{
name: string;
size: number;
type: string;
}>;
vertex?: string;
fragment?: string;
};
/**
* Parses a anisotropy Configuration from a serialized object.
* @param source - Serialized object.
* @param scene Defines the scene we are parsing for
* @param rootUrl Defines the rootUrl to load from
*/
parse(source: any, scene: Scene, rootUrl: string): void;
}