-
Notifications
You must be signed in to change notification settings - Fork 10
/
types.d.ts
118 lines (104 loc) · 2.49 KB
/
types.d.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
declare type KamposConfig = {
target: HTMLCanvasElement;
effects: EffectConfig[];
plane: planeConfig;
ticker?: Ticker;
noSource?: boolean;
beforeDraw?: (time: number) => boolean;
afterDraw?: (time: number) => void;
onContextLost?: (config: KamposConfig) => void;
onContextRestored?: (config: KamposConfig) => void;
onContextCreationError?: (config: KamposConfig) => void;
};
declare type KamposSource = {
media:
| ArrayBufferView
| ImageData
| HTMLImageElement
| HTMLCanvasElement
| HTMLVideoElement
| ImageBitmap;
width: number;
height: number;
};
declare type VaryingType =
| 'float'
| 'vec2'
| 'vec3'
| 'vec4'
| 'mat2'
| 'mat3'
| 'mat4';
declare type EffectConfig = {
vertex: ShaderConfig;
fragment: ShaderConfig;
attributes: Attribute[];
uniforms: Uniform[];
varying: Record<string, VaryingType>;
textures: TextureConfig[];
};
declare type planeConfig = {
segments: number | { x: number; y: number };
};
declare type UniformType =
| 'bool'
| 'int'
| 'float'
| 'vec2'
| 'vec3'
| 'vec4'
| 'mat2'
| 'mat3'
| 'mat4'
| 'sampler2D'
| 'samplerCube';
declare type ShaderAttributeType = 'float' | 'vec2' | 'vec3' | 'vec4';
declare type ShaderConfig = {
main?: string;
source?: string;
constant?: string;
uniform?: Record<string, UniformType>;
attribute?: Record<string, ShaderAttributeType>;
};
declare type TextureConfig = {
format: 'RGBA' | 'RGB' | 'ALPHA' | 'LUMINANCE' | 'LUMINANCE_ALPHA';
data?:
| ArrayBufferView
| ImageData
| HTMLImageElement
| HTMLCanvasElement
| HTMLVideoElement
| ImageBitmap;
update?: boolean;
wrap?: 'stretch' | 'repeat' | 'mirror' | { x: string; y: string };
};
declare type AttributeType =
| 'BYTE'
| 'SHORT'
| 'UNSIGNED_BYTE'
| 'UNSIGNED_SHORT'
| 'FLOAT';
declare type Attribute = {
extends?: string;
name: string;
size: number;
type: AttributeType;
data: ArrayBufferView;
};
declare type Uniform = {
name: string;
size?: 1 | 2 | 3 | 4;
type: 'i' | 'f';
data: number | number[] | Float32Array;
};
declare type Drawable = {
draw: (time: number) => void;
};
declare type Ticker = {
start: () => void;
stop: () => void;
draw: (time: number) => void;
add: (instance: Drawable) => void;
remove: (instance: Drawable) => void;
};
declare module 'kampos';