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

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 +21 -29
  2. package/README.md +99 -150
  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,4 +1,4 @@
1
- import { type IShaderModule, type IContentManager, type IShaderModuleLoader, type ITexture2D, type IFramework, TextureDescriptor, ContentConfig, type IMesh, type Scene } from "../index.js";
1
+ import { type IShaderModule, type IContentManager, type IShaderModuleLoader, type ITexture2D, type IFramework, TextureDescriptor, ContentConfig, type IMesh, type IRenderableMesh, type GeometryFormat, type ICamera } from "../index.js";
2
2
  import type { IKtx2Texture } from "ris-ktx2";
3
3
  /**
4
4
  * The content manager.
@@ -9,7 +9,6 @@ export declare class ContentManager implements IContentManager {
9
9
  readonly shaderModuleLoader: IShaderModuleLoader;
10
10
  private readonly _ktx2Factory;
11
11
  private readonly _ktx2TextureCache;
12
- private readonly _objLoader;
13
12
  /**
14
13
  * The constructor.
15
14
  * @param _framework The framework.
@@ -32,61 +31,10 @@ export declare class ContentManager implements IContentManager {
32
31
  /** @inheritDoc */
33
32
  loadTexture2DFromPixels(width: number, height: number, pixels: ArrayBuffer): ITexture2D;
34
33
  /** @inheritDoc */
35
- loadMeshAsync(path: string, scene: Scene): Promise<IMesh>;
34
+ loadMeshAsync(path: string, geometryFormat: GeometryFormat): Promise<IMesh>;
36
35
  /** @inheritDoc */
37
- loadBlinnPhongMeshAsync(path: string, scene: Scene): Promise<IMesh>;
38
- /**
39
- * Loads the OBJ file and its .mtl material libraries.
40
- * @param path The path or url to the .obj file.
41
- * @returns The plain OBJ data.
42
- */
43
- private _loadObj;
44
- /**
45
- * Creates framework geometry from the OBJ geometry.
46
- * Vertex colours stay white, because each submesh's material carries the colour.
47
- * @param definition The OBJ geometry definition.
48
- * @returns The geometry.
49
- */
50
- private _createGeometry;
51
- /**
52
- * Creates one submesh descriptor per material range.
53
- * Ranges that use the same material name share one material instance.
54
- * @param objResult The loaded OBJ data.
55
- * @param createMaterial Creates the material for a definition (undefined without `usemtl` or .mtl entry).
56
- * @returns The submesh descriptors, in file order.
57
- */
58
- private _createSubMeshDescriptors;
59
- /**
60
- * Indexes material definitions by name.
61
- * @param definitions The material definitions from the .mtl files.
62
- * @returns A map from material name to definition.
63
- */
64
- private _indexMaterialDefinitions;
65
- /**
66
- * Finds the definition for a `usemtl` name.
67
- * @param definitionsByName The definitions by name.
68
- * @param materialName The material name, or undefined for faces without `usemtl`.
69
- * @returns The definition, or undefined when there is none.
70
- */
71
- private _findMaterialDefinition;
72
- /**
73
- * Creates the default unlit material for an OBJ material definition.
74
- * The diffuse colour is the definition's `Kd` with `d` as alpha; white when there is no definition.
75
- * @param definition The material definition, or undefined.
76
- * @param camera The scene's current camera, or undefined; the scene assigns it on update.
77
- * @returns The unlit material.
78
- */
79
- private _createUnlitMaterial;
80
- /**
81
- * Creates a Blinn-Phong material for an OBJ material definition.
82
- * `Kd` (with `d` as alpha) becomes the diffuse colour, white when missing.
83
- * `Ka` becomes the ambient colour; when missing the diffuse colour is used, so ambient light tints by the surface colour.
84
- * `Ks` and `Ns` become specular colour and shininess; when missing the material defaults stay (0.5 grey, 32).
85
- * @param definition The material definition, or undefined.
86
- * @param camera The scene's camera; its projection view and position buffers are bound.
87
- * @param lightsBuffer The optional lights buffer; the shader is compiled for its light counts.
88
- * @returns The Blinn-Phong material.
89
- */
90
- private _createBlinnPhongMaterial;
36
+ loadUnlitMeshAsync(path: string, camera?: ICamera): Promise<IRenderableMesh>;
37
+ /** @inheritDoc */
38
+ loadBlinnPhongMeshAsync(path: string, camera: ICamera): Promise<IRenderableMesh>;
91
39
  }
92
40
  //# sourceMappingURL=ContentManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ContentManager.d.ts","sourceRoot":"","sources":["../../../src/api/content/ContentManager.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,iBAAiB,EAEjB,aAAa,EAEb,KAAK,KAAK,EAWV,KAAK,KAAK,EAEb,MAAM,aAAa,CAAC;AAGrB,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,UAAU,CAAC;AAE3C;;;GAGG;AACH,qBAAa,cAAe,YAAW,eAAe;IAW/B,OAAO,CAAC,QAAQ,CAAC,UAAU;aAA8B,kBAAkB,EAAE,mBAAmB;IATnH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAClD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAqC;IACvE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;IAE9C;;;;OAIG;gBACiC,UAAU,EAAE,UAAU,EAAkB,kBAAkB,EAAE,mBAAmB;IAGnH,kBAAkB;IACL,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAc9F;;;OAGG;IACI,OAAO,IAAI,IAAI;IAOtB,kBAAkB;IACX,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAG,kBAAkB,CAAC,EAAE;QAAE,CAAC,EAAE,EAAC,MAAM,GAAG,MAAM,CAAA;KAAC,GAAG,aAAa;IAI5G,kBAAkB;IACL,kBAAkB,CAAC,IAAI,EAAE,MAAM,EACZ,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,aAAa,CAAC,EAAE,aAAa,GAC1B,OAAO,CAAC,UAAU,CAAC;IA4BtD,kBAAkB;IACX,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,UAAU;IAK9F,kBAAkB;IACL,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAUtE,kBAAkB;IACL,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAmBhF;;;;OAIG;IACH,OAAO,CAAC,QAAQ;IAIhB;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAMvB;;;;;;OAMG;IACH,OAAO,CAAC,yBAAyB;IA0BjC;;;;OAIG;IACH,OAAO,CAAC,yBAAyB;IAQjC;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IAS/B;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAW5B;;;;;;;;;OASG;IACH,OAAO,CAAC,yBAAyB;CA0BpC"}
1
+ {"version":3,"file":"ContentManager.d.ts","sourceRoot":"","sources":["../../../src/api/content/ContentManager.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,iBAAiB,EAEjB,aAAa,EAEb,KAAK,KAAK,EACV,KAAK,eAAe,EACpB,KAAK,cAAc,EAEnB,KAAK,OAAO,EAEf,MAAM,aAAa,CAAC;AAIrB,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,UAAU,CAAC;AAI3C;;;GAGG;AACH,qBAAa,cAAe,YAAW,eAAe;IAU/B,OAAO,CAAC,QAAQ,CAAC,UAAU;aAA8B,kBAAkB,EAAE,mBAAmB;IARnH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAClD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAuC;IAEzE;;;;OAIG;gBACiC,UAAU,EAAE,UAAU,EAAkB,kBAAkB,EAAE,mBAAmB;IAGnH,kBAAkB;IACL,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAiB9F;;;OAGG;IACI,OAAO,IAAI,IAAI;IAQtB,kBAAkB;IACX,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,kBAAkB,CAAC,EAAE;QAAE,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,aAAa;IAI7G,kBAAkB;IACL,kBAAkB,CAAC,IAAI,EAAE,MAAM,EACZ,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,aAAa,CAAC,EAAE,aAAa,GAC1D,OAAO,CAAC,UAAU,CAAC;IAmCtB,kBAAkB;IACX,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,UAAU;IAK9F,kBAAkB;IACL,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC;IAMxF,kBAAkB;IACX,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC;IASnF,kBAAkB;IACX,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC;CAS1F"}
@@ -1,4 +1,6 @@
1
- import type { Scene } from "../scene/Scene.js";
1
+ import type { ICamera } from "../camera/ICamera.js";
2
+ import type { GeometryFormat } from "../geometry/GeometryFormat.js";
3
+ import type { IRenderableMesh } from "../meshes/IRenderableMesh.js";
2
4
  import type { IShaderModuleLoader } from "../shader/IShaderModuleLoader.js";
3
5
  import type { IShaderModule } from "../shader/IShaderModule.js";
4
6
  import type { ITexture2D } from "../rendering/texture/ITexture2D.js";
@@ -39,30 +41,31 @@ export interface IContentManager {
39
41
  */
40
42
  loadTexture2DAsync(path: string, desc?: TextureDescriptor, contentConfig?: ContentConfig): Promise<ITexture2D>;
41
43
  /**
42
- * Loads a mesh from a model, typically.
43
- * Currently, OBJ(WAVEFRONT) is supported.
44
- * The mesh has one submesh per `usemtl` range, all sharing one vertex and index buffer.
45
- * By default, each submesh gets an unlit material with the .mtl `Kd` as diffuse colour and `d` as alpha.
46
- * @param path The path or url to the model.
47
- * @param scene The scene the mesh adds itself to; `scene.render()` draws it. The materials use `scene.camera`
48
- * (assigned on `scene.update()` when it is set later).
44
+ * Loads a plain mesh (geometry and buffers only, no material or transform) from an OBJ (Wavefront) file,
45
+ * like C# `ContentManager.LoadMesh`. Materials (.mtl) are not loaded.
46
+ * @param path The path or url to the .obj file.
47
+ * @param geometryFormat The vertex layout of the buffers, e.g. the format of the material it will be drawn with.
49
48
  * @return The mesh.
50
49
  */
51
- loadMeshAsync(path: string, scene: Scene): Promise<IMesh>;
50
+ loadMeshAsync(path: string, geometryFormat: GeometryFormat): Promise<IMesh>;
52
51
  /**
53
- * Loads an OBJ (Wavefront) mesh with lit Blinn-Phong materials.
54
- * Like {@link loadMeshAsync}, the mesh has one submesh per `usemtl` range sharing one vertex and index buffer,
55
- * and ranges with the same material name share one material. `scene.render()` draws it.
56
- * The .mtl values map onto `ForwardBlinnPhongMaterial`:
57
- * - `Kd` → `diffuseColor` (with `d` as alpha), white when missing.
58
- * - `Ka` → `ambientColor`, the diffuse colour when missing.
59
- * - `Ks` → `specularColor` and `Ns` → `shininess`, the material defaults (0.5 grey, 32) when missing.
60
- * Without an .mtl file every submesh gets a white material with those defaults.
52
+ * Loads an OBJ mesh with unlit materials, through `framework.objLoader`.
53
+ * The root mesh has no material; each `usemtl` range is a sub mesh with an unlit material
54
+ * (`Kd` as diffuse colour, `d` as alpha, white when missing). Add it with `scene.add(mesh)`.
55
+ * @param path The path or url to the .obj file.
56
+ * @param camera The optional camera; `scene.update()` assigns the scene camera anyway.
57
+ * @return The root mesh.
58
+ */
59
+ loadUnlitMeshAsync(path: string, camera?: ICamera): Promise<IRenderableMesh>;
60
+ /**
61
+ * Loads an OBJ mesh with Blinn-Phong materials: shorthand for
62
+ * `framework.objLoader.loadAsync(path, {projectionViewBuffer: camera.projectionViewBuffer, cameraPositionBuffer: camera.positionBuffer})`.
63
+ * See `ObjLoader.loadAsync` for the .mtl mapping. Add it with `scene.add(mesh)`; the scene assigns its camera and lights.
61
64
  * @param path The path or url to the .obj file. A relative `mtllib` is resolved against it.
62
- * @param scene The scene the mesh adds itself to. Every material uses the scene's lights and `scene.camera`
63
- * (assigned on `scene.update()` when it is set later).
64
- * @return The mesh.
65
+ * @param camera An initialized camera (e.g. `scene.camera`).
66
+ * @return The root mesh.
67
+ * @throws Error when the camera has no buffers.
65
68
  */
66
- loadBlinnPhongMeshAsync(path: string, scene: Scene): Promise<IMesh>;
69
+ loadBlinnPhongMeshAsync(path: string, camera: ICamera): Promise<IRenderableMesh>;
67
70
  }
68
71
  //# sourceMappingURL=IContentManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IContentManager.d.ts","sourceRoot":"","sources":["../../../src/api/content/IContentManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAC,iBAAiB,EAAC,MAAM,2CAA2C,CAAC;AAC5E,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,oBAAoB,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,eAAe;IAE5B;;OAEG;IACH,QAAQ,CAAC,kBAAkB,EAAE,mBAAmB,CAAC;IAEjD;;;;;OAKG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAE3E;;;;;OAKG;IACH,gBAAgB,CAAC,aAAa,EAAE,MAAM,EAAE,kBAAkB,CAAC,EAAE;QAAE,CAAC,EAAE,EAAC,MAAM,GAAG,MAAM,CAAA;KAAC,GAAG,aAAa,CAAC;IAEpG;;;;;;OAMG;IACH,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,iBAAiB,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAE/G;;;;;;;;;OASG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAE1D;;;;;;;;;;;;;OAaG;IACH,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;CAEvE"}
1
+ {"version":3,"file":"IContentManager.d.ts","sourceRoot":"","sources":["../../../src/api/content/IContentManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAC,iBAAiB,EAAC,MAAM,2CAA2C,CAAC;AAC5E,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,oBAAoB,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,eAAe;IAE5B;;OAEG;IACH,QAAQ,CAAC,kBAAkB,EAAE,mBAAmB,CAAC;IAEjD;;;;;OAKG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAE3E;;;;;OAKG;IACH,gBAAgB,CAAC,aAAa,EAAE,MAAM,EAAE,kBAAkB,CAAC,EAAE;QAAE,CAAC,EAAE,EAAC,MAAM,GAAG,MAAM,CAAA;KAAC,GAAG,aAAa,CAAC;IAEpG;;;;;;OAMG;IACH,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,iBAAiB,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAE/G;;;;;;OAMG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAE5E;;;;;;;OAOG;IACH,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAE7E;;;;;;;;OAQG;IACH,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CAEpF"}
@@ -27,8 +27,9 @@ export interface LightsBufferDescriptor {
27
27
  maxPointLights?: number;
28
28
  }
29
29
  /**
30
- * Holds the lights of a scene and owns the uniform buffer that shaders read them from.
31
- * Assign it to lit materials, e.g. `ForwardBlinnPhongMaterial.lightsBuffer`.
30
+ * Holds lights and owns the uniform buffer that shaders read them from.
31
+ * Each lit material (`ForwardBlinnPhongMaterial`) owns one.
32
+ *
32
33
  *
33
34
  * std140 layout of the `LightsBuffer` block:
34
35
  * Every light colour is written premultiplied by its intensity, so the layout has no intensity field.
@@ -41,12 +42,18 @@ export interface LightsBufferDescriptor {
41
42
  export interface LightsBuffer extends IDisposable {
42
43
  /** The ambient light written to the buffer. */
43
44
  ambientLight: AmbientLight;
44
- /** The directional lights written to the buffer. Read-only; use {@link add} and {@link remove}. Unused slots are black. */
45
- readonly directionalLights: readonly DirectionalLight[];
45
+ /**
46
+ * The directional lights written to the buffer. Can be replaced by another list, which is then used by reference
47
+ * (a lit material uses the scene's list). Only the first {@link maxDirectionalLights} are written; unused slots are black.
48
+ */
49
+ directionalLights: DirectionalLight[];
46
50
  /** The number of directional light slots in the buffer. */
47
51
  readonly maxDirectionalLights: number;
48
- /** The point lights written to the buffer. Read-only; use {@link add} and {@link remove}. Unused slots are black. */
49
- readonly pointLights: readonly PointLight[];
52
+ /**
53
+ * The point lights written to the buffer. Can be replaced by another list, which is then used by reference.
54
+ * Only the first {@link maxPointLights} are written; unused slots are black.
55
+ */
56
+ pointLights: PointLight[];
50
57
  /** The number of point light slots in the buffer. */
51
58
  readonly maxPointLights: number;
52
59
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"LightsBuffer.d.ts","sourceRoot":"","sources":["../../../src/api/lights/LightsBuffer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,wCAAwC,CAAC;AAC3E,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,wBAAwB,CAAC;AAExD,qGAAqG;AACrG,eAAO,MAAM,gCAAgC,IAAI,CAAC;AAElD,+FAA+F;AAC/F,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C,0CAA0C;AAC1C,MAAM,WAAW,sBAAsB;IAEnC,4DAA4D;IAC5D,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B,qFAAqF;IACrF,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAEvC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B,yEAAyE;IACzE,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAE3B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,YAAa,SAAQ,WAAW;IAE7C,+CAA+C;IAC/C,YAAY,EAAE,YAAY,CAAC;IAE3B,2HAA2H;IAC3H,QAAQ,CAAC,iBAAiB,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAExD,2DAA2D;IAC3D,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IAEtC,qHAAqH;IACrH,QAAQ,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAC;IAE5C,qDAAqD;IACrD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAEhC;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAEhC;;;OAGG;IACH,GAAG,CAAC,KAAK,EAAE,gBAAgB,GAAG,UAAU,GAAG,IAAI,CAAC;IAEhD;;;OAGG;IACH,MAAM,CAAC,KAAK,EAAE,gBAAgB,GAAG,UAAU,GAAG,OAAO,CAAC;IAEtD,2HAA2H;IAC3H,MAAM,IAAI,IAAI,CAAC;CAClB"}
1
+ {"version":3,"file":"LightsBuffer.d.ts","sourceRoot":"","sources":["../../../src/api/lights/LightsBuffer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,wCAAwC,CAAC;AAC3E,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,wBAAwB,CAAC;AAExD,qGAAqG;AACrG,eAAO,MAAM,gCAAgC,IAAI,CAAC;AAElD,+FAA+F;AAC/F,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C,0CAA0C;AAC1C,MAAM,WAAW,sBAAsB;IAEnC,4DAA4D;IAC5D,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B,qFAAqF;IACrF,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAEvC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B,yEAAyE;IACzE,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAE3B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,YAAa,SAAQ,WAAW;IAE7C,+CAA+C;IAC/C,YAAY,EAAE,YAAY,CAAC;IAE3B;;;OAGG;IACH,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IAEtC,2DAA2D;IAC3D,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IAEtC;;;OAGG;IACH,WAAW,EAAE,UAAU,EAAE,CAAC;IAE1B,qDAAqD;IACrD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAEhC;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAEhC;;;OAGG;IACH,GAAG,CAAC,KAAK,EAAE,gBAAgB,GAAG,UAAU,GAAG,IAAI,CAAC;IAEhD;;;OAGG;IACH,MAAM,CAAC,KAAK,EAAE,gBAAgB,GAAG,UAAU,GAAG,OAAO,CAAC;IAEtD,2HAA2H;IAC3H,MAAM,IAAI,IAAI,CAAC;CAClB"}
@@ -1,7 +1,7 @@
1
1
  import type { GeometryDescriptor } from "../geometry/IGeometryBuilder.js";
2
2
  import type { ObjGeometryDefinition } from "./obj/index.js";
3
3
  /**
4
- * Maps plain OBJ geometry definitions from {@link ObjLoader} onto the framework's {@link GeometryDescriptor}.
4
+ * Maps plain OBJ geometry definitions from {@link ObjParser} onto the framework's {@link GeometryDescriptor}.
5
5
  * Pass the result to `geometryBuilder.create`.
6
6
  * Not part of the public API: `content.loadMeshAsync` and `content.loadBlinnPhongMeshAsync` use it.
7
7
  * @internal
@@ -9,7 +9,7 @@ import type { ObjGeometryDefinition } from "./obj/index.js";
9
9
  export declare class ObjGeometryMapper {
10
10
  /**
11
11
  * Creates a geometry descriptor from an OBJ geometry definition.
12
- * @param definition The geometry definition, e.g. `result.geometry` from `ObjLoader.loadAsync`.
12
+ * @param definition The geometry definition, e.g. `result.geometry` from `ObjParser.loadAsync`.
13
13
  * @param useMaterialColors True keeps the loader's per-vertex `Kd` colours; false (the default) uses white,
14
14
  * for when each submesh's material carries the colour instead.
15
15
  * @returns The descriptor. It references the definition's arrays; `geometryBuilder.create` copies them.
@@ -0,0 +1,61 @@
1
+ import type { IFramework } from "../IFramework.js";
2
+ import type { IRenderableMesh } from "../meshes/IRenderableMesh.js";
3
+ import type { IMaterial } from "../material/IMaterial.js";
4
+ import { ForwardBlinnPhongMaterialDescriptor } from "../material/ForwardBlinnPhongMaterial.js";
5
+ import type { ObjLoadOptions, ObjModel, ObjSubMesh } from "./obj/ObjTypes.js";
6
+ /** Creates the material for one OBJ sub mesh (`usemtl` range). */
7
+ export type ObjMaterialFactory = (subMesh: ObjSubMesh) => IMaterial;
8
+ /**
9
+ * Loads OBJ (Wavefront) models into renderable meshes (C# `ObjLoader`). Available as `framework.objLoader`.
10
+ *
11
+ * The returned root mesh has no material and owns the vertex and index buffers; each `usemtl` range is a sub mesh
12
+ * with its own material (ranges with the same material name share one material instance).
13
+ * Vertex colours are white, the materials carry the colour. Parsing is done by the engine-independent {@link ObjParser}.
14
+ * @public
15
+ */
16
+ export declare class ObjLoader {
17
+ private readonly _framework;
18
+ /** Default specular colour when the .mtl has no `Ks` (0.5 grey). */
19
+ static readonly DEFAULT_SPECULAR = 0.5;
20
+ /** Default shininess when the .mtl has no `Ns`. */
21
+ static readonly DEFAULT_SHININESS = 32;
22
+ /**
23
+ * The constructor.
24
+ * @param _framework The framework.
25
+ */
26
+ constructor(_framework: IFramework);
27
+ /**
28
+ * Parses an .obj file (and its .mtl files) into plain data. Creates no GPU resources (C# `ObjLoader.Parse`).
29
+ * @param path The .obj URL.
30
+ * @param options Optional: how to resolve `mtllib` names, or skip materials.
31
+ * @returns The model.
32
+ */
33
+ static parseAsync(path: string, options?: ObjLoadOptions): Promise<ObjModel>;
34
+ /**
35
+ * Loads an .obj file into a renderable mesh with one Blinn-Phong material per `usemtl` range.
36
+ * The .mtl values map onto `ForwardBlinnPhongMaterial`: `Kd` (with `d` as alpha) → diffuse colour (white when missing),
37
+ * `Ka` → ambient colour (falls back to `Kd`), `Ks` → specular colour (0.5 grey), `Ns` → shininess (32).
38
+ * @param path The .obj URL. A relative `mtllib` is resolved against it.
39
+ * @param descriptor The descriptor every material is created with (camera buffers, primitive state).
40
+ * @param options Optional parser options.
41
+ * @returns The root mesh.
42
+ */
43
+ loadAsync(path: string, descriptor: ForwardBlinnPhongMaterialDescriptor, options?: ObjLoadOptions): Promise<IRenderableMesh>;
44
+ /**
45
+ * Loads an .obj file into a renderable mesh, creating each sub mesh's material with a callback.
46
+ * @param path The .obj URL.
47
+ * @param createMaterial Called once per distinct `usemtl` name.
48
+ * @param options Optional parser options.
49
+ * @returns The root mesh.
50
+ */
51
+ loadAsync(path: string, createMaterial: ObjMaterialFactory, options?: ObjLoadOptions): Promise<IRenderableMesh>;
52
+ /**
53
+ * Creates a renderable mesh from a parsed model.
54
+ * @param model The model, e.g. from {@link parseAsync}.
55
+ * @param createMaterial Creates the material per distinct `usemtl` name.
56
+ * @returns The root mesh, without a material, with one sub mesh per range.
57
+ */
58
+ createMesh(model: ObjModel, createMaterial: ObjMaterialFactory): IRenderableMesh;
59
+ private _blinnPhongFactory;
60
+ }
61
+ //# sourceMappingURL=ObjLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjLoader.d.ts","sourceRoot":"","sources":["../../../src/api/loaders/ObjLoader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,8BAA8B,CAAC;AAElE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAC,mCAAmC,EAAC,MAAM,0CAA0C,CAAC;AAG7F,OAAO,KAAK,EAAC,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAG5E,kEAAkE;AAClE,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,UAAU,KAAK,SAAS,CAAC;AAEpE;;;;;;;GAOG;AACH,qBAAa,SAAS;IAYC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAV9C,oEAAoE;IACpE,gBAAuB,gBAAgB,OAAO;IAE9C,mDAAmD;IACnD,gBAAuB,iBAAiB,MAAM;IAE9C;;;OAGG;gBACiC,UAAU,EAAE,UAAU;IAG1D;;;;;OAKG;WACW,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC;IAInF;;;;;;;;OAQG;IACI,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,mCAAmC,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAEnI;;;;;;OAMG;IACI,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAatH;;;;;OAKG;IACI,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,kBAAkB,GAAG,eAAe;IAyBvF,OAAO,CAAC,kBAAkB;CAiB7B"}
@@ -1,4 +1,5 @@
1
1
  export * from "./IImageLoader.js";
2
2
  export * from "./ImageLoader.js";
3
3
  export * from "./obj/index.js";
4
+ export * from "./ObjLoader.js";
4
5
  //# sourceMappingURL=_export.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"_export.d.ts","sourceRoot":"","sources":["../../../src/api/loaders/_export.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA"}
1
+ {"version":3,"file":"_export.d.ts","sourceRoot":"","sources":["../../../src/api/loaders/_export.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA"}
@@ -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":"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"}
@@ -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"}