@spatialwalk/avatarkit
Version:
SPAvatar SDK - 3D Gaussian Splatting Avatar Rendering SDK
79 lines • 2.04 kB
TypeScript
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