ris-framework 0.2.0-dev.11 → 0.2.0-dev.12

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 (257) hide show
  1. package/CHANGELOG.md +22 -29
  2. package/README.md +13 -1
  3. package/dist/Framework.d.ts +26 -8
  4. package/dist/Framework.d.ts.map +1 -1
  5. package/dist/api/IFramework.d.ts +43 -0
  6. package/dist/api/IFramework.d.ts.map +1 -1
  7. package/dist/api/_export.d.ts +1 -1
  8. package/dist/api/_export.d.ts.map +1 -1
  9. package/dist/api/content/ContentManager.d.ts +5 -57
  10. package/dist/api/content/ContentManager.d.ts.map +1 -1
  11. package/dist/api/content/IContentManager.d.ts +24 -21
  12. package/dist/api/content/IContentManager.d.ts.map +1 -1
  13. package/dist/api/lights/LightsBuffer.d.ts +13 -6
  14. package/dist/api/lights/LightsBuffer.d.ts.map +1 -1
  15. package/dist/api/loaders/ObjGeometryMapper.d.ts +2 -2
  16. package/dist/api/loaders/ObjLoader.d.ts +61 -0
  17. package/dist/api/loaders/ObjLoader.d.ts.map +1 -0
  18. package/dist/api/loaders/_export.d.ts +1 -0
  19. package/dist/api/loaders/_export.d.ts.map +1 -1
  20. package/dist/api/loaders/obj/{ObjLoader.d.ts → ObjParser.d.ts} +20 -5
  21. package/dist/api/loaders/obj/ObjParser.d.ts.map +1 -0
  22. package/dist/api/loaders/obj/ObjTypes.d.ts +17 -1
  23. package/dist/api/loaders/obj/ObjTypes.d.ts.map +1 -1
  24. package/dist/api/loaders/obj/index.d.ts +1 -1
  25. package/dist/api/material/ForwardBlinnPhongMaterial.d.ts +22 -11
  26. package/dist/api/material/ForwardBlinnPhongMaterial.d.ts.map +1 -1
  27. package/dist/api/material/ICameraMaterial.d.ts +18 -0
  28. package/dist/api/material/ICameraMaterial.d.ts.map +1 -0
  29. package/dist/api/material/ILightsMaterial.d.ts +26 -0
  30. package/dist/api/material/ILightsMaterial.d.ts.map +1 -0
  31. package/dist/api/material/IMaterial.d.ts +2 -8
  32. package/dist/api/material/IMaterial.d.ts.map +1 -1
  33. package/dist/api/material/InspectTextureMipsMaterial.d.ts +2 -2
  34. package/dist/api/material/InspectTextureMipsMaterial.d.ts.map +1 -1
  35. package/dist/api/material/SpriteMaterial.d.ts +2 -2
  36. package/dist/api/material/SpriteMaterial.d.ts.map +1 -1
  37. package/dist/api/material/UnlitMaterial.d.ts +4 -3
  38. package/dist/api/material/UnlitMaterial.d.ts.map +1 -1
  39. package/dist/api/material/_export.d.ts +2 -0
  40. package/dist/api/material/_export.d.ts.map +1 -1
  41. package/dist/api/meshes/IMesh.d.ts +29 -34
  42. package/dist/api/meshes/IMesh.d.ts.map +1 -1
  43. package/dist/api/meshes/IMeshFactory.d.ts +13 -8
  44. package/dist/api/meshes/IMeshFactory.d.ts.map +1 -1
  45. package/dist/api/meshes/IRenderableMesh.d.ts +47 -0
  46. package/dist/api/meshes/IRenderableMesh.d.ts.map +1 -0
  47. package/dist/api/meshes/Mesh.d.ts +11 -57
  48. package/dist/api/meshes/Mesh.d.ts.map +1 -1
  49. package/dist/api/meshes/MeshFactory.d.ts +6 -3
  50. package/dist/api/meshes/MeshFactory.d.ts.map +1 -1
  51. package/dist/api/meshes/QuadMesh.d.ts +3 -5
  52. package/dist/api/meshes/QuadMesh.d.ts.map +1 -1
  53. package/dist/api/meshes/RenderableMesh.d.ts +95 -0
  54. package/dist/api/meshes/RenderableMesh.d.ts.map +1 -0
  55. package/dist/api/meshes/_export.d.ts +2 -1
  56. package/dist/api/meshes/_export.d.ts.map +1 -1
  57. package/dist/api/rendering/IGraphicsDeviceFeatures.d.ts +8 -2
  58. package/dist/api/rendering/IGraphicsDeviceFeatures.d.ts.map +1 -1
  59. package/dist/api/rendering/IRenderer.d.ts +28 -1
  60. package/dist/api/rendering/IRenderer.d.ts.map +1 -1
  61. package/dist/api/rendering/enums.d.ts +7 -0
  62. package/dist/api/rendering/enums.d.ts.map +1 -1
  63. package/dist/api/rendering/renderer-interface.d.ts +1 -31
  64. package/dist/api/rendering/renderer-interface.d.ts.map +1 -1
  65. package/dist/api/rendering/renderpass/RenderPassDescriptor.d.ts +2 -6
  66. package/dist/api/rendering/renderpass/RenderPassDescriptor.d.ts.map +1 -1
  67. package/dist/api/rendering/swapchain/ISwapChain.d.ts +1 -3
  68. package/dist/api/rendering/swapchain/ISwapChain.d.ts.map +1 -1
  69. package/dist/api/rendering/texture/TextureFormat.d.ts +88 -14
  70. package/dist/api/rendering/texture/TextureFormat.d.ts.map +1 -1
  71. package/dist/api/rendering/texture/TextureUtilities.d.ts +23 -0
  72. package/dist/api/rendering/texture/TextureUtilities.d.ts.map +1 -1
  73. package/dist/api/scene/Scene.d.ts +30 -21
  74. package/dist/api/scene/Scene.d.ts.map +1 -1
  75. package/dist/api/scene/SceneMesh.d.ts +27 -0
  76. package/dist/api/scene/SceneMesh.d.ts.map +1 -0
  77. package/dist/api/utilities/AlignUtilities.d.ts.map +1 -1
  78. package/dist/api/window/WindowManager.d.ts.map +1 -1
  79. package/dist/core/rendering/ARenderer.d.ts +5 -5
  80. package/dist/core/rendering/ARenderer.d.ts.map +1 -1
  81. package/dist/index.d.ts +0 -1
  82. package/dist/index.d.ts.map +1 -1
  83. package/dist/index.js +4006 -1355
  84. package/dist/webgl/WebGLGraphicsDeviceFeatures.d.ts +4 -0
  85. package/dist/webgl/WebGLGraphicsDeviceFeatures.d.ts.map +1 -1
  86. package/dist/webgl/WebGlRenderer.d.ts +1 -3
  87. package/dist/webgl/WebGlRenderer.d.ts.map +1 -1
  88. package/dist/webgl/lights/WebGlLightsBuffer.d.ts +8 -4
  89. package/dist/webgl/lights/WebGlLightsBuffer.d.ts.map +1 -1
  90. package/dist/webgl/render-pipelines/WebGlMainRenderTargetRenderPipeline.d.ts +2 -0
  91. package/dist/webgl/render-pipelines/WebGlMainRenderTargetRenderPipeline.d.ts.map +1 -1
  92. package/dist/webgl/swap-chain/WebGlSwapChain.d.ts +3 -2
  93. package/dist/webgl/swap-chain/WebGlSwapChain.d.ts.map +1 -1
  94. package/dist/webgl/texture/WebGlTextureFactory.d.ts +7 -0
  95. package/dist/webgl/texture/WebGlTextureFactory.d.ts.map +1 -1
  96. package/dist/webgl/utilities/WebGlConstants.d.ts +91 -0
  97. package/dist/webgl/utilities/WebGlConstants.d.ts.map +1 -0
  98. package/dist/webgl/utilities/WebGlConverter.d.ts +0 -7
  99. package/dist/webgl/utilities/WebGlConverter.d.ts.map +1 -1
  100. package/dist/webgl/utilities/WebGlErrorUtilities.d.ts +10 -0
  101. package/dist/webgl/utilities/WebGlErrorUtilities.d.ts.map +1 -0
  102. package/dist/webgl/utilities/WebGlTextureUtilities.d.ts.map +1 -1
  103. package/dist/webgl/utilities/WebGlUtilities.d.ts +3 -0
  104. package/dist/webgl/utilities/WebGlUtilities.d.ts.map +1 -1
  105. package/dist/webgpu/WebGpuGpuInfo.d.ts +28 -0
  106. package/dist/webgpu/WebGpuGpuInfo.d.ts.map +1 -0
  107. package/dist/webgpu/WebGpuGraphicsDevice.d.ts +80 -0
  108. package/dist/webgpu/WebGpuGraphicsDevice.d.ts.map +1 -0
  109. package/dist/webgpu/WebGpuGraphicsDeviceFeatures.d.ts +26 -0
  110. package/dist/webgpu/WebGpuGraphicsDeviceFeatures.d.ts.map +1 -0
  111. package/dist/webgpu/WebGpuRenderer.d.ts +26 -0
  112. package/dist/webgpu/WebGpuRenderer.d.ts.map +1 -0
  113. package/dist/webgpu/WebGpuTypes.d.ts +355 -0
  114. package/dist/webgpu/WebGpuTypes.d.ts.map +1 -0
  115. package/dist/webgpu/blending/WebGpuBlendState.d.ts +30 -0
  116. package/dist/webgpu/blending/WebGpuBlendState.d.ts.map +1 -0
  117. package/dist/webgpu/buffers/WebGpuBuffersFactory.d.ts +20 -0
  118. package/dist/webgpu/buffers/WebGpuBuffersFactory.d.ts.map +1 -0
  119. package/dist/webgpu/buffers/WebGpuIndexBuffer.d.ts +46 -0
  120. package/dist/webgpu/buffers/WebGpuIndexBuffer.d.ts.map +1 -0
  121. package/dist/webgpu/buffers/WebGpuUniformBuffer.d.ts +43 -0
  122. package/dist/webgpu/buffers/WebGpuUniformBuffer.d.ts.map +1 -0
  123. package/dist/webgpu/buffers/WebGpuVertexBuffer.d.ts +49 -0
  124. package/dist/webgpu/buffers/WebGpuVertexBuffer.d.ts.map +1 -0
  125. package/dist/webgpu/primitive/WebGpuPrimitiveState.d.ts +32 -0
  126. package/dist/webgpu/primitive/WebGpuPrimitiveState.d.ts.map +1 -0
  127. package/dist/webgpu/render-pass/WebGpuRenderPass.d.ts +28 -0
  128. package/dist/webgpu/render-pass/WebGpuRenderPass.d.ts.map +1 -0
  129. package/dist/webgpu/render-pipelines/AWebGpuRenderPipeline.d.ts +50 -0
  130. package/dist/webgpu/render-pipelines/AWebGpuRenderPipeline.d.ts.map +1 -0
  131. package/dist/webgpu/render-pipelines/WebGpuMainRenderTargetRenderPipeline.d.ts +34 -0
  132. package/dist/webgpu/render-pipelines/WebGpuMainRenderTargetRenderPipeline.d.ts.map +1 -0
  133. package/dist/webgpu/render-pipelines/WebGpuRenderPipelineFactory.d.ts +26 -0
  134. package/dist/webgpu/render-pipelines/WebGpuRenderPipelineFactory.d.ts.map +1 -0
  135. package/dist/webgpu/render-pipelines/material/AWebGpuMeshRenderPipeline.d.ts +72 -0
  136. package/dist/webgpu/render-pipelines/material/AWebGpuMeshRenderPipeline.d.ts.map +1 -0
  137. package/dist/webgpu/render-pipelines/material/WebGpuUnlitRenderPipeline.d.ts +40 -0
  138. package/dist/webgpu/render-pipelines/material/WebGpuUnlitRenderPipeline.d.ts.map +1 -0
  139. package/dist/webgpu/sampler/WebGpuSampler.d.ts +39 -0
  140. package/dist/webgpu/sampler/WebGpuSampler.d.ts.map +1 -0
  141. package/dist/webgpu/shader/WebGpuShaderModule.d.ts +29 -0
  142. package/dist/webgpu/shader/WebGpuShaderModule.d.ts.map +1 -0
  143. package/dist/webgpu/shader/WebGpuShaderModuleLoader.d.ts +21 -0
  144. package/dist/webgpu/shader/WebGpuShaderModuleLoader.d.ts.map +1 -0
  145. package/dist/webgpu/shader/WgslShaderContent.d.ts +9 -0
  146. package/dist/webgpu/shader/WgslShaderContent.d.ts.map +1 -0
  147. package/dist/webgpu/swap-chain/WebGpuSwapChain.d.ts +41 -0
  148. package/dist/webgpu/swap-chain/WebGpuSwapChain.d.ts.map +1 -0
  149. package/dist/webgpu/texture/WebGpuTexture2D.d.ts +47 -0
  150. package/dist/webgpu/texture/WebGpuTexture2D.d.ts.map +1 -0
  151. package/dist/webgpu/texture/WebGpuTextureFactory.d.ts +21 -0
  152. package/dist/webgpu/texture/WebGpuTextureFactory.d.ts.map +1 -0
  153. package/dist/webgpu/texture/WebGpuTextureView.d.ts +25 -0
  154. package/dist/webgpu/texture/WebGpuTextureView.d.ts.map +1 -0
  155. package/dist/webgpu/utilities/WebGpuConverter.d.ts +45 -0
  156. package/dist/webgpu/utilities/WebGpuConverter.d.ts.map +1 -0
  157. package/package.json +2 -2
  158. package/shaders/glsl/main_render_target_flip_y_fs.glsl +35 -1
  159. package/shaders/wgsl/forward_blinn_phong_material.wgsl +150 -0
  160. package/shaders/wgsl/inspect_texture_mips.wgsl +51 -0
  161. package/shaders/wgsl/main_frame_buffer.wgsl +35 -0
  162. package/shaders/wgsl/main_render_target_flip_y.wgsl +35 -0
  163. package/shaders/wgsl/sprite.wgsl +40 -0
  164. package/shaders/wgsl/unlit_material.wgsl +49 -0
  165. package/src/Framework.ts +121 -37
  166. package/src/api/IFramework.ts +55 -0
  167. package/src/api/_export.ts +1 -1
  168. package/src/api/content/ContentManager.ts +46 -180
  169. package/src/api/content/IContentManager.ts +25 -21
  170. package/src/api/lights/LightsBuffer.ts +13 -6
  171. package/src/api/loaders/ObjGeometryMapper.ts +2 -2
  172. package/src/api/loaders/ObjLoader.ts +126 -0
  173. package/src/api/loaders/_export.ts +1 -0
  174. package/src/api/loaders/obj/{ObjLoader.ts → ObjParser.ts} +35 -4
  175. package/src/api/loaders/obj/ObjTypes.ts +19 -1
  176. package/src/api/loaders/obj/index.ts +1 -1
  177. package/src/api/material/ForwardBlinnPhongMaterial.ts +48 -22
  178. package/src/api/material/ICameraMaterial.ts +22 -0
  179. package/src/api/material/ILightsMaterial.ts +32 -0
  180. package/src/api/material/IMaterial.ts +2 -9
  181. package/src/api/material/InspectTextureMipsMaterial.ts +2 -2
  182. package/src/api/material/SpriteMaterial.ts +2 -2
  183. package/src/api/material/UnlitMaterial.ts +4 -3
  184. package/src/api/material/_export.ts +2 -0
  185. package/src/api/meshes/IMesh.ts +32 -37
  186. package/src/api/meshes/IMeshFactory.ts +14 -8
  187. package/src/api/meshes/IRenderableMesh.ts +58 -0
  188. package/src/api/meshes/Mesh.ts +17 -132
  189. package/src/api/meshes/MeshFactory.ts +14 -5
  190. package/src/api/meshes/QuadMesh.ts +4 -6
  191. package/src/api/meshes/RenderableMesh.ts +207 -0
  192. package/src/api/meshes/_export.ts +6 -5
  193. package/src/api/rendering/IGraphicsDeviceFeatures.ts +28 -21
  194. package/src/api/rendering/IRenderer.ts +34 -1
  195. package/src/api/rendering/enums.ts +10 -0
  196. package/src/api/rendering/renderer-interface.ts +1 -36
  197. package/src/api/rendering/renderpass/RenderPassDescriptor.ts +10 -14
  198. package/src/api/rendering/swapchain/ISwapChain.ts +1 -3
  199. package/src/api/rendering/texture/TextureFormat.ts +128 -14
  200. package/src/api/rendering/texture/TextureUtilities.ts +225 -10
  201. package/src/api/scene/Scene.ts +102 -69
  202. package/src/api/scene/SceneMesh.ts +61 -0
  203. package/src/api/sprites/SpriteBatchMesh.ts +1 -1
  204. package/src/api/utilities/AlignUtilities.ts +2 -1
  205. package/src/api/window/WindowManager.ts +1 -1
  206. package/src/core/rendering/ARenderer.ts +24 -15
  207. package/src/index.ts +0 -1
  208. package/src/main.ts +2 -3
  209. package/src/webgl/WebGLGraphicsDeviceFeatures.ts +12 -2
  210. package/src/webgl/WebGlGpuInfo.ts +1 -1
  211. package/src/webgl/WebGlRenderer.ts +2 -5
  212. package/src/webgl/lights/WebGlLightsBuffer.ts +14 -4
  213. package/src/webgl/render-pipelines/WebGlMainRenderTargetRenderPipeline.ts +18 -1
  214. package/src/webgl/swap-chain/WebGlSwapChain.ts +7 -6
  215. package/src/webgl/texture/WebGlTextureFactory.ts +49 -7
  216. package/src/webgl/utilities/WebGlConstants.ts +136 -0
  217. package/src/webgl/utilities/WebGlConverter.ts +91 -22
  218. package/src/webgl/utilities/WebGlErrorUtilities.ts +15 -0
  219. package/src/webgl/utilities/WebGlTextureUtilities.ts +5 -2
  220. package/src/webgl/utilities/WebGlUtilities.ts +4 -0
  221. package/src/webgpu/WebGpuGpuInfo.ts +61 -0
  222. package/src/webgpu/WebGpuGraphicsDevice.ts +199 -0
  223. package/src/webgpu/WebGpuGraphicsDeviceFeatures.ts +41 -0
  224. package/src/webgpu/WebGpuRenderer.ts +49 -0
  225. package/src/webgpu/WebGpuTypes.ts +288 -0
  226. package/src/webgpu/blending/WebGpuBlendState.ts +53 -0
  227. package/src/webgpu/buffers/WebGpuBuffersFactory.ts +46 -0
  228. package/src/webgpu/buffers/WebGpuIndexBuffer.ts +118 -0
  229. package/src/webgpu/buffers/WebGpuUniformBuffer.ts +102 -0
  230. package/src/webgpu/buffers/WebGpuVertexBuffer.ts +119 -0
  231. package/src/webgpu/primitive/WebGpuPrimitiveState.ts +52 -0
  232. package/src/webgpu/render-pass/WebGpuRenderPass.ts +131 -0
  233. package/src/webgpu/render-pipelines/AWebGpuRenderPipeline.ts +123 -0
  234. package/src/webgpu/render-pipelines/WebGpuMainRenderTargetRenderPipeline.ts +119 -0
  235. package/src/webgpu/render-pipelines/WebGpuRenderPipelineFactory.ts +66 -0
  236. package/src/webgpu/render-pipelines/material/AWebGpuMeshRenderPipeline.ts +249 -0
  237. package/src/webgpu/render-pipelines/material/WebGpuUnlitRenderPipeline.ts +101 -0
  238. package/src/webgpu/sampler/WebGpuSampler.ts +84 -0
  239. package/src/webgpu/shader/WebGpuShaderModule.ts +65 -0
  240. package/src/webgpu/shader/WebGpuShaderModuleLoader.ts +38 -0
  241. package/src/webgpu/shader/WgslShaderContent.ts +20 -0
  242. package/src/webgpu/swap-chain/WebGpuSwapChain.ts +93 -0
  243. package/src/webgpu/texture/WebGpuTexture2D.ts +197 -0
  244. package/src/webgpu/texture/WebGpuTextureFactory.ts +118 -0
  245. package/src/webgpu/texture/WebGpuTextureView.ts +43 -0
  246. package/src/webgpu/utilities/WebGpuConverter.ts +299 -0
  247. package/src/wgsl-raw.d.ts +4 -0
  248. package/dist/api/FrameworkConfiguration.d.ts +0 -23
  249. package/dist/api/FrameworkConfiguration.d.ts.map +0 -1
  250. package/dist/api/IFrameworkConfiguration.d.ts +0 -25
  251. package/dist/api/IFrameworkConfiguration.d.ts.map +0 -1
  252. package/dist/api/loaders/obj/ObjLoader.d.ts.map +0 -1
  253. package/dist/api/meshes/SubMesh.d.ts +0 -47
  254. package/dist/api/meshes/SubMesh.d.ts.map +0 -1
  255. package/src/api/FrameworkConfiguration.ts +0 -29
  256. package/src/api/IFrameworkConfiguration.ts +0 -30
  257. package/src/api/meshes/SubMesh.ts +0 -71
@@ -1,9 +1,10 @@
1
- import { ObjMaterialDefinition, type ObjLoadResult, type ObjLoadOptions } from "./ObjTypes.js";
1
+ import { ObjMaterialDefinition, type ObjLoadResult, type ObjLoadOptions, type ObjModel } from "./ObjTypes.js";
2
2
  /**
3
- * Loads .obj models (and their .mtl materials) from text or a URL into plain data.
4
- * Engine-independent; uses only `fetch` and `URL`. `content.loadMeshAsync` turns the result into a framework mesh.
3
+ * Parses .obj models (and their .mtl materials) from text or a URL into plain data.
4
+ * Engine-independent; uses only `fetch` and `URL`, and creates no GPU resources.
5
+ * `framework.objLoader` (or the static `ObjLoader.parseAsync`) builds on it.
5
6
  */
6
- export declare class ObjLoader {
7
+ export declare class ObjParser {
7
8
  /**
8
9
  * Parses .mtl text.
9
10
  * @param text The .mtl contents.
@@ -25,5 +26,19 @@ export declare class ObjLoader {
25
26
  * @returns The geometry, materials and raw data.
26
27
  */
27
28
  loadAsync(filePath: string, options?: ObjLoadOptions): Promise<ObjLoadResult>;
29
+ /**
30
+ * Loads an .obj file (and its .mtl files) into an {@link ObjModel}: the geometry plus one sub mesh per `usemtl`
31
+ * range with its resolved material definition.
32
+ * @param filePath The .obj URL.
33
+ * @param options Optional: how to resolve `mtllib` names, or skip materials.
34
+ * @returns The model.
35
+ */
36
+ parseAsync(filePath: string, options?: ObjLoadOptions): Promise<ObjModel>;
37
+ /**
38
+ * Turns a load result into an {@link ObjModel}.
39
+ * @param result The load result.
40
+ * @returns The model.
41
+ */
42
+ static toModel(result: ObjLoadResult): ObjModel;
28
43
  }
29
- //# sourceMappingURL=ObjLoader.d.ts.map
44
+ //# sourceMappingURL=ObjParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjParser.d.ts","sourceRoot":"","sources":["../../../../src/api/loaders/obj/ObjParser.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,qBAAqB,EAErB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,QAAQ,EAEhB,MAAM,eAAe,CAAC;AAiBvB;;;;GAIG;AACH,qBAAa,SAAS;IAElB;;;;OAIG;IACI,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,EAAE;IAqEtD;;;;;OAKG;IACI,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,GAAE,qBAAqB,EAAO,GAAG,aAAa;IAiHrF;;;;;;OAMG;IACU,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAyC1F;;;;;;OAMG;IACU,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC;IAItF;;;;OAIG;WACW,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,QAAQ;CAYzD"}
@@ -89,7 +89,7 @@ export interface ObjLoadResult {
89
89
  /** The raw OBJ lists. */
90
90
  readonly raw: ObjRawData;
91
91
  }
92
- /** Options for {@link ObjLoader.loadAsync}. */
92
+ /** Options for {@link ObjParser.loadAsync} and `ObjLoader.loadAsync`. */
93
93
  export interface ObjLoadOptions {
94
94
  /**
95
95
  * Maps an `mtllib` name to the URL to fetch.
@@ -100,4 +100,20 @@ export interface ObjLoadOptions {
100
100
  /** Skip fetching .mtl files. */
101
101
  ignoreMaterials?: boolean;
102
102
  }
103
+ /** One `usemtl` range of an {@link ObjModel}: its index range and resolved material definition. */
104
+ export interface ObjSubMesh {
105
+ /** The material name from `usemtl`, or undefined for faces before any `usemtl`. */
106
+ readonly materialName?: string;
107
+ /** The material definition from the .mtl files, or undefined when there is none. */
108
+ readonly material?: ObjMaterialDefinition;
109
+ /** First index in `geometry.indices`. */
110
+ readonly indexStart: number;
111
+ /** Number of indices. */
112
+ readonly indexCount: number;
113
+ }
114
+ /** A parsed OBJ model (C# `ObjModel`): geometry, sub meshes and material definitions. No GPU resources. */
115
+ export interface ObjModel extends ObjLoadResult {
116
+ /** One entry per `usemtl` range, in file order. */
117
+ readonly subMeshes: ObjSubMesh[];
118
+ }
103
119
  //# sourceMappingURL=ObjTypes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ObjTypes.d.ts","sourceRoot":"","sources":["../../../../src/api/loaders/obj/ObjTypes.ts"],"names":[],"mappings":"AAKA,6EAA6E;AAC7E,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AAEzD;;;GAGG;AACH,qBAAa,qBAAqB;IAMJ,IAAI,EAAE,MAAM;IAJtC;;;OAGG;gBACuB,IAAI,EAAE,MAAM;IAGtC,6BAA6B;IACtB,YAAY,CAAC,EAAE,QAAQ,CAAC;IAE/B,6BAA6B;IACtB,YAAY,CAAC,EAAE,QAAQ,CAAC;IAE/B,8BAA8B;IACvB,aAAa,CAAC,EAAE,QAAQ,CAAC;IAEhC,8BAA8B;IACvB,aAAa,CAAC,EAAE,QAAQ,CAAC;IAEhC,gCAAgC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAEjC,8DAA8D;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IAExB,oDAAoD;IAC7C,cAAc,CAAC,EAAE,MAAM,CAAC;IAE/B,oCAAoC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAElC;;;OAGG;IACI,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IAEzC,+FAA+F;IACxF,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;CAClD;AAED,4FAA4F;AAC5F,MAAM,WAAW,gBAAgB;IAC7B,mFAAmF;IACnF,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,yCAAyC;IACzC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,0CAA0C;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC/B;AAED,oEAAoE;AACpE,MAAM,WAAW,UAAU;IACvB,kCAAkC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAC7B,4EAA4E;IAC5E,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;IACjC,iCAAiC;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;CAClC;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IAClC,+BAA+B;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAC7B,wEAAwE;IACxE,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;IACjC,8DAA8D;IAC9D,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAC3B,qGAAqG;IACrG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAC1B,wCAAwC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAC3B,mDAAmD;IACnD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,gDAAgD;IAChD,QAAQ,CAAC,cAAc,EAAE,gBAAgB,EAAE,CAAC;CAC/C;AAED,yCAAyC;AACzC,MAAM,WAAW,aAAa;IAC1B,6CAA6C;IAC7C,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAC;IACzC,sHAAsH;IACtH,QAAQ,CAAC,SAAS,EAAE,qBAAqB,EAAE,CAAC;IAC5C,kDAAkD;IAClD,QAAQ,CAAC,iBAAiB,EAAE,MAAM,EAAE,CAAC;IACrC,yBAAyB;IACzB,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;CAC5B;AAED,+CAA+C;AAC/C,MAAM,WAAW,cAAc;IAC3B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC;IACrD,gCAAgC;IAChC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC7B"}
1
+ {"version":3,"file":"ObjTypes.d.ts","sourceRoot":"","sources":["../../../../src/api/loaders/obj/ObjTypes.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  export * from "./ObjTypes.js";
2
- export * from "./ObjLoader.js";
2
+ export * from "./ObjParser.js";
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1,4 +1,4 @@
1
- import type { IMesh } from "../meshes/IMesh.js";
1
+ import type { IRenderableMesh } from "../meshes/IRenderableMesh.js";
2
2
  import type { ITexture2D } from "../rendering/texture/ITexture2D.js";
3
3
  import type { ISampler } from "../rendering/sampler/ISampler.js";
4
4
  import { GeometryFormat } from "../geometry/GeometryFormat.js";
@@ -9,7 +9,11 @@ import type { IFramework } from "../IFramework.js";
9
9
  import { Color } from "../data/Color.js";
10
10
  import type { IPrimitiveState } from "../rendering/primitive/IPrimitiveState.js";
11
11
  import type { ICamera } from "../camera/ICamera.js";
12
- import type { LightsBuffer } from "../lights/LightsBuffer.js";
12
+ import type { AmbientLight } from "../lights/AmbientLight.js";
13
+ import type { DirectionalLight } from "../lights/DirectionalLight.js";
14
+ import type { PointLight } from "../lights/PointLight.js";
15
+ import type { ICameraMaterial } from "./ICameraMaterial.js";
16
+ import type { ILightsMaterial } from "./ILightsMaterial.js";
13
17
  /**
14
18
  * The additional material config options.
15
19
  * @public
@@ -21,16 +25,18 @@ export declare class ForwardBlinnPhongMaterialDescriptor {
21
25
  projectionViewBuffer: IUniformBuffer;
22
26
  /** The camera position buffer. */
23
27
  cameraPositionBuffer: IUniformBuffer;
24
- /** The lights buffer. The shader is compiled for its light counts. Can also be set later through `material.lightsBuffer`. */
25
- lightsBuffer?: LightsBuffer;
26
28
  }
27
29
  /**
28
30
  * The Blinn-Phong material with forward calculated lighting.
29
31
  * @public
30
32
  */
31
- export declare class ForwardBlinnPhongMaterial {
33
+ export declare class ForwardBlinnPhongMaterial implements ICameraMaterial, ILightsMaterial {
34
+ /** The directional light slots of the material's lights buffer and shader. */
35
+ static readonly MAX_DIRECTIONAL_LIGHTS = 3;
36
+ /** The point light slots of the material's lights buffer and shader. */
37
+ static readonly MAX_POINT_LIGHTS = 5;
32
38
  private readonly _framework;
33
- private _lightsBuffer?;
39
+ private readonly _lightsBuffer;
34
40
  private _diffuseColorCache;
35
41
  private _ambientColorCache;
36
42
  private _specularColorCache;
@@ -84,10 +90,15 @@ export declare class ForwardBlinnPhongMaterial {
84
90
  get camera(): ICamera | undefined;
85
91
  /** @inheritDoc */
86
92
  set camera(camera: ICamera | undefined);
87
- /** The lights buffer with the scene's lights. Shared, not disposed by this material. */
88
- get lightsBuffer(): LightsBuffer | undefined;
89
- /** The lights buffer with the scene's lights. Shared, not disposed by this material. */
90
- set lightsBuffer(lightsBuffer: LightsBuffer | undefined);
93
+ /** @inheritDoc Defaults to a black ambient light; a `Scene` assigns its active ambient light. */
94
+ get ambientLight(): AmbientLight;
95
+ set ambientLight(value: AmbientLight);
96
+ /** @inheritDoc Only the first 3 are used. A `Scene` assigns its own list. */
97
+ get directionalLights(): DirectionalLight[];
98
+ set directionalLights(value: DirectionalLight[]);
99
+ /** @inheritDoc Only the first 5 are used. A `Scene` assigns its own list. */
100
+ get pointLights(): PointLight[];
101
+ set pointLights(value: PointLight[]);
91
102
  /**
92
103
  * The texture to inspect.
93
104
  */
@@ -118,7 +129,7 @@ export declare class ForwardBlinnPhongMaterial {
118
129
  /** @inheritDoc */
119
130
  beforeRender(): void;
120
131
  /** @inheritDoc */
121
- renderMesh(mesh: IMesh): void;
132
+ renderMesh(mesh: IRenderableMesh): void;
122
133
  /** @inheritDoc */
123
134
  render(vertexBuffer: IVertexBuffer, indexBuffer: IIndexBuffer, indicesCount?: number, indicesOffset?: number): void;
124
135
  /** @inheritDoc */
@@ -1 +1 @@
1
- {"version":3,"file":"ForwardBlinnPhongMaterial.d.ts","sourceRoot":"","sources":["../../../src/api/material/ForwardBlinnPhongMaterial.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ForwardBlinnPhongMaterial.d.ts","sourceRoot":"","sources":["../../../src/api/material/ForwardBlinnPhongMaterial.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,oCAAoC,CAAC;AACnE,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAC,cAAc,EAAC,MAAM,+BAA+B,CAAC;AAC7D,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,wCAAwC,CAAC;AAC3E,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,sCAAsC,CAAC;AACvE,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,uCAAuC,CAAC;AACzE,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAC,KAAK,EAAC,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,2CAA2C,CAAC;AAC/E,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,sBAAsB,CAAC;AAElD,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AAG1D;;;IAGI;AACJ,qBAAa,mCAAmC;IAE5C,2BAA2B;IACpB,cAAc,CAAC,EAAE,eAAe,CAAC;IAExC,kCAAkC;IAC3B,oBAAoB,EAAG,cAAc,CAAC;IAE7C,kCAAkC;IAC3B,oBAAoB,EAAG,cAAc,CAAC;CAChD;AAGD;;;GAGG;AACH,qBAAa,yBAA0B,YAAW,eAAe,EAAE,eAAe;IAE9E,8EAA8E;IAC9E,gBAAuB,sBAAsB,KAAK;IAElD,wEAAwE;IACxE,gBAAuB,gBAAgB,KAAK;IAE5C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IAExC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,kBAAkB,CAAQ;IAClC,OAAO,CAAC,kBAAkB,CAAQ;IAClC,OAAO,CAAC,mBAAmB,CAAQ;IACnC,OAAO,CAAC,eAAe,CAAS;IAGhC,OAAO,CAAC,aAAa,CAInB;IAEF,6EAA6E;IAC7E,OAAO,CAAC,SAAS,CAAC,CAAmC;IACrD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAkB;IACnD,sFAAsF;IACtF,OAAO,CAAC,eAAe,CAAC,CAAa;IACrC,OAAO,CAAC,eAAe,CAAC,CAAW;IACnC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,qBAAqB,CAAiB;IAC9C,OAAO,CAAC,OAAO,CAAC,CAAU;IAC1B,OAAO,CAAC,qBAAqB,CAAiB;IAC9C,OAAO,CAAC,eAAe,CAAiB;IACxC,OAAO,CAAC,YAAY,CAAC,CAAiB;IAEtC;;;;;OAKG;gBACgB,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,mCAAmC;IA6BzF,sDAAsD;IACtD,OAAO,CAAC,eAAe;IAqBvB;;;OAGG;IACI,YAAY,EAAE,KAAK,CAA4B;IAEtD;;;OAGG;IACI,YAAY,EAAE,KAAK,CAA4B;IAEtD;;;OAGG;IACI,aAAa,EAAE,KAAK,CAA4B;IAEvD;;OAEG;IACI,SAAS,SAAM;IAEtB;;;;OAIG;IACH,IAAW,MAAM,IAAI,OAAO,GAAG,SAAS,CAEvC;IAED,kBAAkB;IAClB,IAAW,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,EAoB5C;IAED,iGAAiG;IACjG,IAAW,YAAY,IAAI,YAAY,CAEtC;IAED,IAAW,YAAY,CAAC,KAAK,EAAE,YAAY,EAE1C;IAED,6EAA6E;IAC7E,IAAW,iBAAiB,IAAI,gBAAgB,EAAE,CAEjD;IAED,IAAW,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,EAAE,EAErD;IAED,6EAA6E;IAC7E,IAAW,WAAW,IAAI,UAAU,EAAE,CAErC;IAED,IAAW,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,EAEzC;IAED;;OAEG;IACH,IAAW,cAAc,IAAI,UAAU,CAEtC;IAED;;OAEG;IACH,IAAW,cAAc,CAAC,KAAK,EAAE,UAAU,EAK1C;IAED;;OAEG;IACH,IAAW,qBAAqB,IAAI,QAAQ,GAAG,SAAS,CAEvD;IAED;;OAEG;IACH,IAAW,qBAAqB,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,EAM3D;IAED;;;OAGG;IACH,IAAW,WAAW,IAAI,cAAc,GAAG,SAAS,CAEnD;IAED,8CAA8C;IAC9C,IAAW,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,EAavD;IAED;;OAEG;IACH,SAAgB,cAAc,qDAAqD;IAEnF,kBAAkB;IACX,YAAY,IAAI,IAAI;IA0B3B,kBAAkB;IACX,UAAU,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI;IAI9C,kBAAkB;IACX,MAAM,CAAC,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAO1H,kBAAkB;IACX,OAAO,IAAI,IAAI;CAMzB"}
@@ -0,0 +1,18 @@
1
+ import type { IMaterial } from "./IMaterial.js";
2
+ import type { ICamera } from "../camera/ICamera.js";
3
+ /**
4
+ * A material that renders with a camera (unlit, Blinn-Phong, inspect mips).
5
+ * A `Scene` assigns its camera to these materials in `scene.update()`.
6
+ * @public
7
+ */
8
+ export interface ICameraMaterial extends IMaterial {
9
+ /** The camera. Setting it binds the camera's buffers. */
10
+ camera?: ICamera;
11
+ }
12
+ /**
13
+ * Whether a material is an {@link ICameraMaterial}.
14
+ * @param material The material.
15
+ * @public
16
+ */
17
+ export declare function isCameraMaterial(material: IMaterial | undefined): material is ICameraMaterial;
18
+ //# sourceMappingURL=ICameraMaterial.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ICameraMaterial.d.ts","sourceRoot":"","sources":["../../../src/api/material/ICameraMaterial.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD;;;;GAIG;AACH,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAE9C,yDAAyD;IACzD,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,IAAI,eAAe,CAE7F"}
@@ -0,0 +1,26 @@
1
+ import type { IMaterial } from "./IMaterial.js";
2
+ import type { AmbientLight } from "../lights/AmbientLight.js";
3
+ import type { DirectionalLight } from "../lights/DirectionalLight.js";
4
+ import type { PointLight } from "../lights/PointLight.js";
5
+ /**
6
+ * A material lit by an ambient light, directional lights and point lights (Blinn-Phong).
7
+ * The material owns its lights buffer and uploads it only when the lights changed.
8
+ * A `Scene` hands each lights material its active ambient light and its own light lists (the same arrays, not copies)
9
+ * in `scene.update()`, so lights added to the scene reach every lit material.
10
+ * @public
11
+ */
12
+ export interface ILightsMaterial extends IMaterial {
13
+ /** The ambient light. */
14
+ ambientLight: AmbientLight;
15
+ /** The directional lights. The list is used by reference and may be edited; extra lights beyond the slots are ignored. */
16
+ directionalLights: DirectionalLight[];
17
+ /** The point lights. The list is used by reference and may be edited; extra lights beyond the slots are ignored. */
18
+ pointLights: PointLight[];
19
+ }
20
+ /**
21
+ * Whether a material is an {@link ILightsMaterial}.
22
+ * @param material The material.
23
+ * @public
24
+ */
25
+ export declare function isLightsMaterial(material: IMaterial | undefined): material is ILightsMaterial;
26
+ //# sourceMappingURL=ILightsMaterial.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ILightsMaterial.d.ts","sourceRoot":"","sources":["../../../src/api/material/ILightsMaterial.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAE9C,yBAAyB;IACzB,YAAY,EAAE,YAAY,CAAC;IAE3B,0HAA0H;IAC1H,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IAEtC,oHAAoH;IACpH,WAAW,EAAE,UAAU,EAAE,CAAC;CAC7B;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,IAAI,eAAe,CAE7F"}
@@ -1,20 +1,14 @@
1
1
  import type { IDisposable } from "../core/IDisposable.js";
2
2
  import { GeometryFormat } from "../geometry/GeometryFormat.js";
3
- import type { IMesh } from "../meshes/IMesh.js";
3
+ import type { IRenderableMesh } from "../meshes/IRenderableMesh.js";
4
4
  import type { IVertexBuffer } from "../rendering/buffers/IVertexBuffer.js";
5
5
  import type { IIndexBuffer } from "../rendering/buffers/IIndexBuffer.js";
6
- import type { ICamera } from "../camera/ICamera.js";
7
6
  import type { IUniformBuffer } from "../rendering/buffers/IUniformBuffer.js";
8
7
  /**
9
8
  * The material interface.
10
9
  * @public
11
10
  */
12
11
  export interface IMaterial extends IDisposable {
13
- /**
14
- * The camera this material renders with, for materials that use one (unlit, Blinn-Phong).
15
- * A `Scene` assigns its camera to the materials of its meshes in `scene.update()`.
16
- */
17
- camera?: ICamera;
18
12
  /**
19
13
  * The model buffer (std140 `mat4`) for materials that use one (unlit, Blinn-Phong, inspect mips).
20
14
  * A mesh owns it and assigns it before drawing, like the scene assigns its camera; materials never dispose it.
@@ -31,7 +25,7 @@ export interface IMaterial extends IDisposable {
31
25
  * Renders the mesh with this material, honouring the mesh's index range.
32
26
  * @param mesh - The mesh.
33
27
  */
34
- renderMesh(mesh: IMesh): void;
28
+ renderMesh(mesh: IRenderableMesh): void;
35
29
  /**
36
30
  * Renders the material.
37
31
  * @param vertexBuffer - The vertex buffer.
@@ -1 +1 @@
1
- {"version":3,"file":"IMaterial.d.ts","sourceRoot":"","sources":["../../../src/api/material/IMaterial.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAC,cAAc,EAAC,MAAM,+BAA+B,CAAC;AAC7D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAE7E;;;GAGG;AACH,MAAM,WAAW,SAAU,SAAQ,WAAW;IAE1C;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;;OAIG;IACH,WAAW,CAAC,EAAE,cAAc,CAAC;IAE7B,mDAAmD;IACnD,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IAExC;;OAEG;IACH,YAAY,IAAI,IAAI,CAAC;IAErB;;;OAGG;IACH,UAAU,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC;IAE9B;;;;;;OAMG;IACH,MAAM,CAAC,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAEvH"}
1
+ {"version":3,"file":"IMaterial.d.ts","sourceRoot":"","sources":["../../../src/api/material/IMaterial.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAC,cAAc,EAAC,MAAM,+BAA+B,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAE7E;;;GAGG;AACH,MAAM,WAAW,SAAU,SAAQ,WAAW;IAE1C;;;;OAIG;IACH,WAAW,CAAC,EAAE,cAAc,CAAC;IAE7B,mDAAmD;IACnD,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IAExC;;OAEG;IACH,YAAY,IAAI,IAAI,CAAC;IAErB;;;OAGG;IACH,UAAU,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CAAC;IAExC;;;;;;OAMG;IACH,MAAM,CAAC,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAEvH"}
@@ -1,4 +1,4 @@
1
- import type { IMesh } from "../meshes/IMesh.js";
1
+ import type { IRenderableMesh } from "../meshes/IRenderableMesh.js";
2
2
  import type { ITexture2D } from "../rendering/texture/ITexture2D.js";
3
3
  import type { ISampler } from "../rendering/sampler/ISampler.js";
4
4
  import { GeometryFormat } from "../geometry/GeometryFormat.js";
@@ -58,7 +58,7 @@ export declare class InspectTextureMipsMaterial {
58
58
  /** @inheritDoc */
59
59
  beforeRender(): void;
60
60
  /** @inheritDoc */
61
- renderMesh(mesh: IMesh): void;
61
+ renderMesh(mesh: IRenderableMesh): void;
62
62
  /** @inheritDoc */
63
63
  render(vertexBuffer: IVertexBuffer, indexBuffer: IIndexBuffer, indicesCount?: number, indicesOffset?: number): void;
64
64
  /** @inheritDoc */
@@ -1 +1 @@
1
- {"version":3,"file":"InspectTextureMipsMaterial.d.ts","sourceRoot":"","sources":["../../../src/api/material/InspectTextureMipsMaterial.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAErE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAEjE,OAAO,EAAC,cAAc,EAAC,MAAM,+BAA+B,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnD;;GAEG;AACH,qBAAa,0BAA0B;IAEnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,SAAS,CAAO;IACxB,6EAA6E;IAC7E,OAAO,CAAC,SAAS,CAAC,CAAoC;IACtD,sFAAsF;IACtF,OAAO,CAAC,eAAe,CAAC,CAAa;IACrC,OAAO,CAAC,eAAe,CAAC,CAAW;IACnC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,qBAAqB,CAAiB;IAC9C,OAAO,CAAC,mBAAmB,CAAiB;IAC5C,OAAO,CAAC,YAAY,CAAC,CAAiB;gBAEnB,SAAS,EAAE,UAAU;IAQxC,sDAAsD;IACtD,OAAO,CAAC,eAAe;IAgBvB;;OAEG;IACI,QAAQ,EAAE,MAAM,CAAK;IAE5B;;OAEG;IACH,IAAW,OAAO,IAAI,UAAU,CAE/B;IAED;;OAEG;IACH,IAAW,OAAO,CAAC,KAAK,EAAE,UAAU,EAKnC;IAED;;OAEG;IACH,IAAW,cAAc,IAAI,QAAQ,GAAG,SAAS,CAEhD;IAED;;OAEG;IACH,IAAW,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,EAMpD;IAED;;;OAGG;IACH,IAAW,WAAW,IAAI,cAAc,GAAG,SAAS,CAEnD;IAED,8CAA8C;IAC9C,IAAW,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,EAavD;IAED;;OAEG;IACH,SAAgB,cAAc,6CAA6C;IAE3E,kBAAkB;IACX,YAAY,IAAI,IAAI;IAO3B,kBAAkB;IACX,UAAU,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI;IAIpC,kBAAkB;IACX,MAAM,CAAC,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAO1H,kBAAkB;IACX,OAAO,IAAI,IAAI;CAMzB"}
1
+ {"version":3,"file":"InspectTextureMipsMaterial.d.ts","sourceRoot":"","sources":["../../../src/api/material/InspectTextureMipsMaterial.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAErE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAEjE,OAAO,EAAC,cAAc,EAAC,MAAM,+BAA+B,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnD;;GAEG;AACH,qBAAa,0BAA0B;IAEnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,SAAS,CAAO;IACxB,6EAA6E;IAC7E,OAAO,CAAC,SAAS,CAAC,CAAoC;IACtD,sFAAsF;IACtF,OAAO,CAAC,eAAe,CAAC,CAAa;IACrC,OAAO,CAAC,eAAe,CAAC,CAAW;IACnC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,qBAAqB,CAAiB;IAC9C,OAAO,CAAC,mBAAmB,CAAiB;IAC5C,OAAO,CAAC,YAAY,CAAC,CAAiB;gBAEnB,SAAS,EAAE,UAAU;IAQxC,sDAAsD;IACtD,OAAO,CAAC,eAAe;IAgBvB;;OAEG;IACI,QAAQ,EAAE,MAAM,CAAK;IAE5B;;OAEG;IACH,IAAW,OAAO,IAAI,UAAU,CAE/B;IAED;;OAEG;IACH,IAAW,OAAO,CAAC,KAAK,EAAE,UAAU,EAKnC;IAED;;OAEG;IACH,IAAW,cAAc,IAAI,QAAQ,GAAG,SAAS,CAEhD;IAED;;OAEG;IACH,IAAW,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,EAMpD;IAED;;;OAGG;IACH,IAAW,WAAW,IAAI,cAAc,GAAG,SAAS,CAEnD;IAED,8CAA8C;IAC9C,IAAW,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,EAavD;IAED;;OAEG;IACH,SAAgB,cAAc,6CAA6C;IAE3E,kBAAkB;IACX,YAAY,IAAI,IAAI;IAO3B,kBAAkB;IACX,UAAU,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI;IAI9C,kBAAkB;IACX,MAAM,CAAC,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAO1H,kBAAkB;IACX,OAAO,IAAI,IAAI;CAMzB"}
@@ -1,5 +1,5 @@
1
1
  import type { GeometryFormat } from "../geometry/GeometryFormat.js";
2
- import type { IMesh } from "../meshes/IMesh.js";
2
+ import type { IRenderableMesh } from "../meshes/IRenderableMesh.js";
3
3
  import type { IVertexBuffer } from "../rendering/buffers/IVertexBuffer.js";
4
4
  import type { IIndexBuffer } from "../rendering/buffers/IIndexBuffer.js";
5
5
  import type { ITexture2D } from "../rendering/texture/ITexture2D.js";
@@ -36,7 +36,7 @@ export declare class SpriteMaterial implements IMaterial {
36
36
  /** @inheritDoc */
37
37
  beforeRender(): void;
38
38
  /** @inheritDoc */
39
- renderMesh(mesh: IMesh): void;
39
+ renderMesh(mesh: IRenderableMesh): void;
40
40
  /**
41
41
  * Renders the material.
42
42
  * @param vertexBuffer - The vertex buffer.
@@ -1 +1 @@
1
- {"version":3,"file":"SpriteMaterial.d.ts","sourceRoot":"","sources":["../../../src/api/material/SpriteMaterial.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAE7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,sCAAsC;AACtC,MAAM,WAAW,wBAAwB;IAErC,8EAA8E;IAC9E,oBAAoB,EAAE,cAAc,CAAC;IAErC,0BAA0B;IAC1B,OAAO,EAAE,UAAU,CAAC;IAEpB,2BAA2B;IAC3B,OAAO,EAAE,QAAQ,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,cAAe,YAAW,SAAS;IAE5C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAwB;IAExD;;;;OAIG;gBACgB,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,wBAAwB;IAM9E,kBAAkB;IAClB,IAAW,cAAc,IAAI,cAAc,CAE1C;IAED,0BAA0B;IAC1B,IAAW,OAAO,IAAI,UAAU,CAE/B;IAED,0BAA0B;IAC1B,IAAW,OAAO,CAAC,KAAK,EAAE,UAAU,EAEnC;IAED,kBAAkB;IACX,YAAY,IAAI,IAAI;IAI3B,kBAAkB;IACX,UAAU,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI;IAIpC;;;;;;OAMG;IACI,MAAM,CAAC,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAI1H,kBAAkB;IACX,OAAO,IAAI,IAAI;CAGzB"}
1
+ {"version":3,"file":"SpriteMaterial.d.ts","sourceRoot":"","sources":["../../../src/api/material/SpriteMaterial.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAE7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,sCAAsC;AACtC,MAAM,WAAW,wBAAwB;IAErC,8EAA8E;IAC9E,oBAAoB,EAAE,cAAc,CAAC;IAErC,0BAA0B;IAC1B,OAAO,EAAE,UAAU,CAAC;IAEpB,2BAA2B;IAC3B,OAAO,EAAE,QAAQ,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,cAAe,YAAW,SAAS;IAE5C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAwB;IAExD;;;;OAIG;gBACgB,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,wBAAwB;IAM9E,kBAAkB;IAClB,IAAW,cAAc,IAAI,cAAc,CAE1C;IAED,0BAA0B;IAC1B,IAAW,OAAO,IAAI,UAAU,CAE/B;IAED,0BAA0B;IAC1B,IAAW,OAAO,CAAC,KAAK,EAAE,UAAU,EAEnC;IAED,kBAAkB;IACX,YAAY,IAAI,IAAI;IAI3B,kBAAkB;IACX,UAAU,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI;IAI9C;;;;;;OAMG;IACI,MAAM,CAAC,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAI1H,kBAAkB;IACX,OAAO,IAAI,IAAI;CAGzB"}
@@ -1,4 +1,5 @@
1
- import type { IMesh } from "../meshes/IMesh.js";
1
+ import type { ICameraMaterial } from "./ICameraMaterial.js";
2
+ import type { IRenderableMesh } from "../meshes/IRenderableMesh.js";
2
3
  import type { ITexture2D } from "../rendering/texture/ITexture2D.js";
3
4
  import type { ISampler } from "../rendering/sampler/ISampler.js";
4
5
  import { GeometryFormat } from "../geometry/GeometryFormat.js";
@@ -19,7 +20,7 @@ export declare class UnlitMaterialDescriptor {
19
20
  /**
20
21
  * Unlit material.
21
22
  */
22
- export declare class UnlitMaterial {
23
+ export declare class UnlitMaterial implements ICameraMaterial {
23
24
  private readonly _framework;
24
25
  private _color;
25
26
  private _materialData;
@@ -85,7 +86,7 @@ export declare class UnlitMaterial {
85
86
  /** @inheritDoc */
86
87
  beforeRender(): void;
87
88
  /** @inheritDoc */
88
- renderMesh(mesh: IMesh): void;
89
+ renderMesh(mesh: IRenderableMesh): void;
89
90
  /** @inheritDoc */
90
91
  render(vertexBuffer: IVertexBuffer, indexBuffer: IIndexBuffer, indicesCount?: number, indicesOffset?: number): void;
91
92
  /** @inheritDoc */
@@ -1 +1 @@
1
- {"version":3,"file":"UnlitMaterial.d.ts","sourceRoot":"","sources":["../../../src/api/material/UnlitMaterial.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAEjE,OAAO,EAAC,cAAc,EAAC,MAAM,+BAA+B,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAC,KAAK,EAAC,MAAM,kBAAkB,CAAC;AAEvC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,sBAAsB,CAAC;AAElD,6CAA6C;AAC7C,qBAAa,uBAAuB;IAEhC,2BAA2B;IACpB,cAAc,CAAC,EAAE,eAAe,CAAC;IAExC,+CAA+C;IACxC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAGD;;GAEG;AACH,qBAAa,aAAa;IAEtB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,aAAa,CAAa;IAClC,6EAA6E;IAC7E,OAAO,CAAC,SAAS,CAAC,CAAuB;IACzC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAkB;IACnD,sFAAsF;IACtF,OAAO,CAAC,eAAe,CAAC,CAAa;IACrC,OAAO,CAAC,eAAe,CAAC,CAAW;IACnC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,qBAAqB,CAAiB;IAC9C,gGAAgG;IAChG,OAAO,CAAC,yBAAyB,CAAU;IAC3C,OAAO,CAAC,OAAO,CAAC,CAAU;IAC1B,OAAO,CAAC,eAAe,CAAiB;IACxC,OAAO,CAAC,YAAY,CAAC,CAAiB;IAEtC;;;;OAIG;gBACgB,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,uBAAuB;IAY1E,sDAAsD;IACtD,OAAO,CAAC,eAAe;IAiBvB;;;OAGG;IACH,IAAW,MAAM,IAAI,OAAO,GAAG,SAAS,CAEvC;IAED,kBAAkB;IAClB,IAAW,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,EAgB5C;IAED;;OAEG;IACI,YAAY,EAAE,KAAK,CAAiB;IAE3C;;OAEG;IACH,IAAW,cAAc,IAAI,UAAU,CAEtC;IAED;;OAEG;IACH,IAAW,cAAc,CAAC,KAAK,EAAE,UAAU,EAK1C;IAED;;OAEG;IACH,IAAW,qBAAqB,IAAI,QAAQ,GAAG,SAAS,CAEvD;IAED;;OAEG;IACH,IAAW,qBAAqB,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,EAM3D;IAED;;;OAGG;IACH,IAAW,WAAW,IAAI,cAAc,GAAG,SAAS,CAEnD;IAED,8CAA8C;IAC9C,IAAW,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,EAavD;IAED;;OAEG;IACH,SAAgB,cAAc,6CAA6C;IAE3E,kBAAkB;IACX,YAAY,IAAI,IAAI;IAW3B,kBAAkB;IACX,UAAU,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI;IAIpC,kBAAkB;IACX,MAAM,CAAC,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAO1H,kBAAkB;IACX,OAAO,IAAI,IAAI;CAQzB"}
1
+ {"version":3,"file":"UnlitMaterial.d.ts","sourceRoot":"","sources":["../../../src/api/material/UnlitMaterial.ts"],"names":[],"mappings":"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"}
@@ -5,4 +5,6 @@ export * from "./MaterialFactory.js";
5
5
  export * from "./SpriteMaterial.js";
6
6
  export * from "./UnlitMaterial.js";
7
7
  export * from "./ForwardBlinnPhongMaterial.js";
8
+ export * from "./ICameraMaterial.js";
9
+ export * from "./ILightsMaterial.js";
8
10
  //# sourceMappingURL=_export.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"_export.d.ts","sourceRoot":"","sources":["../../../src/api/material/_export.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uBAAuB,CAAA;AACrC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,sBAAsB,CAAA;AACpC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,gCAAgC,CAAA"}
1
+ {"version":3,"file":"_export.d.ts","sourceRoot":"","sources":["../../../src/api/material/_export.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uBAAuB,CAAA;AACrC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,sBAAsB,CAAA;AACpC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA"}
@@ -1,47 +1,42 @@
1
1
  import type { IVertexBuffer } from "../rendering/buffers/IVertexBuffer.js";
2
2
  import type { IDisposable } from "../core/IDisposable.js";
3
3
  import type { IIndexBuffer } from "../rendering/buffers/IIndexBuffer.js";
4
- import type { IMaterial } from "../material/IMaterial.js";
5
- import type { mat4, vec3 } from "gl-matrix";
6
- import type { IUniformBuffer } from "../rendering/buffers/IUniformBuffer.js";
4
+ import type { IGeometry } from "../geometry/IGeometry.js";
5
+ import type { GeometryFormat } from "../geometry/GeometryFormat.js";
6
+ import type { State } from "../data/State.js";
7
7
  /**
8
- * Represents a mesh containing geometry, material information, and optionally child submeshes.
9
- * A mesh may contain vertex and index buffers directly, or act as a container for submeshes.
8
+ * A mesh: geometry and the vertex and index buffers created from it.
9
+ * It has no material and no transform; see {@link IRenderableMesh} for a mesh that can be drawn.
10
10
  * @public
11
11
  */
12
12
  export interface IMesh extends IDisposable {
13
- /** The vertex buffer containing the mesh's vertex data, if any. */
13
+ /** The state of the mesh. */
14
+ readonly state: State;
15
+ /** The positions, when set through `setMesh`. */
16
+ readonly positions?: number[];
17
+ /** The colors, when set through `setMesh`. */
18
+ readonly colors?: number[];
19
+ /** The texture coordinates, when set through `setMesh`. */
20
+ readonly textureCoords?: number[];
21
+ /** The normals, when set through `setMesh`. */
22
+ readonly normals?: number[];
23
+ /** The indices, when set through `setMesh`. */
24
+ readonly indices?: number[];
25
+ /** The geometry the buffers were created from with `setGeometry`, if any. */
26
+ readonly geometry?: IGeometry;
27
+ /** The vertex buffer, if created. */
14
28
  readonly vertexBuffer?: IVertexBuffer;
15
- /** The index buffer containing the mesh's index data, if any. */
29
+ /** The index buffer, if created. */
16
30
  readonly indexBuffer?: IIndexBuffer;
17
- /** The material assigned to this mesh, if any. */
18
- material?: IMaterial;
19
- /** First index in {@link indexBuffer} to draw. Undefined draws from 0. */
20
- readonly indexStart?: number;
21
- /** Number of indices to draw. Undefined draws the whole index buffer. */
22
- readonly indexCount?: number;
23
- /** The child submeshes contained in this mesh, if any. */
24
- readonly subMeshes?: IMesh[];
25
- /** World position. Defaults to the origin. In-place edits are detected. */
26
- position: vec3;
31
+ /** Creates the buffers from the current data. */
32
+ initialize(): void;
27
33
  /**
28
- * Euler rotation in radians, applied in Y, X, Z order (yaw, pitch, roll): `R = Ry * Rx * Rz`.
29
- * Defaults to (0, 0, 0). In-place edits are detected.
34
+ * Creates the vertex and index buffers from a geometry.
35
+ * @param geometry The geometry.
36
+ * @param geometryFormat The vertex layout.
30
37
  */
31
- rotation: vec3;
32
- /** Scale. Defaults to (1, 1, 1). In-place edits are detected. */
33
- scale: vec3;
34
- /**
35
- * The model matrix `T * R * S`, recomputed only when position, rotation or scale changed.
36
- */
37
- readonly modelMatrix: mat4;
38
- /**
39
- * The model buffer (std140 `mat4`) holding {@link modelMatrix}. Owned by the mesh (submeshes share the parent's),
40
- * uploaded when the transform changed and assigned to the material(s) before drawing.
41
- * Created on first use.
42
- */
43
- readonly modelBuffer: IUniformBuffer;
44
- /** Render the mesh. */
45
- render(): void;
38
+ setGeometry(geometry: IGeometry, geometryFormat?: GeometryFormat): void;
39
+ /** Re-creates (or updates) the buffers from the current data. */
40
+ applyChanges(): void;
46
41
  }
47
42
  //# sourceMappingURL=IMesh.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IMesh.d.ts","sourceRoot":"","sources":["../../../src/api/meshes/IMesh.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAE7E;;;;GAIG;AACH,MAAM,WAAW,KAAM,SAAQ,WAAW;IAEtC,mEAAmE;IACnE,QAAQ,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC;IAEtC,iEAAiE;IACjE,QAAQ,CAAC,WAAW,CAAC,EAAE,YAAY,CAAC;IAEpC,kDAAkD;IAClD,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB,0EAA0E;IAC1E,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAE7B,yEAAyE;IACzE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAE7B,0DAA0D;IAC1D,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;IAE7B,2EAA2E;IAC3E,QAAQ,EAAE,IAAI,CAAC;IAEf;;;OAGG;IACH,QAAQ,EAAE,IAAI,CAAC;IAEf,iEAAiE;IACjE,KAAK,EAAE,IAAI,CAAC;IAEZ;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC;IAE3B;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAC;IAErC,uBAAuB;IACvB,MAAM,IAAI,IAAI,CAAC;CAClB"}
1
+ {"version":3,"file":"IMesh.d.ts","sourceRoot":"","sources":["../../../src/api/meshes/IMesh.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;;GAIG;AACH,MAAM,WAAW,KAAM,SAAQ,WAAW;IAEtC,6BAA6B;IAC7B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAEtB,iDAAiD;IACjD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAE9B,8CAA8C;IAC9C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAE3B,2DAA2D;IAC3D,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAElC,+CAA+C;IAC/C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAE5B,+CAA+C;IAC/C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAE5B,6EAA6E;IAC7E,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAE9B,qCAAqC;IACrC,QAAQ,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC;IAEtC,oCAAoC;IACpC,QAAQ,CAAC,WAAW,CAAC,EAAE,YAAY,CAAC;IAEpC,iDAAiD;IACjD,UAAU,IAAI,IAAI,CAAC;IAEnB;;;;OAIG;IACH,WAAW,CAAC,QAAQ,EAAE,SAAS,EAAE,cAAc,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IAExE,iEAAiE;IACjE,YAAY,IAAI,IAAI,CAAC;CACxB"}
@@ -1,9 +1,10 @@
1
+ import type { GeometryFormat } from "../geometry/GeometryFormat.js";
1
2
  import type { IGeometry } from "../geometry/IGeometry.js";
2
3
  import { QuadMesh } from "./QuadMesh.js";
3
4
  import { vec2 } from "gl-matrix";
4
5
  import type { IMesh } from "./IMesh.js";
5
6
  import type { IMaterial } from "../material/IMaterial.js";
6
- import type { Scene } from "../scene/Scene.js";
7
+ import type { IRenderableMesh } from "./IRenderableMesh.js";
7
8
  /** Describes one submesh: a material and the index range it draws. */
8
9
  export interface SubMeshDescriptor {
9
10
  /** The material. */
@@ -18,23 +19,27 @@ export interface SubMeshDescriptor {
18
19
  */
19
20
  export interface IMeshFactory {
20
21
  /**
21
- * Creates a mesh and adds it to the scene.
22
- * @param scene - The scene the mesh adds itself to.
22
+ * Creates a plain mesh (buffers only, no material or transform) from a geometry.
23
+ * @param geometry - The geometry.
24
+ * @param geometryFormat - The vertex layout.
25
+ * @returns The mesh.
26
+ */
27
+ createMesh(geometry: IGeometry, geometryFormat: GeometryFormat): IMesh;
28
+ /**
29
+ * Creates a renderable mesh with one material. Add it to a scene with `scene.add(mesh)`.
23
30
  * @param geometry - The geometry.
24
31
  * @param material - The material.
25
32
  * @returns The mesh.
26
33
  */
27
- create(scene: Scene, geometry: IGeometry, material: IMaterial): IMesh;
34
+ create(geometry: IGeometry, material: IMaterial): IRenderableMesh;
28
35
  /**
29
36
  * Creates a mesh made of submeshes that share one vertex and one index buffer.
30
- * The mesh itself has no material; `scene.render()` (or `mesh.render()`) draws its submeshes.
31
- * Only the mesh is added to the scene, not the submeshes.
32
- * @param scene - The scene the mesh adds itself to.
37
+ * The root mesh has no material; `mesh.render()` draws its submeshes. Add the root to a scene with `scene.add(mesh)`.
33
38
  * @param geometry - The geometry.
34
39
  * @param subMeshes - One entry per submesh. All materials must use the same geometry format.
35
40
  * @returns The mesh.
36
41
  */
37
- createWithSubMeshes(scene: Scene, geometry: IGeometry, subMeshes: SubMeshDescriptor[]): IMesh;
42
+ createWithSubMeshes(geometry: IGeometry, subMeshes: SubMeshDescriptor[]): IRenderableMesh;
38
43
  /**
39
44
  * Creates the quad mesh.
40
45
  * @param isUpdatable - Should mesh be updated after creation.
@@ -1 +1 @@
1
- {"version":3,"file":"IMeshFactory.d.ts","sourceRoot":"","sources":["../../../src/api/meshes/IMeshFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AACvC,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAC/B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE/C,sEAAsE;AACtE,MAAM,WAAW,iBAAiB;IAC9B,oBAAoB;IACpB,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7B,oCAAoC;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,0CAA0C;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAEzB;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,GAAG,KAAK,CAAC;IAEtE;;;;;;;;OAQG;IACH,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAG,KAAK,CAAC;IAE9F;;;;;OAKG;IACH,cAAc,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC;CAChE"}
1
+ {"version":3,"file":"IMeshFactory.d.ts","sourceRoot":"","sources":["../../../src/api/meshes/IMeshFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AACvC,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAC/B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,sEAAsE;AACtE,MAAM,WAAW,iBAAiB;IAC9B,oBAAoB;IACpB,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7B,oCAAoC;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,0CAA0C;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAEzB;;;;;OAKG;IACH,UAAU,CAAC,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,GAAG,KAAK,CAAC;IAEvE;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,GAAG,eAAe,CAAC;IAElE;;;;;;OAMG;IACH,mBAAmB,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAG,eAAe,CAAC;IAE1F;;;;;OAKG;IACH,cAAc,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC;CAChE"}
@@ -0,0 +1,47 @@
1
+ import type { mat4, vec3 } from "gl-matrix";
2
+ import type { IMesh } from "./IMesh.js";
3
+ import type { IMaterial } from "../material/IMaterial.js";
4
+ import type { IUniformBuffer } from "../rendering/buffers/IUniformBuffer.js";
5
+ /**
6
+ * A mesh that can be drawn: a mesh plus an optional material, an index range and sub meshes.
7
+ *
8
+ * - A root mesh owns the vertex and index buffers. Sub meshes share them and only store their index range.
9
+ * - Rendering: a mesh with a material draws its range, then its sub meshes draw theirs.
10
+ * A root without a material only draws its sub meshes.
11
+ * - The transform (position, rotation, scale) and the model buffer live on the root and are shared by all sub meshes,
12
+ * so a mesh uploads its model matrix once per change, whatever the number of materials.
13
+ * - Disposing the root disposes the sub meshes and the buffers once. Materials are not disposed by the mesh
14
+ * (a `SceneMesh` does that).
15
+ * @public
16
+ */
17
+ export interface IRenderableMesh extends IMesh {
18
+ /** The material, if any. A root mesh made only of sub meshes has none. */
19
+ material?: IMaterial;
20
+ /** The parent for a sub mesh; undefined for a root mesh. */
21
+ readonly parent?: IRenderableMesh;
22
+ /** The sub meshes. */
23
+ readonly subMeshes: readonly IRenderableMesh[];
24
+ /** First index of the range to draw. Defaults to 0. */
25
+ readonly indexStart: number;
26
+ /** Number of indices to draw; -1 (the default) draws all indices. */
27
+ readonly indexCount: number;
28
+ /** World position. Defaults to the origin. In-place edits are detected. A sub mesh uses the root's. */
29
+ position: vec3;
30
+ /**
31
+ * Euler rotation in radians, applied in Y, X, Z order (yaw, pitch, roll): `R = Ry * Rx * Rz`.
32
+ * Defaults to (0, 0, 0). In-place edits are detected. A sub mesh uses the root's.
33
+ */
34
+ rotation: vec3;
35
+ /** Scale. Defaults to (1, 1, 1). In-place edits are detected. A sub mesh uses the root's. */
36
+ scale: vec3;
37
+ /** The model matrix `T * R * S`, recomputed only when position, rotation or scale changed. */
38
+ readonly modelMatrix: mat4;
39
+ /**
40
+ * The model buffer (std140 `mat4`) holding {@link modelMatrix}. Owned by the root mesh (sub meshes share it),
41
+ * uploaded when the transform changed and assigned to the material(s) before drawing. Created on first use.
42
+ */
43
+ readonly modelBuffer: IUniformBuffer;
44
+ /** Draws the mesh's range with its material (if any), then the sub meshes. */
45
+ render(): void;
46
+ }
47
+ //# sourceMappingURL=IRenderableMesh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IRenderableMesh.d.ts","sourceRoot":"","sources":["../../../src/api/meshes/IRenderableMesh.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAE7E;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,eAAgB,SAAQ,KAAK;IAE1C,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC;IAElC,sBAAsB;IACtB,QAAQ,CAAC,SAAS,EAAE,SAAS,eAAe,EAAE,CAAC;IAE/C,uDAAuD;IACvD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,qEAAqE;IACrE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,uGAAuG;IACvG,QAAQ,EAAE,IAAI,CAAC;IAEf;;;OAGG;IACH,QAAQ,EAAE,IAAI,CAAC;IAEf,6FAA6F;IAC7F,KAAK,EAAE,IAAI,CAAC;IAEZ,8FAA8F;IAC9F,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC;IAE3B;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAC;IAErC,8EAA8E;IAC9E,MAAM,IAAI,IAAI,CAAC;CAClB"}