@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,4 @@
1
+ import type { WgpuMeshMaterialRenderer, WgpuRenderState } from '@flighthq/types';
2
+ export declare const anisotropyPbrWgpuMeshMaterialRenderer: WgpuMeshMaterialRenderer;
3
+ export declare function registerAnisotropyPbrWgpuMaterial(state: WgpuRenderState): void;
4
+ //# sourceMappingURL=anisotropyPbrWgpuMeshMaterialRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anisotropyPbrWgpuMeshMaterialRenderer.d.ts","sourceRoot":"","sources":["../src/anisotropyPbrWgpuMeshMaterialRenderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAOV,wBAAwB,EACxB,eAAe,EAChB,MAAM,iBAAiB,CAAC;AAyBzB,eAAO,MAAM,qCAAqC,EAAE,wBAmCnD,CAAC;AAIF,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAE9E"}
@@ -0,0 +1,52 @@
1
+ import { getWgpuRenderStateRuntime } from '@flighthq/render-wgpu';
2
+ import { AnisotropyPbrMaterialKind } from '@flighthq/types';
3
+ import { buildWgpuPbrStandardDefineKey, ensureWgpuPbrMaterialBindGroup, getWgpuPbrMaterialScratch, writeWgpuPbrMaterialUniform, writeWgpuPbrStandardBlock, } from './standardPbrWgpuMeshMaterialRenderer';
4
+ import { registerWgpuMeshMaterialRenderer } from './wgpuMeshMaterialRegistry';
5
+ import { beginWgpuMeshDraw, drawWgpuMeshSubset, writeWgpuFrameUniform } from './wgpuMeshPipeline';
6
+ import { ensureWgpuPbrPipeline } from './wgpuPbrPipelineCache';
7
+ // The built-in Anisotropy (KHR_materials_anisotropy) forward-lit mesh-material renderer — the WGSL
8
+ // mirror of anisotropyPbrGlMeshMaterialRenderer. Anisotropy stretches the specular highlight along the
9
+ // mesh tangent direction — brushed metal, hair, vinyl — by splitting roughness into along-tangent and
10
+ // across-tangent axes and evaluating an anisotropic GGX distribution (Burley) in the shader's rotated
11
+ // tangent frame. It REQUIRES mesh tangents, which the canonical PBR vertex record already carries
12
+ // (location 2). bind builds the standard define key from `material.standard` + the surface trailer, sets
13
+ // the ANISOTROPY flag, selects/compiles that pipeline variant for the current color format, writes the
14
+ // shared Frame uniform, then writes the base block + the anisotropy strength/rotation into the one
15
+ // MaterialBlock uniform and binds it at group(2). The lobe lives behind `const ANISOTROPY` in the PBR
16
+ // uber-shader. The anisotropy direction map is reserved by the descriptor but NOT sampled on wgpu yet
17
+ // (maps deferred). See registerAnisotropyPbrWgpuMaterial.
18
+ export const anisotropyPbrWgpuMeshMaterialRenderer = {
19
+ bind(state, material, lights, camera) {
20
+ const stateRuntime = getWgpuRenderStateRuntime(state);
21
+ const pass = stateRuntime.renderPass;
22
+ if (pass === null)
23
+ return;
24
+ const anisotropy = material;
25
+ const standard = anisotropy !== null ? anisotropy.standard : null;
26
+ const key = buildWgpuPbrStandardDefineKey(standard, anisotropy);
27
+ key.anisotropyEnabled = true;
28
+ const format = stateRuntime.currentColorFormat ?? state.format;
29
+ const pipeline = ensureWgpuPbrPipeline(state, key, format);
30
+ writeWgpuFrameUniform(state, camera, lights);
31
+ const binding = ensureWgpuPbrMaterialBindGroup(state, pipeline, anisotropy ?? FALLBACK_MATERIAL, standard);
32
+ const out = getWgpuPbrMaterialScratch();
33
+ writeWgpuPbrStandardBlock(out, standard, anisotropy !== null ? anisotropy.alphaCutoff : 0.5);
34
+ out.fill(0, 16);
35
+ // anisotropy group (floats 24..25): strength, rotation (radians).
36
+ out[24] = anisotropy !== null ? anisotropy.anisotropyStrength : 0;
37
+ out[25] = anisotropy !== null ? anisotropy.anisotropyRotation : 0;
38
+ writeWgpuPbrMaterialUniform(state, binding);
39
+ beginWgpuMeshDraw(state, pipeline);
40
+ pass.setBindGroup(2, binding.bindGroup);
41
+ },
42
+ draw(state, proxy, geometry) {
43
+ drawWgpuMeshSubset(state, proxy, geometry);
44
+ },
45
+ };
46
+ // Installs the built-in Anisotropy renderer for AnisotropyPbrMaterialKind on this state. Opt-in (no
47
+ // top-level side effect): drawScene3D only draws Anisotropy subsets once this is called.
48
+ export function registerAnisotropyPbrWgpuMaterial(state) {
49
+ registerWgpuMeshMaterialRenderer(state, AnisotropyPbrMaterialKind, anisotropyPbrWgpuMeshMaterialRenderer);
50
+ }
51
+ const FALLBACK_MATERIAL = {};
52
+ //# sourceMappingURL=anisotropyPbrWgpuMeshMaterialRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anisotropyPbrWgpuMeshMaterialRenderer.js","sourceRoot":"","sources":["../src/anisotropyPbrWgpuMeshMaterialRenderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { WgpuMeshMaterialRenderer, WgpuRenderState } from '@flighthq/types';
2
+ export declare const blinnPhongWgpuMeshMaterialRenderer: WgpuMeshMaterialRenderer;
3
+ export declare function registerBlinnPhongWgpuMaterial(state: WgpuRenderState): void;
4
+ //# sourceMappingURL=blinnPhongWgpuMeshMaterialRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blinnPhongWgpuMeshMaterialRenderer.d.ts","sourceRoot":"","sources":["../src/blinnPhongWgpuMeshMaterialRenderer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAQV,wBAAwB,EACxB,eAAe,EAEhB,MAAM,iBAAiB,CAAC;AAezB,eAAO,MAAM,kCAAkC,EAAE,wBA4ChD,CAAC;AAKF,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAE3E"}
@@ -0,0 +1,66 @@
1
+ import { unpackColorToLinear } from '@flighthq/color';
2
+ import { getWgpuRenderStateRuntime } from '@flighthq/render-wgpu';
3
+ import { BlinnPhongMaterialKind } from '@flighthq/types';
4
+ import { bindWgpuClassicSurface, ensureWgpuClassicPipeline } from './wgpuClassicPrelude';
5
+ import { registerWgpuMeshMaterialRenderer } from './wgpuMeshMaterialRegistry';
6
+ import { beginWgpuMeshDraw, drawWgpuMeshSubset, isWgpuTextureReady, writeWgpuFrameUniform } from './wgpuMeshPipeline';
7
+ // The built-in classic BlinnPhong forward-lit mesh-material renderer (WgpuMeshMaterialRenderer for
8
+ // BlinnPhongMaterialKind) — the WGSL mirror of blinnPhongGlMeshMaterialRenderer. Lambert diffuse plus
9
+ // a half-vector specular lobe (cheaper, smoother highlights than reflection-vector Phong): bind selects
10
+ // the classic uber-shader's `blinnphong` variant for the material's alpha mode + color format, writes
11
+ // the shared Frame uniform (camera position AND view-projection, since the specular term is view-
12
+ // dependent, plus the packed light block), binds the pipeline + Frame group (beginWgpuMeshDraw), then
13
+ // binds the material's linear diffuse + specular colors and shininess at group(2). draw issues the
14
+ // indexed draw. See registerBlinnPhongWgpuMaterial to install it.
15
+ export const blinnPhongWgpuMeshMaterialRenderer = {
16
+ bind(state, material, lights, camera) {
17
+ const stateRuntime = getWgpuRenderStateRuntime(state);
18
+ const pass = stateRuntime.renderPass;
19
+ if (pass === null)
20
+ return;
21
+ const blinnPhong = material;
22
+ const format = stateRuntime.currentColorFormat ?? state.format;
23
+ const pipeline = ensureWgpuClassicPipeline(state, defineKeyForMaterial(blinnPhong), format);
24
+ writeWgpuFrameUniform(state, camera, lights);
25
+ let group;
26
+ if (blinnPhong === null) {
27
+ group = bindWgpuClassicSurface(state, pipeline, FALLBACK_MATERIAL, WHITE, WHITE, 32, 0.5, null, null, null, null);
28
+ }
29
+ else {
30
+ unpackColorToLinear(_diffuse, blinnPhong.diffuse);
31
+ unpackColorToLinear(_specular, blinnPhong.specular);
32
+ group = bindWgpuClassicSurface(state, pipeline, blinnPhong, _diffuse, _specular, blinnPhong.shininess, blinnPhong.alphaCutoff, blinnPhong.diffuseMap, blinnPhong.specularMap, blinnPhong.normalMap, blinnPhong.alphaMap);
33
+ }
34
+ beginWgpuMeshDraw(state, pipeline);
35
+ pass.setBindGroup(2, group);
36
+ },
37
+ draw(state, proxy, geometry) {
38
+ drawWgpuMeshSubset(state, proxy, geometry);
39
+ },
40
+ };
41
+ // Registers the built-in BlinnPhong renderer for BlinnPhongMaterialKind on this state. Opt-in (no
42
+ // top-level side effect); call once per WgpuRenderState before drawWgpuScene3D so meshes with BlinnPhong
43
+ // materials draw.
44
+ export function registerBlinnPhongWgpuMaterial(state) {
45
+ registerWgpuMeshMaterialRenderer(state, BlinnPhongMaterialKind, blinnPhongWgpuMeshMaterialRenderer);
46
+ }
47
+ // The feature define key for a BlinnPhong material: the fixed `blinnphong` lighting model plus the
48
+ // alpha-mask + double-sided flags and which optional maps are present (mirrors
49
+ // blinnPhongGlMeshMaterialRenderer).
50
+ function defineKeyForMaterial(material) {
51
+ return {
52
+ alphaMaskEnabled: material !== null && material.alphaMode === 'mask',
53
+ doubleSided: material !== null && material.doubleSided,
54
+ // Opaque materials ignore coverage (SurfaceMaterial contract) — only 'mask'/'blend' sample the map.
55
+ hasAlphaMap: material !== null && material.alphaMode !== 'opaque' && isWgpuTextureReady(material.alphaMap),
56
+ hasDiffuseMap: material !== null && isWgpuTextureReady(material.diffuseMap),
57
+ hasNormalMap: material !== null && isWgpuTextureReady(material.normalMap),
58
+ hasSpecularMap: material !== null && isWgpuTextureReady(material.specularMap),
59
+ lightingModel: 'blinnphong',
60
+ };
61
+ }
62
+ const _diffuse = [0, 0, 0, 0];
63
+ const _specular = [0, 0, 0, 0];
64
+ const WHITE = [1, 1, 1, 1];
65
+ const FALLBACK_MATERIAL = {};
66
+ //# sourceMappingURL=blinnPhongWgpuMeshMaterialRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blinnPhongWgpuMeshMaterialRenderer.js","sourceRoot":"","sources":["../src/blinnPhongWgpuMeshMaterialRenderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { WgpuMeshMaterialRenderer, WgpuRenderState } from '@flighthq/types';
2
+ export declare const clearcoatPbrWgpuMeshMaterialRenderer: WgpuMeshMaterialRenderer;
3
+ export declare function registerClearcoatPbrWgpuMaterial(state: WgpuRenderState): void;
4
+ //# sourceMappingURL=clearcoatPbrWgpuMeshMaterialRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clearcoatPbrWgpuMeshMaterialRenderer.d.ts","sourceRoot":"","sources":["../src/clearcoatPbrWgpuMeshMaterialRenderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAOV,wBAAwB,EACxB,eAAe,EAChB,MAAM,iBAAiB,CAAC;AAyBzB,eAAO,MAAM,oCAAoC,EAAE,wBAmClD,CAAC;AAIF,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAE7E"}
@@ -0,0 +1,52 @@
1
+ import { getWgpuRenderStateRuntime } from '@flighthq/render-wgpu';
2
+ import { ClearcoatPbrMaterialKind } from '@flighthq/types';
3
+ import { buildWgpuPbrStandardDefineKey, ensureWgpuPbrMaterialBindGroup, getWgpuPbrMaterialScratch, writeWgpuPbrMaterialUniform, writeWgpuPbrStandardBlock, } from './standardPbrWgpuMeshMaterialRenderer';
4
+ import { registerWgpuMeshMaterialRenderer } from './wgpuMeshMaterialRegistry';
5
+ import { beginWgpuMeshDraw, drawWgpuMeshSubset, writeWgpuFrameUniform } from './wgpuMeshPipeline';
6
+ import { ensureWgpuPbrPipeline } from './wgpuPbrPipelineCache';
7
+ // The built-in Clearcoat (KHR_materials_clearcoat) forward-lit mesh-material renderer — the WGSL mirror
8
+ // of clearcoatPbrGlMeshMaterialRenderer. Clearcoat adds a second, always-dielectric GGX specular lobe
9
+ // (F0 = 0.04) over the base PBR layer — the wet, lacquered highlight of car paint or varnish — with its
10
+ // own clearcoat roughness, and attenuates the base layers by the clearcoat's Fresnel so energy is
11
+ // conserved. bind builds the standard define key from `material.standard` + the surface trailer, sets
12
+ // the CLEARCOAT flag, selects/compiles that pipeline variant for the current color format, writes the
13
+ // shared Frame uniform, then writes the base block + the clearcoat factors into the one MaterialBlock
14
+ // uniform and binds it at group(2). The clearcoat lobe lives behind `const CLEARCOAT` in the one PBR
15
+ // uber-shader. The clearcoat/roughness/normal maps are reserved by the descriptor but NOT sampled on
16
+ // wgpu yet (scalar clearcoat is the current approximation; maps deferred). See
17
+ // registerClearcoatPbrWgpuMaterial.
18
+ export const clearcoatPbrWgpuMeshMaterialRenderer = {
19
+ bind(state, material, lights, camera) {
20
+ const stateRuntime = getWgpuRenderStateRuntime(state);
21
+ const pass = stateRuntime.renderPass;
22
+ if (pass === null)
23
+ return;
24
+ const clearcoat = material;
25
+ const standard = clearcoat !== null ? clearcoat.standard : null;
26
+ const key = buildWgpuPbrStandardDefineKey(standard, clearcoat);
27
+ key.clearcoatEnabled = true;
28
+ const format = stateRuntime.currentColorFormat ?? state.format;
29
+ const pipeline = ensureWgpuPbrPipeline(state, key, format);
30
+ writeWgpuFrameUniform(state, camera, lights);
31
+ const binding = ensureWgpuPbrMaterialBindGroup(state, pipeline, clearcoat ?? FALLBACK_MATERIAL, standard);
32
+ const out = getWgpuPbrMaterialScratch();
33
+ writeWgpuPbrStandardBlock(out, standard, clearcoat !== null ? clearcoat.alphaCutoff : 0.5);
34
+ out.fill(0, 16);
35
+ // clearcoat group (floats 16..19): clearcoat strength, clearcoat roughness.
36
+ out[16] = clearcoat !== null ? clearcoat.clearcoat : 0;
37
+ out[17] = clearcoat !== null ? clearcoat.clearcoatRoughness : 0;
38
+ writeWgpuPbrMaterialUniform(state, binding);
39
+ beginWgpuMeshDraw(state, pipeline);
40
+ pass.setBindGroup(2, binding.bindGroup);
41
+ },
42
+ draw(state, proxy, geometry) {
43
+ drawWgpuMeshSubset(state, proxy, geometry);
44
+ },
45
+ };
46
+ // Installs the built-in Clearcoat renderer for ClearcoatPbrMaterialKind on this state. Opt-in (no
47
+ // top-level side effect): drawScene3D only draws Clearcoat subsets once this is called.
48
+ export function registerClearcoatPbrWgpuMaterial(state) {
49
+ registerWgpuMeshMaterialRenderer(state, ClearcoatPbrMaterialKind, clearcoatPbrWgpuMeshMaterialRenderer);
50
+ }
51
+ const FALLBACK_MATERIAL = {};
52
+ //# sourceMappingURL=clearcoatPbrWgpuMeshMaterialRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clearcoatPbrWgpuMeshMaterialRenderer.js","sourceRoot":"","sources":["../src/clearcoatPbrWgpuMeshMaterialRenderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { WgpuCustomMaterialShaderSource, WgpuMeshMaterialRenderer, WgpuRenderState } from '@flighthq/types';
2
+ export { WGPU_CUSTOM_SHADER_TEXTURE_CAPACITY, WGPU_CUSTOM_SHADER_USER_VEC4_CAPACITY } from './wgpuCustomMaterialAbi';
3
+ export declare const customShaderWgpuMeshMaterialRenderer: WgpuMeshMaterialRenderer;
4
+ export declare function getWgpuCustomMaterialShaderSource(state: WgpuRenderState, shaderKey: string): WgpuCustomMaterialShaderSource | null;
5
+ export declare function registerCustomShaderWgpuMaterial(state: WgpuRenderState): void;
6
+ export declare function registerWgpuCustomMaterialShader(state: WgpuRenderState, shaderKey: string, wgslSource: WgpuCustomMaterialShaderSource): void;
7
+ //# sourceMappingURL=customShaderWgpuMeshMaterialRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customShaderWgpuMeshMaterialRenderer.d.ts","sourceRoot":"","sources":["../src/customShaderWgpuMeshMaterialRenderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAOV,8BAA8B,EAC9B,wBAAwB,EAExB,eAAe,EAChB,MAAM,iBAAiB,CAAC;AAmBzB,OAAO,EAAE,mCAAmC,EAAE,qCAAqC,EAAE,MAAM,yBAAyB,CAAC;AAmBrH,eAAO,MAAM,oCAAoC,EAAE,wBAuDlD,CAAC;AAGF,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,eAAe,EACtB,SAAS,EAAE,MAAM,GAChB,8BAA8B,GAAG,IAAI,CAEvC;AAGD,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAE7E;AAgBD,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,eAAe,EACtB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,8BAA8B,GACzC,IAAI,CAON"}
@@ -0,0 +1,225 @@
1
+ import { getWgpuRenderStateRuntime } from '@flighthq/render-wgpu';
2
+ import { CustomShaderMaterialKind } from '@flighthq/types';
3
+ import { WGPU_CUSTOM_SHADER_TEXTURE_CAPACITY, WGPU_CUSTOM_SHADER_USER_VEC4_CAPACITY } from './wgpuCustomMaterialAbi';
4
+ import { registerWgpuMeshMaterialRenderer } from './wgpuMeshMaterialRegistry';
5
+ import { beginWgpuMeshDraw, createWgpuMeshPipeline, drawWgpuMeshSubset, ensureWgpuPlaceholderTextureView, ensureWgpuScene3DPipeline, getWgpuMaterialSampler, isWgpuTextureReady, resolveWgpuMaterialTextureView, stashWgpuUvTransform, writeWgpuFrameUniform, } from './wgpuMeshPipeline';
6
+ import { getWgpuScene3DRuntime } from './wgpuScene3DRuntime';
7
+ export { WGPU_CUSTOM_SHADER_TEXTURE_CAPACITY, WGPU_CUSTOM_SHADER_USER_VEC4_CAPACITY } from './wgpuCustomMaterialAbi';
8
+ // WebGPU's CustomShaderMaterial mesh renderer. The shader is a complete caller-authored WGSL module,
9
+ // while scene-wgpu supplies and writes the same fixed Frame group(0) and Draw group(1) used by every
10
+ // built-in mesh family. User values occupy group(2); bag-order sampler/texture pairs occupy group(3).
11
+ export const customShaderWgpuMeshMaterialRenderer = {
12
+ bind(state, material, lights, camera) {
13
+ const scene = getWgpuScene3DRuntime(state);
14
+ const runtime = getWgpuRenderStateRuntime(state);
15
+ const pass = runtime.renderPass;
16
+ const custom = material;
17
+ if (pass === null || custom === null || custom.shaderKey === '') {
18
+ scene.activeMeshPipeline = null;
19
+ return;
20
+ }
21
+ const source = getWgpuCustomMaterialShaderSource(state, custom.shaderKey);
22
+ if (source === null) {
23
+ scene.activeMeshPipeline = null;
24
+ return;
25
+ }
26
+ scene.customShaderGuard?.(state, custom.shaderKey, source, custom);
27
+ if (Object.keys(custom.uniforms ?? {}).length > WGPU_CUSTOM_SHADER_USER_VEC4_CAPACITY ||
28
+ Object.keys(custom.textures ?? {}).length > WGPU_CUSTOM_SHADER_TEXTURE_CAPACITY) {
29
+ // Never submit a bind group that cannot satisfy the fixed layout. The opt-in guard above
30
+ // explains the overflow; without guards this follows the renderer's silent skip convention.
31
+ scene.activeMeshPipeline = null;
32
+ return;
33
+ }
34
+ const layouts = ensureCustomMaterialLayouts(state);
35
+ const format = runtime.currentColorFormat ?? state.format;
36
+ const sideKey = custom.doubleSided ? 'double' : 'single';
37
+ const pipeline = ensureWgpuScene3DPipeline(state, `custom:${custom.shaderKey}:${format}:${sideKey}`, (blended, skinned) => compileCustomMaterialPipeline(state, source, format, custom.doubleSided, blended, skinned, layouts));
38
+ const binding = ensureCustomMaterialBinding(state, custom, layouts.user);
39
+ uploadCustomUniforms(state, binding.uniformBuffer, custom);
40
+ const textureBindGroup = ensureCustomTextureBindGroup(state, custom, layouts.texture, binding);
41
+ writeWgpuFrameUniform(state, camera, lights);
42
+ stashWgpuUvTransform(state, null);
43
+ beginWgpuMeshDraw(state, pipeline);
44
+ pass.setBindGroup(2, binding.uniformBindGroup);
45
+ pass.setBindGroup(3, textureBindGroup);
46
+ },
47
+ draw(state, proxy, geometry) {
48
+ drawWgpuMeshSubset(state, proxy, geometry);
49
+ },
50
+ };
51
+ // Returns the WGSL module registered under `shaderKey`, or null when the material should skip drawing.
52
+ export function getWgpuCustomMaterialShaderSource(state, shaderKey) {
53
+ return _customMaterialShaders.get(state)?.get(shaderKey) ?? null;
54
+ }
55
+ // Installs CustomShaderMaterialKind in this state's WGPU mesh-material registry.
56
+ export function registerCustomShaderWgpuMaterial(state) {
57
+ registerWgpuMeshMaterialRenderer(state, CustomShaderMaterialKind, customShaderWgpuMeshMaterialRenderer);
58
+ }
59
+ // Registers a complete WGSL module for a CustomShaderMaterial shaderKey.
60
+ //
61
+ // Fixed ABI:
62
+ // - group(0)/binding(0): the Frame struct from WGPU_MESH_PRELUDE_WGSL.
63
+ // - group(1)/binding(0): the Draw struct from WGPU_MESH_PRELUDE_WGSL (normalMatrix is mat3x3f).
64
+ // - group(2)/binding(0): `var<uniform> user : UserBlock`. Declare one vec4f field for each material
65
+ // uniform, in alphabetical field-name order. Scalars use .x; 2/3/4-component values use .xy/.xyz/.xyzw.
66
+ // - group(3): the material texture bag in Object.keys order, each slot N declaring its sampler at
67
+ // binding 2*N and texture_2d<f32> at binding 2*N+1.
68
+ //
69
+ // Entry points are `vs_main` and `fs_main`; attributes use locations 0 position, 1 normal, 2 tangent,
70
+ // and 3 uv. Alpha-blended materials must return straight (not premultiplied) fragment alpha. The
71
+ // registry follows the GL lifetime rule: last source write wins before compilation, while an already
72
+ // compiled shaderKey remains cached; use a new key to compile edited WGSL.
73
+ export function registerWgpuCustomMaterialShader(state, shaderKey, wgslSource) {
74
+ let registry = _customMaterialShaders.get(state);
75
+ if (registry === undefined) {
76
+ registry = new Map();
77
+ _customMaterialShaders.set(state, registry);
78
+ }
79
+ registry.set(shaderKey, wgslSource);
80
+ }
81
+ function compileCustomMaterialPipeline(state, source, format, doubleSided, blended, skinned, layouts) {
82
+ return createWgpuMeshPipeline(state, {
83
+ blended,
84
+ doubleSided,
85
+ extraBindGroupLayout: layouts.texture,
86
+ format,
87
+ materialBindGroupLayout: layouts.user,
88
+ module: state.device.createShaderModule({ code: source }),
89
+ skinned,
90
+ });
91
+ }
92
+ function ensureCustomMaterialLayouts(state) {
93
+ let layouts = _customMaterialLayouts.get(state);
94
+ if (layouts !== undefined)
95
+ return layouts;
96
+ const visibility = GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT;
97
+ const entries = [];
98
+ for (let slot = 0; slot < WGPU_CUSTOM_SHADER_TEXTURE_CAPACITY; slot++) {
99
+ entries.push({
100
+ binding: slot * 2,
101
+ visibility,
102
+ sampler: { type: 'filtering' },
103
+ });
104
+ entries.push({
105
+ binding: slot * 2 + 1,
106
+ visibility,
107
+ texture: { sampleType: 'float' },
108
+ });
109
+ }
110
+ layouts = {
111
+ texture: state.device.createBindGroupLayout({ entries }),
112
+ user: state.device.createBindGroupLayout({
113
+ entries: [{ binding: 0, visibility, buffer: { type: 'uniform' } }],
114
+ }),
115
+ };
116
+ _customMaterialLayouts.set(state, layouts);
117
+ return layouts;
118
+ }
119
+ function ensureCustomMaterialBinding(state, material, layout) {
120
+ let stateBindings = _customMaterialBindings.get(state);
121
+ if (stateBindings === undefined) {
122
+ stateBindings = new WeakMap();
123
+ _customMaterialBindings.set(state, stateBindings);
124
+ }
125
+ let binding = stateBindings.get(material);
126
+ if (binding !== undefined)
127
+ return binding;
128
+ const uniformBuffer = state.device.createBuffer({
129
+ size: WGPU_CUSTOM_SHADER_USER_VEC4_CAPACITY * 16,
130
+ usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,
131
+ });
132
+ binding = {
133
+ textureBindGroup: null,
134
+ textureKeys: [],
135
+ textureSamplers: [],
136
+ textureViews: [],
137
+ uniformBindGroup: state.device.createBindGroup({
138
+ layout,
139
+ entries: [{ binding: 0, resource: { buffer: uniformBuffer } }],
140
+ }),
141
+ uniformBuffer,
142
+ };
143
+ stateBindings.set(material, binding);
144
+ return binding;
145
+ }
146
+ function uploadCustomUniforms(state, buffer, material) {
147
+ _uniformScratch.fill(0);
148
+ const uniforms = material.uniforms ?? {};
149
+ const names = Object.keys(uniforms).sort();
150
+ const count = Math.min(names.length, WGPU_CUSTOM_SHADER_USER_VEC4_CAPACITY);
151
+ for (let slot = 0; slot < count; slot++) {
152
+ const value = uniforms[names[slot]];
153
+ const offset = slot * 4;
154
+ if (typeof value === 'number') {
155
+ _uniformScratch[offset] = value;
156
+ continue;
157
+ }
158
+ const componentCount = Math.min(value.length, 4);
159
+ for (let component = 0; component < componentCount; component++) {
160
+ _uniformScratch[offset + component] = value[component];
161
+ }
162
+ }
163
+ state.device.queue.writeBuffer(buffer, 0, _uniformScratch.buffer, 0, _uniformScratch.byteLength);
164
+ }
165
+ function ensureCustomTextureBindGroup(state, material, layout, binding) {
166
+ const textures = material.textures ?? {};
167
+ const placeholder = ensureWgpuPlaceholderTextureView(state);
168
+ let textureCount = 0;
169
+ for (const name in textures) {
170
+ if (!Object.prototype.hasOwnProperty.call(textures, name))
171
+ continue;
172
+ const texture = textures[name];
173
+ _textureKeyScratch[textureCount] = name;
174
+ _textureSamplerScratch[textureCount] = getWgpuMaterialSampler(state, texture);
175
+ _textureViewScratch[textureCount] = isWgpuTextureReady(texture)
176
+ ? resolveWgpuMaterialTextureView(state, texture)
177
+ : placeholder;
178
+ textureCount++;
179
+ }
180
+ _textureKeyScratch.length = textureCount;
181
+ for (let slot = textureCount; slot < WGPU_CUSTOM_SHADER_TEXTURE_CAPACITY; slot++) {
182
+ _textureSamplerScratch[slot] = getWgpuMaterialSampler(state, null);
183
+ _textureViewScratch[slot] = placeholder;
184
+ }
185
+ if (!customTextureBindingNeedsRebuild(binding, textureCount))
186
+ return binding.textureBindGroup;
187
+ const entries = [];
188
+ for (let slot = 0; slot < WGPU_CUSTOM_SHADER_TEXTURE_CAPACITY; slot++) {
189
+ entries.push({ binding: slot * 2, resource: _textureSamplerScratch[slot] });
190
+ entries.push({ binding: slot * 2 + 1, resource: _textureViewScratch[slot] });
191
+ }
192
+ binding.textureBindGroup = state.device.createBindGroup({ layout, entries });
193
+ overwriteCache(binding.textureKeys, _textureKeyScratch);
194
+ overwriteCache(binding.textureSamplers, _textureSamplerScratch);
195
+ overwriteCache(binding.textureViews, _textureViewScratch);
196
+ return binding.textureBindGroup;
197
+ }
198
+ function customTextureBindingNeedsRebuild(binding, textureCount) {
199
+ if (binding.textureBindGroup === null || binding.textureKeys.length !== textureCount)
200
+ return true;
201
+ for (let slot = 0; slot < textureCount; slot++) {
202
+ if (binding.textureKeys[slot] !== _textureKeyScratch[slot])
203
+ return true;
204
+ }
205
+ for (let slot = 0; slot < WGPU_CUSTOM_SHADER_TEXTURE_CAPACITY; slot++) {
206
+ if (binding.textureSamplers[slot] !== _textureSamplerScratch[slot] ||
207
+ binding.textureViews[slot] !== _textureViewScratch[slot]) {
208
+ return true;
209
+ }
210
+ }
211
+ return false;
212
+ }
213
+ function overwriteCache(cache, source) {
214
+ cache.length = source.length;
215
+ for (let i = 0; i < source.length; i++)
216
+ cache[i] = source[i];
217
+ }
218
+ const _customMaterialShaders = new WeakMap();
219
+ const _customMaterialLayouts = new WeakMap();
220
+ const _customMaterialBindings = new WeakMap();
221
+ const _uniformScratch = new Float32Array(WGPU_CUSTOM_SHADER_USER_VEC4_CAPACITY * 4);
222
+ const _textureKeyScratch = [];
223
+ const _textureSamplerScratch = new Array(WGPU_CUSTOM_SHADER_TEXTURE_CAPACITY);
224
+ const _textureViewScratch = new Array(WGPU_CUSTOM_SHADER_TEXTURE_CAPACITY);
225
+ //# sourceMappingURL=customShaderWgpuMeshMaterialRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customShaderWgpuMeshMaterialRenderer.js","sourceRoot":"","sources":["../src/customShaderWgpuMeshMaterialRenderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { WgpuMeshMaterialRenderer, WgpuRenderState } from '@flighthq/types';
2
+ export declare const depthWgpuMeshMaterialRenderer: WgpuMeshMaterialRenderer;
3
+ export declare function registerDepthWgpuMaterial(state: WgpuRenderState): void;
4
+ //# sourceMappingURL=depthWgpuMeshMaterialRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"depthWgpuMeshMaterialRenderer.d.ts","sourceRoot":"","sources":["../src/depthWgpuMeshMaterialRenderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAOV,wBAAwB,EACxB,eAAe,EAChB,MAAM,iBAAiB,CAAC;AAazB,eAAO,MAAM,6BAA6B,EAAE,wBA8B3C,CAAC;AAIF,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAEtE"}
@@ -0,0 +1,42 @@
1
+ import { getWgpuRenderStateRuntime } from '@flighthq/render-wgpu';
2
+ import { DepthMaterialKind } from '@flighthq/types';
3
+ import { bindWgpuDebugSurface, ensureWgpuDebugPipeline } from './wgpuDebugPrelude';
4
+ import { registerWgpuMeshMaterialRenderer } from './wgpuMeshMaterialRegistry';
5
+ import { beginWgpuMeshDraw, drawWgpuMeshSubset, writeWgpuFrameUniform } from './wgpuMeshPipeline';
6
+ // The built-in Depth forward renderer (WgpuMeshMaterialRenderer for DepthMaterialKind) — the WGSL mirror
7
+ // of depthGlMeshMaterialRenderer. A lighting-independent debug/utility pass material: bind selects the
8
+ // debug pipeline in depth mode for the color format, writes the shared Frame uniform (lights ignored),
9
+ // and binds the material's [near, far] linearization range; draw issues the indexed draw. The fragment
10
+ // scene2d linearizes window-space depth into eye space and writes it as grayscale LINEAR color. See
11
+ // registerDepthWgpuMaterial to install it.
12
+ export const depthWgpuMeshMaterialRenderer = {
13
+ bind(state, material, _lights, camera) {
14
+ const stateRuntime = getWgpuRenderStateRuntime(state);
15
+ const pass = stateRuntime.renderPass;
16
+ if (pass === null)
17
+ return;
18
+ const depth = material;
19
+ const format = stateRuntime.currentColorFormat ?? state.format;
20
+ const pipeline = ensureWgpuDebugPipeline(state, { hasNormalMap: false, mode: 'depth' }, format);
21
+ writeWgpuFrameUniform(state, camera, _lights);
22
+ let group;
23
+ if (depth === null) {
24
+ group = bindWgpuDebugSurface(state, pipeline, FALLBACK_MATERIAL, 0, 1, 1);
25
+ }
26
+ else {
27
+ group = bindWgpuDebugSurface(state, pipeline, depth, depth.near, depth.far, 1);
28
+ }
29
+ beginWgpuMeshDraw(state, pipeline);
30
+ pass.setBindGroup(2, group);
31
+ },
32
+ draw(state, proxy, geometry) {
33
+ drawWgpuMeshSubset(state, proxy, geometry);
34
+ },
35
+ };
36
+ // Registers the built-in Depth renderer for DepthMaterialKind on this state. Opt-in (no top-level side
37
+ // effect); call once per WgpuRenderState before drawWgpuScene3D so meshes with DepthMaterials draw.
38
+ export function registerDepthWgpuMaterial(state) {
39
+ registerWgpuMeshMaterialRenderer(state, DepthMaterialKind, depthWgpuMeshMaterialRenderer);
40
+ }
41
+ const FALLBACK_MATERIAL = {};
42
+ //# sourceMappingURL=depthWgpuMeshMaterialRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"depthWgpuMeshMaterialRenderer.js","sourceRoot":"","sources":["../src/depthWgpuMeshMaterialRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAWlE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,gCAAgC,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAElG,yGAAyG;AACzG,uGAAuG;AACvG,uGAAuG;AACvG,uGAAuG;AACvG,oGAAoG;AACpG,2CAA2C;AAC3C,MAAM,CAAC,MAAM,6BAA6B,GAA6B;IACrE,IAAI,CACF,KAAsB,EACtB,QAAmC,EACnC,OAAoC,EACpC,MAA0B;QAE1B,MAAM,YAAY,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,YAAY,CAAC,UAAU,CAAC;QACrC,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO;QAE1B,MAAM,KAAK,GAAG,QAA0C,CAAC;QACzD,MAAM,MAAM,GAAG,YAAY,CAAC,kBAAkB,IAAI,KAAK,CAAC,MAAM,CAAC;QAC/D,MAAM,QAAQ,GAAG,uBAAuB,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;QAChG,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE9C,IAAI,KAAmB,CAAC;QACxB,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,KAAK,GAAG,oBAAoB,CAAC,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5E,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,oBAAoB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACjF,CAAC;QAED,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACnC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,CAAC,KAAsB,EAAE,KAAmC,EAAE,QAAgC;QAChG,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;CACF,CAAC;AAEF,uGAAuG;AACvG,oGAAoG;AACpG,MAAM,UAAU,yBAAyB,CAAC,KAAsB;IAC9D,gCAAgC,CAAC,KAAK,EAAE,iBAAiB,EAAE,6BAA6B,CAAC,CAAC;AAC5F,CAAC;AAED,MAAM,iBAAiB,GAAG,EAA6B,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Camera3D, Mesh, Scene3DLightsLike, Node3D, WgpuRenderState, WgpuScene3DForwardLightList } from '@flighthq/types';
2
+ export declare function drawWgpuScene3D(state: WgpuRenderState, scene: Readonly<Node3D>, camera: Readonly<Camera3D>, lights: Readonly<Scene3DLightsLike>, forwardLights?: Readonly<WgpuScene3DForwardLightList>): void;
3
+ export declare function isWgpuMeshGpuSkinned(state: WgpuRenderState, mesh: Readonly<Mesh>): boolean;
4
+ //# sourceMappingURL=drawWgpuScene3D.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drawWgpuScene3D.d.ts","sourceRoot":"","sources":["../src/drawWgpuScene3D.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,QAAQ,EAIR,IAAI,EAGJ,iBAAiB,EACjB,MAAM,EAIN,eAAe,EAEf,2BAA2B,EAC5B,MAAM,iBAAiB,CAAC;AAyBzB,wBAAgB,eAAe,CAC7B,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EACvB,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAC1B,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EACnC,aAAa,CAAC,EAAE,QAAQ,CAAC,2BAA2B,CAAC,GACpD,IAAI,CA4DN;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAG1F"}