vanta-engine 1.0.2 → 1.0.4
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/chunk-BDKR3WGZ.mjs +35 -0
- package/dist/chunk-BDKR3WGZ.mjs.map +1 -0
- package/dist/index.d.cts +755 -0
- package/dist/index.d.ts +755 -27
- package/dist/index.js +8406 -26
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +8369 -0
- package/dist/index.mjs.map +1 -0
- package/dist/module-62JUDQR5.mjs +11 -0
- package/dist/module-62JUDQR5.mjs.map +1 -0
- package/package.json +10 -7
- package/dist/engine.d.ts +0 -18
- package/dist/engine.d.ts.map +0 -1
- package/dist/engine.js +0 -23
- package/dist/engine.js.map +0 -1
- package/dist/graphics/assets/asset_format/format.d.ts +0 -115
- package/dist/graphics/assets/asset_format/format.d.ts.map +0 -1
- package/dist/graphics/assets/asset_format/format.js +0 -29
- package/dist/graphics/assets/asset_format/format.js.map +0 -1
- package/dist/graphics/assets/asset_loaders/obj.d.ts +0 -127
- package/dist/graphics/assets/asset_loaders/obj.d.ts.map +0 -1
- package/dist/graphics/assets/asset_loaders/obj.js +0 -762
- package/dist/graphics/assets/asset_loaders/obj.js.map +0 -1
- package/dist/graphics/assets/material.d.ts +0 -33
- package/dist/graphics/assets/material.d.ts.map +0 -1
- package/dist/graphics/assets/material.js +0 -104
- package/dist/graphics/assets/material.js.map +0 -1
- package/dist/graphics/assets/mesh.d.ts +0 -17
- package/dist/graphics/assets/mesh.d.ts.map +0 -1
- package/dist/graphics/assets/mesh.js +0 -47
- package/dist/graphics/assets/mesh.js.map +0 -1
- package/dist/graphics/assets/model.d.ts +0 -13
- package/dist/graphics/assets/model.d.ts.map +0 -1
- package/dist/graphics/assets/model.js +0 -18
- package/dist/graphics/assets/model.js.map +0 -1
- package/dist/graphics/assets/texture.d.ts +0 -93
- package/dist/graphics/assets/texture.d.ts.map +0 -1
- package/dist/graphics/assets/texture.js +0 -318
- package/dist/graphics/assets/texture.js.map +0 -1
- package/dist/graphics/assets/uniform_buffer.d.ts +0 -28
- package/dist/graphics/assets/uniform_buffer.d.ts.map +0 -1
- package/dist/graphics/assets/uniform_buffer.js +0 -132
- package/dist/graphics/assets/uniform_buffer.js.map +0 -1
- package/dist/graphics/assets/vaos.d.ts +0 -9
- package/dist/graphics/assets/vaos.d.ts.map +0 -1
- package/dist/graphics/assets/vaos.js +0 -98
- package/dist/graphics/assets/vaos.js.map +0 -1
- package/dist/graphics/framebuffer.d.ts +0 -77
- package/dist/graphics/framebuffer.d.ts.map +0 -1
- package/dist/graphics/framebuffer.js +0 -265
- package/dist/graphics/framebuffer.js.map +0 -1
- package/dist/graphics/graphics_manager.d.ts +0 -70
- package/dist/graphics/graphics_manager.d.ts.map +0 -1
- package/dist/graphics/graphics_manager.js +0 -503
- package/dist/graphics/graphics_manager.js.map +0 -1
- package/dist/graphics/shader_program.d.ts +0 -66
- package/dist/graphics/shader_program.d.ts.map +0 -1
- package/dist/graphics/shader_program.js +0 -92
- package/dist/graphics/shader_program.js.map +0 -1
- package/dist/graphics/utility.d.ts +0 -14
- package/dist/graphics/utility.d.ts.map +0 -1
- package/dist/graphics/utility.js +0 -81
- package/dist/graphics/utility.js.map +0 -1
- package/dist/hook_manager.d.ts +0 -33
- package/dist/hook_manager.d.ts.map +0 -1
- package/dist/hook_manager.js +0 -102
- package/dist/hook_manager.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/input/input_manager.d.ts +0 -41
- package/dist/input/input_manager.d.ts.map +0 -1
- package/dist/input/input_manager.js +0 -121
- package/dist/input/input_manager.js.map +0 -1
- package/dist/node/camera3d.d.ts +0 -10
- package/dist/node/camera3d.d.ts.map +0 -1
- package/dist/node/camera3d.js +0 -25
- package/dist/node/camera3d.js.map +0 -1
- package/dist/node/lights/directional_light.d.ts +0 -20
- package/dist/node/lights/directional_light.d.ts.map +0 -1
- package/dist/node/lights/directional_light.js +0 -111
- package/dist/node/lights/directional_light.js.map +0 -1
- package/dist/node/lights/light.d.ts +0 -15
- package/dist/node/lights/light.d.ts.map +0 -1
- package/dist/node/lights/light.js +0 -24
- package/dist/node/lights/light.js.map +0 -1
- package/dist/node/lights/point_light.d.ts +0 -26
- package/dist/node/lights/point_light.d.ts.map +0 -1
- package/dist/node/lights/point_light.js +0 -109
- package/dist/node/lights/point_light.js.map +0 -1
- package/dist/node/lights/spot_light.d.ts +0 -13
- package/dist/node/lights/spot_light.d.ts.map +0 -1
- package/dist/node/lights/spot_light.js +0 -35
- package/dist/node/lights/spot_light.js.map +0 -1
- package/dist/node/object3d.d.ts +0 -10
- package/dist/node/object3d.d.ts.map +0 -1
- package/dist/node/object3d.js +0 -60
- package/dist/node/object3d.js.map +0 -1
- package/dist/node/skybox.d.ts +0 -15
- package/dist/node/skybox.d.ts.map +0 -1
- package/dist/node/skybox.js +0 -33
- package/dist/node/skybox.js.map +0 -1
- package/dist/node/sprite2d.d.ts +0 -14
- package/dist/node/sprite2d.d.ts.map +0 -1
- package/dist/node/sprite2d.js +0 -33
- package/dist/node/sprite2d.js.map +0 -1
- package/dist/node.d.ts +0 -76
- package/dist/node.d.ts.map +0 -1
- package/dist/node.js +0 -308
- package/dist/node.js.map +0 -1
- package/dist/scene.d.ts +0 -19
- package/dist/scene.d.ts.map +0 -1
- package/dist/scene.js +0 -50
- package/dist/scene.js.map +0 -1
- package/dist/shaders/default_2d.fs.d.ts +0 -3
- package/dist/shaders/default_2d.fs.d.ts.map +0 -1
- package/dist/shaders/default_2d.fs.js +0 -14
- package/dist/shaders/default_2d.fs.js.map +0 -1
- package/dist/shaders/default_2d.vs.d.ts +0 -3
- package/dist/shaders/default_2d.vs.d.ts.map +0 -1
- package/dist/shaders/default_2d.vs.js +0 -16
- package/dist/shaders/default_2d.vs.js.map +0 -1
- package/dist/shaders/default_3d.fs.d.ts +0 -3
- package/dist/shaders/default_3d.fs.d.ts.map +0 -1
- package/dist/shaders/default_3d.fs.js +0 -327
- package/dist/shaders/default_3d.fs.js.map +0 -1
- package/dist/shaders/default_3d.vs.d.ts +0 -3
- package/dist/shaders/default_3d.vs.d.ts.map +0 -1
- package/dist/shaders/default_3d.vs.js +0 -36
- package/dist/shaders/default_3d.vs.js.map +0 -1
- package/dist/shaders/default_directional_shadow.fs.d.ts +0 -3
- package/dist/shaders/default_directional_shadow.fs.d.ts.map +0 -1
- package/dist/shaders/default_directional_shadow.fs.js +0 -6
- package/dist/shaders/default_directional_shadow.fs.js.map +0 -1
- package/dist/shaders/default_directional_shadow.vs.d.ts +0 -3
- package/dist/shaders/default_directional_shadow.vs.d.ts.map +0 -1
- package/dist/shaders/default_directional_shadow.vs.js +0 -11
- package/dist/shaders/default_directional_shadow.vs.js.map +0 -1
- package/dist/shaders/default_point_shadow.fs.d.ts +0 -3
- package/dist/shaders/default_point_shadow.fs.d.ts.map +0 -1
- package/dist/shaders/default_point_shadow.fs.js +0 -18
- package/dist/shaders/default_point_shadow.fs.js.map +0 -1
- package/dist/shaders/default_point_shadow.vs.d.ts +0 -3
- package/dist/shaders/default_point_shadow.vs.d.ts.map +0 -1
- package/dist/shaders/default_point_shadow.vs.js +0 -14
- package/dist/shaders/default_point_shadow.vs.js.map +0 -1
- package/dist/shaders/default_skybox.fs.d.ts +0 -3
- package/dist/shaders/default_skybox.fs.d.ts.map +0 -1
- package/dist/shaders/default_skybox.fs.js +0 -14
- package/dist/shaders/default_skybox.fs.js.map +0 -1
- package/dist/shaders/default_skybox.vs.d.ts +0 -3
- package/dist/shaders/default_skybox.vs.d.ts.map +0 -1
- package/dist/shaders/default_skybox.vs.js +0 -23
- package/dist/shaders/default_skybox.vs.js.map +0 -1
- package/dist/utility.d.ts +0 -5
- package/dist/utility.d.ts.map +0 -1
- package/dist/utility.js +0 -19
- package/dist/utility.js.map +0 -1
|
@@ -1,318 +0,0 @@
|
|
|
1
|
-
const UNSIGNED_BYTE = 5121;
|
|
2
|
-
const UNSIGNED_INT = 5125;
|
|
3
|
-
export var TextureType;
|
|
4
|
-
(function (TextureType) {
|
|
5
|
-
TextureType["COLOR"] = "COLOR";
|
|
6
|
-
TextureType["DEPTH"] = "DEPTH";
|
|
7
|
-
TextureType["COLOR_ARRAY"] = "COLOR_ARRAY";
|
|
8
|
-
TextureType["DEPTH_ARRAY"] = "DEPTH_ARRAY";
|
|
9
|
-
})(TextureType || (TextureType = {}));
|
|
10
|
-
export class Texture {
|
|
11
|
-
constructor(gm, name, arg1, arg2, arg3, arg4, arg5, arg6, arg7) {
|
|
12
|
-
this.texture_type = TextureType.COLOR;
|
|
13
|
-
this.image_type = 0;
|
|
14
|
-
this.gm = gm;
|
|
15
|
-
this.name = name;
|
|
16
|
-
var width = 0, height = 0, mip_level = 0;
|
|
17
|
-
var image_array_size = 1;
|
|
18
|
-
var texture_parameters = {};
|
|
19
|
-
this.format = this.gm.gl.DEPTH_COMPONENT; // Random default, this will be set down the call tree
|
|
20
|
-
this.internal_format = this.gm.gl.DEPTH_COMPONENT24; // Random default, this will be set down the call tree
|
|
21
|
-
if (typeof arg1 === 'number' && typeof arg2 === 'number' && typeof arg3 === 'string' && Object.values(TextureType).includes(arg3)) {
|
|
22
|
-
// Blank Texture Constructor
|
|
23
|
-
width = arg1;
|
|
24
|
-
height = arg2;
|
|
25
|
-
this.texture_type = arg3 ? arg3 : TextureType.COLOR;
|
|
26
|
-
texture_parameters = arg4 ? arg4 : {};
|
|
27
|
-
this.webgl_texture = this.create_texture(null, this.texture_type, texture_parameters, 0, width, height);
|
|
28
|
-
}
|
|
29
|
-
else if (typeof arg1 === 'number') {
|
|
30
|
-
// Texture Array Constructor count
|
|
31
|
-
if (arg4 !== TextureType.COLOR_ARRAY
|
|
32
|
-
&& arg4 !== TextureType.DEPTH_ARRAY
|
|
33
|
-
&& typeof arg1 === "number") {
|
|
34
|
-
throw new Error(`Arg 2 "texture_type" must be TextureType.COLOR_ARRAY or TextureType.DEPTH_ARRAY if the "images" argument is an number of images.`);
|
|
35
|
-
}
|
|
36
|
-
image_array_size = arg1;
|
|
37
|
-
width = arg2;
|
|
38
|
-
height = arg3;
|
|
39
|
-
this.texture_type = arg4;
|
|
40
|
-
texture_parameters = arg5 === undefined ? {} : arg5;
|
|
41
|
-
mip_level = arg6 === undefined ? 0 : arg6;
|
|
42
|
-
this.webgl_texture = this.create_texture(image_array_size, this.texture_type, texture_parameters, mip_level, width, height);
|
|
43
|
-
}
|
|
44
|
-
else if (arg1 instanceof Array) {
|
|
45
|
-
// Texture Array Constructor Images
|
|
46
|
-
if (arg2 !== TextureType.COLOR_ARRAY && arg1 instanceof Array) {
|
|
47
|
-
throw new Error(`Arg 2 "texture_type" must be TextureType.COLOR_ARRAY if the "images" argument is an array.`);
|
|
48
|
-
}
|
|
49
|
-
if (arg2 !== TextureType.COLOR_ARRAY
|
|
50
|
-
&& arg2 !== TextureType.DEPTH_ARRAY
|
|
51
|
-
&& typeof arg1 === "number") {
|
|
52
|
-
throw new Error(`Arg 2 "texture_type" must be TextureType.COLOR_ARRAY or TextureType.DEPTH_ARRAY if the "images" argument is an number of images.`);
|
|
53
|
-
}
|
|
54
|
-
const images = arg1;
|
|
55
|
-
this.texture_type = arg2;
|
|
56
|
-
texture_parameters = arg3 === undefined ? {} : arg3;
|
|
57
|
-
mip_level = arg4 === undefined ? 0 : arg4;
|
|
58
|
-
this.webgl_texture = this.create_texture(images, this.texture_type, texture_parameters, mip_level);
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
// Texture Constructor
|
|
62
|
-
if (arg1 instanceof Array) {
|
|
63
|
-
throw new Error(`Arg 2 "texture_type" must be TextureType.COLOR_ARRAY if the "images" argument is an array.`);
|
|
64
|
-
}
|
|
65
|
-
const image = arg1;
|
|
66
|
-
this.texture_type = arg2;
|
|
67
|
-
texture_parameters = arg3 === undefined ? {} : arg3;
|
|
68
|
-
mip_level = arg4 === undefined ? 0 : arg3;
|
|
69
|
-
this.webgl_texture = this.create_texture(image, this.texture_type, texture_parameters, mip_level);
|
|
70
|
-
}
|
|
71
|
-
// set parameters
|
|
72
|
-
this.width = width;
|
|
73
|
-
this.height = height;
|
|
74
|
-
this.texture_parameters = texture_parameters;
|
|
75
|
-
this.mip_level = mip_level;
|
|
76
|
-
this.image_array_size = image_array_size;
|
|
77
|
-
}
|
|
78
|
-
resize_texture_array(new_size) {
|
|
79
|
-
this.gm.gl.bindTexture(this.gm.gl.TEXTURE_2D_ARRAY, this.webgl_texture);
|
|
80
|
-
this.gm.gl.texImage3D(this.gm.gl.TEXTURE_2D_ARRAY, 0, this.internal_format, this.width, this.height, new_size, 0, this.format, this.image_type, null);
|
|
81
|
-
this.gm.gl.bindTexture(this.gm.gl.TEXTURE_2D_ARRAY, null);
|
|
82
|
-
}
|
|
83
|
-
[Symbol.dispose]() {
|
|
84
|
-
this.gm.gl.deleteTexture(this.webgl_texture);
|
|
85
|
-
}
|
|
86
|
-
create_texture(image, texture_type, texture_parameters, mip_level, width = 0, height = 0) {
|
|
87
|
-
switch (texture_type) {
|
|
88
|
-
case TextureType.COLOR:
|
|
89
|
-
return this.create_color_texture(image, width, height, mip_level, texture_parameters);
|
|
90
|
-
case TextureType.DEPTH:
|
|
91
|
-
return this.create_depth_texture(image, width, height, texture_parameters);
|
|
92
|
-
case TextureType.COLOR_ARRAY:
|
|
93
|
-
return this.create_color_array_texture(image, width, height, mip_level, texture_parameters);
|
|
94
|
-
case TextureType.DEPTH_ARRAY:
|
|
95
|
-
return this.create_depth_array_texture(Math.max(image, 1), width, height, texture_parameters);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
create_depth_array_texture(images, width = 0, height = 0, texture_parameters) {
|
|
99
|
-
// images is a count of images.
|
|
100
|
-
let texture = this.gm.gl.createTexture();
|
|
101
|
-
if (!texture)
|
|
102
|
-
throw new Error("Failed to create texture");
|
|
103
|
-
this.gm.gl.bindTexture(this.gm.gl.TEXTURE_2D_ARRAY, texture);
|
|
104
|
-
this.internal_format = this.gm.gl.DEPTH_COMPONENT24;
|
|
105
|
-
this.format = this.gm.gl.DEPTH_COMPONENT;
|
|
106
|
-
this.image_type = this.gm.gl.UNSIGNED_INT;
|
|
107
|
-
this.gm.gl.texImage3D(this.gm.gl.TEXTURE_2D_ARRAY, 0, this.internal_format, width, height, images, 0, this.format, this.image_type, null);
|
|
108
|
-
this.gm.gl.texParameteri(this.gm.gl.TEXTURE_2D_ARRAY, this.gm.gl.TEXTURE_MIN_FILTER, this.gm.gl.NEAREST);
|
|
109
|
-
this.gm.gl.texParameteri(this.gm.gl.TEXTURE_2D_ARRAY, this.gm.gl.TEXTURE_MAG_FILTER, this.gm.gl.NEAREST);
|
|
110
|
-
this.gm.gl.texParameteri(this.gm.gl.TEXTURE_2D_ARRAY, this.gm.gl.TEXTURE_WRAP_S, this.gm.gl.CLAMP_TO_EDGE);
|
|
111
|
-
this.gm.gl.texParameteri(this.gm.gl.TEXTURE_2D_ARRAY, this.gm.gl.TEXTURE_WRAP_T, this.gm.gl.CLAMP_TO_EDGE);
|
|
112
|
-
this.gm.gl.texParameteri(this.gm.gl.TEXTURE_2D_ARRAY, this.gm.gl.TEXTURE_BASE_LEVEL, 0);
|
|
113
|
-
this.gm.gl.texParameteri(this.gm.gl.TEXTURE_2D_ARRAY, this.gm.gl.TEXTURE_MAX_LEVEL, 0);
|
|
114
|
-
for (let [parameter_name_string, parameter_value] of Object.entries(texture_parameters)) {
|
|
115
|
-
let parameter_name = Number(parameter_name_string);
|
|
116
|
-
this.gm.gl.texParameteri(this.gm.gl.TEXTURE_2D_ARRAY, parameter_name, parameter_value);
|
|
117
|
-
}
|
|
118
|
-
this.gm.gl.bindTexture(this.gm.gl.TEXTURE_2D_ARRAY, null);
|
|
119
|
-
return texture;
|
|
120
|
-
}
|
|
121
|
-
create_color_array_texture(images, width = 0, height = 0, mip_level, texture_parameters) {
|
|
122
|
-
// images is either a list of images or a count of images to allocate for.
|
|
123
|
-
let texture = this.gm.gl.createTexture();
|
|
124
|
-
if (!texture)
|
|
125
|
-
throw new Error("Failed to create texture");
|
|
126
|
-
this.gm.gl.bindTexture(this.gm.gl.TEXTURE_2D_ARRAY, texture);
|
|
127
|
-
this.internal_format = this.gm.gl.RGBA;
|
|
128
|
-
this.format = this.gm.gl.RGBA;
|
|
129
|
-
this.image_type = this.gm.gl.UNSIGNED_BYTE;
|
|
130
|
-
if (images instanceof Array) {
|
|
131
|
-
this.gm.gl.texImage3D(this.gm.gl.TEXTURE_2D_ARRAY, mip_level, this.internal_format, width, height, images.length, 0, this.format, this.image_type, null);
|
|
132
|
-
for (var i = 0; i < images.length; ++i) {
|
|
133
|
-
const image = images[i];
|
|
134
|
-
this.gm.gl.texSubImage3D(this.gm.gl.TEXTURE_2D_ARRAY, mip_level, 0, 0, i, // x, y, z offset
|
|
135
|
-
width, height, 1, // z depth
|
|
136
|
-
this.format, this.image_type, image);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
this.gm.gl.texImage3D(this.gm.gl.TEXTURE_2D_ARRAY, mip_level, this.internal_format, width, height, Math.max(images, 1), 0, this.format, this.image_type, null);
|
|
141
|
-
}
|
|
142
|
-
for (let [parameter_name_string, parameter_value] of Object.entries(texture_parameters)) {
|
|
143
|
-
let parameter_name = Number(parameter_name_string);
|
|
144
|
-
this.gm.gl.texParameteri(this.gm.gl.TEXTURE_2D_ARRAY, parameter_name, parameter_value);
|
|
145
|
-
}
|
|
146
|
-
if (images)
|
|
147
|
-
this.gm.gl.generateMipmap(this.gm.gl.TEXTURE_2D_ARRAY);
|
|
148
|
-
this.gm.gl.bindTexture(this.gm.gl.TEXTURE_2D_ARRAY, null);
|
|
149
|
-
return texture;
|
|
150
|
-
}
|
|
151
|
-
create_color_texture(image, width = 0, height = 0, mip_level, texture_parameters) {
|
|
152
|
-
let texture = this.gm.gl.createTexture();
|
|
153
|
-
if (!texture)
|
|
154
|
-
throw new Error("Failed to create texture");
|
|
155
|
-
this.gm.gl.bindTexture(this.gm.gl.TEXTURE_2D, texture);
|
|
156
|
-
this.internal_format = this.gm.gl.RGBA;
|
|
157
|
-
this.format = this.gm.gl.RGBA;
|
|
158
|
-
this.image_type = this.gm.gl.UNSIGNED_BYTE;
|
|
159
|
-
if (image === null)
|
|
160
|
-
this.gm.gl.texImage2D(this.gm.gl.TEXTURE_2D, mip_level, this.internal_format, width, height, 0, this.format, this.image_type, null);
|
|
161
|
-
else
|
|
162
|
-
this.gm.gl.texImage2D(this.gm.gl.TEXTURE_2D, mip_level, this.internal_format, this.format, this.image_type, image);
|
|
163
|
-
for (let [parameter_name_string, parameter_value] of Object.entries(texture_parameters)) {
|
|
164
|
-
let parameter_name = Number(parameter_name_string);
|
|
165
|
-
this.gm.gl.texParameteri(this.gm.gl.TEXTURE_2D, parameter_name, parameter_value);
|
|
166
|
-
}
|
|
167
|
-
this.gm.gl.generateMipmap(this.gm.gl.TEXTURE_2D);
|
|
168
|
-
this.gm.gl.bindTexture(this.gm.gl.TEXTURE_2D, null);
|
|
169
|
-
return texture;
|
|
170
|
-
}
|
|
171
|
-
create_depth_texture(image, width = 0, height = 0, texture_parameters) {
|
|
172
|
-
let texture = this.gm.gl.createTexture();
|
|
173
|
-
if (!texture)
|
|
174
|
-
throw new Error("Failed to create texture");
|
|
175
|
-
this.gm.gl.bindTexture(this.gm.gl.TEXTURE_2D, texture);
|
|
176
|
-
this.internal_format = this.gm.gl.DEPTH_COMPONENT24;
|
|
177
|
-
this.format = this.gm.gl.DEPTH_COMPONENT;
|
|
178
|
-
this.image_type = this.gm.gl.UNSIGNED_INT;
|
|
179
|
-
if (image === null)
|
|
180
|
-
this.gm.gl.texImage2D(this.gm.gl.TEXTURE_2D, 0, this.internal_format, width, height, 0, this.format, this.image_type, null);
|
|
181
|
-
else
|
|
182
|
-
this.gm.gl.texImage2D(this.gm.gl.TEXTURE_2D, 0, this.internal_format, this.format, this.image_type, image);
|
|
183
|
-
for (let [parameter_name_string, parameter_value] of Object.entries(texture_parameters)) {
|
|
184
|
-
let parameter_name = Number(parameter_name_string);
|
|
185
|
-
this.gm.gl.texParameteri(this.gm.gl.TEXTURE_2D, parameter_name, parameter_value);
|
|
186
|
-
}
|
|
187
|
-
this.gm.gl.generateMipmap(this.gm.gl.TEXTURE_2D);
|
|
188
|
-
this.gm.gl.bindTexture(this.gm.gl.TEXTURE_2D, null);
|
|
189
|
-
return texture;
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
export class CubeMapTexture {
|
|
193
|
-
constructor(gm, name, arg1, arg2, arg3 = 0, arg4 = UNSIGNED_INT, arg5 = {}, arg6, arg7, arg8, arg9, arg10, arg11) {
|
|
194
|
-
this.gm = gm;
|
|
195
|
-
this.name = name;
|
|
196
|
-
if (arg6 === undefined) {
|
|
197
|
-
const size = arg1;
|
|
198
|
-
this.size = size;
|
|
199
|
-
const texture_type = arg2;
|
|
200
|
-
const mip_level = arg3;
|
|
201
|
-
const image_type = arg4;
|
|
202
|
-
const texture_parameters = arg5;
|
|
203
|
-
this.webgl_texture = this.create_depth_texture(size, texture_type, texture_parameters, mip_level, image_type);
|
|
204
|
-
}
|
|
205
|
-
else {
|
|
206
|
-
var size = 0;
|
|
207
|
-
var texture_type;
|
|
208
|
-
var image_top;
|
|
209
|
-
var image_bottom;
|
|
210
|
-
var image_front;
|
|
211
|
-
var image_back;
|
|
212
|
-
var image_left;
|
|
213
|
-
var image_right;
|
|
214
|
-
var texture_parameters;
|
|
215
|
-
var mip_level;
|
|
216
|
-
var image_type;
|
|
217
|
-
if (typeof arg1 === "number") {
|
|
218
|
-
size = arg1;
|
|
219
|
-
texture_type = arg2;
|
|
220
|
-
image_top = arg3;
|
|
221
|
-
image_bottom = arg4;
|
|
222
|
-
image_front = arg5;
|
|
223
|
-
image_back = arg6;
|
|
224
|
-
image_left = arg7;
|
|
225
|
-
image_right = arg8;
|
|
226
|
-
texture_parameters = arg9;
|
|
227
|
-
mip_level = arg10;
|
|
228
|
-
image_type = arg11;
|
|
229
|
-
}
|
|
230
|
-
else {
|
|
231
|
-
texture_type = arg1;
|
|
232
|
-
image_top = arg2;
|
|
233
|
-
image_bottom = arg3;
|
|
234
|
-
image_front = arg4;
|
|
235
|
-
image_back = arg5;
|
|
236
|
-
image_left = arg6;
|
|
237
|
-
image_right = arg7;
|
|
238
|
-
texture_parameters = arg8;
|
|
239
|
-
mip_level = arg9;
|
|
240
|
-
image_type = arg10 ? arg10 : UNSIGNED_BYTE;
|
|
241
|
-
}
|
|
242
|
-
this.size = size;
|
|
243
|
-
this.webgl_texture = this.create_texture(size, [
|
|
244
|
-
image_right,
|
|
245
|
-
image_left,
|
|
246
|
-
image_top,
|
|
247
|
-
image_bottom,
|
|
248
|
-
image_front,
|
|
249
|
-
image_back
|
|
250
|
-
], texture_parameters, mip_level, image_type);
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
[Symbol.dispose]() {
|
|
254
|
-
this.gm.gl.deleteTexture(this.webgl_texture);
|
|
255
|
-
}
|
|
256
|
-
create_depth_texture(size, texture_type, texture_parameters, mip_level, image_type) {
|
|
257
|
-
let texture = this.gm.gl.createTexture();
|
|
258
|
-
if (!texture)
|
|
259
|
-
throw new Error("Failed to create texture");
|
|
260
|
-
this.gm.gl.bindTexture(this.gm.gl.TEXTURE_CUBE_MAP, texture);
|
|
261
|
-
for (let i = 0; i < 6; i++) {
|
|
262
|
-
this.gm.gl.texImage2D(this.gm.gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, mip_level, // mip level
|
|
263
|
-
this.gm.gl.DEPTH_COMPONENT24, // internal format
|
|
264
|
-
size, size, // width, height
|
|
265
|
-
0, // border
|
|
266
|
-
this.gm.gl.DEPTH_COMPONENT, // format
|
|
267
|
-
image_type, // type
|
|
268
|
-
null // no data yet
|
|
269
|
-
);
|
|
270
|
-
}
|
|
271
|
-
this.gm.gl.texParameteri(this.gm.gl.TEXTURE_CUBE_MAP, this.gm.gl.TEXTURE_MAG_FILTER, this.gm.gl.NEAREST);
|
|
272
|
-
this.gm.gl.texParameteri(this.gm.gl.TEXTURE_CUBE_MAP, this.gm.gl.TEXTURE_MIN_FILTER, this.gm.gl.NEAREST);
|
|
273
|
-
this.gm.gl.texParameteri(this.gm.gl.TEXTURE_CUBE_MAP, this.gm.gl.TEXTURE_WRAP_S, this.gm.gl.CLAMP_TO_EDGE);
|
|
274
|
-
this.gm.gl.texParameteri(this.gm.gl.TEXTURE_CUBE_MAP, this.gm.gl.TEXTURE_WRAP_T, this.gm.gl.CLAMP_TO_EDGE);
|
|
275
|
-
this.gm.gl.texParameteri(this.gm.gl.TEXTURE_CUBE_MAP, this.gm.gl.TEXTURE_WRAP_R, this.gm.gl.CLAMP_TO_EDGE);
|
|
276
|
-
this.gm.gl.texParameteri(this.gm.gl.TEXTURE_CUBE_MAP, this.gm.gl.TEXTURE_COMPARE_MODE, this.gm.gl.COMPARE_REF_TO_TEXTURE);
|
|
277
|
-
this.gm.gl.texParameteri(this.gm.gl.TEXTURE_CUBE_MAP, this.gm.gl.TEXTURE_COMPARE_FUNC, this.gm.gl.LEQUAL);
|
|
278
|
-
for (let [parameter_name_string, parameter_value] of Object.entries(texture_parameters)) {
|
|
279
|
-
let parameter_name = Number(parameter_name_string);
|
|
280
|
-
this.gm.gl.texParameteri(this.gm.gl.TEXTURE_CUBE_MAP, parameter_name, parameter_value);
|
|
281
|
-
}
|
|
282
|
-
this.gm.gl.bindTexture(this.gm.gl.TEXTURE_CUBE_MAP, null);
|
|
283
|
-
return texture;
|
|
284
|
-
}
|
|
285
|
-
create_texture(size, images, texture_parameters, mip_level, image_type = this.gm.gl.UNSIGNED_BYTE) {
|
|
286
|
-
let texture = this.gm.gl.createTexture();
|
|
287
|
-
if (!texture)
|
|
288
|
-
throw new Error("Failed to create texture");
|
|
289
|
-
this.gm.gl.bindTexture(this.gm.gl.TEXTURE_CUBE_MAP, texture);
|
|
290
|
-
const targets = [
|
|
291
|
-
this.gm.gl.TEXTURE_CUBE_MAP_POSITIVE_X, // right
|
|
292
|
-
this.gm.gl.TEXTURE_CUBE_MAP_NEGATIVE_X, // left
|
|
293
|
-
this.gm.gl.TEXTURE_CUBE_MAP_POSITIVE_Y, // top
|
|
294
|
-
this.gm.gl.TEXTURE_CUBE_MAP_NEGATIVE_Y, // bottom
|
|
295
|
-
this.gm.gl.TEXTURE_CUBE_MAP_POSITIVE_Z, // front
|
|
296
|
-
this.gm.gl.TEXTURE_CUBE_MAP_NEGATIVE_Z, // back
|
|
297
|
-
];
|
|
298
|
-
targets.forEach((target, i) => {
|
|
299
|
-
if (images[i] instanceof Float32Array)
|
|
300
|
-
this.gm.gl.texImage2D(target, mip_level, this.gm.gl.RGBA32F, size, size, 0, this.gm.gl.RGBA, image_type, images[i]);
|
|
301
|
-
else
|
|
302
|
-
this.gm.gl.texImage2D(target, mip_level, this.gm.gl.RGBA, this.gm.gl.RGBA, image_type, images[i]);
|
|
303
|
-
});
|
|
304
|
-
this.gm.gl.generateMipmap(this.gm.gl.TEXTURE_CUBE_MAP);
|
|
305
|
-
this.gm.gl.texParameteri(this.gm.gl.TEXTURE_CUBE_MAP, this.gm.gl.TEXTURE_MIN_FILTER, this.gm.gl.LINEAR_MIPMAP_LINEAR);
|
|
306
|
-
this.gm.gl.texParameteri(this.gm.gl.TEXTURE_CUBE_MAP, this.gm.gl.TEXTURE_MAG_FILTER, this.gm.gl.LINEAR);
|
|
307
|
-
this.gm.gl.texParameteri(this.gm.gl.TEXTURE_CUBE_MAP, this.gm.gl.TEXTURE_WRAP_S, this.gm.gl.CLAMP_TO_EDGE);
|
|
308
|
-
this.gm.gl.texParameteri(this.gm.gl.TEXTURE_CUBE_MAP, this.gm.gl.TEXTURE_WRAP_T, this.gm.gl.CLAMP_TO_EDGE);
|
|
309
|
-
this.gm.gl.texParameteri(this.gm.gl.TEXTURE_CUBE_MAP, this.gm.gl.TEXTURE_WRAP_R, this.gm.gl.CLAMP_TO_EDGE);
|
|
310
|
-
for (let [parameter_name_string, parameter_value] of Object.entries(texture_parameters)) {
|
|
311
|
-
let parameter_name = Number(parameter_name_string);
|
|
312
|
-
this.gm.gl.texParameteri(this.gm.gl.TEXTURE_CUBE_MAP, parameter_name, parameter_value);
|
|
313
|
-
}
|
|
314
|
-
this.gm.gl.bindTexture(this.gm.gl.TEXTURE_CUBE_MAP, null);
|
|
315
|
-
return texture;
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
//# sourceMappingURL=texture.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"texture.js","sourceRoot":"","sources":["../../../src/graphics/assets/texture.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { GraphicsManager } from "../graphics_manager";
|
|
2
|
-
import { ShaderProgram } from "../shader_program";
|
|
3
|
-
import Engine from "../../engine";
|
|
4
|
-
type UBOBaseConstructor = new (...args: any[]) => {
|
|
5
|
-
gm: GraphicsManager;
|
|
6
|
-
} | {
|
|
7
|
-
graphics_manager: GraphicsManager;
|
|
8
|
-
} | {
|
|
9
|
-
engine: Engine;
|
|
10
|
-
};
|
|
11
|
-
export interface ParameterMapping {
|
|
12
|
-
class_property: string;
|
|
13
|
-
uniform_property: string;
|
|
14
|
-
type_check?: UBOBaseConstructor | string;
|
|
15
|
-
}
|
|
16
|
-
export declare function UniformBufferObjectMixin<TBase extends UBOBaseConstructor>(Base: TBase, location: string, parameter_mapping: ParameterMapping[], auto_send_buffer_data?: boolean): TBase & {
|
|
17
|
-
new (...args: ConstructorParameters<TBase>): {
|
|
18
|
-
_on_property_change(prop: string, value: any): boolean;
|
|
19
|
-
send_UBO(): void;
|
|
20
|
-
check_UBO(): boolean;
|
|
21
|
-
gm?: GraphicsManager;
|
|
22
|
-
graphics_manager?: GraphicsManager;
|
|
23
|
-
engine?: Engine;
|
|
24
|
-
};
|
|
25
|
-
create_UBO(shader_program: ShaderProgram): void;
|
|
26
|
-
};
|
|
27
|
-
export {};
|
|
28
|
-
//# sourceMappingURL=uniform_buffer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"uniform_buffer.d.ts","sourceRoot":"","sources":["../../../src/graphics/assets/uniform_buffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAO,MAAM,mBAAmB,CAAC;AACvD,OAAO,MAAM,MAAM,cAAc,CAAC;AAElC,KAAK,kBAAkB,GAAG,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK;IAAE,EAAE,EAAE,eAAe,CAAA;CAAE,GAAC;IAAE,gBAAgB,EAAE,eAAe,CAAA;CAAE,GAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAQnI,MAAM,WAAW,gBAAgB;IAC7B,cAAc,EAAC,MAAM,CAAC;IACtB,gBAAgB,EAAC,MAAM,CAAC;IACxB,UAAU,CAAC,EAAC,kBAAkB,GAAC,MAAM,CAAC;CACzC;AASD,wBAAgB,wBAAwB,CAAC,KAAK,SAAS,kBAAkB,EACrE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAC,MAAM,EAAE,iBAAiB,EAAC,gBAAgB,EAAE,EAClE,qBAAqB,GAAC,OAAc,GA2KqB,KAAK,GAAG;IAC7D,KAAK,GAAG,IAAI,EAAE,qBAAqB,CAAC,KAAK,CAAC;kCA3IhB,MAAM,SAAS,GAAG,GAAE,OAAO;;qBAwDzC,OAAO;aA7GlB,eAAe;2BACD,eAAe;iBACzB,MAAM;MA8L2D;IACtE,UAAU,CAAC,cAAc,EAAC,aAAa,GAAE,IAAI,CAAC;CACjD,CACJ"}
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
import { GraphicsManager } from "../graphics_manager";
|
|
2
|
-
const p = {
|
|
3
|
-
class_property: "",
|
|
4
|
-
uniform_property: "",
|
|
5
|
-
type_check: "number"
|
|
6
|
-
};
|
|
7
|
-
export function UniformBufferObjectMixin(Base, location, parameter_mapping, auto_send_buffer_data = true) {
|
|
8
|
-
class UniformBufferObjectMixin extends Base {
|
|
9
|
-
constructor(...args) {
|
|
10
|
-
super(...args);
|
|
11
|
-
for (const parameter of parameter_mapping) {
|
|
12
|
-
const property = parameter.class_property;
|
|
13
|
-
let value = this[property];
|
|
14
|
-
Object.defineProperty(this, property, {
|
|
15
|
-
get: () => this["stored_" + property],
|
|
16
|
-
set: (new_value) => {
|
|
17
|
-
if (value !== new_value) {
|
|
18
|
-
this["stored_" + property] = new Proxy(new_value, {
|
|
19
|
-
set: (target, p, nv) => {
|
|
20
|
-
target[p] = nv;
|
|
21
|
-
return this._on_property_change(property, new_value);
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
this._on_property_change(property, new_value);
|
|
25
|
-
}
|
|
26
|
-
},
|
|
27
|
-
enumerable: true,
|
|
28
|
-
configurable: true
|
|
29
|
-
});
|
|
30
|
-
this["stored_" + property] = value;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
_on_property_change(prop, value) {
|
|
34
|
-
UniformBufferObjectMixin.UBO_dirty = true;
|
|
35
|
-
if (auto_send_buffer_data) {
|
|
36
|
-
let gm = null;
|
|
37
|
-
if ("engine" in this) {
|
|
38
|
-
gm = this.engine.graphics_manager;
|
|
39
|
-
}
|
|
40
|
-
else if ("gm" in this) {
|
|
41
|
-
gm = this.gm;
|
|
42
|
-
}
|
|
43
|
-
else if ("graphics_manager" in this) {
|
|
44
|
-
gm = this.graphics_manager;
|
|
45
|
-
}
|
|
46
|
-
if (gm === null) {
|
|
47
|
-
console.error(`Couldn't find graphics manager when the property named "${prop}" changed of the UBO at location "${location}".`);
|
|
48
|
-
return true;
|
|
49
|
-
}
|
|
50
|
-
const data = GraphicsManager.flatten_uniform_array_value(value);
|
|
51
|
-
for (const shader_program of UniformBufferObjectMixin.shader_programs) {
|
|
52
|
-
gm.gl.bindBuffer(gm.gl.UNIFORM_BUFFER, shader_program.ubos[location].webgl_buffer);
|
|
53
|
-
gm.gl.bufferSubData(gm.gl.UNIFORM_BUFFER, shader_program.ubos[location][prop].offset, data, 0);
|
|
54
|
-
}
|
|
55
|
-
gm.gl.bindBuffer(gm.gl.UNIFORM_BUFFER, null);
|
|
56
|
-
}
|
|
57
|
-
return true;
|
|
58
|
-
}
|
|
59
|
-
send_UBO() {
|
|
60
|
-
var gm = null;
|
|
61
|
-
for (const shader_program of UniformBufferObjectMixin.shader_programs) {
|
|
62
|
-
gm = shader_program.gm;
|
|
63
|
-
gm.gl.bindBuffer(gm.gl.UNIFORM_BUFFER, shader_program.ubos[location].webgl_buffer);
|
|
64
|
-
for (const parameter of parameter_mapping) {
|
|
65
|
-
const data = GraphicsManager.flatten_uniform_array_value(this[parameter.class_property]);
|
|
66
|
-
gm.gl.bufferSubData(gm.gl.UNIFORM_BUFFER, shader_program.ubos[location][parameter.class_property].offset, data, 0);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
if (gm)
|
|
70
|
-
gm.gl.bindBuffer(gm.gl.UNIFORM_BUFFER, null);
|
|
71
|
-
// After sending set this flag
|
|
72
|
-
UniformBufferObjectMixin.UBO_dirty = false;
|
|
73
|
-
}
|
|
74
|
-
check_UBO() {
|
|
75
|
-
for (const parameter of parameter_mapping) {
|
|
76
|
-
if (!(parameter.class_property in this)) {
|
|
77
|
-
console.error(`Required UBO class property "${parameter.class_property}" not found in class "${Base.name}".`);
|
|
78
|
-
return false;
|
|
79
|
-
}
|
|
80
|
-
else if (parameter.type_check !== undefined)
|
|
81
|
-
if (typeof parameter.type_check === "string") {
|
|
82
|
-
if (typeof this[parameter.class_property] !== parameter.type_check) {
|
|
83
|
-
console.error(`Required UBO class property "${parameter.class_property}" in class definition "${Base.name}" must be of type "${parameter.type_check}".`);
|
|
84
|
-
return false;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
else if (this[parameter.class_property] instanceof parameter.type_check) {
|
|
88
|
-
console.error(`Required UBO class property "${parameter.class_property}" in class definition "${Base.name}" must be of type "${parameter.type_check.name}".`);
|
|
89
|
-
return false;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
return true;
|
|
93
|
-
}
|
|
94
|
-
static create_UBO(shader_program) {
|
|
95
|
-
UniformBufferObjectMixin.shader_programs.push(shader_program);
|
|
96
|
-
const gm = shader_program.gm;
|
|
97
|
-
const block_index = gm.gl.getUniformBlockIndex(shader_program, location);
|
|
98
|
-
const block_size = gm.gl.getActiveUniformBlockParameter(shader_program, block_index, gm.gl.UNIFORM_BLOCK_DATA_SIZE);
|
|
99
|
-
const ubo_buffer = gm.gl.createBuffer();
|
|
100
|
-
shader_program.ubos[location] = {
|
|
101
|
-
webgl_buffer: ubo_buffer
|
|
102
|
-
};
|
|
103
|
-
gm.gl.bindBuffer(gm.gl.UNIFORM_BUFFER, ubo_buffer);
|
|
104
|
-
gm.gl.bufferData(gm.gl.UNIFORM_BUFFER, block_size, gm.gl.DYNAMIC_DRAW);
|
|
105
|
-
gm.gl.bindBuffer(gm.gl.UNIFORM_BUFFER, null);
|
|
106
|
-
gm.gl.bindBufferBase(gm.gl.UNIFORM_BUFFER, shader_program.ubo_counter, ubo_buffer);
|
|
107
|
-
++shader_program.ubo_counter;
|
|
108
|
-
var uniform_parameters = [];
|
|
109
|
-
var class_parameters = [];
|
|
110
|
-
for (var parameter of parameter_mapping) {
|
|
111
|
-
uniform_parameters.push(parameter.uniform_property);
|
|
112
|
-
class_parameters.push(parameter.class_property);
|
|
113
|
-
}
|
|
114
|
-
const ubo_variable_indices = gm.gl.getUniformIndices(shader_program, uniform_parameters);
|
|
115
|
-
if (ubo_variable_indices === null) {
|
|
116
|
-
throw new Error(`Failed to find an uniform buffer object named "${location}" in the shader program named "${shader_program.name}" with the properties named "` + uniform_parameters.join("\", \"") + "\".");
|
|
117
|
-
}
|
|
118
|
-
const ubo_variable_offsets = gm.gl.getActiveUniforms(shader_program, ubo_variable_indices, gm.gl.UNIFORM_OFFSET);
|
|
119
|
-
for (var i = 0; i < class_parameters.length; ++i) {
|
|
120
|
-
shader_program.ubos[location][class_parameters[i]] = {
|
|
121
|
-
label: uniform_parameters[i],
|
|
122
|
-
index: ubo_variable_indices[i],
|
|
123
|
-
offset: ubo_variable_offsets[i]
|
|
124
|
-
};
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
UniformBufferObjectMixin.shader_programs = [];
|
|
129
|
-
UniformBufferObjectMixin.UBO_dirty = false;
|
|
130
|
-
return UniformBufferObjectMixin;
|
|
131
|
-
}
|
|
132
|
-
//# sourceMappingURL=uniform_buffer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"uniform_buffer.js","sourceRoot":"","sources":["../../../src/graphics/assets/uniform_buffer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { GraphicsManager } from "../graphics_manager.ts";
|
|
2
|
-
export interface VAOInfo {
|
|
3
|
-
vao: WebGLVertexArrayObject;
|
|
4
|
-
index_count: number;
|
|
5
|
-
vertex_count: number;
|
|
6
|
-
}
|
|
7
|
-
export declare function get_skybox_vao(gm: GraphicsManager): VAOInfo;
|
|
8
|
-
export declare function get_sprite_vao(gm: GraphicsManager): VAOInfo;
|
|
9
|
-
//# sourceMappingURL=vaos.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vaos.d.ts","sourceRoot":"","sources":["../../../src/graphics/assets/vaos.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAUzD,MAAM,WAAW,OAAO;IACpB,GAAG,EAAC,sBAAsB,CAAC;IAC3B,WAAW,EAAC,MAAM,CAAC;IACnB,YAAY,EAAC,MAAM,CAAC;CACvB;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAC,eAAe,GAAE,OAAO,CAkDzD;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAC,eAAe,GAAE,OAAO,CAgEzD"}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
var skybox_VAO = null;
|
|
2
|
-
var skybox_VAO_index_count = 0;
|
|
3
|
-
var skybox_VAO_vertex_count = 0;
|
|
4
|
-
var sprite_VAO = null;
|
|
5
|
-
var sprite_VAO_index_count = 0;
|
|
6
|
-
var sprite_VAO_vertex_count = 0;
|
|
7
|
-
export function get_skybox_vao(gm) {
|
|
8
|
-
if (skybox_VAO)
|
|
9
|
-
return { vao: skybox_VAO, index_count: skybox_VAO_index_count, vertex_count: skybox_VAO_vertex_count };
|
|
10
|
-
const cube_vertices = new Float32Array([
|
|
11
|
-
-1, -1, -1, // 0
|
|
12
|
-
1, -1, -1, // 1
|
|
13
|
-
1, 1, -1, // 2
|
|
14
|
-
-1, 1, -1, // 3
|
|
15
|
-
-1, -1, 1, // 4
|
|
16
|
-
1, -1, 1, // 5
|
|
17
|
-
1, 1, 1, // 6
|
|
18
|
-
-1, 1, 1 // 7
|
|
19
|
-
]);
|
|
20
|
-
const cube_indices = new Uint16Array([
|
|
21
|
-
0, 1, 2, 2, 3, 0, // -Z
|
|
22
|
-
4, 5, 6, 6, 7, 4, // +Z
|
|
23
|
-
0, 4, 7, 7, 3, 0, // -X
|
|
24
|
-
1, 5, 6, 6, 2, 1, // +X
|
|
25
|
-
3, 2, 6, 6, 7, 3, // +Y
|
|
26
|
-
0, 1, 5, 5, 4, 0 // -Y
|
|
27
|
-
]);
|
|
28
|
-
skybox_VAO_vertex_count = cube_vertices.length;
|
|
29
|
-
skybox_VAO_index_count = cube_indices.length;
|
|
30
|
-
skybox_VAO = gm.gl.createVertexArray();
|
|
31
|
-
gm.gl.bindVertexArray(skybox_VAO);
|
|
32
|
-
// Vertex buffer
|
|
33
|
-
const vbo = gm.gl.createBuffer();
|
|
34
|
-
gm.gl.bindBuffer(gm.gl.ARRAY_BUFFER, vbo);
|
|
35
|
-
gm.gl.bufferData(gm.gl.ARRAY_BUFFER, cube_vertices, gm.gl.STATIC_DRAW);
|
|
36
|
-
// Position attribute (location 0)
|
|
37
|
-
gm.gl.enableVertexAttribArray(0);
|
|
38
|
-
gm.gl.vertexAttribPointer(0, 3, gm.gl.FLOAT, false, 0, 0);
|
|
39
|
-
// Index buffer
|
|
40
|
-
const ibo = gm.gl.createBuffer();
|
|
41
|
-
gm.gl.bindBuffer(gm.gl.ELEMENT_ARRAY_BUFFER, ibo);
|
|
42
|
-
gm.gl.bufferData(gm.gl.ELEMENT_ARRAY_BUFFER, cube_indices, gm.gl.STATIC_DRAW);
|
|
43
|
-
// Unbind VAO
|
|
44
|
-
gm.gl.bindVertexArray(null);
|
|
45
|
-
gm.gl.bindBuffer(gm.gl.ARRAY_BUFFER, null);
|
|
46
|
-
return { vao: skybox_VAO, index_count: skybox_VAO_index_count, vertex_count: skybox_VAO_vertex_count };
|
|
47
|
-
}
|
|
48
|
-
export function get_sprite_vao(gm) {
|
|
49
|
-
if (sprite_VAO)
|
|
50
|
-
return { vao: sprite_VAO, index_count: sprite_VAO_index_count, vertex_count: sprite_VAO_vertex_count };
|
|
51
|
-
const quad_vertices = new Float32Array([
|
|
52
|
-
-0.5, -0.5, 0.0, 0.0, 0.0, // bottom left
|
|
53
|
-
0.5, -0.5, 0.0, 1.0, 0.0, // bottom right
|
|
54
|
-
0.5, 0.5, 0.0, 1.0, 1.0, // top right
|
|
55
|
-
-0.5, 0.5, 0.0, 0.0, 1.0 // top left
|
|
56
|
-
]);
|
|
57
|
-
const quad_indices = new Uint16Array([
|
|
58
|
-
0, 1, 2, // First triangle
|
|
59
|
-
2, 3, 0 // Second triangle
|
|
60
|
-
]);
|
|
61
|
-
sprite_VAO_vertex_count = quad_vertices.length / 5;
|
|
62
|
-
sprite_VAO_index_count = quad_indices.length;
|
|
63
|
-
sprite_VAO = gm.gl.createVertexArray();
|
|
64
|
-
gm.gl.bindVertexArray(sprite_VAO);
|
|
65
|
-
// Create and bind VBO
|
|
66
|
-
const vbo = gm.gl.createBuffer();
|
|
67
|
-
gm.gl.bindBuffer(gm.gl.ARRAY_BUFFER, vbo);
|
|
68
|
-
gm.gl.bufferData(gm.gl.ARRAY_BUFFER, quad_vertices, gm.gl.STATIC_DRAW);
|
|
69
|
-
// Setup vertex attributes
|
|
70
|
-
const stride = 5 * Float32Array.BYTES_PER_ELEMENT; // 5 floats per vertex
|
|
71
|
-
// Position attribute (location 0)
|
|
72
|
-
gm.gl.enableVertexAttribArray(0);
|
|
73
|
-
gm.gl.vertexAttribPointer(0, // attribute location
|
|
74
|
-
3, // number of components (x, y, z)
|
|
75
|
-
gm.gl.FLOAT, // data type
|
|
76
|
-
false, // normalize
|
|
77
|
-
stride, // stride
|
|
78
|
-
0 // offset
|
|
79
|
-
);
|
|
80
|
-
// TexCoord attribute (location 1)
|
|
81
|
-
gm.gl.enableVertexAttribArray(1);
|
|
82
|
-
gm.gl.vertexAttribPointer(1, // attribute location
|
|
83
|
-
2, // number of components (u, v)
|
|
84
|
-
gm.gl.FLOAT, // data type
|
|
85
|
-
false, // normalize
|
|
86
|
-
stride, // stride
|
|
87
|
-
3 * Float32Array.BYTES_PER_ELEMENT // offset (skip x, y, z)
|
|
88
|
-
);
|
|
89
|
-
// Create and bind EBO
|
|
90
|
-
const ebo = gm.gl.createBuffer();
|
|
91
|
-
gm.gl.bindBuffer(gm.gl.ELEMENT_ARRAY_BUFFER, ebo);
|
|
92
|
-
gm.gl.bufferData(gm.gl.ELEMENT_ARRAY_BUFFER, quad_indices, gm.gl.STATIC_DRAW);
|
|
93
|
-
// Unbind VAO
|
|
94
|
-
gm.gl.bindVertexArray(null);
|
|
95
|
-
gm.gl.bindBuffer(gm.gl.ARRAY_BUFFER, null);
|
|
96
|
-
return { vao: sprite_VAO, index_count: sprite_VAO_index_count, vertex_count: sprite_VAO_vertex_count };
|
|
97
|
-
}
|
|
98
|
-
//# sourceMappingURL=vaos.js.map
|