glre 0.15.0 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +10 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +15 -0
- package/dist/index.mjs.map +1 -0
- package/dist/native.d.ts +66 -0
- package/dist/native.js +15 -0
- package/dist/native.js.map +1 -0
- package/dist/native.mjs +15 -0
- package/dist/native.mjs.map +1 -0
- package/dist/react.d.ts +66 -0
- package/dist/react.js +15 -0
- package/dist/react.js.map +1 -0
- package/dist/react.mjs +15 -0
- package/dist/react.mjs.map +1 -0
- package/dist/solid.d.ts +65 -0
- package/dist/solid.js +15 -0
- package/dist/solid.js.map +1 -0
- package/dist/solid.mjs +15 -0
- package/dist/solid.mjs.map +1 -0
- package/dist/types-20446758.d.ts +78 -0
- package/index.ts +202 -158
- package/native.ts +64 -58
- package/package.json +165 -67
- package/qwik.ts +42 -42
- package/react.ts +59 -60
- package/solid.ts +52 -44
- package/test/index.test.ts +5 -0
- package/test/utils.test.ts +43 -0
- package/tsup.config.ts +16 -0
- package/types.ts +98 -98
- package/utils.ts +210 -210
- package/index.cjs.js +0 -1
- package/index.develop.js +0 -1
- package/index.js +0 -1
package/types.ts
CHANGED
|
@@ -1,98 +1,98 @@
|
|
|
1
|
-
import type { Queue } from 'refr/types'
|
|
2
|
-
import type { Nested, EventState } from 'reev/types'
|
|
3
|
-
|
|
4
|
-
export type Uniform = number | number[]
|
|
5
|
-
|
|
6
|
-
export type Attribute = number[]
|
|
7
|
-
|
|
8
|
-
export type Attributes = Record<string, Attribute>
|
|
9
|
-
|
|
10
|
-
export type Uniforms = Record<string, Uniform>
|
|
11
|
-
|
|
12
|
-
export type GL = EventState<{
|
|
13
|
-
/**
|
|
14
|
-
* initial value
|
|
15
|
-
*/
|
|
16
|
-
id: string
|
|
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
|
-
texture(
|
|
67
|
-
|
|
68
|
-
attribute(key: string, value: Attribute, iboValue?: Attribute): GL
|
|
69
|
-
attribute(target: { [key: string]: Attribute }): GL
|
|
70
|
-
// config(key?: keyof GL, value?: GL[keyof GL]): GL
|
|
71
|
-
// config(target?: Partial<GL>): GL
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* short hands
|
|
75
|
-
*/
|
|
76
|
-
clear(key?: GLClearMode): void
|
|
77
|
-
viewport(size?: [number, number]): void
|
|
78
|
-
drawArrays(key?: GLDrawMode): void
|
|
79
|
-
drawElements(key?: GLDrawMode): void
|
|
80
|
-
}>
|
|
81
|
-
|
|
82
|
-
export type PrecisionMode = 'highp' | 'mediump' | 'lowp'
|
|
83
|
-
|
|
84
|
-
export type GLClearMode =
|
|
85
|
-
| 'COLOR_BUFFER_BIT'
|
|
86
|
-
| 'DEPTH_BUFFER_BIT'
|
|
87
|
-
| 'STENCIL_BUFFER_BIT'
|
|
88
|
-
|
|
89
|
-
export type GLDrawMode =
|
|
90
|
-
| 'POINTS'
|
|
91
|
-
| 'LINE_STRIP'
|
|
92
|
-
| 'LINE_LOOP'
|
|
93
|
-
| 'LINES'
|
|
94
|
-
| 'TRIANGLE_STRIP'
|
|
95
|
-
| 'TRIANGLE_FAN'
|
|
96
|
-
| 'TRIANGLES'
|
|
97
|
-
|
|
98
|
-
export type GLDrawType = 'UNSIGNED_BYTE' | 'UNSIGNED_SHORT' | 'UNSIGNED_INT'
|
|
1
|
+
import type { Queue } from 'refr/types'
|
|
2
|
+
import type { Nested, EventState } from 'reev/types'
|
|
3
|
+
|
|
4
|
+
export type Uniform = number | number[]
|
|
5
|
+
|
|
6
|
+
export type Attribute = number[]
|
|
7
|
+
|
|
8
|
+
export type Attributes = Record<string, Attribute>
|
|
9
|
+
|
|
10
|
+
export type Uniforms = Record<string, Uniform>
|
|
11
|
+
|
|
12
|
+
export type GL = EventState<{
|
|
13
|
+
/**
|
|
14
|
+
* initial value
|
|
15
|
+
*/
|
|
16
|
+
id: string
|
|
17
|
+
width: number
|
|
18
|
+
height: number
|
|
19
|
+
size: [number, number]
|
|
20
|
+
mouse: [number, number]
|
|
21
|
+
count: number
|
|
22
|
+
vs: string
|
|
23
|
+
fs: string
|
|
24
|
+
vert: string
|
|
25
|
+
frag: string
|
|
26
|
+
vertex: string
|
|
27
|
+
fragment: string
|
|
28
|
+
varying: string
|
|
29
|
+
int: PrecisionMode
|
|
30
|
+
float: PrecisionMode
|
|
31
|
+
sampler2D: PrecisionMode
|
|
32
|
+
samplerCube: PrecisionMode
|
|
33
|
+
lastActiveUnit: number
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* core state
|
|
37
|
+
*/
|
|
38
|
+
gl: any
|
|
39
|
+
pg: any
|
|
40
|
+
el: any
|
|
41
|
+
frame: Queue
|
|
42
|
+
target: any
|
|
43
|
+
stride: Nested<number>
|
|
44
|
+
// @TODO Nested<(key: string, value: number: number[], ibo: number[]) => number>
|
|
45
|
+
location: Nested<any>
|
|
46
|
+
activeUnit: Nested<number>
|
|
47
|
+
default: any
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* events
|
|
51
|
+
*/
|
|
52
|
+
ref?: any
|
|
53
|
+
init(varying?: string[]): void
|
|
54
|
+
mount(): void
|
|
55
|
+
clean(): void
|
|
56
|
+
render(): void
|
|
57
|
+
mousemove(e: Event): void
|
|
58
|
+
resize(e?: Event, width?: number, height?: number): void
|
|
59
|
+
load(e?: Event, image?: HTMLImageElement): void
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* setter
|
|
63
|
+
*/
|
|
64
|
+
uniform(key: string, value: Uniform): GL
|
|
65
|
+
uniform(target: { [key: string]: Uniform }): GL
|
|
66
|
+
texture(key: string, value: string): GL
|
|
67
|
+
texture(target: { [key: string]: string }): GL
|
|
68
|
+
attribute(key: string, value: Attribute, iboValue?: Attribute): GL
|
|
69
|
+
attribute(target: { [key: string]: Attribute }): GL
|
|
70
|
+
// config(key?: keyof GL, value?: GL[keyof GL]): GL
|
|
71
|
+
// config(target?: Partial<GL>): GL
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* short hands
|
|
75
|
+
*/
|
|
76
|
+
clear(key?: GLClearMode): void
|
|
77
|
+
viewport(size?: [number, number]): void
|
|
78
|
+
drawArrays(key?: GLDrawMode): void
|
|
79
|
+
drawElements(key?: GLDrawMode): void
|
|
80
|
+
}>
|
|
81
|
+
|
|
82
|
+
export type PrecisionMode = 'highp' | 'mediump' | 'lowp'
|
|
83
|
+
|
|
84
|
+
export type GLClearMode =
|
|
85
|
+
| 'COLOR_BUFFER_BIT'
|
|
86
|
+
| 'DEPTH_BUFFER_BIT'
|
|
87
|
+
| 'STENCIL_BUFFER_BIT'
|
|
88
|
+
|
|
89
|
+
export type GLDrawMode =
|
|
90
|
+
| 'POINTS'
|
|
91
|
+
| 'LINE_STRIP'
|
|
92
|
+
| 'LINE_LOOP'
|
|
93
|
+
| 'LINES'
|
|
94
|
+
| 'TRIANGLE_STRIP'
|
|
95
|
+
| 'TRIANGLE_FAN'
|
|
96
|
+
| 'TRIANGLES'
|
|
97
|
+
|
|
98
|
+
export type GLDrawType = 'UNSIGNED_BYTE' | 'UNSIGNED_SHORT' | 'UNSIGNED_INT'
|
package/utils.ts
CHANGED
|
@@ -1,210 +1,210 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* utils
|
|
3
|
-
*/
|
|
4
|
-
export
|
|
5
|
-
let length = typeof value === 'number' ? 0 : value?.length
|
|
6
|
-
if (!length) return `uniform1f`
|
|
7
|
-
if (!isMatrix) return `uniform${length}fv`
|
|
8
|
-
length = Math.sqrt(length) << 0
|
|
9
|
-
return `uniformMatrix${length}fv`
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export
|
|
13
|
-
count: number,
|
|
14
|
-
value: number[],
|
|
15
|
-
iboValue?: number[]
|
|
16
|
-
) {
|
|
17
|
-
if (iboValue) count = Math.max(...iboValue) + 1
|
|
18
|
-
const stride = value.length / count
|
|
19
|
-
if (stride !== stride << 0)
|
|
20
|
-
console.warn(`Vertex Stride Error: count ${count} is mismatch`)
|
|
21
|
-
return stride << 0
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* graphics
|
|
26
|
-
*/
|
|
27
|
-
export
|
|
28
|
-
const shader = gl.createShader(type)
|
|
29
|
-
gl.shaderSource(shader, source)
|
|
30
|
-
gl.compileShader(shader)
|
|
31
|
-
if (gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
|
|
32
|
-
return shader
|
|
33
|
-
} else
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
export
|
|
37
|
-
const program = gl.createProgram()
|
|
38
|
-
gl.attachShader(program, vs)
|
|
39
|
-
gl.attachShader(program, fs)
|
|
40
|
-
gl.linkProgram(program)
|
|
41
|
-
if (gl.getProgramParameter(program, gl.LINK_STATUS)) {
|
|
42
|
-
gl.useProgram(program)
|
|
43
|
-
return program
|
|
44
|
-
} else {
|
|
45
|
-
console.log(gl.getProgramInfoLog(program))
|
|
46
|
-
return null
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
export
|
|
51
|
-
const pg = gl.createProgram()
|
|
52
|
-
gl.attachShader(pg, vs)
|
|
53
|
-
gl.attachShader(pg, fs)
|
|
54
|
-
gl.transformFeedbackVaryings(pg, varyings, gl.SEPARATE_ATTRIBS)
|
|
55
|
-
gl.linkProgram(pg)
|
|
56
|
-
if (gl.getProgramParameter(pg, gl.LINK_STATUS)) {
|
|
57
|
-
gl.useProgram(pg)
|
|
58
|
-
return pg
|
|
59
|
-
} else {
|
|
60
|
-
console.warn(gl.getProgramInfoLog(pg))
|
|
61
|
-
return null
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
export
|
|
66
|
-
if (!data) return
|
|
67
|
-
const vbo = gl.createBuffer()
|
|
68
|
-
gl.bindBuffer(gl.ARRAY_BUFFER, vbo)
|
|
69
|
-
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(data), gl.STATIC_DRAW)
|
|
70
|
-
gl.bindBuffer(gl.ARRAY_BUFFER, null)
|
|
71
|
-
return vbo
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
export
|
|
75
|
-
if (!data) return
|
|
76
|
-
const ibo = gl.createBuffer()
|
|
77
|
-
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, ibo)
|
|
78
|
-
gl.bufferData(
|
|
79
|
-
gl.ELEMENT_ARRAY_BUFFER,
|
|
80
|
-
new Int16Array(data),
|
|
81
|
-
gl.STATIC_DRAW
|
|
82
|
-
)
|
|
83
|
-
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null)
|
|
84
|
-
return ibo
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
export
|
|
88
|
-
gl: any,
|
|
89
|
-
stride: number,
|
|
90
|
-
location: any,
|
|
91
|
-
vbo: any,
|
|
92
|
-
ibo: any
|
|
93
|
-
) {
|
|
94
|
-
gl.bindBuffer(gl.ARRAY_BUFFER, vbo)
|
|
95
|
-
gl.enableVertexAttribArray(location)
|
|
96
|
-
gl.vertexAttribPointer(location, stride, gl.FLOAT, false, 0, 0)
|
|
97
|
-
if (ibo) gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, ibo)
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
export
|
|
101
|
-
const frameBuffer = gl.createFramebuffer()
|
|
102
|
-
gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer)
|
|
103
|
-
const renderBuffer = gl.createRenderbuffer()
|
|
104
|
-
gl.bindRenderbuffer(gl.RENDERBUFFER, renderBuffer)
|
|
105
|
-
gl.renderbufferStorage(
|
|
106
|
-
gl.RENDERBUFFER,
|
|
107
|
-
gl.DEPTH_COMPONENT16,
|
|
108
|
-
width,
|
|
109
|
-
height
|
|
110
|
-
)
|
|
111
|
-
gl.framebufferRenderbuffer(
|
|
112
|
-
gl.FRAMEBUFFER,
|
|
113
|
-
gl.DEPTH_ATTACHMENT,
|
|
114
|
-
gl.RENDERBUFFER,
|
|
115
|
-
renderBuffer
|
|
116
|
-
)
|
|
117
|
-
const texture = gl.createTexture()
|
|
118
|
-
gl.bindTexture(gl.TEXTURE_2D, texture)
|
|
119
|
-
gl.texImage2D(
|
|
120
|
-
gl.TEXTURE_2D,
|
|
121
|
-
0,
|
|
122
|
-
gl.RGBA,
|
|
123
|
-
width,
|
|
124
|
-
height,
|
|
125
|
-
0,
|
|
126
|
-
gl.RGBA,
|
|
127
|
-
gl.UNSIGNED_BYTE,
|
|
128
|
-
null
|
|
129
|
-
)
|
|
130
|
-
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)
|
|
131
|
-
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR)
|
|
132
|
-
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE)
|
|
133
|
-
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE)
|
|
134
|
-
gl.framebufferTexture2D(
|
|
135
|
-
gl.FRAMEBUFFER,
|
|
136
|
-
gl.COLOR_ATTACHMENT0,
|
|
137
|
-
gl.TEXTURE_2D,
|
|
138
|
-
texture,
|
|
139
|
-
0
|
|
140
|
-
)
|
|
141
|
-
gl.bindTexture(gl.TEXTURE_2D, null)
|
|
142
|
-
gl.bindRenderbuffer(gl.RENDERBUFFER, null)
|
|
143
|
-
gl.bindFramebuffer(gl.FRAMEBUFFER, null)
|
|
144
|
-
return { frameBuffer, renderBuffer, texture }
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
export
|
|
148
|
-
gl: any,
|
|
149
|
-
ext: any,
|
|
150
|
-
width: number,
|
|
151
|
-
height: number
|
|
152
|
-
) {
|
|
153
|
-
const flg =
|
|
154
|
-
ext.textureFloat != null
|
|
155
|
-
? gl.FLOAT
|
|
156
|
-
: ext.textureHalfFloat.HALF_FLOAT_OES
|
|
157
|
-
const frameBuffer = gl.createFramebuffer()
|
|
158
|
-
const texture = gl.createTexture()
|
|
159
|
-
gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer)
|
|
160
|
-
gl.bindTexture(gl.TEXTURE_2D, texture)
|
|
161
|
-
gl.texImage2D(
|
|
162
|
-
gl.TEXTURE_2D,
|
|
163
|
-
0,
|
|
164
|
-
gl.RGBA,
|
|
165
|
-
width,
|
|
166
|
-
height,
|
|
167
|
-
0,
|
|
168
|
-
gl.RGBA,
|
|
169
|
-
flg,
|
|
170
|
-
null
|
|
171
|
-
)
|
|
172
|
-
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST)
|
|
173
|
-
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST)
|
|
174
|
-
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE)
|
|
175
|
-
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE)
|
|
176
|
-
gl.framebufferTexture2D(
|
|
177
|
-
gl.FRAMEBUFFER,
|
|
178
|
-
gl.COLOR_ATTACHMENT0,
|
|
179
|
-
gl.TEXTURE_2D,
|
|
180
|
-
texture,
|
|
181
|
-
0
|
|
182
|
-
)
|
|
183
|
-
gl.bindTexture(gl.TEXTURE_2D, null)
|
|
184
|
-
gl.bindFramebuffer(gl.FRAMEBUFFER, null)
|
|
185
|
-
return { frameBuffer, texture }
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
export
|
|
189
|
-
const texture = gl.createTexture()
|
|
190
|
-
gl.bindTexture(gl.TEXTURE_2D, texture)
|
|
191
|
-
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, img)
|
|
192
|
-
gl.generateMipmap(gl.TEXTURE_2D)
|
|
193
|
-
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR)
|
|
194
|
-
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)
|
|
195
|
-
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE)
|
|
196
|
-
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE)
|
|
197
|
-
gl.bindTexture(gl.TEXTURE_2D, null)
|
|
198
|
-
return texture
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
export
|
|
202
|
-
gl: any,
|
|
203
|
-
location: any,
|
|
204
|
-
activeUnit: any,
|
|
205
|
-
texture: any
|
|
206
|
-
) {
|
|
207
|
-
gl.uniform1i(location, activeUnit)
|
|
208
|
-
gl.activeTexture(gl['TEXTURE' + activeUnit])
|
|
209
|
-
gl.bindTexture(gl.TEXTURE_2D, texture)
|
|
210
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* utils
|
|
3
|
+
*/
|
|
4
|
+
export const uniformType = (value: number | number[], isMatrix = false) => {
|
|
5
|
+
let length = typeof value === 'number' ? 0 : value?.length
|
|
6
|
+
if (!length) return `uniform1f`
|
|
7
|
+
if (!isMatrix) return `uniform${length}fv`
|
|
8
|
+
length = Math.sqrt(length) << 0
|
|
9
|
+
return `uniformMatrix${length}fv`
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export const vertexStride = (
|
|
13
|
+
count: number,
|
|
14
|
+
value: number[],
|
|
15
|
+
iboValue?: number[]
|
|
16
|
+
) => {
|
|
17
|
+
if (iboValue) count = Math.max(...iboValue) + 1
|
|
18
|
+
const stride = value.length / count
|
|
19
|
+
if (stride !== stride << 0)
|
|
20
|
+
console.warn(`Vertex Stride Error: count ${count} is mismatch`)
|
|
21
|
+
return stride << 0
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* graphics
|
|
26
|
+
*/
|
|
27
|
+
export const createShader = (gl: any, source: string, type: unknown) => {
|
|
28
|
+
const shader = gl.createShader(type)
|
|
29
|
+
gl.shaderSource(shader, source)
|
|
30
|
+
gl.compileShader(shader)
|
|
31
|
+
if (gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
|
|
32
|
+
return shader
|
|
33
|
+
} else throw 'Could not compile glsl\n\n' + gl.getShaderInfoLog(shader)
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export const createProgram = (gl: any, vs: any, fs: any) => {
|
|
37
|
+
const program = gl.createProgram()
|
|
38
|
+
gl.attachShader(program, vs)
|
|
39
|
+
gl.attachShader(program, fs)
|
|
40
|
+
gl.linkProgram(program)
|
|
41
|
+
if (gl.getProgramParameter(program, gl.LINK_STATUS)) {
|
|
42
|
+
gl.useProgram(program)
|
|
43
|
+
return program
|
|
44
|
+
} else {
|
|
45
|
+
console.log(gl.getProgramInfoLog(program))
|
|
46
|
+
return null
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export const createTfProgram = (gl: any, vs: any, fs: any, varyings?: any) => {
|
|
51
|
+
const pg = gl.createProgram()
|
|
52
|
+
gl.attachShader(pg, vs)
|
|
53
|
+
gl.attachShader(pg, fs)
|
|
54
|
+
gl.transformFeedbackVaryings(pg, varyings, gl.SEPARATE_ATTRIBS)
|
|
55
|
+
gl.linkProgram(pg)
|
|
56
|
+
if (gl.getProgramParameter(pg, gl.LINK_STATUS)) {
|
|
57
|
+
gl.useProgram(pg)
|
|
58
|
+
return pg
|
|
59
|
+
} else {
|
|
60
|
+
console.warn(gl.getProgramInfoLog(pg))
|
|
61
|
+
return null
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export const createVbo = (gl: any, data: number[]) => {
|
|
66
|
+
if (!data) return
|
|
67
|
+
const vbo = gl.createBuffer()
|
|
68
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, vbo)
|
|
69
|
+
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(data), gl.STATIC_DRAW)
|
|
70
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, null)
|
|
71
|
+
return vbo
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export const createIbo = (gl: any, data?: number[]) => {
|
|
75
|
+
if (!data) return
|
|
76
|
+
const ibo = gl.createBuffer()
|
|
77
|
+
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, ibo)
|
|
78
|
+
gl.bufferData(
|
|
79
|
+
gl.ELEMENT_ARRAY_BUFFER,
|
|
80
|
+
new Int16Array(data),
|
|
81
|
+
gl.STATIC_DRAW
|
|
82
|
+
)
|
|
83
|
+
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null)
|
|
84
|
+
return ibo
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export const createAttribute = (
|
|
88
|
+
gl: any,
|
|
89
|
+
stride: number,
|
|
90
|
+
location: any,
|
|
91
|
+
vbo: any,
|
|
92
|
+
ibo: any
|
|
93
|
+
) => {
|
|
94
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, vbo)
|
|
95
|
+
gl.enableVertexAttribArray(location)
|
|
96
|
+
gl.vertexAttribPointer(location, stride, gl.FLOAT, false, 0, 0)
|
|
97
|
+
if (ibo) gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, ibo)
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export const createFramebuffer = (gl: any, width: number, height: number) => {
|
|
101
|
+
const frameBuffer = gl.createFramebuffer()
|
|
102
|
+
gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer)
|
|
103
|
+
const renderBuffer = gl.createRenderbuffer()
|
|
104
|
+
gl.bindRenderbuffer(gl.RENDERBUFFER, renderBuffer)
|
|
105
|
+
gl.renderbufferStorage(
|
|
106
|
+
gl.RENDERBUFFER,
|
|
107
|
+
gl.DEPTH_COMPONENT16,
|
|
108
|
+
width,
|
|
109
|
+
height
|
|
110
|
+
)
|
|
111
|
+
gl.framebufferRenderbuffer(
|
|
112
|
+
gl.FRAMEBUFFER,
|
|
113
|
+
gl.DEPTH_ATTACHMENT,
|
|
114
|
+
gl.RENDERBUFFER,
|
|
115
|
+
renderBuffer
|
|
116
|
+
)
|
|
117
|
+
const texture = gl.createTexture()
|
|
118
|
+
gl.bindTexture(gl.TEXTURE_2D, texture)
|
|
119
|
+
gl.texImage2D(
|
|
120
|
+
gl.TEXTURE_2D,
|
|
121
|
+
0,
|
|
122
|
+
gl.RGBA,
|
|
123
|
+
width,
|
|
124
|
+
height,
|
|
125
|
+
0,
|
|
126
|
+
gl.RGBA,
|
|
127
|
+
gl.UNSIGNED_BYTE,
|
|
128
|
+
null
|
|
129
|
+
)
|
|
130
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)
|
|
131
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR)
|
|
132
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE)
|
|
133
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE)
|
|
134
|
+
gl.framebufferTexture2D(
|
|
135
|
+
gl.FRAMEBUFFER,
|
|
136
|
+
gl.COLOR_ATTACHMENT0,
|
|
137
|
+
gl.TEXTURE_2D,
|
|
138
|
+
texture,
|
|
139
|
+
0
|
|
140
|
+
)
|
|
141
|
+
gl.bindTexture(gl.TEXTURE_2D, null)
|
|
142
|
+
gl.bindRenderbuffer(gl.RENDERBUFFER, null)
|
|
143
|
+
gl.bindFramebuffer(gl.FRAMEBUFFER, null)
|
|
144
|
+
return { frameBuffer, renderBuffer, texture }
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
export const createFramebufferFloat = (
|
|
148
|
+
gl: any,
|
|
149
|
+
ext: any,
|
|
150
|
+
width: number,
|
|
151
|
+
height: number
|
|
152
|
+
) => {
|
|
153
|
+
const flg =
|
|
154
|
+
ext.textureFloat != null
|
|
155
|
+
? gl.FLOAT
|
|
156
|
+
: ext.textureHalfFloat.HALF_FLOAT_OES
|
|
157
|
+
const frameBuffer = gl.createFramebuffer()
|
|
158
|
+
const texture = gl.createTexture()
|
|
159
|
+
gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer)
|
|
160
|
+
gl.bindTexture(gl.TEXTURE_2D, texture)
|
|
161
|
+
gl.texImage2D(
|
|
162
|
+
gl.TEXTURE_2D,
|
|
163
|
+
0,
|
|
164
|
+
gl.RGBA,
|
|
165
|
+
width,
|
|
166
|
+
height,
|
|
167
|
+
0,
|
|
168
|
+
gl.RGBA,
|
|
169
|
+
flg,
|
|
170
|
+
null
|
|
171
|
+
)
|
|
172
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST)
|
|
173
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST)
|
|
174
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE)
|
|
175
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE)
|
|
176
|
+
gl.framebufferTexture2D(
|
|
177
|
+
gl.FRAMEBUFFER,
|
|
178
|
+
gl.COLOR_ATTACHMENT0,
|
|
179
|
+
gl.TEXTURE_2D,
|
|
180
|
+
texture,
|
|
181
|
+
0
|
|
182
|
+
)
|
|
183
|
+
gl.bindTexture(gl.TEXTURE_2D, null)
|
|
184
|
+
gl.bindFramebuffer(gl.FRAMEBUFFER, null)
|
|
185
|
+
return { frameBuffer, texture }
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
export const createTexture = (gl: any, img: any) => {
|
|
189
|
+
const texture = gl.createTexture()
|
|
190
|
+
gl.bindTexture(gl.TEXTURE_2D, texture)
|
|
191
|
+
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, img)
|
|
192
|
+
gl.generateMipmap(gl.TEXTURE_2D)
|
|
193
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR)
|
|
194
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)
|
|
195
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE)
|
|
196
|
+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE)
|
|
197
|
+
gl.bindTexture(gl.TEXTURE_2D, null)
|
|
198
|
+
return texture
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
export const activeTexture = (
|
|
202
|
+
gl: any,
|
|
203
|
+
location: any,
|
|
204
|
+
activeUnit: any,
|
|
205
|
+
texture: any
|
|
206
|
+
) => {
|
|
207
|
+
gl.uniform1i(location, activeUnit)
|
|
208
|
+
gl.activeTexture(gl['TEXTURE' + activeUnit])
|
|
209
|
+
gl.bindTexture(gl.TEXTURE_2D, texture)
|
|
210
|
+
}
|
package/index.cjs.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("reev"),r=require("refr");function t(e,r,t){var n=e.createShader(t);if(e.shaderSource(n,r),e.compileShader(n),e.getShaderParameter(n,e.COMPILE_STATUS))return n;console.warn(e.getShaderInfoLog(n))}var n=[-1,-1,1,-1,-1,1,-1,1,1,-1,1,1],i=performance.now(),o=0,a=0,u=e.event({vertex:"\n attribute vec4 a_position;\n void main() {\n gl_Position = a_position;\n }\n",fragment:"\n precision mediump float;\n uniform vec2 iResolution;\n void main() {\n gl_FragColor = vec4(fract(gl_FragCoord.xy / iResolution), 0, 1);\n }\n",size:[0,0],mouse:[0,0],count:6,counter:0,init:function(i){var o=u.gl,a=u.vs||u.vert||u.vertex,f=u.fs||u.frag||u.fragment,c=t(o,a,o.VERTEX_SHADER),l=t(o,f,o.FRAGMENT_SHADER);6===u.count&&u.attribute({a_position:n}),r.frame((function(){return void u.render()||1})),u.pg=i?function(e,r,t,n){var i=e.createProgram();return e.attachShader(i,r),e.attachShader(i,t),e.transformFeedbackVaryings(i,n,e.SEPARATE_ATTRIBS),e.linkProgram(i),e.getProgramParameter(i,e.LINK_STATUS)?(e.useProgram(i),i):(console.warn(e.getProgramInfoLog(i)),null)}(o,c,l,i):function(e,r,t){var n=e.createProgram();return e.attachShader(n,r),e.attachShader(n,t),e.linkProgram(n),e.getProgramParameter(n,e.LINK_STATUS)?(e.useProgram(n),n):(console.log(e.getProgramInfoLog(n)),null)}(o,c,l),u.lastActiveUnit=0,u.activeUnit=e.nested((function(){return u.lastActiveUnit++})),u.location=e.nested((function(e,r){return void 0===r&&(r=!1),r?null==o?void 0:o.getAttribLocation(u.pg,e):null==o?void 0:o.getUniformLocation(u.pg,e)}))},render:function(){u.gl.useProgram(u.pg),u.frame.flush(),o=i,i=performance.now()/1e3,a=i-o,u.uniform({iTime:i,iPrevTime:o,iDeltaTime:a})},_uniform:function(e,r,t){void 0===r&&(r=0),void 0===t&&(t=!1);var n=function(e,r){void 0===r&&(r=!1);var t="number"==typeof e?0:null==e?void 0:e.length;return t?r?"uniformMatrix"+(t=Math.sqrt(t)<<0)+"fv":"uniform"+t+"fv":"uniform1f"}(r,t);u.frame((function(){var i=u.location(e);t?u.gl[n](i,!1,r):u.gl[n](i,r)}))},_attribute:function(e,r,t){u.frame((function(){var n=u.location(e,!0),i=function(e,r){if(r){var t=e.createBuffer();return e.bindBuffer(e.ARRAY_BUFFER,t),e.bufferData(e.ARRAY_BUFFER,new Float32Array(r),e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,null),t}}(u.gl,r),o=function(e,r){if(r){var t=e.createBuffer();return e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t),e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Int16Array(r),e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null),t}}(u.gl,t),a=function(e,r,t){t&&(e=Math.max.apply(Math,t)+1);var n=r.length/e;return n!==n<<0&&console.warn("Vertex Stride Error: count "+e+" is mismatch"),n<<0}(u.count,r,t);!function(e,r,t,n,i){e.bindBuffer(e.ARRAY_BUFFER,n),e.enableVertexAttribArray(t),e.vertexAttribPointer(t,r,e.FLOAT,!1,0,0),i&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,i)}(u.gl,a,n,i,o)}))},_texture:function(e,r){if("undefined"!=typeof window){var t=new Image;t.addEventListener("load",(function(e){return u.load(e,t)}),!1),Object.assign(t,{src:r,alt:e,crossOrigin:"anonymous"})}},resize:function(e,r,t){void 0===r&&(r=window.innerWidth),void 0===t&&(t=window.innerHeight),u.size[0]=u.el.width=r,u.size[1]=u.el.height=t,u.uniform("iResolution",u.size)},mousemove:function(e,r,t){void 0===r&&(r=e.clientX),void 0===t&&(t=e.clientY);var n=u.size,i=n[0],o=n[1];u.mouse[0]=(r-i/2)/(i/2),u.mouse[1]=-(t-o/2)/(o/2),u.uniform("iMouse",u.mouse)},load:function(e,r){u.frame((function(){var e=u.location(r.alt),t=u.activeUnit(r.alt),n=function(e,r){var t=e.createTexture();return e.bindTexture(e.TEXTURE_2D,t),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,r),e.generateMipmap(e.TEXTURE_2D),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.bindTexture(e.TEXTURE_2D,null),t}(u.gl,r);u.frame((function(){return function(e,r,t,n){e.uniform1i(r,t),e.activeTexture(e["TEXTURE"+t]),e.bindTexture(e.TEXTURE_2D,n)}(u.gl,e,t,n),!0}))}))},clear:function(e){void 0===e&&(e="COLOR_BUFFER_BIT"),u.gl.clear(u.gl[e])},viewport:function(e){var r;void 0===e&&(e=u.size),(r=u.gl).viewport.apply(r,[0,0].concat(e))},drawArrays:function(e){void 0===e&&(e="TRIANGLES"),u.gl.drawArrays(u.gl[e],0,u.count)},drawElements:function(e,r){void 0===e&&(e="TRIANGLES"),void 0===r&&(r="UNSIGNED_SHORT"),u.gl.drawElements(u.gl[e],u.count,u.gl[r],0)}});u.frame=r.queue(),u.texture=e.durable(u._texture),u.uniform=e.durable(u._uniform),u.attribute=e.durable(u._attribute),exports.default=u,exports.gl=u;
|
package/index.develop.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("reev"),require("refr")):"function"==typeof define&&define.amd?define(["exports","reev","refr"],r):r(((e="undefined"!=typeof globalThis?globalThis:e||self).index=e.index||{},e.index.ts={}),e.reev,e.refr)}(this,(function(e,r,n){"use strict";function t(e,r,n){var t=e.createShader(n);if(e.shaderSource(t,r),e.compileShader(t),e.getShaderParameter(t,e.COMPILE_STATUS))return t;console.warn(e.getShaderInfoLog(t))}var i=[-1,-1,1,-1,-1,1,-1,1,1,-1,1,1],o=performance.now(),a=0,u=0,f=r.event({vertex:"\n attribute vec4 a_position;\n void main() {\n gl_Position = a_position;\n }\n",fragment:"\n precision mediump float;\n uniform vec2 iResolution;\n void main() {\n gl_FragColor = vec4(fract(gl_FragCoord.xy / iResolution), 0, 1);\n }\n",size:[0,0],mouse:[0,0],count:6,counter:0,init:function(e){var o=f.gl,a=f.vs||f.vert||f.vertex,u=f.fs||f.frag||f.fragment,l=t(o,a,o.VERTEX_SHADER),c=t(o,u,o.FRAGMENT_SHADER);6===f.count&&f.attribute({a_position:i}),n.frame((function(){return void f.render()||1})),f.pg=e?function(e,r,n,t){var i=e.createProgram();return e.attachShader(i,r),e.attachShader(i,n),e.transformFeedbackVaryings(i,t,e.SEPARATE_ATTRIBS),e.linkProgram(i),e.getProgramParameter(i,e.LINK_STATUS)?(e.useProgram(i),i):(console.warn(e.getProgramInfoLog(i)),null)}(o,l,c,e):function(e,r,n){var t=e.createProgram();return e.attachShader(t,r),e.attachShader(t,n),e.linkProgram(t),e.getProgramParameter(t,e.LINK_STATUS)?(e.useProgram(t),t):(console.log(e.getProgramInfoLog(t)),null)}(o,l,c),f.lastActiveUnit=0,f.activeUnit=r.nested((function(){return f.lastActiveUnit++})),f.location=r.nested((function(e,r){return void 0===r&&(r=!1),r?null==o?void 0:o.getAttribLocation(f.pg,e):null==o?void 0:o.getUniformLocation(f.pg,e)}))},render:function(){f.gl.useProgram(f.pg),f.frame.flush(),a=o,o=performance.now()/1e3,u=o-a,f.uniform({iTime:o,iPrevTime:a,iDeltaTime:u})},_uniform:function(e,r,n){void 0===r&&(r=0),void 0===n&&(n=!1);var t=function(e,r){void 0===r&&(r=!1);var n="number"==typeof e?0:null==e?void 0:e.length;return n?r?"uniformMatrix"+(n=Math.sqrt(n)<<0)+"fv":"uniform"+n+"fv":"uniform1f"}(r,n);f.frame((function(){var i=f.location(e);n?f.gl[t](i,!1,r):f.gl[t](i,r)}))},_attribute:function(e,r,n){f.frame((function(){var t=f.location(e,!0),i=function(e,r){if(r){var n=e.createBuffer();return e.bindBuffer(e.ARRAY_BUFFER,n),e.bufferData(e.ARRAY_BUFFER,new Float32Array(r),e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,null),n}}(f.gl,r),o=function(e,r){if(r){var n=e.createBuffer();return e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n),e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Int16Array(r),e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null),n}}(f.gl,n),a=function(e,r,n){n&&(e=Math.max.apply(Math,n)+1);var t=r.length/e;return t!==t<<0&&console.warn("Vertex Stride Error: count "+e+" is mismatch"),t<<0}(f.count,r,n);!function(e,r,n,t,i){e.bindBuffer(e.ARRAY_BUFFER,t),e.enableVertexAttribArray(n),e.vertexAttribPointer(n,r,e.FLOAT,!1,0,0),i&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,i)}(f.gl,a,t,i,o)}))},_texture:function(e,r){if("undefined"!=typeof window){var n=new Image;n.addEventListener("load",(function(e){return f.load(e,n)}),!1),Object.assign(n,{src:r,alt:e,crossOrigin:"anonymous"})}},resize:function(e,r,n){void 0===r&&(r=window.innerWidth),void 0===n&&(n=window.innerHeight),f.size[0]=f.el.width=r,f.size[1]=f.el.height=n,f.uniform("iResolution",f.size)},mousemove:function(e,r,n){void 0===r&&(r=e.clientX),void 0===n&&(n=e.clientY);var t=f.size,i=t[0],o=t[1];f.mouse[0]=(r-i/2)/(i/2),f.mouse[1]=-(n-o/2)/(o/2),f.uniform("iMouse",f.mouse)},load:function(e,r){f.frame((function(){var e=f.location(r.alt),n=f.activeUnit(r.alt),t=function(e,r){var n=e.createTexture();return e.bindTexture(e.TEXTURE_2D,n),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,r),e.generateMipmap(e.TEXTURE_2D),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.bindTexture(e.TEXTURE_2D,null),n}(f.gl,r);f.frame((function(){return function(e,r,n,t){e.uniform1i(r,n),e.activeTexture(e["TEXTURE"+n]),e.bindTexture(e.TEXTURE_2D,t)}(f.gl,e,n,t),!0}))}))},clear:function(e){void 0===e&&(e="COLOR_BUFFER_BIT"),f.gl.clear(f.gl[e])},viewport:function(e){var r;void 0===e&&(e=f.size),(r=f.gl).viewport.apply(r,[0,0].concat(e))},drawArrays:function(e){void 0===e&&(e="TRIANGLES"),f.gl.drawArrays(f.gl[e],0,f.count)},drawElements:function(e,r){void 0===e&&(e="TRIANGLES"),void 0===r&&(r="UNSIGNED_SHORT"),f.gl.drawElements(f.gl[e],f.count,f.gl[r],0)}});f.frame=n.queue(),f.texture=r.durable(f._texture),f.uniform=r.durable(f._uniform),f.attribute=r.durable(f._attribute),e.default=f,e.gl=f,Object.defineProperty(e,"__esModule",{value:!0})}));
|
package/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{event as r,nested as e,durable as n}from"reev";import{frame as t,queue as i}from"refr";function o(r,e,n){var t=r.createShader(n);if(r.shaderSource(t,e),r.compileShader(t),r.getShaderParameter(t,r.COMPILE_STATUS))return t;console.warn(r.getShaderInfoLog(t))}var a=[-1,-1,1,-1,-1,1,-1,1,1,-1,1,1],u=performance.now(),f=0,c=0,l=r({vertex:"\n attribute vec4 a_position;\n void main() {\n gl_Position = a_position;\n }\n",fragment:"\n precision mediump float;\n uniform vec2 iResolution;\n void main() {\n gl_FragColor = vec4(fract(gl_FragCoord.xy / iResolution), 0, 1);\n }\n",size:[0,0],mouse:[0,0],count:6,counter:0,init:function(r){var n=l.gl,i=l.vs||l.vert||l.vertex,u=l.fs||l.frag||l.fragment,f=o(n,i,n.VERTEX_SHADER),c=o(n,u,n.FRAGMENT_SHADER);6===l.count&&l.attribute({a_position:a}),t((function(){return void l.render()||1})),l.pg=r?function(r,e,n,t){var i=r.createProgram();return r.attachShader(i,e),r.attachShader(i,n),r.transformFeedbackVaryings(i,t,r.SEPARATE_ATTRIBS),r.linkProgram(i),r.getProgramParameter(i,r.LINK_STATUS)?(r.useProgram(i),i):(console.warn(r.getProgramInfoLog(i)),null)}(n,f,c,r):function(r,e,n){var t=r.createProgram();return r.attachShader(t,e),r.attachShader(t,n),r.linkProgram(t),r.getProgramParameter(t,r.LINK_STATUS)?(r.useProgram(t),t):(console.log(r.getProgramInfoLog(t)),null)}(n,f,c),l.lastActiveUnit=0,l.activeUnit=e((function(){return l.lastActiveUnit++})),l.location=e((function(r,e){return void 0===e&&(e=!1),e?null==n?void 0:n.getAttribLocation(l.pg,r):null==n?void 0:n.getUniformLocation(l.pg,r)}))},render:function(){l.gl.useProgram(l.pg),l.frame.flush(),f=u,u=performance.now()/1e3,c=u-f,l.uniform({iTime:u,iPrevTime:f,iDeltaTime:c})},_uniform:function(r,e,n){void 0===e&&(e=0),void 0===n&&(n=!1);var t=function(r,e){void 0===e&&(e=!1);var n="number"==typeof r?0:null==r?void 0:r.length;return n?e?"uniformMatrix"+(n=Math.sqrt(n)<<0)+"fv":"uniform"+n+"fv":"uniform1f"}(e,n);l.frame((function(){var i=l.location(r);n?l.gl[t](i,!1,e):l.gl[t](i,e)}))},_attribute:function(r,e,n){l.frame((function(){var t=l.location(r,!0),i=function(r,e){if(e){var n=r.createBuffer();return r.bindBuffer(r.ARRAY_BUFFER,n),r.bufferData(r.ARRAY_BUFFER,new Float32Array(e),r.STATIC_DRAW),r.bindBuffer(r.ARRAY_BUFFER,null),n}}(l.gl,e),o=function(r,e){if(e){var n=r.createBuffer();return r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,n),r.bufferData(r.ELEMENT_ARRAY_BUFFER,new Int16Array(e),r.STATIC_DRAW),r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,null),n}}(l.gl,n),a=function(r,e,n){n&&(r=Math.max.apply(Math,n)+1);var t=e.length/r;return t!==t<<0&&console.warn("Vertex Stride Error: count "+r+" is mismatch"),t<<0}(l.count,e,n);!function(r,e,n,t,i){r.bindBuffer(r.ARRAY_BUFFER,t),r.enableVertexAttribArray(n),r.vertexAttribPointer(n,e,r.FLOAT,!1,0,0),i&&r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,i)}(l.gl,a,t,i,o)}))},_texture:function(r,e){if("undefined"!=typeof window){var n=new Image;n.addEventListener("load",(function(r){return l.load(r,n)}),!1),Object.assign(n,{src:e,alt:r,crossOrigin:"anonymous"})}},resize:function(r,e,n){void 0===e&&(e=window.innerWidth),void 0===n&&(n=window.innerHeight),l.size[0]=l.el.width=e,l.size[1]=l.el.height=n,l.uniform("iResolution",l.size)},mousemove:function(r,e,n){void 0===e&&(e=r.clientX),void 0===n&&(n=r.clientY);var t=l.size,i=t[0],o=t[1];l.mouse[0]=(e-i/2)/(i/2),l.mouse[1]=-(n-o/2)/(o/2),l.uniform("iMouse",l.mouse)},load:function(r,e){l.frame((function(){var r=l.location(e.alt),n=l.activeUnit(e.alt),t=function(r,e){var n=r.createTexture();return r.bindTexture(r.TEXTURE_2D,n),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,e),r.generateMipmap(r.TEXTURE_2D),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.bindTexture(r.TEXTURE_2D,null),n}(l.gl,e);l.frame((function(){return function(r,e,n,t){r.uniform1i(e,n),r.activeTexture(r["TEXTURE"+n]),r.bindTexture(r.TEXTURE_2D,t)}(l.gl,r,n,t),!0}))}))},clear:function(r){void 0===r&&(r="COLOR_BUFFER_BIT"),l.gl.clear(l.gl[r])},viewport:function(r){var e;void 0===r&&(r=l.size),(e=l.gl).viewport.apply(e,[0,0].concat(r))},drawArrays:function(r){void 0===r&&(r="TRIANGLES"),l.gl.drawArrays(l.gl[r],0,l.count)},drawElements:function(r,e){void 0===r&&(r="TRIANGLES"),void 0===e&&(e="UNSIGNED_SHORT"),l.gl.drawElements(l.gl[r],l.count,l.gl[e],0)}});l.frame=i(),l.texture=n(l._texture),l.uniform=n(l._uniform),l.attribute=n(l._attribute);export{l as default,l as gl};
|