@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,21 @@
1
+ import { beginGlRenderPass, endGlRenderPass, presentGlRenderTarget } from '@flighthq/render-gl';
2
+ import { drawGlScene3D } from './drawGlScene3D';
3
+ // The no-effects 3D path, now a thin composition of the generic pass + present primitives: begin a pass
4
+ // (clears color + depth from the target's policy by default), draw the scene, end the pass (restore +
5
+ // resolve MSAA), then present (drawGlScene3D stamped the target 'linear', so present runs the sRGB encode
6
+ // to the canvas). It is an alternative to the effect pipeline, not a companion.
7
+ //
8
+ // This is now trivial enough to inline at the callsite; kept only as a named entry for the common case.
9
+ // Note the asymmetry with the old version is gone: there is no presentGlNode2D twin, because
10
+ // `presentGlRenderTarget` is subject-agnostic — a 2D-offscreen path presents through the very same call.
11
+ //
12
+ // `target` is the caller-owned linear intermediate: create once via createGlRenderTarget({ width,
13
+ // height, format: 'rgba16f', depth: 'depth-stencil', colorSpace: 'linear' }) and resize it to the canvas
14
+ // each frame before calling.
15
+ export function presentGlScene3D(state, target, scene, camera, lights) {
16
+ beginGlRenderPass(state, target);
17
+ drawGlScene3D(state, scene, camera, lights);
18
+ endGlRenderPass(state);
19
+ presentGlRenderTarget(state, target);
20
+ }
21
+ //# sourceMappingURL=presentGlScene3D.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentGlScene3D.js","sourceRoot":"","sources":["../src/presentGlScene3D.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAGhG,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,wGAAwG;AACxG,sGAAsG;AACtG,0GAA0G;AAC1G,gFAAgF;AAChF,EAAE;AACF,wGAAwG;AACxG,6FAA6F;AAC7F,yGAAyG;AACzG,EAAE;AACF,kGAAkG;AAClG,yGAAyG;AACzG,6BAA6B;AAC7B,MAAM,UAAU,gBAAgB,CAC9B,KAAoB,EACpB,MAAsB,EACtB,KAAuB,EACvB,MAA0B,EAC1B,MAAmC;IAEnC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACjC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,eAAe,CAAC,KAAK,CAAC,CAAC;IACvB,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { GlRenderState } from '@flighthq/types';
2
+ export declare function registerStandardPbrGlMaterial(state: GlRenderState): void;
3
+ //# sourceMappingURL=registerStandardPbrGlMaterial.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerStandardPbrGlMaterial.d.ts","sourceRoot":"","sources":["../src/registerStandardPbrGlMaterial.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAUrD,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAExE"}
@@ -0,0 +1,11 @@
1
+ import { StandardPbrMaterialKind } from '@flighthq/types';
2
+ import { registerGlMeshMaterialRenderer } from './glMeshMaterialRegistry';
3
+ import { standardPbrGlMeshMaterialRenderer } from './standardPbrGlMeshMaterialRenderer';
4
+ // Registers the built-in StandardPbr forward-lit renderer for StandardPbrMaterialKind on this
5
+ // state. Convenience over registerGlMeshMaterialRenderer(state, StandardPbrMaterialKind, …); call
6
+ // it once per GlRenderState before drawScene3D so meshes carrying StandardPbrMaterials draw. Opt-in
7
+ // by design (no top-level side effect): the render path knows no built-in material until registered.
8
+ export function registerStandardPbrGlMaterial(state) {
9
+ registerGlMeshMaterialRenderer(state, StandardPbrMaterialKind, standardPbrGlMeshMaterialRenderer);
10
+ }
11
+ //# sourceMappingURL=registerStandardPbrGlMaterial.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerStandardPbrGlMaterial.js","sourceRoot":"","sources":["../src/registerStandardPbrGlMaterial.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,iCAAiC,EAAE,MAAM,qCAAqC,CAAC;AAExF,8FAA8F;AAC9F,kGAAkG;AAClG,oGAAoG;AACpG,qGAAqG;AACrG,MAAM,UAAU,6BAA6B,CAAC,KAAoB;IAChE,8BAA8B,CAAC,KAAK,EAAE,uBAAuB,EAAE,iCAAiC,CAAC,CAAC;AACpG,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { GlMeshMaterialRenderer, GlRenderState } from '@flighthq/types';
2
+ export declare const shadedGlMeshMaterialRenderer: GlMeshMaterialRenderer;
3
+ export declare function registerShadedGlMaterial(state: GlRenderState): void;
4
+ //# sourceMappingURL=shadedGlMeshMaterialRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shadedGlMeshMaterialRenderer.d.ts","sourceRoot":"","sources":["../src/shadedGlMeshMaterialRenderer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAIV,sBAAsB,EACtB,aAAa,EAWd,MAAM,iBAAiB,CAAC;AAyBzB,eAAO,MAAM,4BAA4B,EAAE,sBA0B1C,CAAC;AAMF,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAEnE"}
@@ -0,0 +1,135 @@
1
+ import { unpackColorToLinear } from '@flighthq/color';
2
+ import { hasImageResourcePixels } from '@flighthq/image';
3
+ import { bindGlImageResourceTexture } from '@flighthq/render-gl';
4
+ import { orderModifierStack, resolveModifier } from '@flighthq/shading';
5
+ import { ShadedMaterialKind } from '@flighthq/types';
6
+ import { bindGlMeshLightBlock } from './glLitProgram';
7
+ import { registerGlMeshMaterialRenderer } from './glMeshMaterialRegistry';
8
+ import { beginGlMeshDraw, bindGlUvTransform, drawGlMeshSubset, hasGlUvTransform, setGlMeshCameraPosition, setGlMeshViewProjection, } from './glMeshProgram';
9
+ import { getGlScene3DRuntime } from './glScene3DRuntime';
10
+ import { getGlScene3DTime } from './glScene3DTime';
11
+ import { ensureGlShadedProgram } from './glShadedPrelude';
12
+ // The built-in ShadedMaterial forward-lit mesh-material renderer — @flighthq/shading's composable
13
+ // base material on Gl. bind assembles ONE program from the base blinn-phong lit shader plus the
14
+ // material's ordered modifier stack (a third assembly over the shared light block, keyed by the
15
+ // stack's feature-set define-key), uploads the camera view-projection + position, the packed light
16
+ // block, the base diffuse/specular/normal uniforms and maps, the per-frame `time`, then each
17
+ // modifier's uniforms. A plain ShadedMaterial (empty modifier stack) compiles the lean base variant
18
+ // and skips the modifier bind entirely. See registerShadedGlMaterial to install it, and
19
+ // registerBuiltInGlModifierSnippets to enable the built-in modifiers.
20
+ export const shadedGlMeshMaterialRenderer = {
21
+ bind(state, material, lights, camera) {
22
+ const gl = state.gl;
23
+ const shaded = material;
24
+ const modifiers = shaded !== null ? shaded.modifiers : EMPTY_MODIFIERS;
25
+ const program = ensureGlShadedProgram(state, defineKeyForMaterial(shaded), modifiers);
26
+ beginGlMeshDraw(state, program, shaded !== null && shaded.doubleSided);
27
+ setGlMeshViewProjection(gl, program.locViewProjection, camera);
28
+ setGlMeshCameraPosition(gl, program.locCameraPosition, camera);
29
+ bindGlMeshLightBlock(state, program, lights);
30
+ bindGlShadedMaterialUniforms(state, program, shaded);
31
+ gl.uniform1f(program.locTime, getGlScene3DTime(state));
32
+ if (modifiers.length > 0)
33
+ bindGlShadedModifiers(state, program, modifiers);
34
+ },
35
+ draw(state, proxy, geometry) {
36
+ const program = getGlScene3DRuntime(state).activeMeshProgram;
37
+ if (program === null)
38
+ return;
39
+ drawGlMeshSubset(state, program, proxy, geometry);
40
+ },
41
+ };
42
+ // Registers the built-in ShadedMaterial renderer for ShadedMaterialKind on this state. Opt-in (no
43
+ // top-level side effect); call once per GlRenderState before drawScene3D so meshes with ShadedMaterials
44
+ // draw. Enable the built-in modifiers separately with registerBuiltInGlModifierSnippets — a plain
45
+ // ShadedMaterial needs only this registration.
46
+ export function registerShadedGlMaterial(state) {
47
+ registerGlMeshMaterialRenderer(state, ShadedMaterialKind, shadedGlMeshMaterialRenderer);
48
+ }
49
+ // Iterates the ordered modifier stack and uploads each modifier's uniforms through its registered GL
50
+ // snippet, in the SAME order the compile path emitted them, so a snippet's suffixed uniform names
51
+ // (u_..._<index>) line up with the compiled program. A shared texture-unit cursor hands successive
52
+ // units (from MODIFIER_TEXTURE_UNIT_BASE) to snippets that sample maps. A modifier whose kind has no
53
+ // registered snippet, or a snippet with no `bind`, is skipped (it contributed no GLSL either).
54
+ function bindGlShadedModifiers(state, program, modifiers) {
55
+ const registry = getGlScene3DRuntime(state).modifierSnippetRegistry;
56
+ if (registry === null)
57
+ return;
58
+ const ordered = orderModifierStack(modifiers);
59
+ let nextTextureUnit = MODIFIER_TEXTURE_UNIT_BASE;
60
+ const context = {
61
+ // Hand out modifier units in [BASE, LIMIT); return -1 once exhausted so an over-textured stack
62
+ // drops its excess samplers (bindGlModifierTexture leaves them unbound) instead of walking into
63
+ // the shadow/IBL units and corrupting shadow sampling.
64
+ acquireModifierTextureUnit: () => (nextTextureUnit < MODIFIER_TEXTURE_UNIT_LIMIT ? nextTextureUnit++ : -1),
65
+ index: 0,
66
+ program: program.program,
67
+ state,
68
+ };
69
+ for (let index = 0; index < ordered.length; index++) {
70
+ const modifier = ordered[index];
71
+ const snippet = resolveModifier(registry, modifier.kind);
72
+ if (snippet === null || snippet.bind === undefined)
73
+ continue;
74
+ context.index = index;
75
+ snippet.bind(modifier, context);
76
+ }
77
+ }
78
+ function bindGlShadedMaterialUniforms(state, program, material) {
79
+ const gl = state.gl;
80
+ if (material === null) {
81
+ gl.uniform4f(program.locDiffuse, 1, 1, 1, 1);
82
+ gl.uniform4f(program.locSpecular, 1, 1, 1, 1);
83
+ gl.uniform1f(program.locShininess, 32);
84
+ gl.uniform1f(program.locNormalScale, 1);
85
+ gl.uniform1f(program.locAlphaCutoff, 0.5);
86
+ return;
87
+ }
88
+ unpackColorToLinear(scratchRgba, material.diffuse);
89
+ gl.uniform4f(program.locDiffuse, scratchRgba[0], scratchRgba[1], scratchRgba[2], scratchRgba[3]);
90
+ unpackColorToLinear(scratchRgba, material.specular);
91
+ gl.uniform4f(program.locSpecular, scratchRgba[0], scratchRgba[1], scratchRgba[2], scratchRgba[3]);
92
+ gl.uniform1f(program.locShininess, material.shininess);
93
+ gl.uniform1f(program.locNormalScale, material.normalScale);
94
+ gl.uniform1f(program.locAlphaCutoff, material.alphaCutoff);
95
+ const diffuseMap = material.diffuseMap;
96
+ if (diffuseMap !== null && diffuseMap.image !== null && hasImageResourcePixels(diffuseMap.image)) {
97
+ gl.activeTexture(gl.TEXTURE0);
98
+ bindGlImageResourceTexture(state, diffuseMap.image, diffuseMap.sampler);
99
+ gl.uniform1i(program.locDiffuseMap, 0);
100
+ }
101
+ const specularMap = material.specularMap;
102
+ if (specularMap !== null && specularMap.image !== null && hasImageResourcePixels(specularMap.image)) {
103
+ gl.activeTexture(gl.TEXTURE1);
104
+ bindGlImageResourceTexture(state, specularMap.image, specularMap.sampler);
105
+ gl.uniform1i(program.locSpecularMap, 1);
106
+ }
107
+ const normalMap = material.normalMap;
108
+ if (normalMap !== null && normalMap.image !== null && hasImageResourcePixels(normalMap.image)) {
109
+ gl.activeTexture(gl.TEXTURE2);
110
+ bindGlImageResourceTexture(state, normalMap.image, normalMap.sampler);
111
+ gl.uniform1i(program.locNormalMap, 2);
112
+ }
113
+ bindGlUvTransform(gl, program, diffuseMap);
114
+ }
115
+ // The base-material feature flags for a ShadedMaterial: which optional maps are present and whether
116
+ // alpha-mask cutoff is active. The modifier feature-set is keyed separately (in ensureGlShadedProgram)
117
+ // from the material's modifier stack.
118
+ function defineKeyForMaterial(material) {
119
+ return {
120
+ alphaMaskEnabled: material !== null && material.alphaMode === 'mask',
121
+ hasDiffuseMap: material !== null && material.diffuseMap !== null && material.diffuseMap.image !== null,
122
+ hasNormalMap: material !== null && material.normalMap !== null && material.normalMap.image !== null,
123
+ hasSpecularMap: material !== null && material.specularMap !== null && material.specularMap.image !== null,
124
+ hasUvTransform: hasGlUvTransform(material !== null ? material.diffuseMap : null),
125
+ };
126
+ }
127
+ // Modifier textures bind above the base material units (diffuse/specular/normal on 0/1/2) and below
128
+ // the shadow map (unit 8) and IBL units (9/10/11), so a modifier's map never clobbers a base or
129
+ // shadow binding. LIMIT mirrors glLitProgram's SHADOW_MAP_TEXTURE_UNIT (8): units [3, 8) are the
130
+ // five modifier-sampler slots; a stack asking for more gets -1 (dropped) rather than unit 8+.
131
+ const MODIFIER_TEXTURE_UNIT_BASE = 3;
132
+ const MODIFIER_TEXTURE_UNIT_LIMIT = 8;
133
+ const EMPTY_MODIFIERS = [];
134
+ const scratchRgba = [0, 0, 0, 0];
135
+ //# sourceMappingURL=shadedGlMeshMaterialRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shadedGlMeshMaterialRenderer.js","sourceRoot":"","sources":["../src/shadedGlMeshMaterialRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAkBxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,kGAAkG;AAClG,gGAAgG;AAChG,gGAAgG;AAChG,mGAAmG;AACnG,6FAA6F;AAC7F,oGAAoG;AACpG,wFAAwF;AACxF,sEAAsE;AACtE,MAAM,CAAC,MAAM,4BAA4B,GAA2B;IAClE,IAAI,CACF,KAAoB,EACpB,QAAmC,EACnC,MAAmC,EACnC,MAA0B;QAE1B,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,QAA2C,CAAC;QAC3D,MAAM,SAAS,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC;QACvE,MAAM,OAAO,GAAG,qBAAqB,CAAC,KAAK,EAAE,oBAAoB,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;QACtF,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC;QAEvE,uBAAuB,CAAC,EAAE,EAAE,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;QAC/D,uBAAuB,CAAC,EAAE,EAAE,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;QAC/D,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7C,4BAA4B,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACrD,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;QACvD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;YAAE,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IAC7E,CAAC;IAED,IAAI,CAAC,KAAoB,EAAE,KAAmC,EAAE,QAAgC;QAC9F,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC;QAC7D,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO;QAC7B,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;CACF,CAAC;AAEF,kGAAkG;AAClG,wGAAwG;AACxG,kGAAkG;AAClG,+CAA+C;AAC/C,MAAM,UAAU,wBAAwB,CAAC,KAAoB;IAC3D,8BAA8B,CAAC,KAAK,EAAE,kBAAkB,EAAE,4BAA4B,CAAC,CAAC;AAC1F,CAAC;AAED,qGAAqG;AACrG,kGAAkG;AAClG,mGAAmG;AACnG,qGAAqG;AACrG,+FAA+F;AAC/F,SAAS,qBAAqB,CAC5B,KAAoB,EACpB,OAAkC,EAClC,SAA8B;IAE9B,MAAM,QAAQ,GAAsC,mBAAmB,CAAC,KAAK,CAAC,CAAC,uBAAuB,CAAC;IACvG,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO;IAC9B,MAAM,OAAO,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC9C,IAAI,eAAe,GAAG,0BAA0B,CAAC;IACjD,MAAM,OAAO,GAA0B;QACrC,+FAA+F;QAC/F,gGAAgG;QAChG,uDAAuD;QACvD,0BAA0B,EAAE,GAAG,EAAE,CAAC,CAAC,eAAe,GAAG,2BAA2B,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1G,KAAK,EAAE,CAAC;QACR,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,KAAK;KACN,CAAC;IACF,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,OAAO,GAAG,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAA6B,CAAC;QACrF,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;YAAE,SAAS;QAC7D,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED,SAAS,4BAA4B,CACnC,KAAoB,EACpB,OAAkC,EAClC,QAAyC;IAEzC,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IACpB,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7C,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9C,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QACvC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QACxC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;QAC1C,OAAO;IACT,CAAC;IAED,mBAAmB,CAAC,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IACnD,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACjG,mBAAmB,CAAC,WAAW,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACpD,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAClG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IACvD,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC3D,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IAE3D,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;IACvC,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,CAAC,KAAK,KAAK,IAAI,IAAI,sBAAsB,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACjG,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC9B,0BAA0B,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;QACxE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;IACzC,IAAI,WAAW,KAAK,IAAI,IAAI,WAAW,CAAC,KAAK,KAAK,IAAI,IAAI,sBAAsB,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QACpG,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC9B,0BAA0B,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1E,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;IACrC,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,CAAC,KAAK,KAAK,IAAI,IAAI,sBAAsB,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9F,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC9B,0BAA0B,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;QACtE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,iBAAiB,CAAC,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;AAC7C,CAAC;AAED,oGAAoG;AACpG,uGAAuG;AACvG,sCAAsC;AACtC,SAAS,oBAAoB,CAAC,QAAyC;IACrE,OAAO;QACL,gBAAgB,EAAE,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC,SAAS,KAAK,MAAM;QACpE,aAAa,EAAE,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC,UAAU,KAAK,IAAI,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,KAAK,IAAI;QACtG,YAAY,EAAE,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC,SAAS,KAAK,IAAI,IAAI,QAAQ,CAAC,SAAS,CAAC,KAAK,KAAK,IAAI;QACnG,cAAc,EAAE,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC,WAAW,KAAK,IAAI,IAAI,QAAQ,CAAC,WAAW,CAAC,KAAK,KAAK,IAAI;QACzG,cAAc,EAAE,gBAAgB,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;KACjF,CAAC;AACJ,CAAC;AAED,oGAAoG;AACpG,gGAAgG;AAChG,iGAAiG;AACjG,8FAA8F;AAC9F,MAAM,0BAA0B,GAAG,CAAC,CAAC;AACrC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AACtC,MAAM,eAAe,GAAwB,EAAE,CAAC;AAChD,MAAM,WAAW,GAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { GlMeshMaterialRenderer, GlRenderState } from '@flighthq/types';
2
+ export declare const sheenPbrGlMeshMaterialRenderer: GlMeshMaterialRenderer;
3
+ export declare function registerSheenPbrGlMaterial(state: GlRenderState): void;
4
+ //# sourceMappingURL=sheenPbrGlMeshMaterialRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sheenPbrGlMeshMaterialRenderer.d.ts","sourceRoot":"","sources":["../src/sheenPbrGlMeshMaterialRenderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,sBAAsB,EACtB,aAAa,EAMd,MAAM,iBAAiB,CAAC;AAkBzB,eAAO,MAAM,8BAA8B,EAAE,sBAoC5C,CAAC;AAIF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAErE"}
@@ -0,0 +1,54 @@
1
+ import { unpackColorToLinear } from '@flighthq/color';
2
+ import { SheenPbrMaterialKind } from '@flighthq/types';
3
+ import { bindGlMeshLightBlock } from './glLitProgram';
4
+ import { registerGlMeshMaterialRenderer } from './glMeshMaterialRegistry';
5
+ import { beginGlMeshDraw, drawGlMeshSubset, setGlMeshCameraPosition, setGlMeshViewProjection } from './glMeshProgram';
6
+ import { ensureGlPbrProgram } from './glPbrProgramCache';
7
+ import { bindGlPbrStandardBlock, buildGlPbrStandardDefineKey } from './glPbrStandardBlock';
8
+ import { getGlScene3DRuntime } from './glScene3DRuntime';
9
+ // The built-in Sheen (KHR_materials_sheen) forward-lit mesh-material renderer. Sheen adds a
10
+ // retroreflective Charlie ("inverted GGX") lobe on top of the base specular — the soft grazing-angle
11
+ // glow of velvet, satin, and other cloth — tinted by `sheenColor` and widened by `sheenRoughness`.
12
+ // bind composes the material's `standard` block through the shared bindGlPbrStandardBlock and then
13
+ // uploads the sheen color/roughness; the lobe lives behind `#define SHEEN` in the PBR uber-shader.
14
+ // The packed sRgb `sheenColor` is decoded to linear on the CPU (unpackColorToLinear), matching the
15
+ // linear HDR radiance output. The sheen maps are reserved by the descriptor but not yet sampled here.
16
+ // See registerSheenPbrGlMaterial.
17
+ export const sheenPbrGlMeshMaterialRenderer = {
18
+ bind(state, material, lights, camera) {
19
+ const gl = state.gl;
20
+ const sheen = material;
21
+ const standard = sheen !== null ? sheen.standard : null;
22
+ const key = buildGlPbrStandardDefineKey(standard, sheen);
23
+ key.sheenEnabled = true;
24
+ const program = ensureGlPbrProgram(state, key);
25
+ beginGlMeshDraw(state, program, sheen !== null && sheen.doubleSided);
26
+ setGlMeshViewProjection(gl, program.locViewProjection, camera);
27
+ setGlMeshCameraPosition(gl, program.locCameraPosition, camera);
28
+ bindGlMeshLightBlock(state, program, lights);
29
+ bindGlPbrStandardBlock(state, program, standard);
30
+ gl.uniform1f(program.locAlphaCutoff, sheen !== null ? sheen.alphaCutoff : 0.5);
31
+ if (sheen !== null) {
32
+ unpackColorToLinear(scratchRgba, sheen.sheenColor);
33
+ gl.uniform3f(program.locSheenColor, scratchRgba[0], scratchRgba[1], scratchRgba[2]);
34
+ gl.uniform1f(program.locSheenRoughness, sheen.sheenRoughness);
35
+ }
36
+ else {
37
+ gl.uniform3f(program.locSheenColor, 0, 0, 0);
38
+ gl.uniform1f(program.locSheenRoughness, 0);
39
+ }
40
+ },
41
+ draw(state, proxy, geometry) {
42
+ const program = getGlScene3DRuntime(state).activeMeshProgram;
43
+ if (program === null)
44
+ return;
45
+ drawGlMeshSubset(state, program, proxy, geometry);
46
+ },
47
+ };
48
+ // Installs the built-in Sheen renderer for SheenPbrMaterialKind on this state. Opt-in (no top-level
49
+ // side effect): drawScene3D only draws Sheen subsets once this is called.
50
+ export function registerSheenPbrGlMaterial(state) {
51
+ registerGlMeshMaterialRenderer(state, SheenPbrMaterialKind, sheenPbrGlMeshMaterialRenderer);
52
+ }
53
+ const scratchRgba = [0, 0, 0, 0];
54
+ //# sourceMappingURL=sheenPbrGlMeshMaterialRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sheenPbrGlMeshMaterialRenderer.js","sourceRoot":"","sources":["../src/sheenPbrGlMeshMaterialRenderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { GlMeshMaterialRenderer, GlRenderState } from '@flighthq/types';
2
+ export declare const specularGlossinessPbrGlMeshMaterialRenderer: GlMeshMaterialRenderer;
3
+ export declare function registerSpecularGlossinessPbrGlMaterial(state: GlRenderState): void;
4
+ //# sourceMappingURL=specularGlossinessPbrGlMeshMaterialRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specularGlossinessPbrGlMeshMaterialRenderer.d.ts","sourceRoot":"","sources":["../src/specularGlossinessPbrGlMeshMaterialRenderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,sBAAsB,EACtB,aAAa,EAOd,MAAM,iBAAiB,CAAC;AAiCzB,eAAO,MAAM,2CAA2C,EAAE,sBAyBzD,CAAC;AAKF,wBAAgB,uCAAuC,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAElF"}
@@ -0,0 +1,121 @@
1
+ import { unpackColorToLinear } from '@flighthq/color';
2
+ import { SpecularGlossinessPbrMaterialKind } from '@flighthq/types';
3
+ import { bindGlMeshLightBlock } from './glLitProgram';
4
+ import { registerGlMeshMaterialRenderer } from './glMeshMaterialRegistry';
5
+ import { beginGlMeshDraw, drawGlMeshSubset, setGlMeshCameraPosition, setGlMeshViewProjection } from './glMeshProgram';
6
+ import { ensureGlPbrProgram } from './glPbrProgramCache';
7
+ import { bindGlPbrStandardBlock, buildGlPbrStandardDefineKey } from './glPbrStandardBlock';
8
+ import { getGlScene3DRuntime } from './glScene3DRuntime';
9
+ // The built-in SpecularGlossiness forward-lit mesh-material renderer (legacy KHR_materials_
10
+ // pbrSpecularGlossiness workflow). There is no spec-gloss path in the shader: this renderer converts
11
+ // the material to a StandardPbrMaterialProperties block on the CPU at bind time and drives the SAME
12
+ // base PBR program (no extension define), so spec-gloss assets render through the one metallic-
13
+ // roughness uber-shader.
14
+ //
15
+ // CONVERSION (Khronos glTF spec-gloss → metallic-roughness, `convertSpecularGlossinessToMetallic`):
16
+ // - roughness = 1 - glossiness (glossiness is the inverse of roughness)
17
+ // - metallic = solveMetallic(diffuseBrightness, specularBrightness): the quadratic that recovers
18
+ // the metallic factor from how far the specular reflectance sits above the 0.04
19
+ // dielectric floor. Fully dielectric specular → 0; albedo-bright specular → 1.
20
+ // - baseColor = lerp from the dielectric estimate (diffuse / (1 - 0.04)) toward the specular color
21
+ // by metallic, so a dielectric keeps its diffuse albedo and a conductor takes its
22
+ // specular tint as F0.
23
+ // The conversion is an approximation — spec-gloss can express specular tints a single metallic-
24
+ // roughness baseColor cannot reproduce exactly — but it matches the reference converter and is
25
+ // stable for typical assets. The specularGlossinessMap (specular RGB + glossiness A) is NOT remapped
26
+ // to a metallic-roughness map here (different packing); only the scalar conversion is applied, while
27
+ // diffuse/emissive/normal/occlusion maps pass straight through to the standard block.
28
+ //
29
+ // Colors are decoded to linear on the CPU before the conversion math; sampled albedo/emissive
30
+ // textures are sRgb-decoded in GLSL, so nothing is double-decoded. See
31
+ // registerSpecularGlossinessPbrGlMaterial.
32
+ export const specularGlossinessPbrGlMeshMaterialRenderer = {
33
+ bind(state, material, lights, camera) {
34
+ const gl = state.gl;
35
+ const specGloss = material;
36
+ const standard = specGloss !== null ? convertSpecularGlossinessToStandard(specGloss) : null;
37
+ const program = ensureGlPbrProgram(state, buildGlPbrStandardDefineKey(standard, specGloss));
38
+ beginGlMeshDraw(state, program, specGloss !== null && specGloss.doubleSided);
39
+ setGlMeshViewProjection(gl, program.locViewProjection, camera);
40
+ setGlMeshCameraPosition(gl, program.locCameraPosition, camera);
41
+ bindGlMeshLightBlock(state, program, lights);
42
+ bindGlPbrStandardBlock(state, program, standard);
43
+ gl.uniform1f(program.locAlphaCutoff, specGloss !== null ? specGloss.alphaCutoff : 0.5);
44
+ },
45
+ draw(state, proxy, geometry) {
46
+ const program = getGlScene3DRuntime(state).activeMeshProgram;
47
+ if (program === null)
48
+ return;
49
+ drawGlMeshSubset(state, program, proxy, geometry);
50
+ },
51
+ };
52
+ // Installs the built-in SpecularGlossiness renderer for SpecularGlossinessPbrMaterialKind on this
53
+ // state. Opt-in (no top-level side effect): drawScene3D only draws SpecularGlossiness subsets once
54
+ // this is called.
55
+ export function registerSpecularGlossinessPbrGlMaterial(state) {
56
+ registerGlMeshMaterialRenderer(state, SpecularGlossinessPbrMaterialKind, specularGlossinessPbrGlMeshMaterialRenderer);
57
+ }
58
+ // Builds a StandardPbrMaterialProperties block from a spec-gloss material via the Khronos reference
59
+ // conversion. Writes a packed RGBA baseColor/emissive (the standard block re-decodes them), so the
60
+ // downstream bindGlPbrStandardBlock path stays identical to a native StandardPbr material. The
61
+ // returned object is a fresh per-bind block (not pooled) — bind is not a hot inner loop, and reusing
62
+ // a scratch block would alias across draws.
63
+ function convertSpecularGlossinessToStandard(material) {
64
+ unpackColorToLinear(scratchDiffuse, material.diffuse);
65
+ unpackColorToLinear(scratchSpecular, material.specular);
66
+ const specularBrightness = Math.max(scratchSpecular[0], scratchSpecular[1], scratchSpecular[2]);
67
+ const oneMinusSpecularStrength = 1 - specularBrightness;
68
+ const diffuseBrightness = Math.max(scratchDiffuse[0], scratchDiffuse[1], scratchDiffuse[2]);
69
+ const metallic = solveMetallic(diffuseBrightness, specularBrightness, oneMinusSpecularStrength);
70
+ // baseColor: blend the dielectric diffuse estimate and the specular tint by metallic, per the
71
+ // reference converter, then re-pack to RGBA8 for the standard block to decode.
72
+ const denom = Math.max(1 - DIELECTRIC_SPECULAR, 1e-4);
73
+ const r = lerp((scratchDiffuse[0] * oneMinusSpecularStrength) / denom, scratchSpecular[0], metallic);
74
+ const g = lerp((scratchDiffuse[1] * oneMinusSpecularStrength) / denom, scratchSpecular[1], metallic);
75
+ const b = lerp((scratchDiffuse[2] * oneMinusSpecularStrength) / denom, scratchSpecular[2], metallic);
76
+ return {
77
+ alphaMap: null,
78
+ baseColor: packLinearRgba(r, g, b, scratchDiffuse[3]),
79
+ baseColorMap: material.diffuseMap,
80
+ emissive: material.emissive,
81
+ emissiveMap: material.emissiveMap,
82
+ emissiveStrength: material.emissiveStrength,
83
+ metallic,
84
+ metallicRoughnessMap: null,
85
+ normalMap: material.normalMap,
86
+ normalScale: material.normalScale,
87
+ occlusionMap: material.occlusionMap,
88
+ occlusionStrength: material.occlusionStrength,
89
+ roughness: 1 - material.glossiness,
90
+ };
91
+ }
92
+ function lerp(a, b, t) {
93
+ return a + (b - a) * t;
94
+ }
95
+ // Re-encodes a linear RGBA color (components in [0,1]) back to a packed 0xRRGGBBAA integer with the
96
+ // sRgb transfer, the inverse of unpackColorToLinear, so the standard block's CPU decode round-trips.
97
+ function packLinearRgba(r, g, b, a) {
98
+ const toByte = (linear) => {
99
+ const clamped = Math.min(Math.max(linear, 0), 1);
100
+ const srgb = clamped <= 0.0031308 ? clamped * 12.92 : 1.055 * Math.pow(clamped, 1 / 2.4) - 0.055;
101
+ return Math.round(srgb * 255) & 0xff;
102
+ };
103
+ const alpha = Math.round(Math.min(Math.max(a, 0), 1) * 255) & 0xff;
104
+ return ((toByte(r) << 24) | (toByte(g) << 16) | (toByte(b) << 8) | alpha) >>> 0;
105
+ }
106
+ // The Khronos spec-gloss → metallic solver: recovers the metallic factor from the diffuse and
107
+ // specular reflectances by solving the quadratic that the metallic-roughness F0 model implies. Below
108
+ // the 0.04 dielectric floor the surface is fully dielectric (metallic 0).
109
+ function solveMetallic(diffuse, specular, oneMinusSpecularStrength) {
110
+ if (specular < DIELECTRIC_SPECULAR)
111
+ return 0;
112
+ const a = DIELECTRIC_SPECULAR;
113
+ const b = (diffuse * oneMinusSpecularStrength) / (1 - DIELECTRIC_SPECULAR) + specular - 2 * DIELECTRIC_SPECULAR;
114
+ const c = DIELECTRIC_SPECULAR - specular;
115
+ const discriminant = Math.max(b * b - 4 * a * c, 0);
116
+ return Math.min(Math.max((-b + Math.sqrt(discriminant)) / (2 * a), 0), 1);
117
+ }
118
+ const DIELECTRIC_SPECULAR = 0.04;
119
+ const scratchDiffuse = [0, 0, 0, 0];
120
+ const scratchSpecular = [0, 0, 0, 0];
121
+ //# sourceMappingURL=specularGlossinessPbrGlMeshMaterialRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specularGlossinessPbrGlMeshMaterialRenderer.js","sourceRoot":"","sources":["../src/specularGlossinessPbrGlMeshMaterialRenderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { GlMeshMaterialRenderer, GlRenderState } from '@flighthq/types';
2
+ export declare const specularPbrGlMeshMaterialRenderer: GlMeshMaterialRenderer;
3
+ export declare function registerSpecularPbrGlMaterial(state: GlRenderState): void;
4
+ //# sourceMappingURL=specularPbrGlMeshMaterialRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specularPbrGlMeshMaterialRenderer.d.ts","sourceRoot":"","sources":["../src/specularPbrGlMeshMaterialRenderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,sBAAsB,EACtB,aAAa,EAMd,MAAM,iBAAiB,CAAC;AAmBzB,eAAO,MAAM,iCAAiC,EAAE,sBAoC/C,CAAC;AAIF,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAExE"}
@@ -0,0 +1,55 @@
1
+ import { unpackColorToLinear } from '@flighthq/color';
2
+ import { SpecularPbrMaterialKind } from '@flighthq/types';
3
+ import { bindGlMeshLightBlock } from './glLitProgram';
4
+ import { registerGlMeshMaterialRenderer } from './glMeshMaterialRegistry';
5
+ import { beginGlMeshDraw, drawGlMeshSubset, setGlMeshCameraPosition, setGlMeshViewProjection } from './glMeshProgram';
6
+ import { ensureGlPbrProgram } from './glPbrProgramCache';
7
+ import { bindGlPbrStandardBlock, buildGlPbrStandardDefineKey } from './glPbrStandardBlock';
8
+ import { getGlScene3DRuntime } from './glScene3DRuntime';
9
+ // The built-in Specular (KHR_materials_specular) forward-lit mesh-material renderer. This extension
10
+ // gives independent control of a dielectric's specular reflection: `specular` scales the base
11
+ // reflectance and `specularColor` tints F0, letting a surface be more or less reflective than the
12
+ // fixed 0.04 dielectric default without changing its diffuse albedo (metals keep their albedo-tinted
13
+ // F0). The shader recomputes F0 = mix(min(0.04 * specularColor, 1) * specular, albedo, metallic)
14
+ // behind `#define SPECULAR_EXT`. bind composes the material's `standard` block through the shared
15
+ // bindGlPbrStandardBlock and uploads the specular scale + linear-decoded specularColor. The specular
16
+ // strength/color maps are reserved by the descriptor but not yet sampled. See
17
+ // registerSpecularPbrGlMaterial.
18
+ export const specularPbrGlMeshMaterialRenderer = {
19
+ bind(state, material, lights, camera) {
20
+ const gl = state.gl;
21
+ const specular = material;
22
+ const standard = specular !== null ? specular.standard : null;
23
+ const key = buildGlPbrStandardDefineKey(standard, specular);
24
+ key.specularEnabled = true;
25
+ const program = ensureGlPbrProgram(state, key);
26
+ beginGlMeshDraw(state, program, specular !== null && specular.doubleSided);
27
+ setGlMeshViewProjection(gl, program.locViewProjection, camera);
28
+ setGlMeshCameraPosition(gl, program.locCameraPosition, camera);
29
+ bindGlMeshLightBlock(state, program, lights);
30
+ bindGlPbrStandardBlock(state, program, standard);
31
+ gl.uniform1f(program.locAlphaCutoff, specular !== null ? specular.alphaCutoff : 0.5);
32
+ if (specular !== null) {
33
+ unpackColorToLinear(scratchRgba, specular.specularColor);
34
+ gl.uniform1f(program.locSpecular, specular.specular);
35
+ gl.uniform3f(program.locSpecularColor, scratchRgba[0], scratchRgba[1], scratchRgba[2]);
36
+ }
37
+ else {
38
+ gl.uniform1f(program.locSpecular, 1);
39
+ gl.uniform3f(program.locSpecularColor, 1, 1, 1);
40
+ }
41
+ },
42
+ draw(state, proxy, geometry) {
43
+ const program = getGlScene3DRuntime(state).activeMeshProgram;
44
+ if (program === null)
45
+ return;
46
+ drawGlMeshSubset(state, program, proxy, geometry);
47
+ },
48
+ };
49
+ // Installs the built-in Specular renderer for SpecularPbrMaterialKind on this state. Opt-in (no
50
+ // top-level side effect): drawScene3D only draws Specular subsets once this is called.
51
+ export function registerSpecularPbrGlMaterial(state) {
52
+ registerGlMeshMaterialRenderer(state, SpecularPbrMaterialKind, specularPbrGlMeshMaterialRenderer);
53
+ }
54
+ const scratchRgba = [0, 0, 0, 0];
55
+ //# sourceMappingURL=specularPbrGlMeshMaterialRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specularPbrGlMeshMaterialRenderer.js","sourceRoot":"","sources":["../src/specularPbrGlMeshMaterialRenderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { GlMeshMaterialRenderer } from '@flighthq/types';
2
+ export declare const standardPbrGlMeshMaterialRenderer: GlMeshMaterialRenderer;
3
+ //# sourceMappingURL=standardPbrGlMeshMaterialRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standardPbrGlMeshMaterialRenderer.d.ts","sourceRoot":"","sources":["../src/standardPbrGlMeshMaterialRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,sBAAsB,EAOvB,MAAM,iBAAiB,CAAC;AAkBzB,eAAO,MAAM,iCAAiC,EAAE,sBAwB/C,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { bindGlMeshLightBlock } from './glLitProgram';
2
+ import { beginGlMeshDraw, drawGlMeshSubset, setGlMeshCameraPosition, setGlMeshViewProjection } from './glMeshProgram';
3
+ import { ensureGlPbrProgram } from './glPbrProgramCache';
4
+ import { bindGlPbrStandardBlock, buildGlPbrStandardDefineKey } from './glPbrStandardBlock';
5
+ import { getGlScene3DRuntime } from './glScene3DRuntime';
6
+ // The built-in StandardPbr forward-lit mesh-material renderer (GlMeshMaterialRenderer for
7
+ // StandardPbrMaterialKind). bind selects the uber-shader variant for the material's maps/alpha mode,
8
+ // uploads the shared per-run uniforms (camera view-projection + position, the packed light block),
9
+ // and the full standard PBR block (scalars/colors + base-color/normal/metallic-roughness/occlusion/
10
+ // emissive maps) via the shared bindGlPbrStandardBlock helper — StandardPbr passes itself as the
11
+ // properties block since StandardPbrMaterial IS a StandardPbrMaterialProperties. draw uploads the
12
+ // geometry's GPU buffers lazily (cached by geometry.version), sets the per-draw model + normal
13
+ // matrices from the proxy, and issues the indexed draw over the proxy's subset with depth-test LESS +
14
+ // depth-write on and back-face culling unless the material is double-sided. See
15
+ // registerStandardPbrGlMaterial to install it.
16
+ export const standardPbrGlMeshMaterialRenderer = {
17
+ bind(state, material, lights, camera) {
18
+ const gl = state.gl;
19
+ const pbr = material;
20
+ const program = ensureGlPbrProgram(state, buildGlPbrStandardDefineKey(pbr, pbr));
21
+ beginGlMeshDraw(state, program, pbr !== null && pbr.doubleSided);
22
+ setGlMeshViewProjection(gl, program.locViewProjection, camera);
23
+ setGlMeshCameraPosition(gl, program.locCameraPosition, camera);
24
+ bindGlMeshLightBlock(state, program, lights);
25
+ bindGlPbrStandardBlock(state, program, pbr);
26
+ gl.uniform1f(program.locAlphaCutoff, pbr !== null ? pbr.alphaCutoff : 0.5);
27
+ },
28
+ draw(state, proxy, geometry) {
29
+ const program = getGlScene3DRuntime(state).activeMeshProgram;
30
+ if (program === null)
31
+ return;
32
+ drawGlMeshSubset(state, program, proxy, geometry);
33
+ },
34
+ };
35
+ //# sourceMappingURL=standardPbrGlMeshMaterialRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standardPbrGlMeshMaterialRenderer.js","sourceRoot":"","sources":["../src/standardPbrGlMeshMaterialRenderer.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AACtH,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,0FAA0F;AAC1F,qGAAqG;AACrG,mGAAmG;AACnG,oGAAoG;AACpG,iGAAiG;AACjG,kGAAkG;AAClG,+FAA+F;AAC/F,sGAAsG;AACtG,gFAAgF;AAChF,+CAA+C;AAC/C,MAAM,CAAC,MAAM,iCAAiC,GAA2B;IACvE,IAAI,CACF,KAAoB,EACpB,QAAmC,EACnC,MAAmC,EACnC,MAA0B;QAE1B,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,QAAgD,CAAC;QAC7D,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,EAAE,2BAA2B,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QACjF,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;QAEjE,uBAAuB,CAAC,EAAE,EAAE,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;QAC/D,uBAAuB,CAAC,EAAE,EAAE,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;QAC/D,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7C,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QAC5C,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7E,CAAC;IAED,IAAI,CAAC,KAAoB,EAAE,KAAmC,EAAE,QAAgC;QAC9F,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC;QAC7D,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO;QAC7B,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;CACF,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { GlMeshMaterialRenderer, GlRenderState } from '@flighthq/types';
2
+ export declare const subsurfacePbrGlMeshMaterialRenderer: GlMeshMaterialRenderer;
3
+ export declare function registerSubsurfacePbrGlMaterial(state: GlRenderState): void;
4
+ //# sourceMappingURL=subsurfacePbrGlMeshMaterialRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subsurfacePbrGlMeshMaterialRenderer.d.ts","sourceRoot":"","sources":["../src/subsurfacePbrGlMeshMaterialRenderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,sBAAsB,EACtB,aAAa,EAMd,MAAM,iBAAiB,CAAC;AAmBzB,eAAO,MAAM,mCAAmC,EAAE,sBAsCjD,CAAC;AAIF,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAE1E"}