pixi.js
Version:
<p align="center"> <a href="https://pixijs.com" target="_blank" rel="noopener noreferrer"> <img height="150" src="https://files.pixijs.download/branding/pixijs-logo-transparent-dark.svg?v=1" alt="PixiJS logo"> </a> </p> <br/> <p align="center">
80 lines (79 loc) • 2.68 kB
TypeScript
import { ExtensionType } from '../../../extensions/Extensions';
import { Matrix } from '../../../maths/matrix/Matrix';
import { BindGroup } from '../../../rendering/renderers/gpu/shader/BindGroup';
import { UniformGroup } from '../../../rendering/renderers/shared/shader/UniformGroup';
import { type GPUData } from '../../view/ViewContainer';
import { BatchableMesh } from './BatchableMesh';
import type { InstructionSet } from '../../../rendering/renderers/shared/instructions/InstructionSet';
import type { InstructionPipe, RenderPipe } from '../../../rendering/renderers/shared/instructions/RenderPipe';
import type { Renderer } from '../../../rendering/renderers/types';
import type { Mesh } from './Mesh';
/**
* GPUData for Mesh
* @internal
*/
export declare class MeshGpuData implements GPUData {
meshData?: MeshData;
batchableMesh?: BatchableMesh;
destroy(): void;
}
/**
* The data for the mesh
* @internal
*/
interface MeshData {
/** if the mesh is batched or not */
batched: boolean;
/** the size of the index buffer */
indexSize: number;
/** the size of the vertex buffer */
vertexSize: number;
}
/** @internal */
export interface MeshAdaptor {
init(): void;
execute(meshPipe: MeshPipe, mesh: Mesh): void;
destroy(): void;
}
/**
* The MeshPipe is responsible for handling the rendering of Mesh objects.
* It manages the batching of meshes, updates their GPU data, and executes the rendering instructions.
* It also handles the local uniforms for each mesh, such as transformation matrices and colors.
* @category scene
* @internal
*/
export declare class MeshPipe implements RenderPipe<Mesh>, InstructionPipe<Mesh> {
/** @ignore */
static extension: {
readonly type: readonly [ExtensionType.WebGLPipes, ExtensionType.WebGPUPipes, ExtensionType.CanvasPipes];
readonly name: "mesh";
};
localUniforms: UniformGroup<{
uTransformMatrix: {
value: Matrix;
type: "mat3x3<f32>";
};
uColor: {
value: Float32Array;
type: "vec4<f32>";
};
uRound: {
value: number;
type: "f32";
};
}>;
localUniformsBindGroup: BindGroup;
renderer: Renderer;
private _adaptor;
constructor(renderer: Renderer, adaptor: MeshAdaptor);
validateRenderable(mesh: Mesh): boolean;
addRenderable(mesh: Mesh, instructionSet: InstructionSet): void;
updateRenderable(mesh: Mesh): void;
execute(mesh: Mesh): void;
private _getMeshData;
private _initMeshData;
private _getBatchableMesh;
private _initBatchableMesh;
destroy(): void;
}
export {};