UNPKG

@spatialwalk/avatarkit

Version:

SPAvatar SDK - 3D Gaussian Splatting Avatar Rendering SDK

79 lines 2.04 kB
import { CameraConfig } from '../types'; import { RenderBackend } from './renderer'; export interface RenderSystemOptions { canvas: HTMLCanvasElement; preferBackend?: RenderBackend; backgroundColor?: [number, number, number, number]; camera?: CameraConfig; } export declare class RenderSystem { private renderer; private backend; private canvas; private options; private camera; private viewMatrix; private projectionMatrix; private originalPackedData; renderTime: number; sortTime: number; constructor(options: RenderSystemOptions); /** * 初始化渲染系统 */ initialize(): Promise<void>; /** * 加载已打包的 Splat 数据(零拷贝,GPU 格式) * 直接接收 WASM 的 packed 数据 * * @param packedData Float32Array [pos3, color4, cov6] x N 个点 */ loadSplatsFromPackedData(packedData: Float32Array): void; /** * 渲染一帧 */ renderFrame(): void; /** * 更新相机参数 */ updateCamera(params: Partial<CameraConfig>): void; /** * 处理窗口大小变化 */ handleResize(): void; /** * 获取当前使用的后端 */ getBackend(): RenderBackend | null; /** * 清理资源 */ dispose(): void; /** * 检查 WebGPU 支持 */ private checkWebGPUSupport; /** * 更新相机长宽比 */ private updateCameraAspect; /** * 更新相机矩阵 */ private updateCameraMatrices; /** * 获取相机前向向量 */ private getCameraForward; /** * 更新透视投影矩阵(复用缓冲区) */ private updatePerspectiveMatrix; /** * 更新视图矩阵(直接更新预分配的缓冲区,避免每帧分配) * 等价于:inverse(translation) * inverse(rotation) = T^(-1) * R^(-1) * 其中 T 是平移矩阵,R 是旋转矩阵 */ private updateViewMatrix; } //# sourceMappingURL=RenderSystem.d.ts.map