UNPKG

@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
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; }