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
package/README.md ADDED
@@ -0,0 +1,61 @@
1
+ # Vanta 3D Engine
2
+
3
+ The Vanta 3D engine is a 3D engine designed with a portability first mindset. The first backend for Vanta is WebGL2 based allowing for great cross platform support.
4
+
5
+ ## The Runtime
6
+
7
+ The engine runtime currently uses a lua frontend via a [wasmoon](https://github.com/ceifa/wasmoon) web assembly runtime. End developer code is written in lua to abstract it away from the engine implementation backend and language. The reasoning behind this is that in the future it will be easier for me to write other posibly native backends for the engine with other langauges or apis like C++ with Vulkan or DX12.
8
+
9
+ ## Current Features:
10
+
11
+ - PBR Materials (Not all are supported yet)
12
+
13
+ - PBR point and directional Lighting
14
+
15
+ - Robust point and directional shadows
16
+
17
+ - Lua based end developer code frontend
18
+ - This is for sandboxing in the future to prevent web security vulnerabilities.
19
+
20
+ - Versatile Shader Pipeline
21
+
22
+ - Scene and Node based rendering
23
+
24
+ - Inheritance based Node classes
25
+
26
+ - Asyncronous asset loading
27
+
28
+ ## Todo Features:
29
+
30
+ - Colliders and a collider system
31
+
32
+ - Image Based Lighting
33
+
34
+ - Spot lights
35
+
36
+ - Area lights
37
+
38
+ - glTF file support
39
+
40
+ - IDE
41
+
42
+ - Better 2D API and layout control nodes
43
+
44
+ - Create a sandboxed lua API
45
+
46
+ ## Features I Would Like to Add:
47
+
48
+ > I am only one developer, so there is only so much I can do on my own. I am open to contributions though, so if you are interested please feel free to submit a pull request or get in touch!
49
+
50
+ - A single scripting language that can be interpreted as bytecode and seamlessly be compiled into shaders.
51
+ - **My Thoughts** : I will likely finish the shader language since glsl (the current choice) does not include certain necissary features for sanity. Some of these features include:
52
+ - Multi-file shaders/importable functions
53
+ - Struct member functions
54
+ - Namespaces
55
+ - Compilation into WGSL
56
+
57
+ - A domain specific asset file format which stores node trees and scenes in a zipped json and binary combination format. The asset importer will be able to convert OBJ and glTF files to this format.
58
+ - **My Thoughts** : This is very do-able and would do alot for my own and the end developer's sanity. It will also make things much easier when I try to add an actual editor.
59
+
60
+ - A primary WebGPU backend which falls back to the Webgl2 backend.
61
+ - **My Thoughts** : This will likely require alot of refactoring and creating a second compilation backend for the shader language since WebGPU uses WGSL. For me, this is not a priority at the moment.
@@ -0,0 +1,18 @@
1
+ import { GraphicsManager } from "./graphics/graphics_manager.ts";
2
+ import { InputManager } from "./input/input_manager.ts";
3
+ import Utility from "./utility.ts";
4
+ import { HookManager } from "./hook_manager.ts";
5
+ import { Scene } from "./scene.ts";
6
+ export default class Engine {
7
+ canvas: HTMLCanvasElement;
8
+ graphics_manager: GraphicsManager;
9
+ input_manager: InputManager;
10
+ hook_manager: HookManager;
11
+ main_scene: Scene;
12
+ on_global_start_callback: (engine: Engine) => Promise<void>;
13
+ on_global_update_callback: (engine: Engine, time: number, delta_time: number) => void;
14
+ UTIL: typeof Utility;
15
+ constructor(canvas: HTMLCanvasElement, main_scene?: Scene | null, on_global_start_callback?: (engine: Engine) => Promise<void>, on_global_update_callback?: (engine: Engine, time: number, delta_time: number) => void);
16
+ start(): Promise<void>;
17
+ }
18
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAGjE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,MAAM,CAAC,OAAO,OAAO,MAAM;IACvB,MAAM,EAAC,iBAAiB,CAAC;IACzB,gBAAgB,EAAC,eAAe,CAAC;IACjC,aAAa,EAAC,YAAY,CAAC;IAC3B,YAAY,EAAC,WAAW,CAAC;IAEzB,UAAU,EAAC,KAAK,CAAC;IAGjB,wBAAwB,EAAC,CAAC,MAAM,EAAC,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,yBAAyB,EAAC,CAAC,MAAM,EAAC,MAAM,EAAE,IAAI,EAAC,MAAM,EAAE,UAAU,EAAC,MAAM,KAAK,IAAI,CAAC;IAElF,IAAI,iBAAW;gBAGX,MAAM,EAAC,iBAAiB,EACxB,UAAU,GAAC,KAAK,GAAG,IAAW,EAC9B,wBAAwB,GAAC,CAAC,MAAM,EAAC,MAAM,KAAK,OAAO,CAAC,IAAI,CAAuB,EAC/E,yBAAyB,GAAC,CAAC,MAAM,EAAC,MAAM,EAAE,IAAI,EAAC,MAAM,EAAE,UAAU,EAAC,MAAM,KAAK,IAAuC;IAWlH,KAAK;CAId"}
package/dist/engine.js ADDED
@@ -0,0 +1,23 @@
1
+ import { GraphicsManager } from "./graphics/graphics_manager.js";
2
+ import { InputManager } from "./input/input_manager.js";
3
+ import Utility from "./utility.js";
4
+ import { HookManager } from "./hook_manager.js";
5
+ import { Scene } from "./scene.js";
6
+ export default class Engine {
7
+ constructor(canvas, main_scene = null, on_global_start_callback = async (engine) => { }, on_global_update_callback = (engine, time, delta_time) => { }) {
8
+ this.UTIL = Utility;
9
+ this.canvas = canvas;
10
+ this.input_manager = new InputManager(this);
11
+ this.hook_manager = new HookManager(this);
12
+ this.on_global_start_callback = on_global_start_callback;
13
+ this.on_global_update_callback = on_global_update_callback;
14
+ this.graphics_manager = new GraphicsManager(this, this.canvas);
15
+ this.main_scene = main_scene ? main_scene : new Scene(this, "main_scene");
16
+ }
17
+ async start() {
18
+ await this.on_global_start_callback(this);
19
+ this.graphics_manager.render();
20
+ }
21
+ }
22
+ ;
23
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAGjE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,MAAM,CAAC,OAAO,OAAO,MAAM;IAcvB,YACI,MAAwB,EACxB,aAA0B,IAAI,EAC9B,2BAA4D,KAAK,EAAC,MAAM,EAAE,EAAE,GAAE,CAAC,EAC/E,4BAAoF,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,GAAE,CAAC;QANxH,SAAI,GAAG,OAAO,CAAC;QAQX,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,YAAY,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,wBAAwB,GAAG,wBAAwB,CAAC;QACzD,IAAI,CAAC,yBAAyB,GAAG,yBAAyB,CAAC;QAC3D,IAAI,CAAC,gBAAgB,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/D,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,KAAK;QACP,MAAM,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;IACnC,CAAC;CACJ;AAAA,CAAC"}
@@ -0,0 +1,115 @@
1
+ export interface Vec2JsonFormat {
2
+ x: number;
3
+ y: number;
4
+ }
5
+ export interface Vec3JsonFormat {
6
+ x: number;
7
+ y: number;
8
+ z: number;
9
+ }
10
+ export interface Vec4JsonFormat {
11
+ x: number;
12
+ y: number;
13
+ z: number;
14
+ w: number;
15
+ }
16
+ export interface QuatJsonFormat {
17
+ x: number;
18
+ y: number;
19
+ z: number;
20
+ w: number;
21
+ }
22
+ declare enum NodeJsonType {
23
+ NODE = 0,
24
+ NODE_2D = 1,
25
+ NODE_3D = 2,
26
+ SPRITE_2D = 3,
27
+ OBJECT_3D = 4,
28
+ CAMERA3D = 5,
29
+ POINT_LIGHT = 6,
30
+ SPOT_LIGHT = 7,
31
+ DIRECTIONAL_LIGHT = 8,
32
+ BONE3D = 9,
33
+ SKYBOX = 10
34
+ }
35
+ export type NodeIndex = number;
36
+ export type TextureIndex = number;
37
+ export type MaterialIndex = number;
38
+ export interface NodeJsonFormat {
39
+ name: string;
40
+ type: NodeJsonType;
41
+ position: Vec3JsonFormat;
42
+ rotation: QuatJsonFormat;
43
+ scale: Vec3JsonFormat;
44
+ children: NodeIndex[];
45
+ material?: MaterialIndex;
46
+ mesh?: MeshJsonFormat;
47
+ fov?: number;
48
+ near_plane?: number;
49
+ far_plane?: number;
50
+ color?: Vec3JsonFormat;
51
+ ambient?: number;
52
+ diffuse?: number;
53
+ specular?: number;
54
+ energy?: number;
55
+ ambient_light?: Vec3JsonFormat;
56
+ }
57
+ export interface SceneJsonFormat {
58
+ name: string;
59
+ nodes: NodeIndex[];
60
+ }
61
+ export interface TextureJsonFormat {
62
+ name: string;
63
+ uri: string;
64
+ texture_parameters: {
65
+ [key: number]: number;
66
+ };
67
+ }
68
+ export interface MaterialJsonFormat {
69
+ name: string;
70
+ pbr: {
71
+ albedo_map: TextureIndex;
72
+ metalic_map: TextureIndex;
73
+ roughness_map: TextureIndex;
74
+ ao_map: TextureIndex;
75
+ normal_map: TextureIndex;
76
+ albedo: Vec4JsonFormat;
77
+ metalic: number;
78
+ roughness: number;
79
+ ao: number;
80
+ };
81
+ }
82
+ export interface MeshJsonFormat {
83
+ name: string;
84
+ vertices: Vec3JsonFormat[];
85
+ normals: Vec3JsonFormat[];
86
+ uvs: Vec2JsonFormat[];
87
+ indices: number[];
88
+ dimensions: Vec3JsonFormat;
89
+ center: Vec3JsonFormat;
90
+ }
91
+ export declare enum InterpolationFunctionType {
92
+ LINEAR = 0,
93
+ STEP = 1,
94
+ CUBICSPLINE = 2
95
+ }
96
+ export interface KeyframeJsonFormat {
97
+ time: number;
98
+ interpolation_function: InterpolationFunctionType;
99
+ node: NodeIndex;
100
+ }
101
+ export interface AnimationJsonFormat {
102
+ name: string;
103
+ keyframes: KeyframeJsonFormat[];
104
+ }
105
+ export interface AssetJsonFormat {
106
+ asset_name: string;
107
+ version: string;
108
+ materials: MaterialJsonFormat[];
109
+ scenes: SceneJsonFormat[];
110
+ textures: TextureJsonFormat[];
111
+ meshes: MeshJsonFormat[];
112
+ nodes: NodeJsonFormat[];
113
+ }
114
+ export {};
115
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../../src/graphics/assets/asset_format/format.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ // This handles saving, loading, serializing and deserializing of assets
2
+ // It re-saves 3d assets as json to normalize all file formats
3
+ // It also resaves all image assets as .png
4
+ var NodeJsonType;
5
+ (function (NodeJsonType) {
6
+ NodeJsonType[NodeJsonType["NODE"] = 0] = "NODE";
7
+ NodeJsonType[NodeJsonType["NODE_2D"] = 1] = "NODE_2D";
8
+ NodeJsonType[NodeJsonType["NODE_3D"] = 2] = "NODE_3D";
9
+ NodeJsonType[NodeJsonType["SPRITE_2D"] = 3] = "SPRITE_2D";
10
+ NodeJsonType[NodeJsonType["OBJECT_3D"] = 4] = "OBJECT_3D";
11
+ NodeJsonType[NodeJsonType["CAMERA3D"] = 5] = "CAMERA3D";
12
+ NodeJsonType[NodeJsonType["POINT_LIGHT"] = 6] = "POINT_LIGHT";
13
+ NodeJsonType[NodeJsonType["SPOT_LIGHT"] = 7] = "SPOT_LIGHT";
14
+ NodeJsonType[NodeJsonType["DIRECTIONAL_LIGHT"] = 8] = "DIRECTIONAL_LIGHT";
15
+ NodeJsonType[NodeJsonType["BONE3D"] = 9] = "BONE3D";
16
+ NodeJsonType[NodeJsonType["SKYBOX"] = 10] = "SKYBOX";
17
+ })(NodeJsonType || (NodeJsonType = {}));
18
+ ;
19
+ ;
20
+ ;
21
+ export var InterpolationFunctionType;
22
+ (function (InterpolationFunctionType) {
23
+ InterpolationFunctionType[InterpolationFunctionType["LINEAR"] = 0] = "LINEAR";
24
+ InterpolationFunctionType[InterpolationFunctionType["STEP"] = 1] = "STEP";
25
+ InterpolationFunctionType[InterpolationFunctionType["CUBICSPLINE"] = 2] = "CUBICSPLINE";
26
+ })(InterpolationFunctionType || (InterpolationFunctionType = {}));
27
+ ;
28
+ ;
29
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../../../src/graphics/assets/asset_format/format.ts"],"names":[],"mappings":"AAEA,wEAAwE;AACxE,8DAA8D;AAC9D,2CAA2C;AA2B3C,IAAK,YAYJ;AAZD,WAAK,YAAY;IACb,+CAAI,CAAA;IACJ,qDAAO,CAAA;IACP,qDAAO,CAAA;IACP,yDAAS,CAAA;IACT,yDAAS,CAAA;IACT,uDAAQ,CAAA;IACR,6DAAW,CAAA;IACX,2DAAU,CAAA;IACV,yEAAiB,CAAA;IACjB,mDAAM,CAAA;IACN,oDAAM,CAAA;AACV,CAAC,EAZI,YAAY,KAAZ,YAAY,QAYhB;AA+BA,CAAC;AAwBD,CAAC;AAUD,CAAC;AAEF,MAAM,CAAN,IAAY,yBAIX;AAJD,WAAY,yBAAyB;IACjC,6EAAM,CAAA;IACN,yEAAI,CAAA;IACJ,uFAAW,CAAA;AACf,CAAC,EAJW,yBAAyB,KAAzB,yBAAyB,QAIpC;AAMA,CAAC;AAgBD,CAAC"}
@@ -0,0 +1,127 @@
1
+ import { Vec3 } from "@vicimpa/glm";
2
+ import { GraphicsManager } from "../../graphics_manager.ts";
3
+ import { Model } from "../model.ts";
4
+ import { Node3D } from "../../../node.ts";
5
+ import Engine from "../../../engine.ts";
6
+ export declare namespace AssetFile {
7
+ namespace OBJ {
8
+ interface Data {
9
+ temp?: {
10
+ vertices: number[][];
11
+ normals: number[][];
12
+ uvs: number[][];
13
+ min_x: number;
14
+ min_y: number;
15
+ min_z: number;
16
+ max_x: number;
17
+ max_y: number;
18
+ max_z: number;
19
+ vertex_map: Map<string, number>;
20
+ vertices_final: number[];
21
+ normals_final: number[];
22
+ uvs_final: number[];
23
+ indices_final: number[];
24
+ };
25
+ vertices: Float32Array;
26
+ normals: Float32Array;
27
+ uvs: Float32Array;
28
+ indices: Uint16Array;
29
+ dimensions: Vec3;
30
+ center: Vec3;
31
+ }
32
+ enum BumpChannel {
33
+ RED = "r",
34
+ GREEN = "g",
35
+ BLUE = "b",
36
+ MATTE = "m",
37
+ LUMINANCE = "l",
38
+ Z_DEPTH = "z"
39
+ }
40
+ enum ReflectionMapType {
41
+ SPHERE = "sphere",
42
+ CUBE_TOP = "cube_top",
43
+ CUBE_BOTTOM = "cube_bottom",
44
+ CUBE_FRONT = "cube_front",
45
+ CUBE_BACK = "cube_back",
46
+ CUBE_LEFT = "cube_left",
47
+ CUBE_RIGHT = "cube_right"
48
+ }
49
+ interface TextureData {
50
+ name: string;
51
+ horizontal_blend?: boolean;
52
+ vertical_blend?: boolean;
53
+ mip_map_sharpness_boost?: number;
54
+ additive_color_offset?: number;
55
+ contrast_multiplier?: number;
56
+ offset?: Vec3;
57
+ scale?: Vec3;
58
+ turbulence?: Vec3;
59
+ generated_texture_resolution?: number;
60
+ clamp?: boolean;
61
+ bump_multiplier?: number;
62
+ bump_channel?: BumpChannel;
63
+ reflection_map_type?: ReflectionMapType;
64
+ }
65
+ enum IlluminationModel {
66
+ COLOR_ON_AMBIENT_OFF = 0,
67
+ COLOR_ON_AMBIENT_ON = 1,
68
+ HIGHLIGHT_ON = 2,
69
+ REFLECTION_ON_RAY_TRACE_ON = 3,
70
+ TRANSPARENCY_GLASS_ON__REFLECTION_RAY_TRACE_ON = 4,
71
+ REFLECTION_FRESNEL_ON_RAY_TRACE_ON = 5,
72
+ TRANSPARENCY_REFRACTION_ON__REFLECTION_FRESNEL_OFF_RAY_TRACE_ON = 6,
73
+ TRANSPARENCY_REFRACTION_ON__REFLECTION_FRESNEL_ON_RAY_TRACE_ON = 7,
74
+ REFLECTION_ON_RAY_TRACE_OFF = 8,
75
+ TRANSPARENCY_GLASS_ON__REFLECTION_RAY_TRACE_OFF = 9,
76
+ CAST_SHADOWS_ON_INVISIBLE_SURFACES = 10
77
+ }
78
+ interface MaterialData {
79
+ name: string;
80
+ ambient_color?: Vec3;
81
+ diffuse_color?: Vec3;
82
+ specular_color?: Vec3;
83
+ specular_exponent?: number;
84
+ transparency?: number;
85
+ transmission_filter_color?: Vec3;
86
+ transmission_filter_xyz?: boolean;
87
+ optical_density?: number;
88
+ illumination_model?: IlluminationModel;
89
+ ambient_texture?: TextureData;
90
+ diffuse_texture?: TextureData;
91
+ specular_color_texture?: TextureData;
92
+ specular_highlight_texture?: TextureData;
93
+ alpha_texture?: TextureData;
94
+ bump_texture?: TextureData;
95
+ displacement_texture?: TextureData;
96
+ decal_texture?: TextureData;
97
+ reflection_textures?: TextureData[];
98
+ roughness_texture?: TextureData;
99
+ metalic_texture?: TextureData;
100
+ sheen_texture?: TextureData;
101
+ roughness?: number;
102
+ metalic?: number;
103
+ sheen?: number;
104
+ clearcoat_thickness?: number;
105
+ clearcoat_roughness?: number;
106
+ emissive_texture?: TextureData;
107
+ emissive?: number;
108
+ anisotropy?: number;
109
+ anisotropy_rotation?: number;
110
+ normal_texture?: TextureData;
111
+ }
112
+ interface Object {
113
+ name: string;
114
+ data?: Data;
115
+ material?: string;
116
+ groups: Group[];
117
+ }
118
+ interface Group {
119
+ name: string;
120
+ data: Data;
121
+ material?: string;
122
+ }
123
+ function load_obj(engine: Engine, obj_path: string, image_assets_path: string): Promise<Node3D>;
124
+ }
125
+ }
126
+ export declare function load_obj(gm: GraphicsManager, model_path: string, image_asset_paths: string[]): Promise<Model | null>;
127
+ //# sourceMappingURL=obj.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"obj.d.ts","sourceRoot":"","sources":["../../../../src/graphics/assets/asset_loaders/obj.ts"],"names":[],"mappings":"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"}