@flighthq/scene3d-gl 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 (284) hide show
  1. package/dist/anisotropyPbrGlMeshMaterialRenderer.d.ts +4 -0
  2. package/dist/anisotropyPbrGlMeshMaterialRenderer.d.ts.map +1 -0
  3. package/dist/anisotropyPbrGlMeshMaterialRenderer.js +45 -0
  4. package/dist/anisotropyPbrGlMeshMaterialRenderer.js.map +1 -0
  5. package/dist/blinnPhongGlMeshMaterialRenderer.d.ts +4 -0
  6. package/dist/blinnPhongGlMeshMaterialRenderer.d.ts.map +1 -0
  7. package/dist/blinnPhongGlMeshMaterialRenderer.js +102 -0
  8. package/dist/blinnPhongGlMeshMaterialRenderer.js.map +1 -0
  9. package/dist/clearcoatPbrGlMeshMaterialRenderer.d.ts +4 -0
  10. package/dist/clearcoatPbrGlMeshMaterialRenderer.d.ts.map +1 -0
  11. package/dist/clearcoatPbrGlMeshMaterialRenderer.js +45 -0
  12. package/dist/clearcoatPbrGlMeshMaterialRenderer.js.map +1 -0
  13. package/dist/customShaderGlMeshMaterialRenderer.d.ts +6 -0
  14. package/dist/customShaderGlMeshMaterialRenderer.d.ts.map +1 -0
  15. package/dist/customShaderGlMeshMaterialRenderer.js +136 -0
  16. package/dist/customShaderGlMeshMaterialRenderer.js.map +1 -0
  17. package/dist/depthGlMeshMaterialRenderer.d.ts +4 -0
  18. package/dist/depthGlMeshMaterialRenderer.d.ts.map +1 -0
  19. package/dist/depthGlMeshMaterialRenderer.js +36 -0
  20. package/dist/depthGlMeshMaterialRenderer.js.map +1 -0
  21. package/dist/drawGlScene3D.d.ts +3 -0
  22. package/dist/drawGlScene3D.d.ts.map +1 -0
  23. package/dist/drawGlScene3D.js +251 -0
  24. package/dist/drawGlScene3D.js.map +1 -0
  25. package/dist/emissiveGlMeshMaterialRenderer.d.ts +4 -0
  26. package/dist/emissiveGlMeshMaterialRenderer.d.ts.map +1 -0
  27. package/dist/emissiveGlMeshMaterialRenderer.js +49 -0
  28. package/dist/emissiveGlMeshMaterialRenderer.js.map +1 -0
  29. package/dist/enableGlScene3DColorSpaceGuards.d.ts +4 -0
  30. package/dist/enableGlScene3DColorSpaceGuards.d.ts.map +1 -0
  31. package/dist/enableGlScene3DColorSpaceGuards.js +22 -0
  32. package/dist/enableGlScene3DColorSpaceGuards.js.map +1 -0
  33. package/dist/enableGlScene3DCustomShaderGuards.d.ts +4 -0
  34. package/dist/enableGlScene3DCustomShaderGuards.d.ts.map +1 -0
  35. package/dist/enableGlScene3DCustomShaderGuards.js +71 -0
  36. package/dist/enableGlScene3DCustomShaderGuards.js.map +1 -0
  37. package/dist/enableGlScene3DDeformGuards.d.ts +4 -0
  38. package/dist/enableGlScene3DDeformGuards.d.ts.map +1 -0
  39. package/dist/enableGlScene3DDeformGuards.js +42 -0
  40. package/dist/enableGlScene3DDeformGuards.js.map +1 -0
  41. package/dist/enableGlScene3DForwardLightSelectionGuards.d.ts +4 -0
  42. package/dist/enableGlScene3DForwardLightSelectionGuards.d.ts.map +1 -0
  43. package/dist/enableGlScene3DForwardLightSelectionGuards.js +21 -0
  44. package/dist/enableGlScene3DForwardLightSelectionGuards.js.map +1 -0
  45. package/dist/explainGlScene3DForwardLightSelection.d.ts +3 -0
  46. package/dist/explainGlScene3DForwardLightSelection.d.ts.map +1 -0
  47. package/dist/explainGlScene3DForwardLightSelection.js +19 -0
  48. package/dist/explainGlScene3DForwardLightSelection.js.map +1 -0
  49. package/dist/glClassicPrelude.d.ts +9 -0
  50. package/dist/glClassicPrelude.d.ts.map +1 -0
  51. package/dist/glClassicPrelude.js +288 -0
  52. package/dist/glClassicPrelude.js.map +1 -0
  53. package/dist/glDebugPrelude.d.ts +9 -0
  54. package/dist/glDebugPrelude.d.ts.map +1 -0
  55. package/dist/glDebugPrelude.js +143 -0
  56. package/dist/glDebugPrelude.js.map +1 -0
  57. package/dist/glEnvironmentCube.d.ts +5 -0
  58. package/dist/glEnvironmentCube.d.ts.map +1 -0
  59. package/dist/glEnvironmentCube.js +65 -0
  60. package/dist/glEnvironmentCube.js.map +1 -0
  61. package/dist/glEnvironmentIblBake.d.ts +4 -0
  62. package/dist/glEnvironmentIblBake.d.ts.map +1 -0
  63. package/dist/glEnvironmentIblBake.js +365 -0
  64. package/dist/glEnvironmentIblBake.js.map +1 -0
  65. package/dist/glEnvironmentSkybox.d.ts +3 -0
  66. package/dist/glEnvironmentSkybox.d.ts.map +1 -0
  67. package/dist/glEnvironmentSkybox.js +95 -0
  68. package/dist/glEnvironmentSkybox.js.map +1 -0
  69. package/dist/glLitProgram.d.ts +5 -0
  70. package/dist/glLitProgram.d.ts.map +1 -0
  71. package/dist/glLitProgram.js +211 -0
  72. package/dist/glLitProgram.js.map +1 -0
  73. package/dist/glMatcapPrelude.d.ts +8 -0
  74. package/dist/glMatcapPrelude.d.ts.map +1 -0
  75. package/dist/glMatcapPrelude.js +118 -0
  76. package/dist/glMatcapPrelude.js.map +1 -0
  77. package/dist/glMeshMaterialRegistry.d.ts +5 -0
  78. package/dist/glMeshMaterialRegistry.d.ts.map +1 -0
  79. package/dist/glMeshMaterialRegistry.js +29 -0
  80. package/dist/glMeshMaterialRegistry.js.map +1 -0
  81. package/dist/glMeshProgram.d.ts +14 -0
  82. package/dist/glMeshProgram.d.ts.map +1 -0
  83. package/dist/glMeshProgram.js +193 -0
  84. package/dist/glMeshProgram.js.map +1 -0
  85. package/dist/glMeshUpload.d.ts +4 -0
  86. package/dist/glMeshUpload.d.ts.map +1 -0
  87. package/dist/glMeshUpload.js +190 -0
  88. package/dist/glMeshUpload.js.map +1 -0
  89. package/dist/glParticleEmitter3D.d.ts +4 -0
  90. package/dist/glParticleEmitter3D.d.ts.map +1 -0
  91. package/dist/glParticleEmitter3D.js +342 -0
  92. package/dist/glParticleEmitter3D.js.map +1 -0
  93. package/dist/glPbrPrelude.d.ts +8 -0
  94. package/dist/glPbrPrelude.d.ts.map +1 -0
  95. package/dist/glPbrPrelude.js +569 -0
  96. package/dist/glPbrPrelude.js.map +1 -0
  97. package/dist/glPbrProgramCache.d.ts +4 -0
  98. package/dist/glPbrProgramCache.d.ts.map +1 -0
  99. package/dist/glPbrProgramCache.js +63 -0
  100. package/dist/glPbrProgramCache.js.map +1 -0
  101. package/dist/glPbrStandardBlock.d.ts +13 -0
  102. package/dist/glPbrStandardBlock.d.ts.map +1 -0
  103. package/dist/glPbrStandardBlock.js +107 -0
  104. package/dist/glPbrStandardBlock.js.map +1 -0
  105. package/dist/glScene3DRuntime.d.ts +5 -0
  106. package/dist/glScene3DRuntime.d.ts.map +1 -0
  107. package/dist/glScene3DRuntime.js +99 -0
  108. package/dist/glScene3DRuntime.js.map +1 -0
  109. package/dist/glScene3DTestHelper.d.ts +20 -0
  110. package/dist/glScene3DTestHelper.d.ts.map +1 -0
  111. package/dist/glScene3DTestHelper.js +178 -0
  112. package/dist/glScene3DTestHelper.js.map +1 -0
  113. package/dist/glScene3DTime.d.ts +4 -0
  114. package/dist/glScene3DTime.d.ts.map +1 -0
  115. package/dist/glScene3DTime.js +18 -0
  116. package/dist/glScene3DTime.js.map +1 -0
  117. package/dist/glShadedBuiltInModifiers.d.ts +11 -0
  118. package/dist/glShadedBuiltInModifiers.d.ts.map +1 -0
  119. package/dist/glShadedBuiltInModifiers.js +386 -0
  120. package/dist/glShadedBuiltInModifiers.js.map +1 -0
  121. package/dist/glShadedModifierSnippet.d.ts +4 -0
  122. package/dist/glShadedModifierSnippet.d.ts.map +1 -0
  123. package/dist/glShadedModifierSnippet.js +24 -0
  124. package/dist/glShadedModifierSnippet.js.map +1 -0
  125. package/dist/glShadedPrelude.d.ts +5 -0
  126. package/dist/glShadedPrelude.d.ts.map +1 -0
  127. package/dist/glShadedPrelude.js +393 -0
  128. package/dist/glShadedPrelude.js.map +1 -0
  129. package/dist/glShadowMap.d.ts +3 -0
  130. package/dist/glShadowMap.d.ts.map +1 -0
  131. package/dist/glShadowMap.js +150 -0
  132. package/dist/glShadowMap.js.map +1 -0
  133. package/dist/glToonPrelude.d.ts +7 -0
  134. package/dist/glToonPrelude.d.ts.map +1 -0
  135. package/dist/glToonPrelude.js +172 -0
  136. package/dist/glToonPrelude.js.map +1 -0
  137. package/dist/glUnlitPrelude.d.ts +9 -0
  138. package/dist/glUnlitPrelude.d.ts.map +1 -0
  139. package/dist/glUnlitPrelude.js +160 -0
  140. package/dist/glUnlitPrelude.js.map +1 -0
  141. package/dist/glWireframePrelude.d.ts +6 -0
  142. package/dist/glWireframePrelude.d.ts.map +1 -0
  143. package/dist/glWireframePrelude.js +56 -0
  144. package/dist/glWireframePrelude.js.map +1 -0
  145. package/dist/glWireframeUpload.d.ts +4 -0
  146. package/dist/glWireframeUpload.d.ts.map +1 -0
  147. package/dist/glWireframeUpload.js +85 -0
  148. package/dist/glWireframeUpload.js.map +1 -0
  149. package/dist/index.d.ts +56 -0
  150. package/dist/index.d.ts.map +1 -0
  151. package/dist/index.js +56 -0
  152. package/dist/index.js.map +1 -0
  153. package/dist/iridescencePbrGlMeshMaterialRenderer.d.ts +4 -0
  154. package/dist/iridescencePbrGlMeshMaterialRenderer.d.ts.map +1 -0
  155. package/dist/iridescencePbrGlMeshMaterialRenderer.js +54 -0
  156. package/dist/iridescencePbrGlMeshMaterialRenderer.js.map +1 -0
  157. package/dist/lambertGlMeshMaterialRenderer.d.ts +4 -0
  158. package/dist/lambertGlMeshMaterialRenderer.d.ts.map +1 -0
  159. package/dist/lambertGlMeshMaterialRenderer.js +70 -0
  160. package/dist/lambertGlMeshMaterialRenderer.js.map +1 -0
  161. package/dist/matcapGlMeshMaterialRenderer.d.ts +4 -0
  162. package/dist/matcapGlMeshMaterialRenderer.d.ts.map +1 -0
  163. package/dist/matcapGlMeshMaterialRenderer.js +49 -0
  164. package/dist/matcapGlMeshMaterialRenderer.js.map +1 -0
  165. package/dist/normalGlMeshMaterialRenderer.d.ts +4 -0
  166. package/dist/normalGlMeshMaterialRenderer.d.ts.map +1 -0
  167. package/dist/normalGlMeshMaterialRenderer.js +39 -0
  168. package/dist/normalGlMeshMaterialRenderer.js.map +1 -0
  169. package/dist/phongGlMeshMaterialRenderer.d.ts +4 -0
  170. package/dist/phongGlMeshMaterialRenderer.d.ts.map +1 -0
  171. package/dist/phongGlMeshMaterialRenderer.js +90 -0
  172. package/dist/phongGlMeshMaterialRenderer.js.map +1 -0
  173. package/dist/prepareGlScene3DForwardLights.d.ts +3 -0
  174. package/dist/prepareGlScene3DForwardLights.d.ts.map +1 -0
  175. package/dist/prepareGlScene3DForwardLights.js +117 -0
  176. package/dist/prepareGlScene3DForwardLights.js.map +1 -0
  177. package/dist/presentGlScene3D.d.ts +3 -0
  178. package/dist/presentGlScene3D.d.ts.map +1 -0
  179. package/dist/presentGlScene3D.js +21 -0
  180. package/dist/presentGlScene3D.js.map +1 -0
  181. package/dist/registerStandardPbrGlMaterial.d.ts +3 -0
  182. package/dist/registerStandardPbrGlMaterial.d.ts.map +1 -0
  183. package/dist/registerStandardPbrGlMaterial.js +11 -0
  184. package/dist/registerStandardPbrGlMaterial.js.map +1 -0
  185. package/dist/shadedGlMeshMaterialRenderer.d.ts +4 -0
  186. package/dist/shadedGlMeshMaterialRenderer.d.ts.map +1 -0
  187. package/dist/shadedGlMeshMaterialRenderer.js +135 -0
  188. package/dist/shadedGlMeshMaterialRenderer.js.map +1 -0
  189. package/dist/sheenPbrGlMeshMaterialRenderer.d.ts +4 -0
  190. package/dist/sheenPbrGlMeshMaterialRenderer.d.ts.map +1 -0
  191. package/dist/sheenPbrGlMeshMaterialRenderer.js +54 -0
  192. package/dist/sheenPbrGlMeshMaterialRenderer.js.map +1 -0
  193. package/dist/specularGlossinessPbrGlMeshMaterialRenderer.d.ts +4 -0
  194. package/dist/specularGlossinessPbrGlMeshMaterialRenderer.d.ts.map +1 -0
  195. package/dist/specularGlossinessPbrGlMeshMaterialRenderer.js +121 -0
  196. package/dist/specularGlossinessPbrGlMeshMaterialRenderer.js.map +1 -0
  197. package/dist/specularPbrGlMeshMaterialRenderer.d.ts +4 -0
  198. package/dist/specularPbrGlMeshMaterialRenderer.d.ts.map +1 -0
  199. package/dist/specularPbrGlMeshMaterialRenderer.js +55 -0
  200. package/dist/specularPbrGlMeshMaterialRenderer.js.map +1 -0
  201. package/dist/standardPbrGlMeshMaterialRenderer.d.ts +3 -0
  202. package/dist/standardPbrGlMeshMaterialRenderer.d.ts.map +1 -0
  203. package/dist/standardPbrGlMeshMaterialRenderer.js +35 -0
  204. package/dist/standardPbrGlMeshMaterialRenderer.js.map +1 -0
  205. package/dist/subsurfacePbrGlMeshMaterialRenderer.d.ts +4 -0
  206. package/dist/subsurfacePbrGlMeshMaterialRenderer.d.ts.map +1 -0
  207. package/dist/subsurfacePbrGlMeshMaterialRenderer.js +57 -0
  208. package/dist/subsurfacePbrGlMeshMaterialRenderer.js.map +1 -0
  209. package/dist/toonGlMeshMaterialRenderer.d.ts +4 -0
  210. package/dist/toonGlMeshMaterialRenderer.d.ts.map +1 -0
  211. package/dist/toonGlMeshMaterialRenderer.js +81 -0
  212. package/dist/toonGlMeshMaterialRenderer.js.map +1 -0
  213. package/dist/transmissionVolumePbrGlMeshMaterialRenderer.d.ts +4 -0
  214. package/dist/transmissionVolumePbrGlMeshMaterialRenderer.d.ts.map +1 -0
  215. package/dist/transmissionVolumePbrGlMeshMaterialRenderer.js +62 -0
  216. package/dist/transmissionVolumePbrGlMeshMaterialRenderer.js.map +1 -0
  217. package/dist/unlitGlMeshMaterialRenderer.d.ts +4 -0
  218. package/dist/unlitGlMeshMaterialRenderer.d.ts.map +1 -0
  219. package/dist/unlitGlMeshMaterialRenderer.js +61 -0
  220. package/dist/unlitGlMeshMaterialRenderer.js.map +1 -0
  221. package/dist/vertexColorGlMeshMaterialRenderer.d.ts +4 -0
  222. package/dist/vertexColorGlMeshMaterialRenderer.d.ts.map +1 -0
  223. package/dist/vertexColorGlMeshMaterialRenderer.js +54 -0
  224. package/dist/vertexColorGlMeshMaterialRenderer.js.map +1 -0
  225. package/dist/wireframeGlMeshMaterialRenderer.d.ts +4 -0
  226. package/dist/wireframeGlMeshMaterialRenderer.d.ts.map +1 -0
  227. package/dist/wireframeGlMeshMaterialRenderer.js +50 -0
  228. package/dist/wireframeGlMeshMaterialRenderer.js.map +1 -0
  229. package/package.json +58 -0
  230. package/src/anisotropyPbrGlMeshMaterialRenderer.test.ts +86 -0
  231. package/src/blinnPhongGlMeshMaterialRenderer.test.ts +94 -0
  232. package/src/clearcoatPbrGlMeshMaterialRenderer.test.ts +81 -0
  233. package/src/customShaderGlMeshMaterialRenderer.test.ts +169 -0
  234. package/src/depthGlMeshMaterialRenderer.test.ts +69 -0
  235. package/src/drawGlScene3D.test.ts +304 -0
  236. package/src/emissiveGlMeshMaterialRenderer.test.ts +60 -0
  237. package/src/enableGlScene3DColorSpaceGuards.test.ts +63 -0
  238. package/src/enableGlScene3DCustomShaderGuards.test.ts +85 -0
  239. package/src/enableGlScene3DDeformGuards.test.ts +98 -0
  240. package/src/enableGlScene3DForwardLightSelectionGuards.test.ts +84 -0
  241. package/src/explainGlScene3DForwardLightSelection.test.ts +32 -0
  242. package/src/glClassicPrelude.test.ts +214 -0
  243. package/src/glDebugPrelude.test.ts +94 -0
  244. package/src/glEnvironmentCube.test.ts +71 -0
  245. package/src/glEnvironmentIblBake.test.ts +31 -0
  246. package/src/glEnvironmentSkybox.test.ts +24 -0
  247. package/src/glLitProgram.test.ts +181 -0
  248. package/src/glMatcapPrelude.test.ts +74 -0
  249. package/src/glMeshMaterialRegistry.test.ts +52 -0
  250. package/src/glMeshProgram.test.ts +406 -0
  251. package/src/glMeshUpload.test.ts +311 -0
  252. package/src/glParticleEmitter3D.test.ts +280 -0
  253. package/src/glPbrPrelude.test.ts +178 -0
  254. package/src/glPbrProgramCache.test.ts +116 -0
  255. package/src/glPbrStandardBlock.test.ts +85 -0
  256. package/src/glScene3DRuntime.test.ts +108 -0
  257. package/src/glScene3DTime.test.ts +31 -0
  258. package/src/glShadedBuiltInModifiers.test.ts +377 -0
  259. package/src/glShadedModifierSnippet.test.ts +46 -0
  260. package/src/glShadedPrelude.test.ts +177 -0
  261. package/src/glShadowMap.test.ts +219 -0
  262. package/src/glToonPrelude.test.ts +118 -0
  263. package/src/glUnlitPrelude.test.ts +156 -0
  264. package/src/glWireframePrelude.test.ts +46 -0
  265. package/src/glWireframeUpload.test.ts +50 -0
  266. package/src/iridescencePbrGlMeshMaterialRenderer.test.ts +86 -0
  267. package/src/lambertGlMeshMaterialRenderer.test.ts +92 -0
  268. package/src/matcapGlMeshMaterialRenderer.test.ts +70 -0
  269. package/src/normalGlMeshMaterialRenderer.test.ts +69 -0
  270. package/src/phongGlMeshMaterialRenderer.test.ts +94 -0
  271. package/src/prepareGlScene3DForwardLights.test.ts +106 -0
  272. package/src/presentGlScene3D.test.ts +98 -0
  273. package/src/registerStandardPbrGlMaterial.test.ts +14 -0
  274. package/src/shadedGlMeshMaterialRenderer.test.ts +106 -0
  275. package/src/sheenPbrGlMeshMaterialRenderer.test.ts +83 -0
  276. package/src/specularGlossinessPbrGlMeshMaterialRenderer.test.ts +96 -0
  277. package/src/specularPbrGlMeshMaterialRenderer.test.ts +83 -0
  278. package/src/standardPbrGlMeshMaterialRenderer.test.ts +88 -0
  279. package/src/subsurfacePbrGlMeshMaterialRenderer.test.ts +86 -0
  280. package/src/toonGlMeshMaterialRenderer.test.ts +92 -0
  281. package/src/transmissionVolumePbrGlMeshMaterialRenderer.test.ts +93 -0
  282. package/src/unlitGlMeshMaterialRenderer.test.ts +88 -0
  283. package/src/vertexColorGlMeshMaterialRenderer.test.ts +60 -0
  284. package/src/wireframeGlMeshMaterialRenderer.test.ts +69 -0
@@ -0,0 +1,172 @@
1
+ import { MAX_FORWARD_LIGHTS } from '@flighthq/types';
2
+ import { GL_MESH_LIGHT_BLOCK_GLSL, resolveGlLitLocations } from './glLitProgram';
3
+ import { GL_SKIN_VERTEX_DECLARATIONS_GLSL, GL_UV_TRANSFORM_VERTEX_GLSL, compileGlProgram, ensureGlScene3DProgram, } from './glMeshProgram';
4
+ import { getGlScene3DRuntime } from './glScene3DRuntime';
5
+ // A short, stable, order-independent string identity for a Toon define key, used as the program-
6
+ // cache key. Two keys with the same flags produce the same string and so share a compiled program.
7
+ export function buildGlToonDefineKey(key) {
8
+ return `${key.alphaMaskEnabled ? 'm' : '-'}${key.hasBaseColorMap ? 'b' : '-'}${key.hasRamp ? 'r' : '-'}${key.hasUvTransform ? 'u' : '-'}${key.hasSkin ? 'k' : '-'}`;
9
+ }
10
+ // Compiles the Toon uber-shader for a define key, links it, and resolves its uniform locations.
11
+ // Spreads the standard lit locations (resolveGlLitLocations) then adds the Toon material uniforms
12
+ // plus the shared model/normal/view-projection vertex transforms. Pure GL work — no caching — used
13
+ // by ensureGlToonProgram. Throws on a compile/link failure, which is a programmer error (a malformed
14
+ // prelude), not an expected runtime condition.
15
+ export function compileGlToonProgram(gl, key) {
16
+ const program = compileGlProgram(gl, getGlToonVertexSourceForKey(key), getGlToonFragmentSourceForKey(key));
17
+ return {
18
+ ...resolveGlLitLocations(gl, program),
19
+ program,
20
+ locAlphaCutoff: gl.getUniformLocation(program, 'u_alphaCutoff'),
21
+ locBaseColor: gl.getUniformLocation(program, 'u_baseColor'),
22
+ locBaseColorMap: gl.getUniformLocation(program, 'u_baseColorMap'),
23
+ locJointTexture: gl.getUniformLocation(program, 'u_jointTexture'),
24
+ locModel: gl.getUniformLocation(program, 'u_model'),
25
+ locNormalMatrix: gl.getUniformLocation(program, 'u_normalMatrix'),
26
+ locRamp: gl.getUniformLocation(program, 'u_ramp'),
27
+ locSteps: gl.getUniformLocation(program, 'u_steps'),
28
+ locViewProjection: gl.getUniformLocation(program, 'u_viewProjection'),
29
+ };
30
+ }
31
+ // Resolves the Toon program for a define key, compiling and caching it on first use through the
32
+ // shared scene program cache under the `toon:` family namespace, so each variant is compiled at most
33
+ // once per state and reused every frame.
34
+ export function ensureGlToonProgram(state, key) {
35
+ // Fold the render-state skinned-run flag into the variant so a skinned draw of an otherwise-identical
36
+ // material compiles + caches its own HAS_SKIN program, without the material renderer knowing.
37
+ const fullKey = {
38
+ ...key,
39
+ hasSkin: getGlScene3DRuntime(state).activeSkinnedRun,
40
+ };
41
+ return ensureGlScene3DProgram(state, `toon:${buildGlToonDefineKey(fullKey)}`, (gl) => compileGlToonProgram(gl, fullKey));
42
+ }
43
+ // The full fragment source for a define key (define block + body), ready to hand to the GL compiler.
44
+ export function getGlToonFragmentSourceForKey(key) {
45
+ return buildGlToonDefineSource(key) + TOON_FRAGMENT_BODY;
46
+ }
47
+ // The full vertex source for a define key (define block + body), ready to hand to the GL compiler.
48
+ export function getGlToonVertexSourceForKey(key) {
49
+ const skin = key.hasSkin ? GL_SKIN_VERTEX_DECLARATIONS_GLSL : '';
50
+ return buildGlToonDefineSource(key) + skin + TOON_VERTEX_BODY;
51
+ }
52
+ // Builds the leading "#version 300 es\n#define ..." block for a define key, to be prepended to the
53
+ // vertex and fragment prelude bodies before compile. Pure string assembly; the same key always
54
+ // yields the same source, which is what makes the program cache by define key sound.
55
+ function buildGlToonDefineSource(key) {
56
+ let defines = `#version 300 es\n#define MAX_FORWARD_LIGHTS ${MAX_FORWARD_LIGHTS}\n`;
57
+ if (key.alphaMaskEnabled)
58
+ defines += '#define ALPHA_MASK\n';
59
+ if (key.hasBaseColorMap)
60
+ defines += '#define HAS_BASE_COLOR_MAP\n';
61
+ if (key.hasRamp)
62
+ defines += '#define HAS_RAMP\n';
63
+ if (key.hasUvTransform)
64
+ defines += '#define HAS_UV_TRANSFORM\n';
65
+ if (key.hasSkin)
66
+ defines += '#define HAS_SKIN\n';
67
+ return defines;
68
+ }
69
+ const TOON_VERTEX_BODY = `
70
+ layout(location = 0) in vec3 a_position;
71
+ layout(location = 1) in vec3 a_normal;
72
+ layout(location = 3) in vec2 a_uv0;
73
+
74
+ uniform mat4 u_viewProjection;
75
+ uniform mat4 u_model;
76
+ uniform mat3 u_normalMatrix;
77
+ ${GL_UV_TRANSFORM_VERTEX_GLSL}
78
+ out vec3 v_worldPosition;
79
+ out vec3 v_normal;
80
+ out vec2 v_uv0;
81
+
82
+ void main() {
83
+ #ifdef HAS_SKIN
84
+ mat4 skin = skinMatrix();
85
+ vec4 localPosition = skin * vec4(a_position, 1.0);
86
+ vec3 localNormal = mat3(skin) * a_normal;
87
+ #else
88
+ vec4 localPosition = vec4(a_position, 1.0);
89
+ vec3 localNormal = a_normal;
90
+ #endif
91
+ vec4 worldPosition = u_model * localPosition;
92
+ v_worldPosition = worldPosition.xyz;
93
+ v_normal = u_normalMatrix * localNormal;
94
+ v_uv0 = applyUvTransform(a_uv0);
95
+ gl_Position = u_viewProjection * worldPosition;
96
+ }
97
+ `;
98
+ const TOON_FRAGMENT_BODY = `
99
+ precision highp float;
100
+
101
+ in vec3 v_worldPosition;
102
+ in vec3 v_normal;
103
+ in vec2 v_uv0;
104
+
105
+ uniform vec4 u_baseColor; // already linear (decoded on the CPU at bind)
106
+ uniform float u_steps; // band count for the stepped floor quantizer (no ramp)
107
+ uniform float u_alphaCutoff;
108
+ ${GL_MESH_LIGHT_BLOCK_GLSL}
109
+ #ifdef HAS_BASE_COLOR_MAP
110
+ uniform sampler2D u_baseColorMap;
111
+ #endif
112
+ #ifdef HAS_RAMP
113
+ uniform sampler2D u_ramp;
114
+ #endif
115
+
116
+ uniform float u_objectAlpha;
117
+
118
+ out vec4 fragColor;
119
+
120
+ // sRgb albedo texels are gamma-encoded; decode to linear before lighting. u_baseColor is already
121
+ // linear (decoded on the CPU at bind), so only sampled textures need decoding.
122
+ vec3 srgbToLinear(vec3 c) {
123
+ vec3 lo = c / 12.92;
124
+ vec3 hi = pow((c + 0.055) / 1.055, vec3(2.4));
125
+ return mix(lo, hi, step(0.04045, c));
126
+ }
127
+
128
+ void main() {
129
+ vec4 baseColor = u_baseColor;
130
+ #ifdef HAS_BASE_COLOR_MAP
131
+ vec4 sampled = texture(u_baseColorMap, v_uv0);
132
+ baseColor.rgb *= srgbToLinear(sampled.rgb);
133
+ baseColor.a *= sampled.a;
134
+ #endif
135
+
136
+ #ifdef ALPHA_MASK
137
+ if (baseColor.a < u_alphaCutoff) discard;
138
+ #endif
139
+
140
+ vec3 normal = normalize(v_normal);
141
+ if (!gl_FrontFacing) normal = -normal;
142
+
143
+ vec3 radiance = vec3(0.0);
144
+
145
+ // Directional light: -direction is the surface-to-light vector (light travels along direction).
146
+ // The raw N·L is quantized into cel bands — via a 1D ramp lookup or a stepped floor — then scales
147
+ // the base color and the directional radiance. The banded contribution is shadow-mapped like the
148
+ // classic/PBR directional term; sampleDirectionalShadow is 1.0 when no shadow map is bound, so a toon
149
+ // scene that never calls drawGlScene3DShadowMap is unchanged.
150
+ if (u_directionalCount > 0.5) {
151
+ vec3 lightDir = normalize(-u_directional.xyz);
152
+ float nDotL = clamp(dot(normal, lightDir), 0.0, 1.0);
153
+ #ifdef HAS_RAMP
154
+ vec3 band = texture(u_ramp, vec2(nDotL, 0.5)).rgb;
155
+ vec3 direct = baseColor.rgb * band * u_directionalRadiance.rgb;
156
+ #else
157
+ float band = floor(nDotL * u_steps) / max(u_steps, 1.0);
158
+ vec3 direct = baseColor.rgb * band * u_directionalRadiance.rgb;
159
+ #endif
160
+ radiance += direct * sampleDirectionalShadow(v_worldPosition);
161
+ }
162
+
163
+ // Ambient term: flat irradiance over the base color (unbanded).
164
+ if (u_ambientCount > 0.5) {
165
+ radiance += baseColor.rgb * u_ambientRadiance;
166
+ }
167
+
168
+ fragColor = vec4(radiance, baseColor.a);
169
+ fragColor.a *= u_objectAlpha;
170
+ }
171
+ `;
172
+ //# sourceMappingURL=glToonPrelude.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glToonPrelude.js","sourceRoot":"","sources":["../src/glToonPrelude.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { GlUnlitDefineKey, GlUnlitProgram, LinearColor, GlRenderState, Texture, VideoTexture } from '@flighthq/types';
2
+ export declare function bindGlUnlitSurface(state: GlRenderState, program: Readonly<GlUnlitProgram>, color: Readonly<LinearColor>, intensity: number, colorMap: Readonly<Texture> | null, alphaCutoff: number): void;
3
+ export declare function bindGlUnlitVideoSurface(state: GlRenderState, program: Readonly<GlUnlitProgram>, color: Readonly<LinearColor>, intensity: number, videoMap: Readonly<VideoTexture>, alphaCutoff: number): void;
4
+ export declare function buildGlUnlitDefineKey(key: Readonly<GlUnlitDefineKey>): string;
5
+ export declare function compileGlUnlitProgram(gl: WebGL2RenderingContext, key: Readonly<GlUnlitDefineKey>): GlUnlitProgram;
6
+ export declare function ensureGlUnlitProgram(state: GlRenderState, key: Readonly<GlUnlitDefineKey>): GlUnlitProgram;
7
+ export declare function getGlUnlitFragmentSourceForKey(key: Readonly<GlUnlitDefineKey>): string;
8
+ export declare function getGlUnlitVertexSourceForKey(key: Readonly<GlUnlitDefineKey>): string;
9
+ //# sourceMappingURL=glUnlitPrelude.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glUnlitPrelude.d.ts","sourceRoot":"","sources":["../src/glUnlitPrelude.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,aAAa,EACb,OAAO,EACP,YAAY,EACb,MAAM,iBAAiB,CAAC;AAazB,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,EACjC,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,EAC5B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,EAClC,WAAW,EAAE,MAAM,GAClB,IAAI,CAWN;AAQD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,EACjC,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,EAC5B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,EAChC,WAAW,EAAE,MAAM,GAClB,IAAI,CAQN;AAID,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAI7E;AAID,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,sBAAsB,EAAE,GAAG,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,cAAc,CAajH;AAID,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,cAAc,CAU1G;AAGD,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAEtF;AAGD,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAEpF"}
@@ -0,0 +1,160 @@
1
+ import { hasImageResourcePixels } from '@flighthq/image';
2
+ import { bindGlImageResourceTexture, bindGlVideoTexture } from '@flighthq/render-gl';
3
+ import { GL_SKIN_VERTEX_DECLARATIONS_GLSL, GL_UV_TRANSFORM_VERTEX_GLSL, compileGlProgram, ensureGlScene3DProgram, } from './glMeshProgram';
4
+ import { getGlScene3DRuntime } from './glScene3DRuntime';
5
+ // Uploads the resolved unlit surface uniforms shared by all three unlit materials: the linear color
6
+ // (already sRgb-decoded on the CPU), the intensity scale (1 for Unlit/VertexColor, emissiveStrength
7
+ // for Emissive), the optional color map on texture unit 0, and the alpha-mask cutoff. The caller has
8
+ // already selected the program (beginGlMeshDraw) and set the view-projection.
9
+ export function bindGlUnlitSurface(state, program, color, intensity, colorMap, alphaCutoff) {
10
+ const gl = state.gl;
11
+ gl.uniform4f(program.locColor, color[0], color[1], color[2], color[3]);
12
+ gl.uniform1f(program.locIntensity, intensity);
13
+ gl.uniform1f(program.locAlphaCutoff, alphaCutoff);
14
+ if (colorMap !== null && colorMap.image !== null && hasImageResourcePixels(colorMap.image)) {
15
+ gl.activeTexture(gl.TEXTURE0);
16
+ bindGlImageResourceTexture(state, colorMap.image, colorMap.sampler);
17
+ gl.uniform1i(program.locColorMap, 0);
18
+ }
19
+ }
20
+ // The dynamic-video sibling of bindGlUnlitSurface: binds a VideoTexture into the unlit color-map slot
21
+ // (texture unit 0) so a mesh material samples a live video stream through the same HAS_COLOR_MAP path a
22
+ // still Texture uses. bindGlVideoTexture applies the frameId dirty-gate — a paused stream re-uploads
23
+ // nothing — and the VideoTexture's sampler. The color/intensity/alpha-cutoff uniforms are set exactly as
24
+ // the still path; only the map binding differs. The caller has already selected the HAS_COLOR_MAP program
25
+ // (beginGlMeshDraw) and set the view-projection.
26
+ export function bindGlUnlitVideoSurface(state, program, color, intensity, videoMap, alphaCutoff) {
27
+ const gl = state.gl;
28
+ gl.uniform4f(program.locColor, color[0], color[1], color[2], color[3]);
29
+ gl.uniform1f(program.locIntensity, intensity);
30
+ gl.uniform1f(program.locAlphaCutoff, alphaCutoff);
31
+ gl.activeTexture(gl.TEXTURE0);
32
+ bindGlVideoTexture(state, videoMap);
33
+ gl.uniform1i(program.locColorMap, 0);
34
+ }
35
+ // A short, stable, order-independent string identity for an unlit define key, used as the program-
36
+ // cache key. Two keys with the same flags produce the same string and so share a compiled program.
37
+ export function buildGlUnlitDefineKey(key) {
38
+ return `${key.alphaMaskEnabled ? 'm' : '-'}${key.hasColorMap ? 'c' : '-'}${key.vertexColor ? 'v' : '-'}${key.hasUvTransform ? 'u' : '-'}${key.hasSkin ? 'k' : '-'}`;
39
+ }
40
+ // Compiles the unlit shader for a define key, links it, and resolves its uniform locations. Pure GL
41
+ // work — no caching — used by ensureGlUnlitProgram.
42
+ export function compileGlUnlitProgram(gl, key) {
43
+ const program = compileGlProgram(gl, getGlUnlitVertexSourceForKey(key), getGlUnlitFragmentSourceForKey(key));
44
+ return {
45
+ locAlphaCutoff: gl.getUniformLocation(program, 'u_alphaCutoff'),
46
+ locColor: gl.getUniformLocation(program, 'u_color'),
47
+ locColorMap: gl.getUniformLocation(program, 'u_colorMap'),
48
+ locIntensity: gl.getUniformLocation(program, 'u_intensity'),
49
+ locJointTexture: gl.getUniformLocation(program, 'u_jointTexture'),
50
+ locModel: gl.getUniformLocation(program, 'u_model'),
51
+ locNormalMatrix: null,
52
+ locViewProjection: gl.getUniformLocation(program, 'u_viewProjection'),
53
+ program,
54
+ };
55
+ }
56
+ // Resolves the unlit program for a define key, compiling and caching it on first use through the
57
+ // shared scene program cache under the `unlit:` family namespace.
58
+ export function ensureGlUnlitProgram(state, key) {
59
+ // Fold the render-state skinned-run flag into the variant so a skinned draw of an otherwise-identical
60
+ // material compiles + caches its own HAS_SKIN program, without the material renderer knowing.
61
+ const fullKey = {
62
+ ...key,
63
+ hasSkin: getGlScene3DRuntime(state).activeSkinnedRun,
64
+ };
65
+ return ensureGlScene3DProgram(state, `unlit:${buildGlUnlitDefineKey(fullKey)}`, (gl) => compileGlUnlitProgram(gl, fullKey));
66
+ }
67
+ // The full fragment source for a define key (define block + body), ready to hand to the GL compiler.
68
+ export function getGlUnlitFragmentSourceForKey(key) {
69
+ return buildDefineSource(key) + UNLIT_FRAGMENT_BODY;
70
+ }
71
+ // The full vertex source for a define key (define block + body), ready to hand to the GL compiler.
72
+ export function getGlUnlitVertexSourceForKey(key) {
73
+ return buildDefineSource(key) + (key.hasSkin ? GL_SKIN_VERTEX_DECLARATIONS_GLSL : '') + UNLIT_VERTEX_BODY;
74
+ }
75
+ function buildDefineSource(key) {
76
+ let defines = '#version 300 es\n';
77
+ if (key.alphaMaskEnabled)
78
+ defines += '#define ALPHA_MASK\n';
79
+ if (key.hasColorMap)
80
+ defines += '#define HAS_COLOR_MAP\n';
81
+ if (key.hasUvTransform)
82
+ defines += '#define HAS_UV_TRANSFORM\n';
83
+ if (key.vertexColor)
84
+ defines += '#define VERTEX_COLOR\n';
85
+ if (key.hasSkin)
86
+ defines += '#define HAS_SKIN\n';
87
+ return defines;
88
+ }
89
+ const UNLIT_VERTEX_BODY = `
90
+ layout(location = 0) in vec3 a_position;
91
+ layout(location = 3) in vec2 a_uv0;
92
+ #ifdef VERTEX_COLOR
93
+ layout(location = 4) in vec4 a_color0;
94
+ out vec4 v_color0;
95
+ #endif
96
+
97
+ uniform mat4 u_viewProjection;
98
+ uniform mat4 u_model;
99
+ ${GL_UV_TRANSFORM_VERTEX_GLSL}
100
+ out vec2 v_uv0;
101
+
102
+ void main() {
103
+ v_uv0 = applyUvTransform(a_uv0);
104
+ #ifdef VERTEX_COLOR
105
+ v_color0 = a_color0;
106
+ #endif
107
+ #ifdef HAS_SKIN
108
+ gl_Position = u_viewProjection * u_model * skinMatrix() * vec4(a_position, 1.0);
109
+ #else
110
+ gl_Position = u_viewProjection * u_model * vec4(a_position, 1.0);
111
+ #endif
112
+ }
113
+ `;
114
+ const UNLIT_FRAGMENT_BODY = `
115
+ precision highp float;
116
+
117
+ in vec2 v_uv0;
118
+ #ifdef VERTEX_COLOR
119
+ in vec4 v_color0;
120
+ #endif
121
+
122
+ uniform vec4 u_color;
123
+ uniform float u_intensity;
124
+ #ifdef HAS_COLOR_MAP
125
+ uniform sampler2D u_colorMap;
126
+ #endif
127
+ #ifdef ALPHA_MASK
128
+ uniform float u_alphaCutoff;
129
+ #endif
130
+
131
+ uniform float u_objectAlpha;
132
+
133
+ out vec4 fragColor;
134
+
135
+ // sRgb texels are gamma-encoded; decode to linear before use. u_color is already linear (decoded on
136
+ // the CPU at bind), so only the sampled color-map needs decoding.
137
+ vec3 srgbToLinear(vec3 c) {
138
+ vec3 lo = c / 12.92;
139
+ vec3 hi = pow((c + 0.055) / 1.055, vec3(2.4));
140
+ return mix(lo, hi, step(0.04045, c));
141
+ }
142
+
143
+ void main() {
144
+ vec4 color = u_color;
145
+ #ifdef VERTEX_COLOR
146
+ color *= v_color0;
147
+ #endif
148
+ #ifdef HAS_COLOR_MAP
149
+ vec4 sampled = texture(u_colorMap, v_uv0);
150
+ color.rgb *= srgbToLinear(sampled.rgb);
151
+ color.a *= sampled.a;
152
+ #endif
153
+ #ifdef ALPHA_MASK
154
+ if (color.a < u_alphaCutoff) discard;
155
+ #endif
156
+ fragColor = vec4(color.rgb * u_intensity, color.a);
157
+ fragColor.a *= u_objectAlpha;
158
+ }
159
+ `;
160
+ //# sourceMappingURL=glUnlitPrelude.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glUnlitPrelude.js","sourceRoot":"","sources":["../src/glUnlitPrelude.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { GlWireframeProgram, GlRenderState } from '@flighthq/types';
2
+ export declare function compileGlWireframeProgram(gl: WebGL2RenderingContext): GlWireframeProgram;
3
+ export declare function ensureGlWireframeProgram(state: GlRenderState): GlWireframeProgram;
4
+ export declare function getGlWireframeFragmentSource(): string;
5
+ export declare function getGlWireframeVertexSource(): string;
6
+ //# sourceMappingURL=glWireframePrelude.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glWireframePrelude.d.ts","sourceRoot":"","sources":["../src/glWireframePrelude.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAWzE,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,sBAAsB,GAAG,kBAAkB,CASxF;AAID,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,aAAa,GAAG,kBAAkB,CAEjF;AAGD,wBAAgB,4BAA4B,IAAI,MAAM,CAErD;AAGD,wBAAgB,0BAA0B,IAAI,MAAM,CAEnD"}
@@ -0,0 +1,56 @@
1
+ import { compileGlProgram, ensureGlScene3DProgram } from './glMeshProgram';
2
+ // The Gl wireframe prelude: a minimal GLSL 300 es shader that transforms the position attribute by
3
+ // the model + view-projection matrices and outputs a single flat LINE color. It has no lighting and
4
+ // no maps — the WireframeMaterial draws mesh edges as GL lines (see glWireframeUpload for the derived
5
+ // line-index buffer), so the fragment scene2d only needs the line color (decoded to linear on the CPU).
6
+ // There are no feature variants, so a single program is cached per state under the `wireframe:` key.
7
+ // Compiles the wireframe shader, links it, and resolves its uniform locations. Pure GL work — no
8
+ // caching — used by ensureGlWireframeProgram.
9
+ export function compileGlWireframeProgram(gl) {
10
+ const program = compileGlProgram(gl, getGlWireframeVertexSource(), getGlWireframeFragmentSource());
11
+ return {
12
+ locColor: gl.getUniformLocation(program, 'u_color'),
13
+ locModel: gl.getUniformLocation(program, 'u_model'),
14
+ locNormalMatrix: null,
15
+ locViewProjection: gl.getUniformLocation(program, 'u_viewProjection'),
16
+ program,
17
+ };
18
+ }
19
+ // Resolves the wireframe program, compiling and caching it on first use through the shared scene
20
+ // program cache under the `wireframe:` family namespace.
21
+ export function ensureGlWireframeProgram(state) {
22
+ return ensureGlScene3DProgram(state, 'wireframe:', (gl) => compileGlWireframeProgram(gl));
23
+ }
24
+ // The wireframe fragment source: outputs the flat linear line color.
25
+ export function getGlWireframeFragmentSource() {
26
+ return WIREFRAME_FRAGMENT;
27
+ }
28
+ // The wireframe vertex source: position → clip space.
29
+ export function getGlWireframeVertexSource() {
30
+ return WIREFRAME_VERTEX;
31
+ }
32
+ const WIREFRAME_VERTEX = `#version 300 es
33
+ layout(location = 0) in vec3 a_position;
34
+
35
+ uniform mat4 u_viewProjection;
36
+ uniform mat4 u_model;
37
+
38
+ void main() {
39
+ gl_Position = u_viewProjection * u_model * vec4(a_position, 1.0);
40
+ }
41
+ `;
42
+ const WIREFRAME_FRAGMENT = `#version 300 es
43
+ precision highp float;
44
+
45
+ uniform vec4 u_color;
46
+
47
+ uniform float u_objectAlpha;
48
+
49
+ out vec4 fragColor;
50
+
51
+ void main() {
52
+ fragColor = u_color;
53
+ fragColor.a *= u_objectAlpha;
54
+ }
55
+ `;
56
+ //# sourceMappingURL=glWireframePrelude.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glWireframePrelude.js","sourceRoot":"","sources":["../src/glWireframePrelude.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAE3E,mGAAmG;AACnG,oGAAoG;AACpG,sGAAsG;AACtG,wGAAwG;AACxG,qGAAqG;AACrG,iGAAiG;AACjG,8CAA8C;AAC9C,MAAM,UAAU,yBAAyB,CAAC,EAA0B;IAClE,MAAM,OAAO,GAAG,gBAAgB,CAAC,EAAE,EAAE,0BAA0B,EAAE,EAAE,4BAA4B,EAAE,CAAC,CAAC;IACnG,OAAO;QACL,QAAQ,EAAE,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,SAAS,CAAC;QACnD,QAAQ,EAAE,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,SAAS,CAAC;QACnD,eAAe,EAAE,IAAI;QACrB,iBAAiB,EAAE,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,CAAC;QACrE,OAAO;KACR,CAAC;AACJ,CAAC;AAED,iGAAiG;AACjG,yDAAyD;AACzD,MAAM,UAAU,wBAAwB,CAAC,KAAoB;IAC3D,OAAO,sBAAsB,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5F,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,4BAA4B;IAC1C,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,0BAA0B;IACxC,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,MAAM,gBAAgB,GAAG;;;;;;;;;CASxB,CAAC;AAEF,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;CAa1B,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { GlWireframeUpload, GlRenderState, MeshGeometry } from '@flighthq/types';
2
+ export declare function destroyGlWireframeUpload(state: GlRenderState, upload: Readonly<GlWireframeUpload>): void;
3
+ export declare function ensureGlWireframeUpload(state: GlRenderState, geometry: Readonly<MeshGeometry>): GlWireframeUpload;
4
+ //# sourceMappingURL=glWireframeUpload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glWireframeUpload.d.ts","sourceRoot":"","sources":["../src/glWireframeUpload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AActF,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAIxG;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,iBAAiB,CA6CjH"}
@@ -0,0 +1,85 @@
1
+ import { ensureGlMeshUpload } from './glMeshUpload';
2
+ // Lazily derives and uploads the wireframe line-index VAO for a geometry on this state, caching it
3
+ // keyed by the geometry entity. Reuses the geometry's interleaved vertex buffer (ensuring the
4
+ // triangle upload first), binds only the position attribute at location 0, and builds a line-list
5
+ // index buffer from the triangle indices. Leaves the wireframe VAO bound on return so the draw path
6
+ // issues its gl.LINES draw immediately after. A subset's triangle range [indexOffset, +indexCount)
7
+ // maps to the line range [indexOffset * 2, +indexCount * 2) (each triangle index yields two line
8
+ // indices), so the renderer draws a sub-range of this buffer.
9
+ // Frees the GL objects owned by a wireframe upload — the VAO and the line-index buffer. It does NOT
10
+ // delete the vertex buffer: that is the shared triangle upload's buffer (see ensureGlWireframeUpload),
11
+ // freed by destroyGlMeshUpload for that geometry, not here. Deleting an already-deleted GL object is
12
+ // a silent no-op.
13
+ export function destroyGlWireframeUpload(state, upload) {
14
+ const gl = state.gl;
15
+ gl.deleteVertexArray(upload.vao);
16
+ gl.deleteBuffer(upload.lineIndexBuffer);
17
+ }
18
+ export function ensureGlWireframeUpload(state, geometry) {
19
+ const gl = state.gl;
20
+ const meshUpload = ensureGlMeshUpload(state, geometry);
21
+ let perState = wireframeUploads.get(state);
22
+ if (perState === undefined) {
23
+ perState = new WeakMap();
24
+ wireframeUploads.set(state, perState);
25
+ }
26
+ let upload = perState.get(geometry);
27
+ if (upload !== undefined && upload.version === geometry.version) {
28
+ gl.bindVertexArray(upload.vao);
29
+ return upload;
30
+ }
31
+ const lineIndices = buildLineIndices(geometry);
32
+ const indexType = lineIndices instanceof Uint32Array ? gl.UNSIGNED_INT : gl.UNSIGNED_SHORT;
33
+ if (upload === undefined) {
34
+ upload = {
35
+ indexType,
36
+ lineIndexBuffer: gl.createBuffer(),
37
+ vao: gl.createVertexArray(),
38
+ version: -1,
39
+ };
40
+ perState.set(geometry, upload);
41
+ }
42
+ upload.indexType = indexType;
43
+ gl.bindVertexArray(upload.vao);
44
+ // Bind the shared interleaved vertex buffer and wire only the position attribute (location 0).
45
+ gl.bindBuffer(gl.ARRAY_BUFFER, meshUpload.vertexBuffer);
46
+ const stride = geometry.layout.stride;
47
+ const position = geometry.layout.attributes.find((a) => a.semantic === 'position');
48
+ const byteOffset = position !== undefined ? position.byteOffset : 0;
49
+ gl.enableVertexAttribArray(0);
50
+ gl.vertexAttribPointer(0, 3, gl.FLOAT, false, stride, byteOffset);
51
+ gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, upload.lineIndexBuffer);
52
+ gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, lineIndices, gl.STATIC_DRAW);
53
+ upload.version = geometry.version;
54
+ return upload;
55
+ }
56
+ // Builds the line-list index array (two indices per triangle edge, three edges per triangle) from a
57
+ // geometry's triangle indices, or from a sequential range when the geometry is non-indexed. Promotes
58
+ // to Uint32 when any index exceeds the Uint16 range.
59
+ function buildLineIndices(geometry) {
60
+ const triangleIndices = geometry.indices;
61
+ const triangleCount = triangleIndices !== null
62
+ ? Math.floor(triangleIndices.length / 3)
63
+ : Math.floor((geometry.vertices.length * 4) / geometry.layout.stride / 3);
64
+ const lineCount = triangleCount * 6;
65
+ const useUint32 = triangleIndices instanceof Uint32Array || lineCount > 65535;
66
+ const lines = useUint32 ? new Uint32Array(lineCount) : new Uint16Array(lineCount);
67
+ for (let t = 0; t < triangleCount; t++) {
68
+ const base = t * 3;
69
+ const i0 = triangleIndices !== null ? triangleIndices[base] : base;
70
+ const i1 = triangleIndices !== null ? triangleIndices[base + 1] : base + 1;
71
+ const i2 = triangleIndices !== null ? triangleIndices[base + 2] : base + 2;
72
+ const out = t * 6;
73
+ lines[out] = i0;
74
+ lines[out + 1] = i1;
75
+ lines[out + 2] = i1;
76
+ lines[out + 3] = i2;
77
+ lines[out + 4] = i2;
78
+ lines[out + 5] = i0;
79
+ }
80
+ return lines;
81
+ }
82
+ // Per-state wireframe upload caches, keyed by geometry. Module-local (not a runtime slot) since
83
+ // wireframe is the only consumer; the outer WeakMap drops a state's caches when the state is GC'd.
84
+ const wireframeUploads = new WeakMap();
85
+ //# sourceMappingURL=glWireframeUpload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glWireframeUpload.js","sourceRoot":"","sources":["../src/glWireframeUpload.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ export * from './anisotropyPbrGlMeshMaterialRenderer';
2
+ export * from './blinnPhongGlMeshMaterialRenderer';
3
+ export * from './clearcoatPbrGlMeshMaterialRenderer';
4
+ export * from './customShaderGlMeshMaterialRenderer';
5
+ export * from './depthGlMeshMaterialRenderer';
6
+ export * from './drawGlScene3D';
7
+ export * from './enableGlScene3DForwardLightSelectionGuards';
8
+ export * from './emissiveGlMeshMaterialRenderer';
9
+ export * from './explainGlScene3DForwardLightSelection';
10
+ export * from './enableGlScene3DColorSpaceGuards';
11
+ export * from './enableGlScene3DCustomShaderGuards';
12
+ export * from './enableGlScene3DDeformGuards';
13
+ export * from './glClassicPrelude';
14
+ export * from './glDebugPrelude';
15
+ export * from './glEnvironmentCube';
16
+ export * from './glEnvironmentIblBake';
17
+ export * from './glEnvironmentSkybox';
18
+ export * from './glLitProgram';
19
+ export * from './glMatcapPrelude';
20
+ export * from './glMeshMaterialRegistry';
21
+ export * from './glParticleEmitter3D';
22
+ export * from './glMeshProgram';
23
+ export * from './glMeshUpload';
24
+ export * from './glPbrPrelude';
25
+ export * from './glPbrProgramCache';
26
+ export * from './glPbrStandardBlock';
27
+ export * from './glScene3DRuntime';
28
+ export * from './glScene3DTime';
29
+ export * from './glShadedBuiltInModifiers';
30
+ export * from './glShadedModifierSnippet';
31
+ export * from './glShadedPrelude';
32
+ export * from './glShadowMap';
33
+ export * from './glToonPrelude';
34
+ export * from './glUnlitPrelude';
35
+ export * from './glWireframePrelude';
36
+ export * from './glWireframeUpload';
37
+ export * from './iridescencePbrGlMeshMaterialRenderer';
38
+ export * from './lambertGlMeshMaterialRenderer';
39
+ export * from './matcapGlMeshMaterialRenderer';
40
+ export * from './normalGlMeshMaterialRenderer';
41
+ export * from './phongGlMeshMaterialRenderer';
42
+ export * from './presentGlScene3D';
43
+ export * from './prepareGlScene3DForwardLights';
44
+ export * from './registerStandardPbrGlMaterial';
45
+ export * from './shadedGlMeshMaterialRenderer';
46
+ export * from './sheenPbrGlMeshMaterialRenderer';
47
+ export * from './specularGlossinessPbrGlMeshMaterialRenderer';
48
+ export * from './specularPbrGlMeshMaterialRenderer';
49
+ export * from './standardPbrGlMeshMaterialRenderer';
50
+ export * from './subsurfacePbrGlMeshMaterialRenderer';
51
+ export * from './toonGlMeshMaterialRenderer';
52
+ export * from './transmissionVolumePbrGlMeshMaterialRenderer';
53
+ export * from './unlitGlMeshMaterialRenderer';
54
+ export * from './vertexColorGlMeshMaterialRenderer';
55
+ export * from './wireframeGlMeshMaterialRenderer';
56
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uCAAuC,CAAC;AACtD,cAAc,oCAAoC,CAAC;AACnD,cAAc,sCAAsC,CAAC;AACrD,cAAc,sCAAsC,CAAC;AACrD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iBAAiB,CAAC;AAChC,cAAc,8CAA8C,CAAC;AAC7D,cAAc,kCAAkC,CAAC;AACjD,cAAc,yCAAyC,CAAC;AACxD,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wCAAwC,CAAC;AACvD,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oBAAoB,CAAC;AACnC,cAAc,iCAAiC,CAAC;AAChD,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,qCAAqC,CAAC;AACpD,cAAc,qCAAqC,CAAC;AACpD,cAAc,uCAAuC,CAAC;AACtD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+CAA+C,CAAC;AAC9D,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC"}