@flighthq/scene3d-wgpu 0.2.1-next.840.857425c

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 (263) hide show
  1. package/dist/anisotropyPbrWgpuMeshMaterialRenderer.d.ts +4 -0
  2. package/dist/anisotropyPbrWgpuMeshMaterialRenderer.d.ts.map +1 -0
  3. package/dist/anisotropyPbrWgpuMeshMaterialRenderer.js +52 -0
  4. package/dist/anisotropyPbrWgpuMeshMaterialRenderer.js.map +1 -0
  5. package/dist/blinnPhongWgpuMeshMaterialRenderer.d.ts +4 -0
  6. package/dist/blinnPhongWgpuMeshMaterialRenderer.d.ts.map +1 -0
  7. package/dist/blinnPhongWgpuMeshMaterialRenderer.js +66 -0
  8. package/dist/blinnPhongWgpuMeshMaterialRenderer.js.map +1 -0
  9. package/dist/clearcoatPbrWgpuMeshMaterialRenderer.d.ts +4 -0
  10. package/dist/clearcoatPbrWgpuMeshMaterialRenderer.d.ts.map +1 -0
  11. package/dist/clearcoatPbrWgpuMeshMaterialRenderer.js +52 -0
  12. package/dist/clearcoatPbrWgpuMeshMaterialRenderer.js.map +1 -0
  13. package/dist/customShaderWgpuMeshMaterialRenderer.d.ts +7 -0
  14. package/dist/customShaderWgpuMeshMaterialRenderer.d.ts.map +1 -0
  15. package/dist/customShaderWgpuMeshMaterialRenderer.js +225 -0
  16. package/dist/customShaderWgpuMeshMaterialRenderer.js.map +1 -0
  17. package/dist/depthWgpuMeshMaterialRenderer.d.ts +4 -0
  18. package/dist/depthWgpuMeshMaterialRenderer.d.ts.map +1 -0
  19. package/dist/depthWgpuMeshMaterialRenderer.js +42 -0
  20. package/dist/depthWgpuMeshMaterialRenderer.js.map +1 -0
  21. package/dist/drawWgpuScene3D.d.ts +4 -0
  22. package/dist/drawWgpuScene3D.d.ts.map +1 -0
  23. package/dist/drawWgpuScene3D.js +171 -0
  24. package/dist/drawWgpuScene3D.js.map +1 -0
  25. package/dist/emissiveWgpuMeshMaterialRenderer.d.ts +4 -0
  26. package/dist/emissiveWgpuMeshMaterialRenderer.d.ts.map +1 -0
  27. package/dist/emissiveWgpuMeshMaterialRenderer.js +51 -0
  28. package/dist/emissiveWgpuMeshMaterialRenderer.js.map +1 -0
  29. package/dist/enableWgpuScene3DCustomShaderGuards.d.ts +5 -0
  30. package/dist/enableWgpuScene3DCustomShaderGuards.d.ts.map +1 -0
  31. package/dist/enableWgpuScene3DCustomShaderGuards.js +56 -0
  32. package/dist/enableWgpuScene3DCustomShaderGuards.js.map +1 -0
  33. package/dist/enableWgpuScene3DForwardLightSelectionGuards.d.ts +4 -0
  34. package/dist/enableWgpuScene3DForwardLightSelectionGuards.d.ts.map +1 -0
  35. package/dist/enableWgpuScene3DForwardLightSelectionGuards.js +17 -0
  36. package/dist/enableWgpuScene3DForwardLightSelectionGuards.js.map +1 -0
  37. package/dist/explainWgpuScene3DForwardLightSelection.d.ts +3 -0
  38. package/dist/explainWgpuScene3DForwardLightSelection.d.ts.map +1 -0
  39. package/dist/explainWgpuScene3DForwardLightSelection.js +18 -0
  40. package/dist/explainWgpuScene3DForwardLightSelection.js.map +1 -0
  41. package/dist/index.d.ts +51 -0
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +51 -0
  44. package/dist/index.js.map +1 -0
  45. package/dist/iridescencePbrWgpuMeshMaterialRenderer.d.ts +4 -0
  46. package/dist/iridescencePbrWgpuMeshMaterialRenderer.d.ts.map +1 -0
  47. package/dist/iridescencePbrWgpuMeshMaterialRenderer.js +60 -0
  48. package/dist/iridescencePbrWgpuMeshMaterialRenderer.js.map +1 -0
  49. package/dist/lambertWgpuMeshMaterialRenderer.d.ts +4 -0
  50. package/dist/lambertWgpuMeshMaterialRenderer.d.ts.map +1 -0
  51. package/dist/lambertWgpuMeshMaterialRenderer.js +61 -0
  52. package/dist/lambertWgpuMeshMaterialRenderer.js.map +1 -0
  53. package/dist/matcapWgpuMeshMaterialRenderer.d.ts +4 -0
  54. package/dist/matcapWgpuMeshMaterialRenderer.d.ts.map +1 -0
  55. package/dist/matcapWgpuMeshMaterialRenderer.js +54 -0
  56. package/dist/matcapWgpuMeshMaterialRenderer.js.map +1 -0
  57. package/dist/normalWgpuMeshMaterialRenderer.d.ts +4 -0
  58. package/dist/normalWgpuMeshMaterialRenderer.d.ts.map +1 -0
  59. package/dist/normalWgpuMeshMaterialRenderer.js +47 -0
  60. package/dist/normalWgpuMeshMaterialRenderer.js.map +1 -0
  61. package/dist/phongWgpuMeshMaterialRenderer.d.ts +4 -0
  62. package/dist/phongWgpuMeshMaterialRenderer.d.ts.map +1 -0
  63. package/dist/phongWgpuMeshMaterialRenderer.js +63 -0
  64. package/dist/phongWgpuMeshMaterialRenderer.js.map +1 -0
  65. package/dist/prepareWgpuScene3DForwardLights.d.ts +3 -0
  66. package/dist/prepareWgpuScene3DForwardLights.d.ts.map +1 -0
  67. package/dist/prepareWgpuScene3DForwardLights.js +110 -0
  68. package/dist/prepareWgpuScene3DForwardLights.js.map +1 -0
  69. package/dist/registerStandardPbrWgpuMaterial.d.ts +3 -0
  70. package/dist/registerStandardPbrWgpuMaterial.d.ts.map +1 -0
  71. package/dist/registerStandardPbrWgpuMaterial.js +11 -0
  72. package/dist/registerStandardPbrWgpuMaterial.js.map +1 -0
  73. package/dist/shadedWgpuMeshMaterialRenderer.d.ts +11 -0
  74. package/dist/shadedWgpuMeshMaterialRenderer.d.ts.map +1 -0
  75. package/dist/shadedWgpuMeshMaterialRenderer.js +47 -0
  76. package/dist/shadedWgpuMeshMaterialRenderer.js.map +1 -0
  77. package/dist/sheenPbrWgpuMeshMaterialRenderer.d.ts +4 -0
  78. package/dist/sheenPbrWgpuMeshMaterialRenderer.d.ts.map +1 -0
  79. package/dist/sheenPbrWgpuMeshMaterialRenderer.js +58 -0
  80. package/dist/sheenPbrWgpuMeshMaterialRenderer.js.map +1 -0
  81. package/dist/specularGlossinessPbrWgpuMeshMaterialRenderer.d.ts +4 -0
  82. package/dist/specularGlossinessPbrWgpuMeshMaterialRenderer.d.ts.map +1 -0
  83. package/dist/specularGlossinessPbrWgpuMeshMaterialRenderer.js +126 -0
  84. package/dist/specularGlossinessPbrWgpuMeshMaterialRenderer.js.map +1 -0
  85. package/dist/specularPbrWgpuMeshMaterialRenderer.d.ts +4 -0
  86. package/dist/specularPbrWgpuMeshMaterialRenderer.d.ts.map +1 -0
  87. package/dist/specularPbrWgpuMeshMaterialRenderer.js +65 -0
  88. package/dist/specularPbrWgpuMeshMaterialRenderer.js.map +1 -0
  89. package/dist/standardPbrWgpuMeshMaterialRenderer.d.ts +9 -0
  90. package/dist/standardPbrWgpuMeshMaterialRenderer.d.ts.map +1 -0
  91. package/dist/standardPbrWgpuMeshMaterialRenderer.js +174 -0
  92. package/dist/standardPbrWgpuMeshMaterialRenderer.js.map +1 -0
  93. package/dist/subsurfacePbrWgpuMeshMaterialRenderer.d.ts +4 -0
  94. package/dist/subsurfacePbrWgpuMeshMaterialRenderer.d.ts.map +1 -0
  95. package/dist/subsurfacePbrWgpuMeshMaterialRenderer.js +68 -0
  96. package/dist/subsurfacePbrWgpuMeshMaterialRenderer.js.map +1 -0
  97. package/dist/toonWgpuMeshMaterialRenderer.d.ts +4 -0
  98. package/dist/toonWgpuMeshMaterialRenderer.d.ts.map +1 -0
  99. package/dist/toonWgpuMeshMaterialRenderer.js +71 -0
  100. package/dist/toonWgpuMeshMaterialRenderer.js.map +1 -0
  101. package/dist/transmissionVolumePbrWgpuMeshMaterialRenderer.d.ts +4 -0
  102. package/dist/transmissionVolumePbrWgpuMeshMaterialRenderer.d.ts.map +1 -0
  103. package/dist/transmissionVolumePbrWgpuMeshMaterialRenderer.js +74 -0
  104. package/dist/transmissionVolumePbrWgpuMeshMaterialRenderer.js.map +1 -0
  105. package/dist/unlitWgpuMeshMaterialRenderer.d.ts +4 -0
  106. package/dist/unlitWgpuMeshMaterialRenderer.d.ts.map +1 -0
  107. package/dist/unlitWgpuMeshMaterialRenderer.js +57 -0
  108. package/dist/unlitWgpuMeshMaterialRenderer.js.map +1 -0
  109. package/dist/vertexColorWgpuMeshMaterialRenderer.d.ts +4 -0
  110. package/dist/vertexColorWgpuMeshMaterialRenderer.d.ts.map +1 -0
  111. package/dist/vertexColorWgpuMeshMaterialRenderer.js +55 -0
  112. package/dist/vertexColorWgpuMeshMaterialRenderer.js.map +1 -0
  113. package/dist/wgpuClassicPrelude.d.ts +8 -0
  114. package/dist/wgpuClassicPrelude.d.ts.map +1 -0
  115. package/dist/wgpuClassicPrelude.js +319 -0
  116. package/dist/wgpuClassicPrelude.js.map +1 -0
  117. package/dist/wgpuCustomMaterialAbi.d.ts +3 -0
  118. package/dist/wgpuCustomMaterialAbi.d.ts.map +1 -0
  119. package/dist/wgpuCustomMaterialAbi.js +5 -0
  120. package/dist/wgpuCustomMaterialAbi.js.map +1 -0
  121. package/dist/wgpuDebugPrelude.d.ts +7 -0
  122. package/dist/wgpuDebugPrelude.d.ts.map +1 -0
  123. package/dist/wgpuDebugPrelude.js +133 -0
  124. package/dist/wgpuDebugPrelude.js.map +1 -0
  125. package/dist/wgpuEnvironmentCube.d.ts +4 -0
  126. package/dist/wgpuEnvironmentCube.d.ts.map +1 -0
  127. package/dist/wgpuEnvironmentCube.js +66 -0
  128. package/dist/wgpuEnvironmentCube.js.map +1 -0
  129. package/dist/wgpuEnvironmentIblBake.d.ts +4 -0
  130. package/dist/wgpuEnvironmentIblBake.d.ts.map +1 -0
  131. package/dist/wgpuEnvironmentIblBake.js +458 -0
  132. package/dist/wgpuEnvironmentIblBake.js.map +1 -0
  133. package/dist/wgpuEnvironmentSkybox.d.ts +3 -0
  134. package/dist/wgpuEnvironmentSkybox.d.ts.map +1 -0
  135. package/dist/wgpuEnvironmentSkybox.js +159 -0
  136. package/dist/wgpuEnvironmentSkybox.js.map +1 -0
  137. package/dist/wgpuMatcapPrelude.d.ts +7 -0
  138. package/dist/wgpuMatcapPrelude.d.ts.map +1 -0
  139. package/dist/wgpuMatcapPrelude.js +134 -0
  140. package/dist/wgpuMatcapPrelude.js.map +1 -0
  141. package/dist/wgpuMeshMaterialRegistry.d.ts +5 -0
  142. package/dist/wgpuMeshMaterialRegistry.d.ts.map +1 -0
  143. package/dist/wgpuMeshMaterialRegistry.js +29 -0
  144. package/dist/wgpuMeshMaterialRegistry.js.map +1 -0
  145. package/dist/wgpuMeshPipeline.d.ts +43 -0
  146. package/dist/wgpuMeshPipeline.d.ts.map +1 -0
  147. package/dist/wgpuMeshPipeline.js +1007 -0
  148. package/dist/wgpuMeshPipeline.js.map +1 -0
  149. package/dist/wgpuMeshUpload.d.ts +3 -0
  150. package/dist/wgpuMeshUpload.d.ts.map +1 -0
  151. package/dist/wgpuMeshUpload.js +58 -0
  152. package/dist/wgpuMeshUpload.js.map +1 -0
  153. package/dist/wgpuParticleEmitter3D.d.ts +4 -0
  154. package/dist/wgpuParticleEmitter3D.d.ts.map +1 -0
  155. package/dist/wgpuParticleEmitter3D.js +403 -0
  156. package/dist/wgpuParticleEmitter3D.js.map +1 -0
  157. package/dist/wgpuPbrPipelineCache.d.ts +4 -0
  158. package/dist/wgpuPbrPipelineCache.d.ts.map +1 -0
  159. package/dist/wgpuPbrPipelineCache.js +52 -0
  160. package/dist/wgpuPbrPipelineCache.js.map +1 -0
  161. package/dist/wgpuPbrPrelude.d.ts +7 -0
  162. package/dist/wgpuPbrPrelude.d.ts.map +1 -0
  163. package/dist/wgpuPbrPrelude.js +551 -0
  164. package/dist/wgpuPbrPrelude.js.map +1 -0
  165. package/dist/wgpuScene3DRuntime.d.ts +5 -0
  166. package/dist/wgpuScene3DRuntime.d.ts.map +1 -0
  167. package/dist/wgpuScene3DRuntime.js +81 -0
  168. package/dist/wgpuScene3DRuntime.js.map +1 -0
  169. package/dist/wgpuScene3DTestHelper.d.ts +14 -0
  170. package/dist/wgpuScene3DTestHelper.d.ts.map +1 -0
  171. package/dist/wgpuScene3DTestHelper.js +121 -0
  172. package/dist/wgpuScene3DTestHelper.js.map +1 -0
  173. package/dist/wgpuScene3DTime.d.ts +4 -0
  174. package/dist/wgpuScene3DTime.d.ts.map +1 -0
  175. package/dist/wgpuScene3DTime.js +11 -0
  176. package/dist/wgpuScene3DTime.js.map +1 -0
  177. package/dist/wgpuShadedModifierSnippet.d.ts +4 -0
  178. package/dist/wgpuShadedModifierSnippet.d.ts.map +1 -0
  179. package/dist/wgpuShadedModifierSnippet.js +18 -0
  180. package/dist/wgpuShadedModifierSnippet.js.map +1 -0
  181. package/dist/wgpuShadedPrelude.d.ts +16 -0
  182. package/dist/wgpuShadedPrelude.d.ts.map +1 -0
  183. package/dist/wgpuShadedPrelude.js +625 -0
  184. package/dist/wgpuShadedPrelude.js.map +1 -0
  185. package/dist/wgpuShadowMap.d.ts +4 -0
  186. package/dist/wgpuShadowMap.d.ts.map +1 -0
  187. package/dist/wgpuShadowMap.js +155 -0
  188. package/dist/wgpuShadowMap.js.map +1 -0
  189. package/dist/wgpuSkinPalette.d.ts +7 -0
  190. package/dist/wgpuSkinPalette.d.ts.map +1 -0
  191. package/dist/wgpuSkinPalette.js +173 -0
  192. package/dist/wgpuSkinPalette.js.map +1 -0
  193. package/dist/wgpuToonPrelude.d.ts +8 -0
  194. package/dist/wgpuToonPrelude.d.ts.map +1 -0
  195. package/dist/wgpuToonPrelude.js +192 -0
  196. package/dist/wgpuToonPrelude.js.map +1 -0
  197. package/dist/wgpuUnlitPrelude.d.ts +9 -0
  198. package/dist/wgpuUnlitPrelude.d.ts.map +1 -0
  199. package/dist/wgpuUnlitPrelude.js +142 -0
  200. package/dist/wgpuUnlitPrelude.js.map +1 -0
  201. package/dist/wgpuWireframePrelude.d.ts +6 -0
  202. package/dist/wgpuWireframePrelude.d.ts.map +1 -0
  203. package/dist/wgpuWireframePrelude.js +77 -0
  204. package/dist/wgpuWireframePrelude.js.map +1 -0
  205. package/dist/wgpuWireframeUpload.d.ts +3 -0
  206. package/dist/wgpuWireframeUpload.d.ts.map +1 -0
  207. package/dist/wgpuWireframeUpload.js +68 -0
  208. package/dist/wgpuWireframeUpload.js.map +1 -0
  209. package/dist/wireframeWgpuMeshMaterialRenderer.d.ts +4 -0
  210. package/dist/wireframeWgpuMeshMaterialRenderer.d.ts.map +1 -0
  211. package/dist/wireframeWgpuMeshMaterialRenderer.js +69 -0
  212. package/dist/wireframeWgpuMeshMaterialRenderer.js.map +1 -0
  213. package/package.json +57 -0
  214. package/src/anisotropyPbrWgpuMeshMaterialRenderer.test.ts +90 -0
  215. package/src/blinnPhongWgpuMeshMaterialRenderer.test.ts +82 -0
  216. package/src/clearcoatPbrWgpuMeshMaterialRenderer.test.ts +90 -0
  217. package/src/customShaderWgpuMeshMaterialRenderer.test.ts +207 -0
  218. package/src/depthWgpuMeshMaterialRenderer.test.ts +69 -0
  219. package/src/drawWgpuScene3D.test.ts +247 -0
  220. package/src/emissiveWgpuMeshMaterialRenderer.test.ts +64 -0
  221. package/src/enableWgpuScene3DCustomShaderGuards.test.ts +73 -0
  222. package/src/enableWgpuScene3DForwardLightSelectionGuards.test.ts +39 -0
  223. package/src/explainWgpuScene3DForwardLightSelection.test.ts +15 -0
  224. package/src/iridescencePbrWgpuMeshMaterialRenderer.test.ts +90 -0
  225. package/src/lambertWgpuMeshMaterialRenderer.test.ts +77 -0
  226. package/src/matcapWgpuMeshMaterialRenderer.test.ts +69 -0
  227. package/src/normalWgpuMeshMaterialRenderer.test.ts +69 -0
  228. package/src/phongWgpuMeshMaterialRenderer.test.ts +79 -0
  229. package/src/prepareWgpuScene3DForwardLights.test.ts +84 -0
  230. package/src/registerStandardPbrWgpuMaterial.test.ts +15 -0
  231. package/src/shadedWgpuMeshMaterialRenderer.test.ts +63 -0
  232. package/src/sheenPbrWgpuMeshMaterialRenderer.test.ts +87 -0
  233. package/src/specularGlossinessPbrWgpuMeshMaterialRenderer.test.ts +100 -0
  234. package/src/specularPbrWgpuMeshMaterialRenderer.test.ts +90 -0
  235. package/src/standardPbrWgpuMeshMaterialRenderer.test.ts +172 -0
  236. package/src/subsurfacePbrWgpuMeshMaterialRenderer.test.ts +90 -0
  237. package/src/toonWgpuMeshMaterialRenderer.test.ts +89 -0
  238. package/src/transmissionVolumePbrWgpuMeshMaterialRenderer.test.ts +97 -0
  239. package/src/unlitWgpuMeshMaterialRenderer.test.ts +94 -0
  240. package/src/vertexColorWgpuMeshMaterialRenderer.test.ts +62 -0
  241. package/src/wgpuClassicPrelude.test.ts +176 -0
  242. package/src/wgpuDebugPrelude.test.ts +79 -0
  243. package/src/wgpuEnvironmentCube.test.ts +86 -0
  244. package/src/wgpuEnvironmentIblBake.test.ts +79 -0
  245. package/src/wgpuEnvironmentSkybox.test.ts +56 -0
  246. package/src/wgpuMatcapPrelude.test.ts +70 -0
  247. package/src/wgpuMeshMaterialRegistry.test.ts +55 -0
  248. package/src/wgpuMeshPipeline.test.ts +844 -0
  249. package/src/wgpuMeshUpload.test.ts +177 -0
  250. package/src/wgpuParticleEmitter3D.test.ts +200 -0
  251. package/src/wgpuPbrPipelineCache.test.ts +67 -0
  252. package/src/wgpuPbrPrelude.test.ts +162 -0
  253. package/src/wgpuScene3DRuntime.test.ts +35 -0
  254. package/src/wgpuScene3DTime.test.ts +20 -0
  255. package/src/wgpuShadedModifierSnippet.test.ts +33 -0
  256. package/src/wgpuShadedPrelude.test.ts +394 -0
  257. package/src/wgpuShadowMap.test.ts +169 -0
  258. package/src/wgpuSkinPalette.test.ts +88 -0
  259. package/src/wgpuToonPrelude.test.ts +93 -0
  260. package/src/wgpuUnlitPrelude.test.ts +102 -0
  261. package/src/wgpuWireframePrelude.test.ts +54 -0
  262. package/src/wgpuWireframeUpload.test.ts +36 -0
  263. package/src/wireframeWgpuMeshMaterialRenderer.test.ts +69 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuMatcapPrelude.d.ts","sourceRoot":"","sources":["../src/wgpuMatcapPrelude.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EAElB,eAAe,EAChB,MAAM,iBAAiB,CAAC;AAmCzB,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EACtC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,QAAQ,CAAC,WAAW,CAAC,EAC3B,WAAW,EAAE,MAAM,GAClB,YAAY,CAkCd;AAID,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,QAAQ,CAAC,mBAAmB,CAAC,GAAG,MAAM,CAEnF;AAKD,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,eAAe,EACtB,GAAG,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EAClC,MAAM,EAAE,gBAAgB,EACxB,OAAO,UAAQ,GACd,kBAAkB,CAiBpB;AAID,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,eAAe,EACtB,GAAG,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EAClC,MAAM,EAAE,gBAAgB,GACvB,kBAAkB,CAIpB;AAID,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,QAAQ,CAAC,mBAAmB,CAAC,GAAG,MAAM,CAO1F"}
@@ -0,0 +1,134 @@
1
+ import { getWgpuRenderStateRuntime } from '@flighthq/render-wgpu';
2
+ import { createWgpuMeshPipeline, ensureWgpuPlaceholderTextureView, ensureWgpuScene3DPipeline, stashWgpuUvTransform, WGPU_MESH_PRELUDE_WGSL, } from './wgpuMeshPipeline';
3
+ import { getWgpuScene3DRuntime } from './wgpuScene3DRuntime';
4
+ // The shared Wgpu matcap prelude — the WGSL mirror of scene-gl's glMatcapPrelude. One module for the
5
+ // lighting-independent Matcap (material-capture) material: a matcap is a prebaked-lit sphere texture
6
+ // sampled by the VIEW-SPACE normal projected to 2D (uv = viewNormal.xy * 0.5 + 0.5), giving full
7
+ // stylized "lighting" with no scene lights. The output is LINEAR — the sampled matcap rgb would be
8
+ // sRgb-decoded in the shader and multiplied by the linear `tint` (already sRgb-decoded on the CPU via
9
+ // unpackColorToLinear, so the shader never decodes the tint again). The effect pipeline owns
10
+ // tonemap/gamma. WGSL has no preprocessor, so each feature flag is a `const … : bool` the pipeline
11
+ // compiler folds (matcap / alpha-mask variants are const-branches of one module, never separate files).
12
+ //
13
+ // NOTE ON THE MATCAP TEXTURE / VIEW MATRIX: like the StandardPbr and Unlit wgpu paths, real map
14
+ // textures are not yet sampled on wgpu (`hasMatcap` stays false; the bind group binds the shared
15
+ // placeholder), so the surface renders as the tint alone. The matcap lookup additionally needs the
16
+ // camera VIEW matrix to rotate the world-space normal into view space, but the shared Frame uniform
17
+ // only carries viewProjection + cameraPosition, not the view matrix. The WGSL therefore derives a
18
+ // view-space-normal *approximation* by facing the world normal toward the camera (via
19
+ // frame.cameraPosition), kept present-but-unused behind the false `hasMatcap`. Full matcap sampling —
20
+ // the true view-space normal and the sampled texture — lands together with wgpu texture upload and a
21
+ // view matrix in the Frame uniform. Both mirror documented gaps on the GL side (which works) and let
22
+ // the wgpu module stay structurally faithful and compiling in the meantime.
23
+ // Ensures (and caches per material reference) the matcap Material bind group — a uniform buffer + the
24
+ // shared sampler + the placeholder matcap texture — and rewrites its uniform with this surface's linear
25
+ // tint and alpha cutoff. Mirrors scene-gl's bindGlMatcapSurface. Returns the bind group for the caller
26
+ // to set at group(2).
27
+ export function bindWgpuMatcapSurface(state, pipeline, materialKey, tint, alphaCutoff) {
28
+ const scene = getWgpuScene3DRuntime(state);
29
+ let binding = scene.materialBindGroups.get(materialKey);
30
+ if (binding === undefined) {
31
+ const stateRuntime = getWgpuRenderStateRuntime(state);
32
+ const buffer = state.device.createBuffer({
33
+ size: MATCAP_UNIFORM_BYTES,
34
+ usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,
35
+ });
36
+ const bindGroup = state.device.createBindGroup({
37
+ layout: pipeline.materialBindGroupLayout,
38
+ entries: [
39
+ { binding: 0, resource: { buffer } },
40
+ { binding: 1, resource: stateRuntime.linearSampler },
41
+ { binding: 2, resource: ensureWgpuPlaceholderTextureView(state) },
42
+ ],
43
+ });
44
+ binding = { bindGroup, buffer };
45
+ scene.materialBindGroups.set(materialKey, binding);
46
+ }
47
+ _scratch[0] = tint[0];
48
+ _scratch[1] = tint[1];
49
+ _scratch[2] = tint[2];
50
+ _scratch[3] = tint[3];
51
+ _scratch[4] = alphaCutoff;
52
+ _scratch[5] = 0;
53
+ _scratch[6] = 0;
54
+ _scratch[7] = 0;
55
+ state.device.queue.writeBuffer(binding.buffer, 0, _scratch.buffer, 0, MATCAP_UNIFORM_BYTES);
56
+ // Matcap samples by view-space normal, not a uv map, so stash identity to keep the shared Draw uniform
57
+ // authoritative — a prior tiled material's transform must not persist into this bind.
58
+ stashWgpuUvTransform(state, null);
59
+ return binding.bindGroup;
60
+ }
61
+ // A short, stable, order-independent string identity for a matcap define key, used as the pipeline-
62
+ // cache key (combined with the color format). Two keys with the same flags share a compiled pipeline.
63
+ export function buildWgpuMatcapDefineKey(key) {
64
+ return `${key.alphaMaskEnabled ? 'm' : '-'}${key.doubleSided ? 'd' : '-'}${key.hasMatcap ? 't' : '-'}`;
65
+ }
66
+ // Compiles the matcap module for a define key and builds the render pipeline for the given color
67
+ // format, with the group(2) material bind-group layout (uniform + sampler + the matcap texture). Pure
68
+ // GPU work — no caching — used by ensureWgpuMatcapPipeline.
69
+ export function compileWgpuMatcapPipeline(state, key, format, blended = false) {
70
+ const device = state.device;
71
+ const module = device.createShaderModule({ code: getWgpuMatcapModuleSourceForKey(key) });
72
+ const materialBindGroupLayout = device.createBindGroupLayout({
73
+ entries: [
74
+ { binding: 0, visibility: GPUShaderStage.FRAGMENT, buffer: { type: 'uniform' } },
75
+ { binding: 1, visibility: GPUShaderStage.FRAGMENT, sampler: { type: 'filtering' } },
76
+ { binding: 2, visibility: GPUShaderStage.FRAGMENT, texture: { sampleType: 'float' } },
77
+ ],
78
+ });
79
+ return createWgpuMeshPipeline(state, {
80
+ blended,
81
+ doubleSided: key.doubleSided,
82
+ format,
83
+ materialBindGroupLayout,
84
+ module,
85
+ });
86
+ }
87
+ // Resolves the matcap pipeline for a define key + color format, compiling and caching it on first use
88
+ // through the shared scene pipeline cache under the `matcap:` family namespace.
89
+ export function ensureWgpuMatcapPipeline(state, key, format) {
90
+ return ensureWgpuScene3DPipeline(state, `matcap:${format}|${buildWgpuMatcapDefineKey(key)}`, (blended) => compileWgpuMatcapPipeline(state, key, format, blended));
91
+ }
92
+ // The full WGSL module source for a define key: the const-flag block + the shared mesh prelude (Frame/
93
+ // Draw/vs_main/srgbToLinear) + the matcap material block + fs_main.
94
+ export function getWgpuMatcapModuleSourceForKey(key) {
95
+ return (`const ALPHA_MASK : bool = ${key.alphaMaskEnabled ? 'true' : 'false'};\n` +
96
+ `const HAS_MATCAP : bool = ${key.hasMatcap ? 'true' : 'false'};\n` +
97
+ WGPU_MESH_PRELUDE_WGSL +
98
+ MATCAP_WGSL_BODY);
99
+ }
100
+ // Matcap material uniform: tint vec4f (16) + params vec4f (16) = 32 bytes / 8 floats. tint is linear
101
+ // rgba; params.x = alphaCutoff.
102
+ const MATCAP_UNIFORM_BYTES = 32;
103
+ const MATCAP_WGSL_BODY = /* wgsl */ `
104
+ struct MatcapMaterial {
105
+ tint : vec4f, // linear rgba
106
+ params : vec4f, // x = alphaCutoff
107
+ };
108
+
109
+ @group(2) @binding(0) var<uniform> material : MatcapMaterial;
110
+ @group(2) @binding(1) var materialSampler : sampler;
111
+ @group(2) @binding(2) var matcapTexture : texture_2d<f32>;
112
+
113
+ @fragment fn fs_main(in : VertexOutput) -> @location(0) vec4f {
114
+ var color = material.tint;
115
+ if (HAS_MATCAP) {
116
+ // View-space-normal approximation: the shared Frame uniform carries no view matrix, so face the
117
+ // world normal toward the camera and project to 2D for the matcap lookup (uv = n.xy * 0.5 + 0.5).
118
+ // Present-but-unused while hasMatcap is false; the true view-space normal arrives with a view
119
+ // matrix in Frame + wgpu texture upload.
120
+ let worldNormal = normalize(in.worldNormal);
121
+ let viewDir = normalize(frame.cameraPosition.xyz - in.worldPosition);
122
+ let viewNormal = normalize(reflect(-viewDir, worldNormal));
123
+ let matcapUv = viewNormal.xy * 0.5 + 0.5;
124
+ let sampled = textureSample(matcapTexture, materialSampler, matcapUv);
125
+ color = vec4f(color.rgb * srgbToLinear(sampled.rgb), color.a * sampled.a);
126
+ }
127
+ if (ALPHA_MASK && color.a < material.params.x) {
128
+ discard;
129
+ }
130
+ return vec4f(color.rgb, color.a * in.objectAlpha);
131
+ }
132
+ `;
133
+ const _scratch = new Float32Array(MATCAP_UNIFORM_BYTES / 4);
134
+ //# sourceMappingURL=wgpuMatcapPrelude.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuMatcapPrelude.js","sourceRoot":"","sources":["../src/wgpuMatcapPrelude.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { Kind, Material, WgpuMeshMaterialRenderer, WgpuRenderState } from '@flighthq/types';
2
+ export declare function getWgpuMeshMaterialRenderer(state: WgpuRenderState, kind: Kind): WgpuMeshMaterialRenderer | null;
3
+ export declare function registerWgpuMeshMaterialRenderer(state: WgpuRenderState, kind: Kind, renderer: WgpuMeshMaterialRenderer): void;
4
+ export declare function resolveWgpuMeshMaterialRenderer(state: WgpuRenderState, material: Readonly<Material> | null): WgpuMeshMaterialRenderer | null;
5
+ //# sourceMappingURL=wgpuMeshMaterialRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuMeshMaterialRegistry.d.ts","sourceRoot":"","sources":["../src/wgpuMeshMaterialRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAQjG,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,GAAG,wBAAwB,GAAG,IAAI,CAE/G;AAMD,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,wBAAwB,GACjC,IAAI,CAEN;AAMD,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI,GAClC,wBAAwB,GAAG,IAAI,CAOjC"}
@@ -0,0 +1,29 @@
1
+ import { DefaultMaterialKind } from '@flighthq/types';
2
+ import { getWgpuScene3DRuntime } from './wgpuScene3DRuntime';
3
+ // Returns the 3D mesh-material renderer registered for a kind on this state, or null. The 3D scene
4
+ // analog of getWgpuMaterialRenderer; reads scene-wgpu's own per-state registry
5
+ // (sceneMeshMaterialRegistry), distinct from the 2D materialRendererMap.
6
+ export function getWgpuMeshMaterialRenderer(state, kind) {
7
+ return getWgpuScene3DRuntime(state).materialRegistry.get(kind) ?? null;
8
+ }
9
+ // Registers a 3D mesh-material renderer against a material kind on this state. Opt-in: drawScene3D only
10
+ // draws subsets whose material kind (or DefaultMaterialKind) has a renderer here. Call
11
+ // registerStandardPbrWgpuMaterial for the built-in StandardPbr path. Mirrors registerWgpuMaterialRenderer
12
+ // but writes scene-wgpu's separate 3D registry.
13
+ export function registerWgpuMeshMaterialRenderer(state, kind, renderer) {
14
+ getWgpuScene3DRuntime(state).materialRegistry.set(kind, renderer);
15
+ }
16
+ // Resolves a mesh subset's material to its registered 3D renderer: by the material's kind, else the
17
+ // renderer registered for DefaultMaterialKind, else null. drawScene3D skips a subset whose material
18
+ // resolves to null (no built-in fallback — every material, including the default, enters only through
19
+ // registration). Mirrors resolveWgpuMaterialRenderer over the 3D registry.
20
+ export function resolveWgpuMeshMaterialRenderer(state, material) {
21
+ const registry = getWgpuScene3DRuntime(state).materialRegistry;
22
+ if (material !== null) {
23
+ const renderer = registry.get(material.kind);
24
+ if (renderer !== undefined)
25
+ return renderer;
26
+ }
27
+ return registry.get(DefaultMaterialKind) ?? null;
28
+ }
29
+ //# sourceMappingURL=wgpuMeshMaterialRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuMeshMaterialRegistry.js","sourceRoot":"","sources":["../src/wgpuMeshMaterialRegistry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,mGAAmG;AACnG,+EAA+E;AAC/E,yEAAyE;AACzE,MAAM,UAAU,2BAA2B,CAAC,KAAsB,EAAE,IAAU;IAC5E,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AACzE,CAAC;AAED,wGAAwG;AACxG,uFAAuF;AACvF,0GAA0G;AAC1G,gDAAgD;AAChD,MAAM,UAAU,gCAAgC,CAC9C,KAAsB,EACtB,IAAU,EACV,QAAkC;IAElC,qBAAqB,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACpE,CAAC;AAED,oGAAoG;AACpG,oGAAoG;AACpG,sGAAsG;AACtG,2EAA2E;AAC3E,MAAM,UAAU,+BAA+B,CAC7C,KAAsB,EACtB,QAAmC;IAEnC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC;IAC/D,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,QAAQ,CAAC;IAC9C,CAAC;IACD,OAAO,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,IAAI,CAAC;AACnD,CAAC"}
@@ -0,0 +1,43 @@
1
+ import type { WgpuMaterialBinding, WgpuMeshPipeline, WgpuScene3DLayouts, Camera3D, MeshGeometry, Scene3DLightBlock, Scene3DRenderProxy, Texture, TextureLike, VideoTexture, WgpuRenderState } from '@flighthq/types';
2
+ import type { WgpuSkinningAdapter } from '@flighthq/types';
3
+ export declare function beginWgpuMeshDraw(state: WgpuRenderState, pipeline: Readonly<WgpuMeshPipeline>): void;
4
+ export declare function buildWgpuMaterialBindGroup(state: WgpuRenderState, layout: GPUBindGroupLayout, buffer: GPUBuffer, sampler: GPUSampler, views: readonly GPUTextureView[]): GPUBindGroup;
5
+ export declare function buildWgpuPerMapMaterialBindGroup(state: WgpuRenderState, layout: GPUBindGroupLayout, buffer: GPUBuffer, samplers: readonly GPUSampler[], views: readonly GPUTextureView[]): GPUBindGroup;
6
+ export declare function createWgpuMeshPipeline(state: WgpuRenderState, options: Readonly<{
7
+ blended?: boolean;
8
+ doubleSided: boolean;
9
+ extraBindGroupLayout?: GPUBindGroupLayout;
10
+ format: GPUTextureFormat;
11
+ iblBindGroupLayout?: GPUBindGroupLayout;
12
+ materialBindGroupLayout: GPUBindGroupLayout;
13
+ module: GPUShaderModule;
14
+ pbrSampleBindGroupLayout?: GPUBindGroupLayout;
15
+ shadowBindGroupLayout?: GPUBindGroupLayout;
16
+ skinned?: boolean;
17
+ topology?: GPUPrimitiveTopology;
18
+ }>): WgpuMeshPipeline;
19
+ export declare function drawWgpuMeshSubset(state: WgpuRenderState, proxy: Readonly<Scene3DRenderProxy>, geometry: Readonly<MeshGeometry>): void;
20
+ export declare function ensureWgpuFrameBindGroup(state: WgpuRenderState): GPUBindGroup;
21
+ export declare function ensureWgpuIblSampleBindGroup(state: WgpuRenderState): GPUBindGroup;
22
+ export declare function ensureWgpuIblSampleLayout(state: WgpuRenderState): GPUBindGroupLayout;
23
+ export declare function ensureWgpuMaterialBinding(state: WgpuRenderState, key: object, layout: GPUBindGroupLayout, uniformByteSize: number, sampler: GPUSampler, views: readonly GPUTextureView[]): WgpuMaterialBinding;
24
+ export declare function ensureWgpuPbrSampleBindGroup(state: WgpuRenderState): GPUBindGroup;
25
+ export declare function ensureWgpuPbrSampleLayout(state: WgpuRenderState): GPUBindGroupLayout;
26
+ export declare function ensureWgpuPerMapMaterialBinding(state: WgpuRenderState, key: object, layout: GPUBindGroupLayout, uniformByteSize: number, samplers: readonly GPUSampler[], views: readonly GPUTextureView[]): WgpuMaterialBinding;
27
+ export declare function ensureWgpuPlaceholderTextureView(state: WgpuRenderState): GPUTextureView;
28
+ export declare function ensureWgpuScene3DLayouts(state: WgpuRenderState): WgpuScene3DLayouts;
29
+ export declare function ensureWgpuScene3DPipeline<T extends WgpuMeshPipeline>(state: WgpuRenderState, key: string, compile: (blended: boolean, skinned: boolean) => T): T;
30
+ export declare function ensureWgpuShadowSampleBindGroup(state: WgpuRenderState): GPUBindGroup;
31
+ export declare function ensureWgpuShadowSampleLayout(state: WgpuRenderState): GPUBindGroupLayout;
32
+ export declare function getWgpuMaterialSampler(state: WgpuRenderState, texture: Readonly<Texture | VideoTexture> | null): GPUSampler;
33
+ export declare function getWgpuMeshPreludeWgsl(skinned: boolean, skinning?: Readonly<WgpuSkinningAdapter> | null): string;
34
+ export declare function isWgpuMaterialBindGroupRebuildNeeded(binding: Readonly<WgpuMaterialBinding>, sampler: GPUSampler, views: readonly GPUTextureView[]): boolean;
35
+ export declare function isWgpuTextureReady(texture: Readonly<Texture> | null): boolean;
36
+ export declare function resolveWgpuMaterialTextureView(state: WgpuRenderState, texture: Readonly<Texture> | null): GPUTextureView;
37
+ export declare function stashWgpuUvTransform(state: WgpuRenderState, texture: Readonly<TextureLike | VideoTexture> | null): void;
38
+ export declare function wgpuPerMapMaterialBindGroupNeedsRebuild(binding: Readonly<WgpuMaterialBinding>, samplers: readonly GPUSampler[], views: readonly GPUTextureView[]): boolean;
39
+ export declare function writeWgpuDrawUniform(state: WgpuRenderState, proxy: Readonly<Scene3DRenderProxy>): GPUBindGroup;
40
+ export declare const WGPU_MESH_PRELUDE_WGSL = "\nconst PI : f32 = 3.14159265359;\nconst MAX_FORWARD_LIGHTS : u32 = 4u;\n\nstruct Frame {\n viewProjection : mat4x4f,\n cameraPosition : vec4f,\n lightDirection : vec4f, // xyz = directional light travel direction; w = directionalCount\n directionalRadiance : vec4f, // rgb = linear premultiplied radiance\n ambientRadiance : vec4f, // rgb = linear premultiplied radiance; w = ambientCount\n view : mat4x4f, // camera view matrix; rotates world normals into view space (matcap)\n // Punctual light arrays \u2014 layout mirrors Scene3DLightBlock.data (packScene3DLightBlock).\n // point[i] = pointLights[i*2+0]={pos.xyz,range}, [i*2+1]={radiance.rgb,invSqrRange}\n // spot[i] = spotLights[i*4+0..1] as point, [i*4+2]={dir.xyz,_}, [i*4+3]={cosInner,cosOuter,_,_}\n // hemisphere[i] = hemisphereLights[i*3+0]={sky.rgb,_}, [i*3+1]={ground.rgb,_}, [i*3+2]={up.xyz,_}\n pointLights : array<vec4f, 8>, // MAX_FORWARD_LIGHTS * 2\n spotLights : array<vec4f, 16>, // MAX_FORWARD_LIGHTS * 4\n hemisphereLights : array<vec4f, 12>, // MAX_FORWARD_LIGHTS * 3\n punctualCounts : vec4f, // x = pointCount, y = spotCount, z = hemisphereCount\n};\n\nstruct Draw {\n world : mat4x4f,\n normalMatrix : mat3x3f,\n uvTransform : mat3x3f, // KHR_texture_transform of the material's primary map (identity when unused)\n params : vec4f, // x = resolved object alpha\n};\n\n@group(0) @binding(0) var<uniform> frame : Frame;\n@group(1) @binding(0) var<uniform> draw : Draw;\n\nstruct VertexOutput {\n @builtin(position) clipPosition : vec4f,\n @location(0) worldPosition : vec3f,\n @location(1) worldNormal : vec3f,\n @location(2) worldTangent : vec4f,\n @location(3) uv : vec2f,\n @location(4) @interpolate(flat) objectAlpha : f32,\n};\n\n@vertex fn vs_main(\n @location(0) position : vec3f,\n @location(1) normal : vec3f,\n @location(2) tangent : vec4f,\n @location(3) uv : vec2f,\n) -> VertexOutput {\n var out : VertexOutput;\n var localPosition = vec4f(position, 1.0);\n var localNormal = normal;\n var localTangent = tangent.xyz;\n let world = draw.world * localPosition;\n out.worldPosition = world.xyz;\n out.clipPosition = frame.viewProjection * world;\n out.worldNormal = draw.normalMatrix * localNormal;\n out.worldTangent = vec4f(draw.normalMatrix * localTangent, tangent.w);\n // Apply the material's KHR_texture_transform to the uv. draw.uvTransform is identity for an untiled\n // material (writeWgpuDrawUniform's default), so this is a no-op there \u2014 applied unconditionally rather\n // than behind a pipeline const because this vs_main is shared by every family (classic/unlit/toon/\n // matcap/debug/wireframe) and a const would have to thread through all of them; a per-vertex mat3\n // multiply is negligible. The scene-gl mirror gates the equivalent branch via its #ifdef variant.\n out.uv = (draw.uvTransform * vec3f(uv, 1.0)).xy;\n out.objectAlpha = draw.params.x;\n return out;\n}\n\n// sRgb albedo texels are gamma-encoded; decode to linear before lighting.\nfn srgbToLinear(c : vec3f) -> vec3f {\n let lo = c / 12.92;\n let hi = pow((c + vec3f(0.055)) / 1.055, vec3f(2.4));\n return select(lo, hi, c > vec3f(0.04045));\n}\n";
41
+ export declare function writeWgpuFrameUniform(state: WgpuRenderState, camera: Readonly<Camera3D>, lights: Readonly<Scene3DLightBlock>): void;
42
+ export declare const SHADOW_DEPTH_FORMAT: GPUTextureFormat;
43
+ //# sourceMappingURL=wgpuMeshPipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wgpuMeshPipeline.d.ts","sourceRoot":"","sources":["../src/wgpuMeshPipeline.ts"],"names":[],"mappings":"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"}