vanta-engine 1.0.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.
Files changed (162) hide show
  1. package/README.md +61 -0
  2. package/dist/engine.d.ts +18 -0
  3. package/dist/engine.d.ts.map +1 -0
  4. package/dist/engine.js +23 -0
  5. package/dist/engine.js.map +1 -0
  6. package/dist/graphics/assets/asset_format/format.d.ts +115 -0
  7. package/dist/graphics/assets/asset_format/format.d.ts.map +1 -0
  8. package/dist/graphics/assets/asset_format/format.js +29 -0
  9. package/dist/graphics/assets/asset_format/format.js.map +1 -0
  10. package/dist/graphics/assets/asset_loaders/obj.d.ts +127 -0
  11. package/dist/graphics/assets/asset_loaders/obj.d.ts.map +1 -0
  12. package/dist/graphics/assets/asset_loaders/obj.js +762 -0
  13. package/dist/graphics/assets/asset_loaders/obj.js.map +1 -0
  14. package/dist/graphics/assets/material.d.ts +33 -0
  15. package/dist/graphics/assets/material.d.ts.map +1 -0
  16. package/dist/graphics/assets/material.js +104 -0
  17. package/dist/graphics/assets/material.js.map +1 -0
  18. package/dist/graphics/assets/mesh.d.ts +17 -0
  19. package/dist/graphics/assets/mesh.d.ts.map +1 -0
  20. package/dist/graphics/assets/mesh.js +47 -0
  21. package/dist/graphics/assets/mesh.js.map +1 -0
  22. package/dist/graphics/assets/model.d.ts +13 -0
  23. package/dist/graphics/assets/model.d.ts.map +1 -0
  24. package/dist/graphics/assets/model.js +18 -0
  25. package/dist/graphics/assets/model.js.map +1 -0
  26. package/dist/graphics/assets/texture.d.ts +93 -0
  27. package/dist/graphics/assets/texture.d.ts.map +1 -0
  28. package/dist/graphics/assets/texture.js +318 -0
  29. package/dist/graphics/assets/texture.js.map +1 -0
  30. package/dist/graphics/assets/uniform_buffer.d.ts +28 -0
  31. package/dist/graphics/assets/uniform_buffer.d.ts.map +1 -0
  32. package/dist/graphics/assets/uniform_buffer.js +132 -0
  33. package/dist/graphics/assets/uniform_buffer.js.map +1 -0
  34. package/dist/graphics/assets/vaos.d.ts +9 -0
  35. package/dist/graphics/assets/vaos.d.ts.map +1 -0
  36. package/dist/graphics/assets/vaos.js +98 -0
  37. package/dist/graphics/assets/vaos.js.map +1 -0
  38. package/dist/graphics/framebuffer.d.ts +77 -0
  39. package/dist/graphics/framebuffer.d.ts.map +1 -0
  40. package/dist/graphics/framebuffer.js +265 -0
  41. package/dist/graphics/framebuffer.js.map +1 -0
  42. package/dist/graphics/graphics_manager.d.ts +70 -0
  43. package/dist/graphics/graphics_manager.d.ts.map +1 -0
  44. package/dist/graphics/graphics_manager.js +503 -0
  45. package/dist/graphics/graphics_manager.js.map +1 -0
  46. package/dist/graphics/shader_program.d.ts +66 -0
  47. package/dist/graphics/shader_program.d.ts.map +1 -0
  48. package/dist/graphics/shader_program.js +92 -0
  49. package/dist/graphics/shader_program.js.map +1 -0
  50. package/dist/graphics/utility.d.ts +4 -0
  51. package/dist/graphics/utility.d.ts.map +1 -0
  52. package/dist/graphics/utility.js +33 -0
  53. package/dist/graphics/utility.js.map +1 -0
  54. package/dist/hook_manager.d.ts +33 -0
  55. package/dist/hook_manager.d.ts.map +1 -0
  56. package/dist/hook_manager.js +102 -0
  57. package/dist/hook_manager.js.map +1 -0
  58. package/dist/index.d.ts +27 -0
  59. package/dist/index.d.ts.map +1 -0
  60. package/dist/index.js +27 -0
  61. package/dist/index.js.map +1 -0
  62. package/dist/input/input_manager.d.ts +41 -0
  63. package/dist/input/input_manager.d.ts.map +1 -0
  64. package/dist/input/input_manager.js +121 -0
  65. package/dist/input/input_manager.js.map +1 -0
  66. package/dist/node/camera3d.d.ts +10 -0
  67. package/dist/node/camera3d.d.ts.map +1 -0
  68. package/dist/node/camera3d.js +25 -0
  69. package/dist/node/camera3d.js.map +1 -0
  70. package/dist/node/lights/directional_light.d.ts +20 -0
  71. package/dist/node/lights/directional_light.d.ts.map +1 -0
  72. package/dist/node/lights/directional_light.js +111 -0
  73. package/dist/node/lights/directional_light.js.map +1 -0
  74. package/dist/node/lights/light.d.ts +15 -0
  75. package/dist/node/lights/light.d.ts.map +1 -0
  76. package/dist/node/lights/light.js +24 -0
  77. package/dist/node/lights/light.js.map +1 -0
  78. package/dist/node/lights/point_light.d.ts +26 -0
  79. package/dist/node/lights/point_light.d.ts.map +1 -0
  80. package/dist/node/lights/point_light.js +109 -0
  81. package/dist/node/lights/point_light.js.map +1 -0
  82. package/dist/node/lights/spot_light.d.ts +13 -0
  83. package/dist/node/lights/spot_light.d.ts.map +1 -0
  84. package/dist/node/lights/spot_light.js +35 -0
  85. package/dist/node/lights/spot_light.js.map +1 -0
  86. package/dist/node/lights.d.ts +43 -0
  87. package/dist/node/lights.d.ts.map +1 -0
  88. package/dist/node/lights.js +201 -0
  89. package/dist/node/lights.js.map +1 -0
  90. package/dist/node/object3d.d.ts +10 -0
  91. package/dist/node/object3d.d.ts.map +1 -0
  92. package/dist/node/object3d.js +60 -0
  93. package/dist/node/object3d.js.map +1 -0
  94. package/dist/node/skybox.d.ts +15 -0
  95. package/dist/node/skybox.d.ts.map +1 -0
  96. package/dist/node/skybox.js +33 -0
  97. package/dist/node/skybox.js.map +1 -0
  98. package/dist/node/sprite2d.d.ts +14 -0
  99. package/dist/node/sprite2d.d.ts.map +1 -0
  100. package/dist/node/sprite2d.js +33 -0
  101. package/dist/node/sprite2d.js.map +1 -0
  102. package/dist/node.d.ts +76 -0
  103. package/dist/node.d.ts.map +1 -0
  104. package/dist/node.js +308 -0
  105. package/dist/node.js.map +1 -0
  106. package/dist/scene.d.ts +19 -0
  107. package/dist/scene.d.ts.map +1 -0
  108. package/dist/scene.js +50 -0
  109. package/dist/scene.js.map +1 -0
  110. package/dist/shader_language/grammar.d.ts +2 -0
  111. package/dist/shader_language/grammar.d.ts.map +1 -0
  112. package/dist/shader_language/grammar.js +971 -0
  113. package/dist/shader_language/grammar.js.map +1 -0
  114. package/dist/shader_language/tokenizer.d.ts +3 -0
  115. package/dist/shader_language/tokenizer.d.ts.map +1 -0
  116. package/dist/shader_language/tokenizer.js +50 -0
  117. package/dist/shader_language/tokenizer.js.map +1 -0
  118. package/dist/shaders/default_2d.fs.d.ts +3 -0
  119. package/dist/shaders/default_2d.fs.d.ts.map +1 -0
  120. package/dist/shaders/default_2d.fs.js +14 -0
  121. package/dist/shaders/default_2d.fs.js.map +1 -0
  122. package/dist/shaders/default_2d.vs.d.ts +3 -0
  123. package/dist/shaders/default_2d.vs.d.ts.map +1 -0
  124. package/dist/shaders/default_2d.vs.js +16 -0
  125. package/dist/shaders/default_2d.vs.js.map +1 -0
  126. package/dist/shaders/default_3d.fs.d.ts +3 -0
  127. package/dist/shaders/default_3d.fs.d.ts.map +1 -0
  128. package/dist/shaders/default_3d.fs.js +327 -0
  129. package/dist/shaders/default_3d.fs.js.map +1 -0
  130. package/dist/shaders/default_3d.vs.d.ts +3 -0
  131. package/dist/shaders/default_3d.vs.d.ts.map +1 -0
  132. package/dist/shaders/default_3d.vs.js +36 -0
  133. package/dist/shaders/default_3d.vs.js.map +1 -0
  134. package/dist/shaders/default_directional_shadow.fs.d.ts +3 -0
  135. package/dist/shaders/default_directional_shadow.fs.d.ts.map +1 -0
  136. package/dist/shaders/default_directional_shadow.fs.js +6 -0
  137. package/dist/shaders/default_directional_shadow.fs.js.map +1 -0
  138. package/dist/shaders/default_directional_shadow.vs.d.ts +3 -0
  139. package/dist/shaders/default_directional_shadow.vs.d.ts.map +1 -0
  140. package/dist/shaders/default_directional_shadow.vs.js +11 -0
  141. package/dist/shaders/default_directional_shadow.vs.js.map +1 -0
  142. package/dist/shaders/default_point_shadow.fs.d.ts +3 -0
  143. package/dist/shaders/default_point_shadow.fs.d.ts.map +1 -0
  144. package/dist/shaders/default_point_shadow.fs.js +18 -0
  145. package/dist/shaders/default_point_shadow.fs.js.map +1 -0
  146. package/dist/shaders/default_point_shadow.vs.d.ts +3 -0
  147. package/dist/shaders/default_point_shadow.vs.d.ts.map +1 -0
  148. package/dist/shaders/default_point_shadow.vs.js +14 -0
  149. package/dist/shaders/default_point_shadow.vs.js.map +1 -0
  150. package/dist/shaders/default_skybox.fs.d.ts +3 -0
  151. package/dist/shaders/default_skybox.fs.d.ts.map +1 -0
  152. package/dist/shaders/default_skybox.fs.js +14 -0
  153. package/dist/shaders/default_skybox.fs.js.map +1 -0
  154. package/dist/shaders/default_skybox.vs.d.ts +3 -0
  155. package/dist/shaders/default_skybox.vs.d.ts.map +1 -0
  156. package/dist/shaders/default_skybox.vs.js +23 -0
  157. package/dist/shaders/default_skybox.vs.js.map +1 -0
  158. package/dist/utility.d.ts +5 -0
  159. package/dist/utility.d.ts.map +1 -0
  160. package/dist/utility.js +19 -0
  161. package/dist/utility.js.map +1 -0
  162. package/package.json +47 -0
@@ -0,0 +1,318 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"texture.js","sourceRoot":"","sources":["../../../src/graphics/assets/texture.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,132 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uniform_buffer.js","sourceRoot":"","sources":["../../../src/graphics/assets/uniform_buffer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,98 @@
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