vanta-engine 1.0.2 → 1.0.3

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 (156) hide show
  1. package/dist/chunk-AAWFTQHP.js +35 -0
  2. package/dist/chunk-AAWFTQHP.js.map +1 -0
  3. package/dist/index.cjs +8407 -0
  4. package/dist/index.cjs.map +1 -0
  5. package/dist/index.d.cts +755 -0
  6. package/dist/index.d.ts +755 -27
  7. package/dist/index.js +8368 -26
  8. package/dist/index.js.map +1 -1
  9. package/dist/module-A2C3IOOM.js +11 -0
  10. package/dist/module-A2C3IOOM.js.map +1 -0
  11. package/package.json +8 -7
  12. package/dist/engine.d.ts +0 -18
  13. package/dist/engine.d.ts.map +0 -1
  14. package/dist/engine.js +0 -23
  15. package/dist/engine.js.map +0 -1
  16. package/dist/graphics/assets/asset_format/format.d.ts +0 -115
  17. package/dist/graphics/assets/asset_format/format.d.ts.map +0 -1
  18. package/dist/graphics/assets/asset_format/format.js +0 -29
  19. package/dist/graphics/assets/asset_format/format.js.map +0 -1
  20. package/dist/graphics/assets/asset_loaders/obj.d.ts +0 -127
  21. package/dist/graphics/assets/asset_loaders/obj.d.ts.map +0 -1
  22. package/dist/graphics/assets/asset_loaders/obj.js +0 -762
  23. package/dist/graphics/assets/asset_loaders/obj.js.map +0 -1
  24. package/dist/graphics/assets/material.d.ts +0 -33
  25. package/dist/graphics/assets/material.d.ts.map +0 -1
  26. package/dist/graphics/assets/material.js +0 -104
  27. package/dist/graphics/assets/material.js.map +0 -1
  28. package/dist/graphics/assets/mesh.d.ts +0 -17
  29. package/dist/graphics/assets/mesh.d.ts.map +0 -1
  30. package/dist/graphics/assets/mesh.js +0 -47
  31. package/dist/graphics/assets/mesh.js.map +0 -1
  32. package/dist/graphics/assets/model.d.ts +0 -13
  33. package/dist/graphics/assets/model.d.ts.map +0 -1
  34. package/dist/graphics/assets/model.js +0 -18
  35. package/dist/graphics/assets/model.js.map +0 -1
  36. package/dist/graphics/assets/texture.d.ts +0 -93
  37. package/dist/graphics/assets/texture.d.ts.map +0 -1
  38. package/dist/graphics/assets/texture.js +0 -318
  39. package/dist/graphics/assets/texture.js.map +0 -1
  40. package/dist/graphics/assets/uniform_buffer.d.ts +0 -28
  41. package/dist/graphics/assets/uniform_buffer.d.ts.map +0 -1
  42. package/dist/graphics/assets/uniform_buffer.js +0 -132
  43. package/dist/graphics/assets/uniform_buffer.js.map +0 -1
  44. package/dist/graphics/assets/vaos.d.ts +0 -9
  45. package/dist/graphics/assets/vaos.d.ts.map +0 -1
  46. package/dist/graphics/assets/vaos.js +0 -98
  47. package/dist/graphics/assets/vaos.js.map +0 -1
  48. package/dist/graphics/framebuffer.d.ts +0 -77
  49. package/dist/graphics/framebuffer.d.ts.map +0 -1
  50. package/dist/graphics/framebuffer.js +0 -265
  51. package/dist/graphics/framebuffer.js.map +0 -1
  52. package/dist/graphics/graphics_manager.d.ts +0 -70
  53. package/dist/graphics/graphics_manager.d.ts.map +0 -1
  54. package/dist/graphics/graphics_manager.js +0 -503
  55. package/dist/graphics/graphics_manager.js.map +0 -1
  56. package/dist/graphics/shader_program.d.ts +0 -66
  57. package/dist/graphics/shader_program.d.ts.map +0 -1
  58. package/dist/graphics/shader_program.js +0 -92
  59. package/dist/graphics/shader_program.js.map +0 -1
  60. package/dist/graphics/utility.d.ts +0 -14
  61. package/dist/graphics/utility.d.ts.map +0 -1
  62. package/dist/graphics/utility.js +0 -81
  63. package/dist/graphics/utility.js.map +0 -1
  64. package/dist/hook_manager.d.ts +0 -33
  65. package/dist/hook_manager.d.ts.map +0 -1
  66. package/dist/hook_manager.js +0 -102
  67. package/dist/hook_manager.js.map +0 -1
  68. package/dist/index.d.ts.map +0 -1
  69. package/dist/input/input_manager.d.ts +0 -41
  70. package/dist/input/input_manager.d.ts.map +0 -1
  71. package/dist/input/input_manager.js +0 -121
  72. package/dist/input/input_manager.js.map +0 -1
  73. package/dist/node/camera3d.d.ts +0 -10
  74. package/dist/node/camera3d.d.ts.map +0 -1
  75. package/dist/node/camera3d.js +0 -25
  76. package/dist/node/camera3d.js.map +0 -1
  77. package/dist/node/lights/directional_light.d.ts +0 -20
  78. package/dist/node/lights/directional_light.d.ts.map +0 -1
  79. package/dist/node/lights/directional_light.js +0 -111
  80. package/dist/node/lights/directional_light.js.map +0 -1
  81. package/dist/node/lights/light.d.ts +0 -15
  82. package/dist/node/lights/light.d.ts.map +0 -1
  83. package/dist/node/lights/light.js +0 -24
  84. package/dist/node/lights/light.js.map +0 -1
  85. package/dist/node/lights/point_light.d.ts +0 -26
  86. package/dist/node/lights/point_light.d.ts.map +0 -1
  87. package/dist/node/lights/point_light.js +0 -109
  88. package/dist/node/lights/point_light.js.map +0 -1
  89. package/dist/node/lights/spot_light.d.ts +0 -13
  90. package/dist/node/lights/spot_light.d.ts.map +0 -1
  91. package/dist/node/lights/spot_light.js +0 -35
  92. package/dist/node/lights/spot_light.js.map +0 -1
  93. package/dist/node/object3d.d.ts +0 -10
  94. package/dist/node/object3d.d.ts.map +0 -1
  95. package/dist/node/object3d.js +0 -60
  96. package/dist/node/object3d.js.map +0 -1
  97. package/dist/node/skybox.d.ts +0 -15
  98. package/dist/node/skybox.d.ts.map +0 -1
  99. package/dist/node/skybox.js +0 -33
  100. package/dist/node/skybox.js.map +0 -1
  101. package/dist/node/sprite2d.d.ts +0 -14
  102. package/dist/node/sprite2d.d.ts.map +0 -1
  103. package/dist/node/sprite2d.js +0 -33
  104. package/dist/node/sprite2d.js.map +0 -1
  105. package/dist/node.d.ts +0 -76
  106. package/dist/node.d.ts.map +0 -1
  107. package/dist/node.js +0 -308
  108. package/dist/node.js.map +0 -1
  109. package/dist/scene.d.ts +0 -19
  110. package/dist/scene.d.ts.map +0 -1
  111. package/dist/scene.js +0 -50
  112. package/dist/scene.js.map +0 -1
  113. package/dist/shaders/default_2d.fs.d.ts +0 -3
  114. package/dist/shaders/default_2d.fs.d.ts.map +0 -1
  115. package/dist/shaders/default_2d.fs.js +0 -14
  116. package/dist/shaders/default_2d.fs.js.map +0 -1
  117. package/dist/shaders/default_2d.vs.d.ts +0 -3
  118. package/dist/shaders/default_2d.vs.d.ts.map +0 -1
  119. package/dist/shaders/default_2d.vs.js +0 -16
  120. package/dist/shaders/default_2d.vs.js.map +0 -1
  121. package/dist/shaders/default_3d.fs.d.ts +0 -3
  122. package/dist/shaders/default_3d.fs.d.ts.map +0 -1
  123. package/dist/shaders/default_3d.fs.js +0 -327
  124. package/dist/shaders/default_3d.fs.js.map +0 -1
  125. package/dist/shaders/default_3d.vs.d.ts +0 -3
  126. package/dist/shaders/default_3d.vs.d.ts.map +0 -1
  127. package/dist/shaders/default_3d.vs.js +0 -36
  128. package/dist/shaders/default_3d.vs.js.map +0 -1
  129. package/dist/shaders/default_directional_shadow.fs.d.ts +0 -3
  130. package/dist/shaders/default_directional_shadow.fs.d.ts.map +0 -1
  131. package/dist/shaders/default_directional_shadow.fs.js +0 -6
  132. package/dist/shaders/default_directional_shadow.fs.js.map +0 -1
  133. package/dist/shaders/default_directional_shadow.vs.d.ts +0 -3
  134. package/dist/shaders/default_directional_shadow.vs.d.ts.map +0 -1
  135. package/dist/shaders/default_directional_shadow.vs.js +0 -11
  136. package/dist/shaders/default_directional_shadow.vs.js.map +0 -1
  137. package/dist/shaders/default_point_shadow.fs.d.ts +0 -3
  138. package/dist/shaders/default_point_shadow.fs.d.ts.map +0 -1
  139. package/dist/shaders/default_point_shadow.fs.js +0 -18
  140. package/dist/shaders/default_point_shadow.fs.js.map +0 -1
  141. package/dist/shaders/default_point_shadow.vs.d.ts +0 -3
  142. package/dist/shaders/default_point_shadow.vs.d.ts.map +0 -1
  143. package/dist/shaders/default_point_shadow.vs.js +0 -14
  144. package/dist/shaders/default_point_shadow.vs.js.map +0 -1
  145. package/dist/shaders/default_skybox.fs.d.ts +0 -3
  146. package/dist/shaders/default_skybox.fs.d.ts.map +0 -1
  147. package/dist/shaders/default_skybox.fs.js +0 -14
  148. package/dist/shaders/default_skybox.fs.js.map +0 -1
  149. package/dist/shaders/default_skybox.vs.d.ts +0 -3
  150. package/dist/shaders/default_skybox.vs.d.ts.map +0 -1
  151. package/dist/shaders/default_skybox.vs.js +0 -23
  152. package/dist/shaders/default_skybox.vs.js.map +0 -1
  153. package/dist/utility.d.ts +0 -5
  154. package/dist/utility.d.ts.map +0 -1
  155. package/dist/utility.js +0 -19
  156. package/dist/utility.js.map +0 -1
package/dist/node.d.ts DELETED
@@ -1,76 +0,0 @@
1
- import { Vec3, Vec2, Mat4, Quat } from '@vicimpa/glm';
2
- import Engine from './engine.ts';
3
- type Constructor<T> = new (...args: any[]) => T;
4
- export declare class Node {
5
- engine: Engine;
6
- name: string;
7
- parent: Node | null;
8
- children: Array<Node>;
9
- on_ready_callback: (node: Node, engine: Engine) => void;
10
- on_removed_callback: (node: Node, engine: Engine, parent: Node) => void;
11
- on_update_callback: (node: Node, engine: Engine, time: number, delta_time: number) => void;
12
- on_render_callback: (node: Node, engine: Engine, time: number, delta_time: number) => void;
13
- private lua_url;
14
- constructor(engine: Engine, name: string);
15
- set_lua_file(url: string): Promise<void>;
16
- protected on_ready(node: this, engine: Engine): void;
17
- protected on_removed(node: this, engine: Engine, parent: Node): void;
18
- protected on_update(node: this, engine: Engine, time: number, delta_time: number): void;
19
- protected on_render(node: this, engine: Engine, time: number, delta_time: number): void;
20
- protected on_parented(): void;
21
- has_child(node: Node | string): boolean;
22
- has_parent(node: Node | string): boolean;
23
- get_parent(node_name: string): Node | null;
24
- get_parent_of_type<T>(node_type: Constructor<T>): T | null;
25
- get_child(name: string): Node | null;
26
- get_children_of_type<T>(node_type: Constructor<T>): T[];
27
- push_child(node: Node): void;
28
- remove_child(node: Node | string): void;
29
- update(time: number, delta_time: number): void;
30
- render(view_matrix: Mat4, projection_matrix_3d: Mat4, projection_matrix_2d: Mat4, time: number, delta_time: number): void;
31
- protected render_children(view_matrix: Mat4, projection_matrix_3d: Mat4, projection_matrix_2d: Mat4, time: number, delta_time: number): void;
32
- protected render_class(view_matrix: Mat4, projection_matrix_3d: Mat4, projection_matrix_2d: Mat4, time: number, delta_time: number): void;
33
- }
34
- export declare class Node2D extends Node {
35
- private stored_position;
36
- private stored_rotation;
37
- private stored_scale;
38
- constructor(engine: Engine, name: string);
39
- get position(): Vec2;
40
- set position(value: Vec2);
41
- get rotation(): number;
42
- set rotation(value: number);
43
- get scale(): Vec2;
44
- set scale(value: Vec2);
45
- private proxy_on_change_position;
46
- private proxy_on_change_scale;
47
- protected on_change_position(new_value: Vec2): void;
48
- protected on_change_rotation(new_value: number): void;
49
- protected on_change_scale(new_value: Vec2): void;
50
- get_model_matrix(): Mat4;
51
- get_world_matrix(): Mat4;
52
- }
53
- export declare class Node3D extends Node {
54
- private stored_position;
55
- private stored_rotation;
56
- private stored_scale;
57
- constructor(engine: Engine, name: string);
58
- get position(): Vec3;
59
- set position(value: Vec3);
60
- get rotation(): Quat;
61
- set rotation(value: Quat);
62
- get scale(): Vec3;
63
- set scale(value: Vec3);
64
- private proxy_on_change_position;
65
- private proxy_on_change_rotation;
66
- private proxy_on_change_scale;
67
- protected on_change_position(new_value: Vec3): void;
68
- protected on_change_rotation(new_value: Quat): void;
69
- protected on_change_scale(new_value: Vec3): void;
70
- get_world_position(): Vec3;
71
- get_parent_world_matrix(): Mat4;
72
- get_model_matrix(): Mat4;
73
- get_world_matrix(): Mat4;
74
- }
75
- export {};
76
- //# sourceMappingURL=node.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
package/dist/node.js DELETED
@@ -1,308 +0,0 @@
1
- import { Vec3, Vec2, Mat4, Quat } from '@vicimpa/glm';
2
- export class Node {
3
- constructor(engine, name) {
4
- this.parent = null;
5
- this.children = [];
6
- // CALLBACKS
7
- this.on_ready_callback = (node, engine) => { };
8
- this.on_removed_callback = (node, engine, parent) => { };
9
- this.on_update_callback = (node, engine, time, delta_time) => { };
10
- this.on_render_callback = (node, engine, time, delta_time) => { };
11
- this.lua_url = null;
12
- this.engine = engine;
13
- this.name = name;
14
- }
15
- async set_lua_file(url) {
16
- this.lua_url = url;
17
- await this.engine.hook_manager.add_on_ready_callback(url);
18
- await this.engine.hook_manager.add_on_removed_callback(url);
19
- await this.engine.hook_manager.add_on_update_callback(url);
20
- await this.engine.hook_manager.add_on_render_callback(url);
21
- }
22
- on_ready(node, engine) {
23
- this.on_ready_callback(node, engine);
24
- if (this.lua_url !== null)
25
- this.engine.hook_manager.call_on_ready_callback(this.lua_url, node, engine);
26
- }
27
- on_removed(node, engine, parent) {
28
- this.on_removed_callback(node, engine, parent);
29
- if (this.lua_url !== null)
30
- this.engine.hook_manager.call_on_removed_callback(this.lua_url, node, engine, parent);
31
- }
32
- on_update(node, engine, time, delta_time) {
33
- if (this.engine.main_scene.rendering_depth_map)
34
- return;
35
- this.on_update_callback(node, engine, time, delta_time);
36
- if (this.lua_url !== null)
37
- this.engine.hook_manager.call_on_update_callback(this.lua_url, node, engine, time, delta_time);
38
- }
39
- on_render(node, engine, time, delta_time) {
40
- if (this.engine.main_scene.rendering_depth_map)
41
- return;
42
- this.on_render_callback(node, engine, time, delta_time);
43
- if (this.lua_url !== null)
44
- this.engine.hook_manager.call_on_render_callback(this.lua_url, node, engine, time, delta_time);
45
- }
46
- on_parented() {
47
- }
48
- has_child(node) {
49
- if (node instanceof Node)
50
- return this.children.includes(node);
51
- // node is string
52
- for (const child of this.children) {
53
- if (child.name === node)
54
- return true;
55
- }
56
- return false;
57
- }
58
- has_parent(node) {
59
- if (this.parent && (this.parent === node || this.parent.name === node))
60
- return true;
61
- if (this.parent)
62
- return this.parent.has_parent(node);
63
- return false;
64
- }
65
- get_parent(node_name) {
66
- if (this.parent && this.parent.name === node_name)
67
- return this.parent;
68
- if (this.parent)
69
- return this.parent.get_parent(node_name);
70
- return null;
71
- }
72
- get_parent_of_type(node_type) {
73
- if (this.parent instanceof node_type)
74
- return this.parent;
75
- if (this.parent)
76
- return this.parent.get_parent_of_type(node_type);
77
- return null;
78
- }
79
- get_child(name) {
80
- // node is string
81
- for (const child of this.children) {
82
- if (child.name === name)
83
- return child;
84
- else {
85
- const result = child.get_child(name);
86
- if (result)
87
- return result;
88
- }
89
- }
90
- return null;
91
- }
92
- get_children_of_type(node_type) {
93
- var target_list = [];
94
- var parents = [this];
95
- for (const child of parents[parents.length - 1].children) {
96
- const child_target_list = child.get_children_of_type(node_type);
97
- target_list.concat(child_target_list);
98
- if (child instanceof node_type) {
99
- target_list.push(child);
100
- }
101
- }
102
- return target_list;
103
- }
104
- push_child(node) {
105
- if (node.parent) {
106
- let parent = node.parent;
107
- node.parent.remove_child(node);
108
- }
109
- this.children.push(node);
110
- node.parent = this;
111
- node.on_ready(node, this.engine);
112
- node.on_parented();
113
- }
114
- remove_child(node) {
115
- var index;
116
- if (node instanceof Node) {
117
- index = this.children.indexOf(node);
118
- if (index > -1) {
119
- this.children.splice(index, 1);
120
- }
121
- node.parent = null;
122
- }
123
- else {
124
- // node is string
125
- // remove parent
126
- const node_instance = this.engine.main_scene.get_node(node);
127
- if (node_instance)
128
- node_instance.parent = null;
129
- // remove from children of parent.
130
- index = -1;
131
- for (const child of this.children) {
132
- if (child.name === node) {
133
- node = child;
134
- break;
135
- }
136
- index++;
137
- }
138
- if (index > -1) {
139
- this.children.splice(index, 1);
140
- }
141
- }
142
- if (node instanceof Node) {
143
- node.on_removed(node, this.engine, this);
144
- }
145
- }
146
- update(time, delta_time) {
147
- this.on_update(this, this.engine, time, delta_time);
148
- for (const child of this.children) {
149
- child.update(time, delta_time);
150
- }
151
- }
152
- render(view_matrix, projection_matrix_3d, projection_matrix_2d, time, delta_time) {
153
- this.render_class(view_matrix, projection_matrix_3d, projection_matrix_2d, time, delta_time);
154
- this.render_children(view_matrix, projection_matrix_3d, projection_matrix_2d, time, delta_time);
155
- }
156
- render_children(view_matrix, projection_matrix_3d, projection_matrix_2d, time, delta_time) {
157
- for (const child of this.children) {
158
- child.render(view_matrix, projection_matrix_3d, projection_matrix_2d, time, delta_time);
159
- }
160
- }
161
- // This is the function where the webgl2 state is set to render.
162
- render_class(view_matrix, projection_matrix_3d, projection_matrix_2d, time, delta_time) {
163
- this.on_render(this, this.engine, time, delta_time);
164
- }
165
- }
166
- export class Node2D extends Node {
167
- constructor(engine, name) {
168
- super(engine, name);
169
- // Bind the methods to the current instance
170
- this.proxy_on_change_position = this.proxy_on_change_position.bind(this);
171
- this.proxy_on_change_scale = this.proxy_on_change_scale.bind(this);
172
- // Re-initialize proxies now that methods are bound
173
- this.stored_position = new Proxy(new Vec2(0.0), { set: this.proxy_on_change_position });
174
- this.stored_rotation = 0.0;
175
- this.stored_scale = new Proxy(new Vec2(1.0), { set: this.proxy_on_change_scale });
176
- }
177
- get position() {
178
- return this.stored_position;
179
- }
180
- set position(value) {
181
- this.stored_position = new Proxy(value, { set: this.proxy_on_change_position });
182
- this.on_change_position(value);
183
- }
184
- get rotation() {
185
- return this.stored_rotation;
186
- }
187
- set rotation(value) {
188
- this.stored_rotation = value;
189
- this.on_change_rotation(value);
190
- }
191
- get scale() {
192
- return this.stored_scale;
193
- }
194
- set scale(value) {
195
- this.stored_scale = new Proxy(value, { set: this.proxy_on_change_scale });
196
- this.on_change_scale(value);
197
- }
198
- proxy_on_change_position(target, property, value) {
199
- target[property] = value;
200
- this.on_change_position(target);
201
- return true;
202
- }
203
- proxy_on_change_scale(target, property, value) {
204
- target[property] = value;
205
- this.on_change_scale(target);
206
- return true;
207
- }
208
- on_change_position(new_value) { } // ABSTRACT METHOD
209
- on_change_rotation(new_value) { } // ABSTRACT METHOD
210
- on_change_scale(new_value) { } // ABSTRACT METHOD
211
- get_model_matrix() {
212
- let model = (new Mat4()).identity();
213
- model.translate(new Vec3(this.position.x, this.position.y, 0.0));
214
- model.rotate(this.rotation, new Vec3(0.0, 0.0, 1.0));
215
- model.scale(new Vec3(this.scale.x, this.scale.y, 1.0));
216
- return model;
217
- }
218
- get_world_matrix() {
219
- let model = this.get_model_matrix();
220
- if (this.parent instanceof Node2D) {
221
- model = this.parent.get_model_matrix().mul(model);
222
- }
223
- return model;
224
- }
225
- }
226
- export class Node3D extends Node {
227
- constructor(engine, name) {
228
- super(engine, name);
229
- // Bind the methods to the current instance
230
- this.proxy_on_change_position = this.proxy_on_change_position.bind(this);
231
- this.proxy_on_change_rotation = this.proxy_on_change_rotation.bind(this);
232
- this.proxy_on_change_scale = this.proxy_on_change_scale.bind(this);
233
- // Re-initialize proxies now that methods are bound
234
- this.stored_position = new Proxy(new Vec3(0.0), { set: this.proxy_on_change_position });
235
- this.stored_rotation = new Proxy(new Quat(), { set: this.proxy_on_change_rotation });
236
- this.stored_scale = new Proxy(new Vec3(1.0), { set: this.proxy_on_change_scale });
237
- }
238
- get position() {
239
- return this.stored_position;
240
- }
241
- set position(value) {
242
- this.stored_position = new Proxy(value, { set: this.proxy_on_change_position });
243
- this.on_change_position(value);
244
- }
245
- get rotation() {
246
- return this.stored_rotation;
247
- }
248
- set rotation(value) {
249
- this.stored_rotation = new Proxy(value, { set: this.proxy_on_change_rotation });
250
- this.on_change_rotation(value);
251
- }
252
- get scale() {
253
- return this.stored_scale;
254
- }
255
- set scale(value) {
256
- this.stored_scale = new Proxy(value, { set: this.proxy_on_change_scale });
257
- this.on_change_scale(value);
258
- }
259
- proxy_on_change_position(target, property, value) {
260
- target[property] = value;
261
- this.on_change_position(target);
262
- return true;
263
- }
264
- proxy_on_change_rotation(target, property, value) {
265
- target[property] = value;
266
- this.on_change_rotation(target);
267
- return true;
268
- }
269
- proxy_on_change_scale(target, property, value) {
270
- target[property] = value;
271
- this.on_change_scale(target);
272
- return true;
273
- }
274
- on_change_position(new_value) { } // ABSTRACT METHOD
275
- on_change_rotation(new_value) { } // ABSTRACT METHOD
276
- on_change_scale(new_value) { } // ABSTRACT METHOD
277
- get_world_position() {
278
- const world_matrix = this.get_world_matrix();
279
- return new Vec3(world_matrix[12], world_matrix[13], world_matrix[14]);
280
- }
281
- get_parent_world_matrix() {
282
- if (this.parent instanceof Node3D) {
283
- return this.parent.get_world_matrix();
284
- }
285
- else if (this.parent) {
286
- let parent = this.parent.parent;
287
- while (parent) {
288
- if (parent instanceof Node3D) {
289
- return parent.get_world_matrix();
290
- }
291
- parent = parent.parent;
292
- }
293
- }
294
- return new Mat4().identity();
295
- }
296
- get_model_matrix() {
297
- const model = new Mat4().identity();
298
- model.translate(this.position);
299
- const rotation_mat = new Mat4().fromQuat(this.rotation);
300
- model.mul(rotation_mat);
301
- model.scale(this.scale);
302
- return model;
303
- }
304
- get_world_matrix() {
305
- return this.get_parent_world_matrix().mul(this.get_model_matrix());
306
- }
307
- }
308
- //# sourceMappingURL=node.js.map
package/dist/node.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
package/dist/scene.d.ts DELETED
@@ -1,19 +0,0 @@
1
- import { Mat4 } from "@vicimpa/glm";
2
- import Engine from "./engine";
3
- import { Node } from "./node";
4
- import { Camera3D } from "./node/camera3d";
5
- export declare class Scene {
6
- name: string;
7
- engine: Engine;
8
- on_scene_start_callback: (engine: Engine, scene: Scene) => Promise<void>;
9
- on_scene_update_callback: (engine: Engine, scene: Scene, time: number, delta_time: number) => void;
10
- root_node: Node | null;
11
- main_camera_3d: Camera3D | null;
12
- rendering_depth_map: boolean;
13
- constructor(engine: Engine, name: string, root_node?: Node | null, main_camera?: Camera3D | null);
14
- get_node(name: string): Node | null;
15
- private get_node_search;
16
- update(time: number, delta_time: number): void;
17
- render(view_matrix: Mat4, projection_matrix_3d: Mat4, projection_matrix_2d: Mat4, time: number, delta_time: number): void;
18
- }
19
- //# sourceMappingURL=scene.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scene.d.ts","sourceRoot":"","sources":["../src/scene.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG3C,qBAAa,KAAK;IACd,IAAI,EAAC,MAAM,CAAC;IACZ,MAAM,EAAC,MAAM,CAAC;IAGd,uBAAuB,EAAC,CAAC,MAAM,EAAC,MAAM,EAAE,KAAK,EAAC,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,CAA8B;IACnG,wBAAwB,EAAC,CAAC,MAAM,EAAC,MAAM,EAAE,KAAK,EAAC,KAAK,EAAE,IAAI,EAAC,MAAM,EAAE,UAAU,EAAC,MAAM,KAAK,IAAI,CAAoC;IAEjI,SAAS,EAAC,IAAI,GAAC,IAAI,CAAQ;IAC3B,cAAc,EAAC,QAAQ,GAAC,IAAI,CAAQ;IAEpC,mBAAmB,EAAC,OAAO,CAAS;gBAExB,MAAM,EAAC,MAAM,EAAE,IAAI,EAAC,MAAM,EAAE,SAAS,GAAC,IAAI,GAAC,IAAW,EAAE,WAAW,GAAC,QAAQ,GAAC,IAAW;IAOpG,QAAQ,CAAC,IAAI,EAAC,MAAM,GAAE,IAAI,GAAC,IAAI;IAQ/B,OAAO,CAAC,eAAe;IAevB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAQvC,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;CAOrH"}
package/dist/scene.js DELETED
@@ -1,50 +0,0 @@
1
- export class Scene {
2
- constructor(engine, name, root_node = null, main_camera = null) {
3
- this.on_scene_start_callback = async (engine, scene) => { };
4
- this.on_scene_update_callback = (engine, time, delta_time) => { };
5
- this.root_node = null;
6
- this.main_camera_3d = null;
7
- this.rendering_depth_map = false;
8
- this.engine = engine;
9
- this.name = name;
10
- this.root_node = root_node;
11
- this.main_camera_3d = main_camera;
12
- }
13
- get_node(name) {
14
- // traverse scene tree until we find the node.
15
- if (this.root_node)
16
- return this.get_node_search(name, this.root_node);
17
- else
18
- return null;
19
- }
20
- get_node_search(name, node) {
21
- if (!node)
22
- return null;
23
- if (node.name == name)
24
- return node;
25
- for (const child_node of node.children) {
26
- const search_result = this.get_node_search(name, child_node);
27
- if (search_result)
28
- return search_result;
29
- }
30
- return null;
31
- }
32
- update(time, delta_time) {
33
- if (this.root_node) {
34
- this.root_node.update(time, delta_time);
35
- }
36
- else {
37
- console.warn(`A root node was not set for scene "${this.name}".`);
38
- }
39
- }
40
- render(view_matrix, projection_matrix_3d, projection_matrix_2d, time, delta_time) {
41
- if (this.root_node) {
42
- this.root_node.render(view_matrix, projection_matrix_3d, projection_matrix_2d, time, delta_time);
43
- }
44
- else {
45
- console.warn(`A root node was not set for scene "${this.name}".`);
46
- }
47
- }
48
- }
49
- ;
50
- //# sourceMappingURL=scene.js.map
package/dist/scene.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"scene.js","sourceRoot":"","sources":["../src/scene.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,KAAK;IAad,YAAY,MAAa,EAAE,IAAW,EAAE,YAAsB,IAAI,EAAE,cAA4B,IAAI;QARpG,4BAAuB,GAAiD,KAAK,EAAC,MAAM,EAAE,KAAK,EAAE,EAAE,GAAE,CAAC,CAAC;QACnG,6BAAwB,GAAwE,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,GAAE,CAAC,CAAC;QAEjI,cAAS,GAAa,IAAI,CAAC;QAC3B,mBAAc,GAAiB,IAAI,CAAC;QAEpC,wBAAmB,GAAW,KAAK,CAAC;QAGhC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC;IACtC,CAAC;IAED,QAAQ,CAAC,IAAW;QAChB,8CAA8C;QAC9C,IAAI,IAAI,CAAC,SAAS;YACd,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;;YAEjD,OAAO,IAAI,CAAC;IACpB,CAAC;IAEO,eAAe,CAAC,IAAW,EAAE,IAAS;QAC1C,IAAI,CAAC,IAAI;YACL,OAAO,IAAI,CAAC;QAChB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI;YACjB,OAAO,IAAI,CAAC;QAEhB,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACrC,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAC7D,IAAI,aAAa;gBACb,OAAO,aAAa,CAAC;QAC7B,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,IAAY,EAAE,UAAkB;QACnC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,IAAI,CAAC,sCAAsC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;QACtE,CAAC;IACL,CAAC;IAED,MAAM,CAAC,WAAiB,EAAE,oBAA0B,EAAE,oBAA0B,EAAE,IAAY,EAAE,UAAkB;QAC9G,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;QACrG,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,IAAI,CAAC,sCAAsC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;QACtE,CAAC;IACL,CAAC;CACJ;AAAA,CAAC"}
@@ -1,3 +0,0 @@
1
- declare const _default: "#version 300 es\nprecision lowp float;\n\nin vec2 v_uv;\n\nout vec4 frag_color;\n\nuniform sampler2D sprite_texture;\n\nvoid main() {\n frag_color = texture(sprite_texture, vec2(v_uv.x, v_uv.y));\n}\n";
2
- export default _default;
3
- //# sourceMappingURL=default_2d.fs.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"default_2d.fs.d.ts","sourceRoot":"","sources":["../../src/shaders/default_2d.fs.ts"],"names":[],"mappings":";AAAA,wBAYE"}
@@ -1,14 +0,0 @@
1
- export default `#version 300 es
2
- precision lowp float;
3
-
4
- in vec2 v_uv;
5
-
6
- out vec4 frag_color;
7
-
8
- uniform sampler2D sprite_texture;
9
-
10
- void main() {
11
- frag_color = texture(sprite_texture, vec2(v_uv.x, v_uv.y));
12
- }
13
- `;
14
- //# sourceMappingURL=default_2d.fs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"default_2d.fs.js","sourceRoot":"","sources":["../../src/shaders/default_2d.fs.ts"],"names":[],"mappings":"AAAA,eAAe;;;;;;;;;;;;CAYd,CAAC"}
@@ -1,3 +0,0 @@
1
- declare const _default: "#version 300 es\n\nlayout(location = 0) in vec3 a_position;\nlayout(location = 1) in vec2 a_uv;\n\n\nuniform mat4 u_model;\nuniform mat4 u_projection;\n\nout vec2 v_uv;\n\nvoid main() {\n gl_Position = u_projection * u_model * vec4(a_position, 1.0);\n v_uv = a_uv;\n}";
2
- export default _default;
3
- //# sourceMappingURL=default_2d.vs.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"default_2d.vs.d.ts","sourceRoot":"","sources":["../../src/shaders/default_2d.vs.ts"],"names":[],"mappings":";AAAA,wBAcG"}
@@ -1,16 +0,0 @@
1
- export default `#version 300 es
2
-
3
- layout(location = 0) in vec3 a_position;
4
- layout(location = 1) in vec2 a_uv;
5
-
6
-
7
- uniform mat4 u_model;
8
- uniform mat4 u_projection;
9
-
10
- out vec2 v_uv;
11
-
12
- void main() {
13
- gl_Position = u_projection * u_model * vec4(a_position, 1.0);
14
- v_uv = a_uv;
15
- }`;
16
- //# sourceMappingURL=default_2d.vs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"default_2d.vs.js","sourceRoot":"","sources":["../../src/shaders/default_2d.vs.ts"],"names":[],"mappings":"AAAA,eAAe;;;;;;;;;;;;;;EAcb,CAAC"}
@@ -1,3 +0,0 @@
1
- declare const _default: "#version 300 es\nprecision lowp float;\nprecision lowp sampler2DArrayShadow;\n\nuniform mediump int directional_lights_count;\nuniform mediump int point_lights_count;\nuniform mediump int spot_lights_count;\n\n#define N_DIRECTIONAL_LIGHTS 10\n#define N_POINT_LIGHTS 10\n#define N_SPOT_LIGHTS 10\n#define PI 3.14159265358979323846264338327950288419716939937510\n\nin vec3 v_normal;\nin vec2 v_uv;\nin vec4 v_frag_pos;\n\nout vec4 frag_color;\n\n\nstruct Environment {\n vec3 ambient_light;\n};\n\n// fallback values\nstruct Material {\n bool has_normal_texture;\n bool has_albedo_texture;\n vec3 albedo;\n\n bool has_metalic_texture;\n float metalic;\n bool has_roughness_texture;\n float roughness;\n bool has_ao_texture;\n float ao;\n};\n\n// PBR\nuniform sampler2D material_texture_albedo;\nuniform sampler2D material_texture_normal;\nuniform sampler2D material_texture_metalic;\nuniform sampler2D material_texture_roughness;\nuniform sampler2D material_texture_ao;\n\nstruct PointLight {\n vec3 position;\n vec3 color;\n float range;\n float energy;\n\n float ambient;\n float diffuse;\n float specular;\n};\n\nstruct SpotLight {\n vec3 position;\n vec3 color;\n mat4 rotation;\n float energy;\n float range;\n float cookie_radius;\n\n float ambient;\n float diffuse;\n float specular;\n};\n\nstruct DirectionalLight {\n mat4 rotation;\n vec3 color;\n float energy;\n\n float ambient;\n float diffuse;\n float specular;\n};\n\nuniform PointLight point_lights[N_POINT_LIGHTS];\n\nuniform SpotLight spot_lights[N_SPOT_LIGHTS];\n\nuniform DirectionalLight directional_lights[N_DIRECTIONAL_LIGHTS];\n\nuniform Material material;\n\nuniform Environment environment;\n\nuniform vec3 camera_position;\n\nuniform sampler2DArrayShadow directional_light_shadow_maps;\nuniform sampler2DArrayShadow point_light_shadow_maps;\n\nuniform vec2 shadow_map_size;\n\nuniform mat4 u_directional_light_space_matrix[N_DIRECTIONAL_LIGHTS];\nuniform mat4 u_point_light_space_matrix[N_POINT_LIGHTS * 6];\n\nfloat L(PointLight light);\nfloat L(DirectionalLight light);\n\nfloat distribution_GGX(vec3 N, vec3 H, float a);\nfloat geometry_schlick_GGX(float NdotV, float k);\nfloat geometry_smith(vec3 N, vec3 V, vec3 L, float k);\nvec3 fresnel_schlick(float cosTheta, vec3 F0);\n\nvec3 Fr(vec3 light_dir, vec4 albedo_color, bool image_lighting);\n\nvec3 calculate_point_lighting(vec4 base_color);\n\nvec3 calculate_directional_lighting(vec4 base_color);\n\nvec3 calculate_lighting(vec4 base_color);\n\nfloat calculate_point_shadow(int index, PointLight light);\n\nfloat calculate_directional_shadow(int index, vec3 light_dir);\n\nvoid main() {\n \n vec4 base_color;\n if (material.has_albedo_texture)\n base_color = texture(material_texture_albedo, v_uv);\n else\n base_color = vec4(material.albedo, 1.0);\n\n vec3 lighting = calculate_lighting(base_color);\n\n base_color.rgb = environment.ambient_light * base_color.rgb + lighting;\n\n frag_color = base_color;\n}\n\nint get_point_shadow_face_index(int origin, vec3 dir) {\n vec3 abs_dir = abs(dir);\n \n int index = 0;\n \n // Directly compare the absolute values\n if (abs_dir.x >= abs_dir.y && abs_dir.x >= abs_dir.z) {\n // X is dominant\n index = (dir.x > 0.0) ? 0 : 1;\n } else if (abs_dir.y >= abs_dir.z) {\n // Y is dominant\n index = (dir.y > 0.0) ? 2 : 3;\n } else {\n // Z is dominant\n index = (dir.z > 0.0) ? 4 : 5;\n }\n \n return origin + index;\n}\n\nfloat calculate_point_shadow(int index, PointLight light) {\n vec3 light_to_frag = v_frag_pos.xyz - light.position;\n float light_distance = length(light_to_frag);\n vec3 dir = normalize(light_to_frag);\n\n float bias = max(0.015 * (1.0 - dot(v_normal, -dir)), 0.003);\n\n int face_index = get_point_shadow_face_index(index * 6, dir);\n\n vec4 frag_light = u_point_light_space_matrix[face_index] * v_frag_pos;\n vec3 proj = frag_light.xyz / frag_light.w;\n proj = proj * 0.5 + 0.5;\n\n float current_depth = light_distance / light.range;\n\n float shadow = 0.0;\n\n shadow += texture(\n point_light_shadow_maps,\n vec4(\n proj.xy,\n float(face_index),\n current_depth - bias\n )\n );\n\n return shadow;\n}\n\nvec3 calculate_point_lighting(vec4 base_color) {\n vec3 cumulative_radiance = vec3(0.0,0.0,0.0);\n\n for (int i = 0; i < point_lights_count; i++) {\n PointLight light = point_lights[i];\n vec3 light_dir = normalize(light.position - v_frag_pos.xyz);\n float n_dot_l = max(dot(v_normal, light_dir), 0.0);\n vec3 product = Fr(light_dir, base_color, false) * L(light) * n_dot_l;\n float shadow = calculate_point_shadow(i, light);\n cumulative_radiance += product * light.color * shadow;\n }\n\n return cumulative_radiance;\n}\n\nfloat calculate_directional_shadow(int index, vec3 light_dir) {\n vec4 frag_pos_light_space = u_directional_light_space_matrix[index] * v_frag_pos;\n vec3 proj_coords = frag_pos_light_space.xyz / frag_pos_light_space.w;\n proj_coords = proj_coords * 0.5 + 0.5;\n\n float bias = max(0.05 * (1.0 - dot(v_normal, light_dir)), 0.005);\n\n float current_depth = proj_coords.z - bias;\n\n // apply blur to shadow edges\n float shadow = 0.0;\n\n shadow += texture(directional_light_shadow_maps, vec4(\n proj_coords.xy, \n float(index), \n current_depth\n ));\n\n return shadow;\n}\n\nvec3 calculate_lighting(vec4 base_color) {\n vec3 cumulative_radiance = vec3(0.0,0.0,0.0);\n\n cumulative_radiance += calculate_point_lighting(base_color);\n\n cumulative_radiance += calculate_directional_lighting(base_color);\n\n return cumulative_radiance;\n}\n\nvec3 calculate_directional_lighting(vec4 base_color) {\n vec3 cumulative_radiance = vec3(0.0,0.0,0.0);\n\n for (int i = 0; i < directional_lights_count; i++) {\n DirectionalLight light = directional_lights[i];\n vec3 light_dir = (light.rotation * vec4(1.0,0.0,0.0, 0.0)).xyz;\n float n_dot_l = max(dot(v_normal, light_dir), 0.0);\n vec3 product = Fr(light_dir, base_color, false) * L(light) * n_dot_l;\n float shadow = calculate_directional_shadow(i, light_dir);\n cumulative_radiance += product * light.color * shadow;\n }\n\n return cumulative_radiance;\n}\n\nvec3 Fr(vec3 light_dir, vec4 albedo_color, bool image_lighting) {\n\n // COOK TORRANCE\n vec3 view_vector = normalize(camera_position - v_frag_pos.xyz);\n vec3 halfway_vector = (light_dir + view_vector) / length(light_dir + view_vector);\n\n float roughness = max(material.roughness, 0.04);\n\n float k;\n if (image_lighting)\n k = pow(roughness, 2.0) / 2.0;\n else\n k = pow(roughness + 1.0, 2.0) / 8.0;\n\n /// DGF\n float D = distribution_GGX(v_normal, halfway_vector, roughness);\n float G = geometry_smith(v_normal, view_vector, light_dir, k);\n vec3 F0 = vec3(0.04); \n F0 = mix(F0, albedo_color.rgb, material.metalic);\n vec3 F = fresnel_schlick(max(dot(halfway_vector, view_vector), 0.0), F0);\n \n vec3 numerator = D * G * F;\n float denominator = 4.0 * max(dot(v_normal, view_vector), 0.0) * max(dot(v_normal, light_dir), 0.0) + 0.0001;\n vec3 specular = numerator / denominator; \n\n vec3 ks = F;\n vec3 kd = vec3(1.0) - ks;\n kd *= 1.0 - material.metalic;\n\n vec3 f_lambert = albedo_color.rgb / PI;\n\n\n return kd * f_lambert + specular;\n}\n\nfloat L(PointLight light) {\n float light_distance = distance(v_frag_pos.xyz, light.position);\n // Standard ranged attenuation\n float attenuation = clamp(1.0 - light_distance / light.range, 0.0, 1.0);\n return light.energy * attenuation * attenuation;\n}\n\nfloat L(DirectionalLight light) {\n return light.energy;\n}\n\nfloat distribution_GGX(vec3 N, vec3 H, float a)\n{\n float a2 = a*a;\n float NdotH = max(dot(N, H), 0.0);\n float NdotH2 = NdotH*NdotH;\n\t\n float nom = a2;\n float denom = (NdotH2 * (a2 - 1.0) + 1.0);\n denom = PI * denom * denom;\n\t\n return nom / denom;\n}\n\n\nfloat geometry_schlick_GGX(float NdotV, float k)\n{\n float nom = NdotV;\n float denom = NdotV * (1.0 - k) + k;\n\t\n return nom / denom;\n}\n \nfloat geometry_smith(vec3 N, vec3 V, vec3 L, float k)\n{\n float NdotV = max(dot(N, V), 0.0);\n float NdotL = max(dot(N, L), 0.0);\n float ggx1 = geometry_schlick_GGX(NdotV, k);\n float ggx2 = geometry_schlick_GGX(NdotL, k);\n\t\n return ggx1 * ggx2;\n}\n\nvec3 fresnel_schlick(float cosTheta, vec3 F0)\n{\n return F0 + (1.0 - F0) * pow(clamp(1.0 - cosTheta, 0.0, 1.0), 5.0);\n}";
2
- export default _default;
3
- //# sourceMappingURL=default_3d.fs.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"default_3d.fs.d.ts","sourceRoot":"","sources":["../../src/shaders/default_3d.fs.ts"],"names":[],"mappings":";AAAA,wBAqUG"}