Enhance CDN packages and playground
Amp-Thread-ID: https://ampcode.com/threads/T-01a02485-5574-707c-bff4-5668d83bee8a Co-authored-by: Heaust Azure <heaust.azure@gmail.com>
This commit is contained in:
Vendored
+188
-25
@@ -30,10 +30,25 @@ declare module "@yawn/core" {
|
||||
passes: Array<{ name: string; milliseconds: number }>;
|
||||
}
|
||||
export class YawnCore {
|
||||
constructor(canvas: HTMLCanvasElement, options?: { arenaBytes?: number; debug?: boolean });
|
||||
constructor(
|
||||
canvas: HTMLCanvasElement,
|
||||
options?: { arenaBytes?: number; debug?: boolean },
|
||||
);
|
||||
readonly ready: Promise<void>;
|
||||
createRows(options: { name: string; rows: number; stride: number; format: RowFormat }): Promise<SharedRows>;
|
||||
createRowsBatch(rows: Array<{ name: string; rows: number; stride: number; format: RowFormat }>): Promise<SharedRows[]>;
|
||||
createRows(options: {
|
||||
name: string;
|
||||
rows: number;
|
||||
stride: number;
|
||||
format: RowFormat;
|
||||
}): Promise<SharedRows>;
|
||||
createRowsBatch(
|
||||
rows: Array<{
|
||||
name: string;
|
||||
rows: number;
|
||||
stride: number;
|
||||
format: RowFormat;
|
||||
}>,
|
||||
): Promise<SharedRows[]>;
|
||||
deleteRows(name: string): Promise<void>;
|
||||
allocateObject(name: string): Promise<number>;
|
||||
deleteObject(name: string, id: number): Promise<void>;
|
||||
@@ -52,23 +67,44 @@ declare module "@yawn/core" {
|
||||
declare module "@yawn/handles" {
|
||||
import { SharedRows, YawnCore } from "@yawn/core";
|
||||
|
||||
export interface SceneOptions { arenaBytes?: number; debug?: boolean; fps?: number; hdr?: boolean }
|
||||
export interface SceneOptions {
|
||||
arenaBytes?: number;
|
||||
debug?: boolean;
|
||||
fps?: number;
|
||||
hdr?: boolean;
|
||||
}
|
||||
export class Scene {
|
||||
constructor(canvas: HTMLCanvasElement, options?: SceneOptions);
|
||||
readonly core: YawnCore;
|
||||
readonly ready: Promise<this>;
|
||||
readonly hdr: boolean;
|
||||
array(name: string): SharedRows;
|
||||
ensureRows(name: string, rows: number, stride: number, format: "f32" | "u32" | "i32"): Promise<SharedRows>;
|
||||
ensureRows(
|
||||
name: string,
|
||||
rows: number,
|
||||
stride: number,
|
||||
format: "f32" | "u32" | "i32",
|
||||
): Promise<SharedRows>;
|
||||
reserve(additional: { nodes?: number; materials?: number }): Promise<void>;
|
||||
batchWrites<T>(operation: () => T): T;
|
||||
batchGraphUpdates<T>(operation: () => T | Promise<T>): Promise<T>;
|
||||
dispose(): void;
|
||||
}
|
||||
|
||||
export interface Vector3View { x: number; y: number; z: number; set(values: ArrayLike<number>): void }
|
||||
export interface RotorView extends Vector3View { w: number }
|
||||
export interface NodeOptions { position?: ArrayLike<number>; rotor?: ArrayLike<number>; scale?: ArrayLike<number> }
|
||||
export interface Vector3View {
|
||||
x: number;
|
||||
y: number;
|
||||
z: number;
|
||||
set(values: ArrayLike<number>): void;
|
||||
}
|
||||
export interface RotorView extends Vector3View {
|
||||
w: number;
|
||||
}
|
||||
export interface NodeOptions {
|
||||
position?: ArrayLike<number>;
|
||||
rotor?: ArrayLike<number>;
|
||||
scale?: ArrayLike<number>;
|
||||
}
|
||||
export class Node {
|
||||
constructor(scene: Scene, options?: NodeOptions);
|
||||
readonly scene: Scene;
|
||||
@@ -103,7 +139,13 @@ declare module "@yawn/handles" {
|
||||
dispose(): Promise<void>;
|
||||
}
|
||||
|
||||
export type VertexKind = "positions" | "normals" | "tangents" | "uvs" | "colors" | "indices";
|
||||
export type VertexKind =
|
||||
| "positions"
|
||||
| "normals"
|
||||
| "tangents"
|
||||
| "uvs"
|
||||
| "colors"
|
||||
| "indices";
|
||||
export interface MeshOptions extends NodeOptions {
|
||||
geometryId?: number;
|
||||
material?: PBRMaterial;
|
||||
@@ -119,10 +161,55 @@ declare module "@yawn/handles" {
|
||||
material: PBRMaterial;
|
||||
clone(options?: Omit<MeshOptions, "geometryId" | "vertexData">): Mesh;
|
||||
setVertexData(kind: VertexKind, data: ArrayLike<number>): Promise<this>;
|
||||
setMaterialForFaces(material: PBRMaterial, faces: number | number[]): Promise<this>;
|
||||
setMaterialForFaces(
|
||||
material: PBRMaterial,
|
||||
faces: number | number[],
|
||||
): Promise<this>;
|
||||
}
|
||||
|
||||
export interface CameraOptions extends NodeOptions { fov?: number; near?: number; far?: number; aspect?: number }
|
||||
export interface CubeOptions
|
||||
extends Omit<MeshOptions, "geometryId" | "vertexData"> {
|
||||
size?: number;
|
||||
width?: number;
|
||||
height?: number;
|
||||
depth?: number;
|
||||
}
|
||||
export class Cube extends Mesh {
|
||||
constructor(scene: Scene, options?: CubeOptions);
|
||||
}
|
||||
export interface IcosphereOptions
|
||||
extends Omit<MeshOptions, "geometryId" | "vertexData"> {
|
||||
radius?: number;
|
||||
subdivisions?: number;
|
||||
}
|
||||
export class Icosphere extends Mesh {
|
||||
constructor(scene: Scene, options?: IcosphereOptions);
|
||||
}
|
||||
export interface PlaneOptions
|
||||
extends Omit<MeshOptions, "geometryId" | "vertexData"> {
|
||||
size?: number;
|
||||
width?: number;
|
||||
depth?: number;
|
||||
}
|
||||
export class Plane extends Mesh {
|
||||
constructor(scene: Scene, options?: PlaneOptions);
|
||||
}
|
||||
export interface SphereOptions
|
||||
extends Omit<MeshOptions, "geometryId" | "vertexData"> {
|
||||
radius?: number;
|
||||
segments?: number;
|
||||
rings?: number;
|
||||
}
|
||||
export class Sphere extends Mesh {
|
||||
constructor(scene: Scene, options?: SphereOptions);
|
||||
}
|
||||
|
||||
export interface CameraOptions extends NodeOptions {
|
||||
fov?: number;
|
||||
near?: number;
|
||||
far?: number;
|
||||
aspect?: number;
|
||||
}
|
||||
export class Camera extends Node {
|
||||
fov: number;
|
||||
near: number;
|
||||
@@ -130,30 +217,106 @@ declare module "@yawn/handles" {
|
||||
aspect: number;
|
||||
}
|
||||
export class ArcRotateCamera extends Camera {
|
||||
constructor(scene: Scene, options?: CameraOptions & { target?: Node; alpha?: number; beta?: number; radius?: number; controls?: { element: HTMLElement; pointer?: boolean; controller?: boolean } });
|
||||
constructor(
|
||||
scene: Scene,
|
||||
options?: CameraOptions & {
|
||||
target?: Node;
|
||||
alpha?: number;
|
||||
beta?: number;
|
||||
radius?: number;
|
||||
controls?: {
|
||||
element: HTMLElement;
|
||||
pointer?: boolean;
|
||||
controller?: boolean;
|
||||
};
|
||||
},
|
||||
);
|
||||
alpha: number;
|
||||
beta: number;
|
||||
radius: number;
|
||||
detachControls(): this;
|
||||
}
|
||||
export class FreeCamera extends Camera {
|
||||
constructor(scene: Scene, options?: CameraOptions & { controls?: { element: HTMLElement; keyboard?: boolean; pointer?: boolean; controller?: boolean; speed?: number } });
|
||||
constructor(
|
||||
scene: Scene,
|
||||
options?: CameraOptions & {
|
||||
controls?: {
|
||||
element: HTMLElement;
|
||||
keyboard?: boolean;
|
||||
pointer?: boolean;
|
||||
controller?: boolean;
|
||||
speed?: number;
|
||||
};
|
||||
},
|
||||
);
|
||||
}
|
||||
export class FollowCamera extends Camera {
|
||||
constructor(scene: Scene, options?: CameraOptions & { target?: Node; distance?: number; height?: number; smoothing?: number });
|
||||
constructor(
|
||||
scene: Scene,
|
||||
options?: CameraOptions & {
|
||||
target?: Node;
|
||||
distance?: number;
|
||||
height?: number;
|
||||
smoothing?: number;
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
export interface LightOptions extends NodeOptions { color?: ArrayLike<number>; intensity?: number }
|
||||
export class PointLight extends Node { constructor(scene: Scene, options?: LightOptions & { range?: number }); intensity: number; range: number }
|
||||
export class AmbientLight extends Node { constructor(scene: Scene, options?: LightOptions); intensity: number }
|
||||
export class DirectionalLight extends Node { constructor(scene: Scene, options?: LightOptions); intensity: number }
|
||||
export class SpotLight extends Node { constructor(scene: Scene, options?: LightOptions & { range?: number; innerAngle?: number; outerAngle?: number }) }
|
||||
export class RectAreaLight extends Node { constructor(scene: Scene, options?: LightOptions & { width?: number; height?: number }) }
|
||||
export interface LightOptions extends NodeOptions {
|
||||
color?: ArrayLike<number>;
|
||||
intensity?: number;
|
||||
}
|
||||
export class PointLight extends Node {
|
||||
constructor(scene: Scene, options?: LightOptions & { range?: number });
|
||||
intensity: number;
|
||||
range: number;
|
||||
}
|
||||
export class AmbientLight extends Node {
|
||||
constructor(scene: Scene, options?: LightOptions);
|
||||
intensity: number;
|
||||
}
|
||||
export class DirectionalLight extends Node {
|
||||
constructor(scene: Scene, options?: LightOptions);
|
||||
intensity: number;
|
||||
}
|
||||
export class SpotLight extends Node {
|
||||
constructor(
|
||||
scene: Scene,
|
||||
options?: LightOptions & {
|
||||
range?: number;
|
||||
innerAngle?: number;
|
||||
outerAngle?: number;
|
||||
},
|
||||
);
|
||||
}
|
||||
export class RectAreaLight extends Node {
|
||||
constructor(
|
||||
scene: Scene,
|
||||
options?: LightOptions & { width?: number; height?: number },
|
||||
);
|
||||
}
|
||||
|
||||
export class ComputePass { constructor(options: Record<string, unknown>); readonly id: string }
|
||||
export class FXAA { constructor(scene: Scene, options?: Record<string, unknown>); readonly ready: Promise<this>; dispose(): Promise<void> }
|
||||
export class ColorGrading extends FXAA { constructor(scene: Scene, options?: { toneMap?: "aces" | "reinhard" | "linear"; amount?: number }) }
|
||||
export class DynamicExposure extends FXAA { constructor(scene: Scene, options?: { exposure?: number }) }
|
||||
export class SSAO extends FXAA { constructor(scene: Scene, options?: { amount?: number }) }
|
||||
export class ComputePass {
|
||||
constructor(options: Record<string, unknown>);
|
||||
readonly id: string;
|
||||
}
|
||||
export class FXAA {
|
||||
constructor(scene: Scene, options?: Record<string, unknown>);
|
||||
readonly ready: Promise<this>;
|
||||
dispose(): Promise<void>;
|
||||
}
|
||||
export class ColorGrading extends FXAA {
|
||||
constructor(
|
||||
scene: Scene,
|
||||
options?: { toneMap?: "aces" | "reinhard" | "linear"; amount?: number },
|
||||
);
|
||||
}
|
||||
export class DynamicExposure extends FXAA {
|
||||
constructor(scene: Scene, options?: { exposure?: number });
|
||||
}
|
||||
export class SSAO extends FXAA {
|
||||
constructor(scene: Scene, options?: { amount?: number });
|
||||
}
|
||||
export function importGltf(scene: Scene, url: string | URL): Promise<Mesh[]>;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user