@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
74 lines (73 loc) • 2.81 kB
TypeScript
import { Vector2, Scene, WebGLRenderer, Mesh, WebGLRenderTarget, DataTexture, Texture, Material, OrthographicCamera } from 'three';
import { ClothController } from '../ClothController';
import { Ref } from '@vue/reactivity';
export interface ClothMaterialUniformConfigRef {
tSize: Ref<Vector2>;
tPosition0: Ref<Texture>;
tPosition1: Ref<Texture>;
tNormal: Ref<Texture>;
tOriginalRT: Ref<Texture>;
tViscositySpringT: Ref<Texture>;
tPreviousRT0: Ref<Texture>;
tPreviousRT1: Ref<Texture>;
tTargetRT0: Ref<Texture>;
tTargetRT1: Ref<Texture>;
tNormalsRT: Ref<Texture>;
tPositionRT0: Ref<Texture>;
tPositionRT1: Ref<Texture>;
tAdjacentsRT0: Ref<Texture>;
tAdjacentsRT1: Ref<Texture>;
tDistanceRT0: Ref<Texture>;
tDistanceRT1: Ref<Texture>;
integrationMat: Ref<Material>;
}
export type ClothMaterialUniformConfigRefString = Record<keyof ClothMaterialUniformConfigRef, string>;
export declare function clothMaterialCopyConfigRef(src: ClothMaterialUniformConfigRef, target: ClothMaterialUniformConfigRef): void;
export interface ClothMaterialUniformConfig {
tSize: Vector2;
tPosition0: Texture;
tPosition1: Texture;
tNormal: Texture;
}
export interface ClothMaterialUniformNameConfig {
tSize: string;
tPosition0: string;
tPosition1: string;
tNormal: string;
}
interface TextureContainer {
texture: DataTexture | null;
}
export declare class ClothFBOController {
readonly mainController: ClothController;
readonly tSize: Vector2;
readonly fboScene: Scene;
readonly fboCamera: OrthographicCamera;
readonly fboMesh: Mesh;
RESOLUTION: Vector2;
originalRT: TextureContainer;
viscositySpringT: TextureContainer;
readonly previousRT: [WebGLRenderTarget, WebGLRenderTarget];
readonly targetRT: [WebGLRenderTarget, WebGLRenderTarget];
normalsRT: WebGLRenderTarget;
readonly positionRT: [WebGLRenderTarget, WebGLRenderTarget];
readonly adjacentsRT: [TextureContainer, TextureContainer];
readonly distancesRT: [TextureContainer, TextureContainer];
renderer: WebGLRenderer | undefined;
constructor(mainController: ClothController);
private _initialized;
init(renderer: WebGLRenderer): void;
private copyTexture;
private createPositionTexture;
private createViscositySpringTexture;
private createTexturesFromAllocation;
private createAdjacentsTexture;
private createDistancesTexture;
update(config?: ClothMaterialUniformConfigRef): void;
private _updateTextureRefs;
private integrate;
protected solveConstraints(renderer: WebGLRenderer, secondaryMotionMult: number): void;
protected mouseOffset(renderer: WebGLRenderer): void;
protected computeVertexNormals(renderer: WebGLRenderer): void;
}
export {};