playcanvas
Version:
Open-source WebGL/WebGPU 3D engine for the web
69 lines (68 loc) • 2.19 kB
TypeScript
/**
* @import { StorageBuffer } from '../../platform/graphics/storage-buffer.js'
* @import { GraphNode } from '../graph-node.js'
* @import { GraphicsDevice } from '../../platform/graphics/graphics-device.js'
* @import { Layer } from '../layer.js'
* @import { GSplatWorkBuffer } from './gsplat-work-buffer.js'
*/
/**
* Renders splats from the work buffer using instanced quad rendering.
*
* @ignore
*/
export class GSplatQuadRenderer extends GSplatRenderer {
/** @type {ShaderMaterial} */
_material: ShaderMaterial;
/** @type {MeshInstance} */
meshInstance: MeshInstance;
/** @type {number} */
originalBlendType: number;
/** @type {Set<string>} */
_internalDefines: Set<string>;
/** @type {boolean} */
forceCopyMaterial: boolean;
/** @private */
private _lastFisheyeEnabled;
configureMaterial(): void;
/**
* Binds work buffer textures to the material.
*
* @private
*/
private _bindWorkBufferTextures;
/**
* Injects format shader chunks into the material.
* Called during initialization and after copying settings from user material.
*
* @private
*/
private _injectFormatChunks;
update(count: any, textureSize: any): void;
frameUpdate(params: any): void;
_lastNoFog: any;
/**
* Updates the ID-related defines based on whether pcId stream exists.
*
* @private
*/
private _updateIdDefines;
/**
* Syncs with work buffer format when extra streams are added.
*
* @private
*/
private _syncWithWorkBufferFormat;
/**
* Copies material settings from a source material to the internal material.
* Preserves internal defines while copying user defines, parameters, and shader chunks.
*
* @param {ShaderMaterial} sourceMaterial - The source material to copy settings from.
* @private
*/
private copyMaterialSettings;
updateOverdrawMode(params: any): void;
createMeshInstance(): MeshInstance;
}
import { GSplatRenderer } from './gsplat-renderer.js';
import { ShaderMaterial } from '../materials/shader-material.js';
import { MeshInstance } from '../mesh-instance.js';