python-cad-tools 0.1.0rc1__py3-none-any.whl

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 (236) hide show
  1. python_cad_tools/__init__.py +10 -0
  2. python_cad_tools/_locking.py +63 -0
  3. python_cad_tools/_project_loader.py +273 -0
  4. python_cad_tools/_project_state.py +65 -0
  5. python_cad_tools/_scaffold.py +66 -0
  6. python_cad_tools/_transaction.py +208 -0
  7. python_cad_tools/_viewer_static/app.webmanifest +18 -0
  8. python_cad_tools/_viewer_static/asset-manifest.json +1 -0
  9. python_cad_tools/_viewer_static/assets/animationGroup-Sd34ntWg.js +1 -0
  10. python_cad_tools/_viewer_static/assets/bakedVertexAnimation-Cd_pRdrn.js +316 -0
  11. python_cad_tools/_viewer_static/assets/basisTextureLoader-DWgvS_1G.js +1 -0
  12. python_cad_tools/_viewer_static/assets/brdfTextureTools-CWGiG1W2.js +2 -0
  13. python_cad_tools/_viewer_static/assets/bumpFragment-CWULheF1.js +127 -0
  14. python_cad_tools/_viewer_static/assets/bumpVertex-DqzFZayE.js +6 -0
  15. python_cad_tools/_viewer_static/assets/bumpVertexDeclaration-C5EFyTio.js +6 -0
  16. python_cad_tools/_viewer_static/assets/clipPlaneFragment-BXRtt4jj.js +46 -0
  17. python_cad_tools/_viewer_static/assets/clipPlaneVertex-B_VhD1oQ.js +37 -0
  18. python_cad_tools/_viewer_static/assets/cubemapToSphericalPolynomial-DRpaukza.js +1 -0
  19. python_cad_tools/_viewer_static/assets/dds-Dkb2Cx2N.js +1 -0
  20. python_cad_tools/_viewer_static/assets/dds.pure-DtvJsKvY.js +1 -0
  21. python_cad_tools/_viewer_static/assets/ddsTextureLoader-H78xux1g.js +1 -0
  22. python_cad_tools/_viewer_static/assets/default.fragment-oSQ-tWhe.js +469 -0
  23. python_cad_tools/_viewer_static/assets/default.vertex-DhFjw_Da.js +209 -0
  24. python_cad_tools/_viewer_static/assets/defaultUboDeclaration-BMDHNppx.js +5 -0
  25. python_cad_tools/_viewer_static/assets/dumpTools-BaNZPjUX.js +2 -0
  26. python_cad_tools/_viewer_static/assets/envTextureLoader-V0YnLcIM.js +1 -0
  27. python_cad_tools/_viewer_static/assets/exrTextureLoader-CjGyIK3x.js +1 -0
  28. python_cad_tools/_viewer_static/assets/flowGraphApplyForceBlock-CW5nuobR.js +1 -0
  29. python_cad_tools/_viewer_static/assets/flowGraphApplyImpulseBlock-LFqYIkhj.js +1 -0
  30. python_cad_tools/_viewer_static/assets/flowGraphArrayIndexBlock-BMOHUbBm.js +1 -0
  31. python_cad_tools/_viewer_static/assets/flowGraphBezierCurveEasingBlock-knmTiuEk.js +1 -0
  32. python_cad_tools/_viewer_static/assets/flowGraphBinaryOperationBlock-DFLuCAKJ.js +1 -0
  33. python_cad_tools/_viewer_static/assets/flowGraphBranchBlock-BJRHMXMo.js +1 -0
  34. python_cad_tools/_viewer_static/assets/flowGraphCachedOperationBlock-Dng-6jE0.js +1 -0
  35. python_cad_tools/_viewer_static/assets/flowGraphCancelDelayBlock-CgbK3CQZ.js +1 -0
  36. python_cad_tools/_viewer_static/assets/flowGraphCodeExecutionBlock-8zMtq9tg.js +1 -0
  37. python_cad_tools/_viewer_static/assets/flowGraphConditionalDataBlock-BiLr2rkI.js +1 -0
  38. python_cad_tools/_viewer_static/assets/flowGraphConsoleLogBlock-J1vcCtNP.js +1 -0
  39. python_cad_tools/_viewer_static/assets/flowGraphConstantBlock-CFb5nuaV.js +1 -0
  40. python_cad_tools/_viewer_static/assets/flowGraphContextBlock-DAeGVzhC.js +1 -0
  41. python_cad_tools/_viewer_static/assets/flowGraphCounterBlock-lZlAQiJd.js +1 -0
  42. python_cad_tools/_viewer_static/assets/flowGraphDataSwitchBlock-BIzvmbVy.js +1 -0
  43. python_cad_tools/_viewer_static/assets/flowGraphDebounceBlock-DvNuMVwy.js +1 -0
  44. python_cad_tools/_viewer_static/assets/flowGraphDebugBlock-Dymd2VEE.js +1 -0
  45. python_cad_tools/_viewer_static/assets/flowGraphDoNBlock-v68aoNLH.js +1 -0
  46. python_cad_tools/_viewer_static/assets/flowGraphEasingBlock-CTnGv92q.js +1 -0
  47. python_cad_tools/_viewer_static/assets/flowGraphFlipFlopBlock-DXsO0Chw.js +1 -0
  48. python_cad_tools/_viewer_static/assets/flowGraphForLoopBlock-CPpe9T75.js +1 -0
  49. python_cad_tools/_viewer_static/assets/flowGraphFunctionReferenceBlock-DjDev4Pq.js +1 -0
  50. python_cad_tools/_viewer_static/assets/flowGraphGLTFDataProvider-GIYCz4AQ.js +1 -0
  51. python_cad_tools/_viewer_static/assets/flowGraphGetAngularVelocityBlock-BStkOVeL.js +1 -0
  52. python_cad_tools/_viewer_static/assets/flowGraphGetAssetBlock-Eiqoivbz.js +1 -0
  53. python_cad_tools/_viewer_static/assets/flowGraphGetLinearVelocityBlock-B0cpV5ws.js +1 -0
  54. python_cad_tools/_viewer_static/assets/flowGraphGetPhysicsMassPropertiesBlock-B-H64yaI.js +1 -0
  55. python_cad_tools/_viewer_static/assets/flowGraphGetPropertyBlock-CUyOsPw0.js +1 -0
  56. python_cad_tools/_viewer_static/assets/flowGraphGetSoundVolumeBlock-C0FjrsUz.js +1 -0
  57. python_cad_tools/_viewer_static/assets/flowGraphGetVariableBlock-O4597zBl.js +1 -0
  58. python_cad_tools/_viewer_static/assets/flowGraphIndexOfBlock-E00Z3KXM.js +1 -0
  59. python_cad_tools/_viewer_static/assets/flowGraphInterpolationBlock-DnkA9MNH.js +1 -0
  60. python_cad_tools/_viewer_static/assets/flowGraphIsKeyPressedBlock-DDfeuAyf.js +1 -0
  61. python_cad_tools/_viewer_static/assets/flowGraphIsSoundPlayingBlock-DMXg8jdM.js +1 -0
  62. python_cad_tools/_viewer_static/assets/flowGraphJsonPointerParserBlock-OmCorK0y.js +1 -0
  63. python_cad_tools/_viewer_static/assets/flowGraphKeyDownEventBlock-RuVtj6g2.js +1 -0
  64. python_cad_tools/_viewer_static/assets/flowGraphKeyUpEventBlock-DO4pAfHi.js +1 -0
  65. python_cad_tools/_viewer_static/assets/flowGraphKeyboardEventBlock-Bx3pAzzh.js +1 -0
  66. python_cad_tools/_viewer_static/assets/flowGraphMathBlocks-7W1XYOC8.js +1 -0
  67. python_cad_tools/_viewer_static/assets/flowGraphMathCombineExtractBlocks-a4f0Kv6e.js +1 -0
  68. python_cad_tools/_viewer_static/assets/flowGraphMatrixMathBlocks-C5Z-y1Au.js +1 -0
  69. python_cad_tools/_viewer_static/assets/flowGraphMeshPickEventBlock-D4m-I4CS.js +1 -0
  70. python_cad_tools/_viewer_static/assets/flowGraphMultiGateBlock-BISVSMw6.js +1 -0
  71. python_cad_tools/_viewer_static/assets/flowGraphPauseAnimationBlock-BYP2Z-HG.js +1 -0
  72. python_cad_tools/_viewer_static/assets/flowGraphPauseSoundBlock-Drh1EeW6.js +1 -0
  73. python_cad_tools/_viewer_static/assets/flowGraphPhysicsCollisionEventBlock-BoziAQ75.js +1 -0
  74. python_cad_tools/_viewer_static/assets/flowGraphPlayAnimationBlock-Clry-68M.js +1 -0
  75. python_cad_tools/_viewer_static/assets/flowGraphPlaySoundBlock-LbBVxGBE.js +1 -0
  76. python_cad_tools/_viewer_static/assets/flowGraphPointerDownEventBlock-DIVXCSHh.js +1 -0
  77. python_cad_tools/_viewer_static/assets/flowGraphPointerMoveEventBlock-BNNOzY2W.js +1 -0
  78. python_cad_tools/_viewer_static/assets/flowGraphPointerOutEventBlock-B8f2dOFT.js +1 -0
  79. python_cad_tools/_viewer_static/assets/flowGraphPointerOverEventBlock-CQr8LCee.js +1 -0
  80. python_cad_tools/_viewer_static/assets/flowGraphPointerUpEventBlock-DMg_iEHl.js +1 -0
  81. python_cad_tools/_viewer_static/assets/flowGraphReceiveCustomEventBlock-B8GJm9Ai.js +1 -0
  82. python_cad_tools/_viewer_static/assets/flowGraphSceneReadyEventBlock-Dcdb29K2.js +1 -0
  83. python_cad_tools/_viewer_static/assets/flowGraphSceneTickEventBlock-BLE5p4mi.js +1 -0
  84. python_cad_tools/_viewer_static/assets/flowGraphSendCustomEventBlock-BMzDItQ5.js +1 -0
  85. python_cad_tools/_viewer_static/assets/flowGraphSequenceBlock-DRURovjn.js +1 -0
  86. python_cad_tools/_viewer_static/assets/flowGraphSetAngularVelocityBlock-Ba8dhkLM.js +1 -0
  87. python_cad_tools/_viewer_static/assets/flowGraphSetDelayBlock-CnQR--Gn.js +1 -0
  88. python_cad_tools/_viewer_static/assets/flowGraphSetLinearVelocityBlock-Dm1r3vkh.js +1 -0
  89. python_cad_tools/_viewer_static/assets/flowGraphSetPhysicsMotionTypeBlock-BNtMLimi.js +1 -0
  90. python_cad_tools/_viewer_static/assets/flowGraphSetPropertyBlock-C-uv2jhP.js +1 -0
  91. python_cad_tools/_viewer_static/assets/flowGraphSetSoundVolumeBlock-D9LDx3lg.js +1 -0
  92. python_cad_tools/_viewer_static/assets/flowGraphSetVariableBlock-DszzRB5X.js +1 -0
  93. python_cad_tools/_viewer_static/assets/flowGraphSoundEndedEventBlock-DeTDSudb.js +1 -0
  94. python_cad_tools/_viewer_static/assets/flowGraphStopAnimationBlock-DWuwoFWr.js +1 -0
  95. python_cad_tools/_viewer_static/assets/flowGraphStopSoundBlock-DEnj2cQw.js +1 -0
  96. python_cad_tools/_viewer_static/assets/flowGraphSwitchBlock-zs8Fp9ky.js +1 -0
  97. python_cad_tools/_viewer_static/assets/flowGraphThrottleBlock-BYAKUQXd.js +1 -0
  98. python_cad_tools/_viewer_static/assets/flowGraphTransformCoordinatesSystemBlock-DYP54m5P.js +1 -0
  99. python_cad_tools/_viewer_static/assets/flowGraphTypeToTypeBlocks-vFwn79bS.js +1 -0
  100. python_cad_tools/_viewer_static/assets/flowGraphUnaryOperationBlock-CaRh4Ef0.js +1 -0
  101. python_cad_tools/_viewer_static/assets/flowGraphVectorMathBlocks-BEIhMs-A.js +1 -0
  102. python_cad_tools/_viewer_static/assets/flowGraphWaitAllBlock-DFbELP_j.js +1 -0
  103. python_cad_tools/_viewer_static/assets/flowGraphWhileLoopBlock-C1OKQ-_F.js +1 -0
  104. python_cad_tools/_viewer_static/assets/fogFragment-DtDlQBnz.js +25 -0
  105. python_cad_tools/_viewer_static/assets/gaussianSplatting-Cfigjb15.js +242 -0
  106. python_cad_tools/_viewer_static/assets/gaussianSplatting-DIn8R8oF.js +296 -0
  107. python_cad_tools/_viewer_static/assets/gaussianSplatting.fragment-BxeRJ2k-.js +38 -0
  108. python_cad_tools/_viewer_static/assets/gaussianSplatting.fragment-DNDmvRs-.js +37 -0
  109. python_cad_tools/_viewer_static/assets/gaussianSplatting.vertex-D92z5jYn.js +86 -0
  110. python_cad_tools/_viewer_static/assets/gaussianSplatting.vertex-DSWfFnKQ.js +86 -0
  111. python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.fragment-DBQE2gDk.js +12 -0
  112. python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.fragment-qwx5ntqJ.js +17 -0
  113. python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.vertex-CP2kd3jU.js +30 -0
  114. python_cad_tools/_viewer_static/assets/gaussianSplattingVoxel.vertex-Dr-fEg_W.js +19 -0
  115. python_cad_tools/_viewer_static/assets/geometry.fragment-CsJIm2H0.js +242 -0
  116. python_cad_tools/_viewer_static/assets/geometry.fragment-Dph3muZt.js +262 -0
  117. python_cad_tools/_viewer_static/assets/geometry.vertex-BXGMTA_J.js +212 -0
  118. python_cad_tools/_viewer_static/assets/geometry.vertex-Bm9Wg3Gi.js +214 -0
  119. python_cad_tools/_viewer_static/assets/glowBlurPostProcess.fragment-BJSwKIJD.js +7 -0
  120. python_cad_tools/_viewer_static/assets/glowMapGeneration.fragment-DcyS1cTF.js +63 -0
  121. python_cad_tools/_viewer_static/assets/glowMapGeneration.vertex-BGq1Fakj.js +75 -0
  122. python_cad_tools/_viewer_static/assets/glowMapMerge.fragment-DxcneU_F.js +25 -0
  123. python_cad_tools/_viewer_static/assets/glowMapMerge.vertex-DaJJKqMV.js +8 -0
  124. python_cad_tools/_viewer_static/assets/harmonicsFunctions-DzJcvNWG.js +16 -0
  125. python_cad_tools/_viewer_static/assets/hdrTextureLoader-BGQvgh0h.js +2 -0
  126. python_cad_tools/_viewer_static/assets/helperFunctions-Cugfp1Fz.js +87 -0
  127. python_cad_tools/_viewer_static/assets/iesTextureLoader-CO4G0p2M.js +2 -0
  128. python_cad_tools/_viewer_static/assets/index-B2zBEWsq.js +7007 -0
  129. python_cad_tools/_viewer_static/assets/index-DcTTrc-8.css +1 -0
  130. python_cad_tools/_viewer_static/assets/kernelBlur.fragment-B6CTXTxY.js +57 -0
  131. python_cad_tools/_viewer_static/assets/kernelBlur.fragment-BkKbudbW.js +57 -0
  132. python_cad_tools/_viewer_static/assets/kernelBlur.vertex-BYwFU5IS.js +11 -0
  133. python_cad_tools/_viewer_static/assets/kernelBlur.vertex-D371zUfT.js +11 -0
  134. python_cad_tools/_viewer_static/assets/kernelBlurVaryingDeclaration-CgBGaCHg.js +1 -0
  135. python_cad_tools/_viewer_static/assets/kernelBlurVaryingDeclaration-YS8JpqdO.js +1 -0
  136. python_cad_tools/_viewer_static/assets/ktxTextureLoader-ncMSJTjl.js +1 -0
  137. python_cad_tools/_viewer_static/assets/lightFragment-skHiFbKB.js +398 -0
  138. python_cad_tools/_viewer_static/assets/logDepthDeclaration-BR8XRz9F.js +4 -0
  139. python_cad_tools/_viewer_static/assets/logDepthVertex-UKrhEIvg.js +14 -0
  140. python_cad_tools/_viewer_static/assets/mainUVVaryingDeclaration-BxQWGFcG.js +4 -0
  141. python_cad_tools/_viewer_static/assets/mesh.vertexData.functions-ayNlGC5K.js +1 -0
  142. python_cad_tools/_viewer_static/assets/meshUboDeclaration-BnX046aQ.js +4 -0
  143. python_cad_tools/_viewer_static/assets/oitFragment-CTMCOfNP.js +605 -0
  144. python_cad_tools/_viewer_static/assets/openpbr.fragment-DPJPqi6p.js +1530 -0
  145. python_cad_tools/_viewer_static/assets/openpbr.fragment-Dv6qTVVi.js +1384 -0
  146. python_cad_tools/_viewer_static/assets/openpbr.vertex-Bn2wrdGL.js +364 -0
  147. python_cad_tools/_viewer_static/assets/openpbr.vertex-CHESW3gB.js +251 -0
  148. python_cad_tools/_viewer_static/assets/openpbrMaterial.pure-BdK7VgO_.js +3 -0
  149. python_cad_tools/_viewer_static/assets/openpbrMaterialLoadingAdapter-Bm_AHDUN.js +4 -0
  150. python_cad_tools/_viewer_static/assets/openpbrTransmissionLayerData-BDa9qEoN.js +339 -0
  151. python_cad_tools/_viewer_static/assets/openpbrTransmissionLayerData-Ba_ly4LE.js +343 -0
  152. python_cad_tools/_viewer_static/assets/openpbrUboDeclaration-BY2lSH2C.js +5 -0
  153. python_cad_tools/_viewer_static/assets/openpbrUboDeclaration-DajhikDS.js +6 -0
  154. python_cad_tools/_viewer_static/assets/packingFunctions-BHPwcGG2.js +4 -0
  155. python_cad_tools/_viewer_static/assets/packingFunctions-DTwzBRBx.js +4 -0
  156. python_cad_tools/_viewer_static/assets/pass.fragment-9oKU4pI3.js +4 -0
  157. python_cad_tools/_viewer_static/assets/passCube.fragment-CpAeiYx1.js +23 -0
  158. python_cad_tools/_viewer_static/assets/passCube.fragment-DHtSWVRF.js +23 -0
  159. python_cad_tools/_viewer_static/assets/pbr.fragment-cIhMKwLs.js +2560 -0
  160. python_cad_tools/_viewer_static/assets/pbr.vertex-BfdONsf2.js +255 -0
  161. python_cad_tools/_viewer_static/assets/pbrBRDFFunctions-B_ppOzPO.js +173 -0
  162. python_cad_tools/_viewer_static/assets/pbrDebug-DDdwL5_t.js +693 -0
  163. python_cad_tools/_viewer_static/assets/pbrIBLFunctions-b1zdpzOP.js +43 -0
  164. python_cad_tools/_viewer_static/assets/pbrMaterial.pure-BZA7yVhu.js +2 -0
  165. python_cad_tools/_viewer_static/assets/pbrMaterialLoadingAdapter-BRvKRnjl.js +1 -0
  166. python_cad_tools/_viewer_static/assets/pbrUboDeclaration-CMZp25k3.js +5 -0
  167. python_cad_tools/_viewer_static/assets/postprocess.vertex-DzdUpNbW.js +9 -0
  168. python_cad_tools/_viewer_static/assets/procedural.vertex-BnbuQ-1f.js +7 -0
  169. python_cad_tools/_viewer_static/assets/procedural.vertex-Dp-Ng7Pc.js +8 -0
  170. python_cad_tools/_viewer_static/assets/reflectionFunction-DBlr3oDs.js +83 -0
  171. python_cad_tools/_viewer_static/assets/rgbdDecode.fragment-CyvnZFOJ.js +5 -0
  172. python_cad_tools/_viewer_static/assets/rgbdEncode.fragment-Dz4zLnoD.js +5 -0
  173. python_cad_tools/_viewer_static/assets/rgbdEncode.fragment-iscgpA1_.js +5 -0
  174. python_cad_tools/_viewer_static/assets/sceneUboDeclaration-BzFIc4mb.js +11 -0
  175. python_cad_tools/_viewer_static/assets/textureProcessor.fragment-C9D0rd-M.js +151 -0
  176. python_cad_tools/_viewer_static/assets/textureProcessor.fragment-JMKyWZng.js +146 -0
  177. python_cad_tools/_viewer_static/assets/tgaTextureLoader-oxTElIQJ.js +1 -0
  178. python_cad_tools/_viewer_static/assets/vertexColorMixing-mdC9xZe1.js +418 -0
  179. python_cad_tools/_viewer_static/favicon.svg +10 -0
  180. python_cad_tools/_viewer_static/index.html +18 -0
  181. python_cad_tools/_viewer_static/sw.js +61 -0
  182. python_cad_tools/artifacts.py +546 -0
  183. python_cad_tools/build-info.json +1 -0
  184. python_cad_tools/build.py +270 -0
  185. python_cad_tools/cli.py +212 -0
  186. python_cad_tools/context.py +67 -0
  187. python_cad_tools/determinism.py +66 -0
  188. python_cad_tools/drawings/__init__.py +124 -0
  189. python_cad_tools/drawings/_catalog.py +79 -0
  190. python_cad_tools/drawings/_validation.py +238 -0
  191. python_cad_tools/elements.py +121 -0
  192. python_cad_tools/exceptions.py +45 -0
  193. python_cad_tools/exporters/__init__.py +8 -0
  194. python_cad_tools/exporters/base.py +24 -0
  195. python_cad_tools/exporters/drawings/__init__.py +5 -0
  196. python_cad_tools/exporters/drawings/annotations.py +444 -0
  197. python_cad_tools/exporters/drawings/dxf.py +110 -0
  198. python_cad_tools/exporters/drawings/model.py +70 -0
  199. python_cad_tools/exporters/drawings/pdf.py +119 -0
  200. python_cad_tools/exporters/drawings/primitives.py +93 -0
  201. python_cad_tools/exporters/drawings/projection.py +64 -0
  202. python_cad_tools/exporters/drawings/svg.py +135 -0
  203. python_cad_tools/exporters/glb.py +100 -0
  204. python_cad_tools/exporters/ifc.py +229 -0
  205. python_cad_tools/exporters/quantities.py +136 -0
  206. python_cad_tools/exporters/step.py +117 -0
  207. python_cad_tools/geometry.py +187 -0
  208. python_cad_tools/manifests.py +338 -0
  209. python_cad_tools/project_config.py +174 -0
  210. python_cad_tools/py.typed +1 -0
  211. python_cad_tools/runtime_sync.py +126 -0
  212. python_cad_tools/schemas/build-manifest-1.json +1 -0
  213. python_cad_tools/schemas/design-manifest-1.json +1 -0
  214. python_cad_tools/schemas/download-manifest-2.json +46 -0
  215. python_cad_tools/schemas/drawing-annotations-1.json +66 -0
  216. python_cad_tools/schemas/glb-manifest-1.json +1 -0
  217. python_cad_tools/schemas/ifc-validation-1.json +1 -0
  218. python_cad_tools/schemas/quantities-1.json +1 -0
  219. python_cad_tools/schemas/run-metadata-1.json +1 -0
  220. python_cad_tools/schemas/site-metadata-1.json +34 -0
  221. python_cad_tools/schemas/step-validation-1.json +1 -0
  222. python_cad_tools/site.py +676 -0
  223. python_cad_tools/templates/project/.gitignore +9 -0
  224. python_cad_tools/templates/project/README.md +38 -0
  225. python_cad_tools/templates/project/config.py +36 -0
  226. python_cad_tools/templates/project/drawing_annotations.py +117 -0
  227. python_cad_tools/templates/project/model.py +87 -0
  228. python_cad_tools/templates/project/pyproject.toml +27 -0
  229. python_cad_tools/units.py +207 -0
  230. python_cad_tools/validation.py +153 -0
  231. python_cad_tools-0.1.0rc1.dist-info/METADATA +149 -0
  232. python_cad_tools-0.1.0rc1.dist-info/RECORD +236 -0
  233. python_cad_tools-0.1.0rc1.dist-info/WHEEL +5 -0
  234. python_cad_tools-0.1.0rc1.dist-info/entry_points.txt +2 -0
  235. python_cad_tools-0.1.0rc1.dist-info/licenses/LICENSE +679 -0
  236. python_cad_tools-0.1.0rc1.dist-info/top_level.txt +1 -0
@@ -0,0 +1 @@
1
+ import{y as a,h as n,L as s,i as r}from"./index-B2zBEWsq.js";class e extends a{constructor(i){super(i),this.config=i,this.condition=this.registerDataInput("condition",n),this.executionFlow=this._registerSignalOutput("executionFlow"),this.completed=this._registerSignalOutput("completed"),this._unregisterSignalOutput("out")}_execute(i,u){let t=this.condition.getValue(i);this.config?.doWhile&&!t&&this.executionFlow._activateSignal(i);let o=0;for(;t;){if(this.executionFlow._activateSignal(i),++o,o>=e.MaxLoopCount){s.Warn("FlowGraphWhileLoopBlock: Max loop count reached. Breaking.");break}t=this.condition.getValue(i)}this.completed._activateSignal(i)}getClassName(){return"FlowGraphWhileLoopBlock"}}e.MaxLoopCount=1e3;let l=!1;function h(){l||(l=!0,r("FlowGraphWhileLoopBlock",e))}h();export{e as FlowGraphWhileLoopBlock,h as RegisterFlowGraphWhileLoopBlock};
@@ -0,0 +1,25 @@
1
+ import{S as o}from"./index-B2zBEWsq.js";const f="fogFragmentDeclaration",r=`#ifdef FOG
2
+ #define FOGMODE_NONE 0.
3
+ #define FOGMODE_EXP 1.
4
+ #define FOGMODE_EXP2 2.
5
+ #define FOGMODE_LINEAR 3.
6
+ const E=2.71828;uniform vFogInfos: vec4f;uniform vFogColor: vec3f;varying vFogDistance: vec3f;fn CalcFogFactor()->f32
7
+ {var fogCoeff: f32=1.0;var fogStart: f32=uniforms.vFogInfos.y;var fogEnd: f32=uniforms.vFogInfos.z;var fogDensity: f32=uniforms.vFogInfos.w;var fogDistance: f32=length(fragmentInputs.vFogDistance);if (FOGMODE_LINEAR==uniforms.vFogInfos.x)
8
+ {fogCoeff=(fogEnd-fogDistance)/(fogEnd-fogStart);}
9
+ else if (FOGMODE_EXP==uniforms.vFogInfos.x)
10
+ {fogCoeff=1.0/pow(E,fogDistance*fogDensity);}
11
+ else if (FOGMODE_EXP2==uniforms.vFogInfos.x)
12
+ {fogCoeff=1.0/pow(E,fogDistance*fogDistance*fogDensity*fogDensity);}
13
+ return clamp(fogCoeff,0.0,1.0);}
14
+ #endif
15
+ `;o.IncludesShadersStoreWGSL[f]||(o.IncludesShadersStoreWGSL[f]=r);const g={name:f,shader:r},e="logDepthFragment",a=`#ifdef LOGARITHMICDEPTH
16
+ fragmentOutputs.fragDepth=log2(fragmentInputs.vFragmentDepth)*uniforms.logarithmicDepthConstant*0.5;
17
+ #endif
18
+ `;o.IncludesShadersStoreWGSL[e]||(o.IncludesShadersStoreWGSL[e]=a);const i={name:e,shader:a},n="fogFragment",s=`#ifdef FOG
19
+ var fog: f32=CalcFogFactor();
20
+ #ifdef PBR
21
+ fog=toLinearSpace(fog);
22
+ #endif
23
+ color= vec4f(mix(uniforms.vFogColor,color.rgb,fog),color.a);
24
+ #endif
25
+ `;o.IncludesShadersStoreWGSL[n]||(o.IncludesShadersStoreWGSL[n]=s);const c={name:n,shader:s};export{c as a,g as f,i as l};
@@ -0,0 +1,242 @@
1
+ import{S as e}from"./index-B2zBEWsq.js";const t="gaussianSplattingVertexDeclaration",o="attribute vec3 position;attribute vec4 splatIndex0;attribute vec4 splatIndex1;attribute vec4 splatIndex2;attribute vec4 splatIndex3;uniform mat4 view;uniform mat4 projection;uniform mat4 world;uniform vec4 vEyePosition;";e.IncludesShadersStore[t]||(e.IncludesShadersStore[t]=o);const n={name:t,shader:o},a="gaussianSplattingUboDeclaration",c=`#include<sceneUboDeclaration>
2
+ #include<meshUboDeclaration>
3
+ attribute vec3 position;attribute vec4 splatIndex0;attribute vec4 splatIndex1;attribute vec4 splatIndex2;attribute vec4 splatIndex3;
4
+ `;e.IncludesShadersStore[a]||(e.IncludesShadersStore[a]=c);const x={name:a,shader:c},s="gaussianSplatting",i=`#if !defined(WEBGL2) && !defined(WEBGPU) && !defined(NATIVE)
5
+ mat3 transpose(mat3 matrix) {return mat3(matrix[0][0],matrix[1][0],matrix[2][0],
6
+ matrix[0][1],matrix[1][1],matrix[2][1],
7
+ matrix[0][2],matrix[1][2],matrix[2][2]);}
8
+ #endif
9
+ vec2 getDataUV(float index,vec2 textureSize) {float y=floor(index/textureSize.x);float x=index-y*textureSize.x;return vec2((x+0.5)/textureSize.x,(y+0.5)/textureSize.y);}
10
+ #if SH_DEGREE>0 || IS_COMPOUND
11
+ ivec2 getDataUVint(float index,vec2 textureSize) {float y=floor(index/textureSize.x);float x=index-y*textureSize.x;return ivec2(uint(x+0.5),uint(y+0.5));}
12
+ #endif
13
+ struct Splat {vec4 center;vec4 color;vec4 covA;vec4 covB;
14
+ #if SH_DEGREE>0
15
+ uvec4 sh0;
16
+ #endif
17
+ #if SH_DEGREE>1
18
+ uvec4 sh1;
19
+ #endif
20
+ #if SH_DEGREE>2
21
+ uvec4 sh2;
22
+ #endif
23
+ #if SH_DEGREE>3
24
+ uvec4 sh3;uvec4 sh4;
25
+ #endif
26
+ #if IS_COMPOUND
27
+ uint partIndex;
28
+ #endif
29
+ #if defined(IS_FOR_VOXELIZATION)
30
+ vec4 rotationA;vec4 rotationB;vec4 rotationScale;
31
+ #endif
32
+ #ifdef USE_SOG
33
+ float splatIndex;
34
+ #endif
35
+ };float getSplatIndex(int localIndex)
36
+ {float splatIndex;switch (localIndex)
37
+ {case 0: splatIndex=splatIndex0.x; break;case 1: splatIndex=splatIndex0.y; break;case 2: splatIndex=splatIndex0.z; break;case 3: splatIndex=splatIndex0.w; break;case 4: splatIndex=splatIndex1.x; break;case 5: splatIndex=splatIndex1.y; break;case 6: splatIndex=splatIndex1.z; break;case 7: splatIndex=splatIndex1.w; break;case 8: splatIndex=splatIndex2.x; break;case 9: splatIndex=splatIndex2.y; break;case 10: splatIndex=splatIndex2.z; break;case 11: splatIndex=splatIndex2.w; break;case 12: splatIndex=splatIndex3.x; break;case 13: splatIndex=splatIndex3.y; break;case 14: splatIndex=splatIndex3.z; break;case 15: splatIndex=splatIndex3.w; break;}
38
+ return splatIndex;}
39
+ Splat readSplat(float splatIndex)
40
+ {Splat splat;vec2 splatUV=getDataUV(splatIndex,dataTextureSize);
41
+ #ifdef USE_SOG
42
+ ivec2 sogUVi=ivec2(int(splatUV.x*dataTextureSize.x),int(splatUV.y*dataTextureSize.y));vec4 mL=texelFetch(centersTexture,sogUVi,0);
43
+ vec4 mU=texelFetch(covariancesATexture,sogUVi,0);
44
+ vec4 sRaw=texelFetch(covariancesBTexture,sogUVi,0);
45
+ vec4 qRaw=texelFetch(sogQuatsTexture,sogUVi,0);
46
+ vec4 c0=texelFetch(colorsTexture,sogUVi,0);
47
+ vec3 q16=(mU.xyz*256.0+mL.xyz)*(255.0/65535.0);vec3 nPos=mix(sogMeansMin,sogMeansMax,q16);vec3 center=sign(nPos)*(exp(abs(nPos))-vec3(1.0));splat.center=vec4(center,1.0);
48
+ #ifdef USE_SOG_V2
49
+ vec3 sIdx=floor(sRaw.xyz*255.0+0.5);vec3 splatScale;splatScale.x=exp(texelFetch(sogCodebookTexture,ivec2(int(sIdx.x),0),0).r);splatScale.y=exp(texelFetch(sogCodebookTexture,ivec2(int(sIdx.y),0),0).r);splatScale.z=exp(texelFetch(sogCodebookTexture,ivec2(int(sIdx.z),0),0).r);
50
+ #else
51
+ vec3 splatScale=exp(mix(sogScalesMin,sogScalesMax,sRaw.xyz));
52
+ #endif
53
+ const float invSqrt2=0.70710678118;vec3 qabc=(qRaw.xyz-vec3(0.5))*2.0*invSqrt2;int qMode=int(qRaw.w*255.0+0.5)-252;float qd=sqrt(max(0.0,1.0-dot(qabc,qabc)));vec4 quat;if (qMode==0) quat=vec4(qd,qabc.x,qabc.y,qabc.z);else if (qMode==1) quat=vec4(qabc.x,qd,qabc.y,qabc.z);else if (qMode==2) quat=vec4(qabc.x,qabc.y,qd,qabc.z);else quat=vec4(qabc.x,qabc.y,qabc.z,qd);float qw=quat.x,qx=quat.y,qy=quat.z,qz=quat.w;mat3 R=mat3(
54
+ 1.0-2.0*(qy*qy+qz*qz),2.0*(qx*qy+qw*qz), 2.0*(qx*qz-qw*qy),
55
+ 2.0*(qx*qy-qw*qz), 1.0-2.0*(qx*qx+qz*qz),2.0*(qy*qz+qw*qx),
56
+ 2.0*(qx*qz+qw*qy), 2.0*(qy*qz-qw*qx), 1.0-2.0*(qx*qx+qy*qy)
57
+ );mat3 S2=mat3(4.0*splatScale.x*splatScale.x,0.0,0.0,
58
+ 0.0,4.0*splatScale.y*splatScale.y,0.0,
59
+ 0.0,0.0,4.0*splatScale.z*splatScale.z);mat3 Sigma=R*S2*transpose(R);splat.covA=vec4(Sigma[0][0],Sigma[0][1],Sigma[0][2],Sigma[1][1]);splat.covB=vec4(Sigma[1][2],Sigma[2][2],0.0,0.0);const float SH_C0=0.28209479177387814;
60
+ #ifdef USE_SOG_V2
61
+ vec3 c3;c3.x=texelFetch(sogCodebookTexture,ivec2(256+int(c0.x*255.0+0.5),0),0).r;c3.y=texelFetch(sogCodebookTexture,ivec2(256+int(c0.y*255.0+0.5),0),0).r;c3.z=texelFetch(sogCodebookTexture,ivec2(256+int(c0.z*255.0+0.5),0),0).r;vec3 colRgb=vec3(0.5)+c3*SH_C0;float colA=c0.w;
62
+ #else
63
+ vec4 cLerp=mix(sogSh0Min,sogSh0Max,c0);vec3 colRgb=vec3(0.5)+cLerp.xyz*SH_C0;float colA=1.0/(1.0+exp(-cLerp.w));
64
+ #endif
65
+ splat.color=vec4(colRgb,colA);splat.splatIndex=splatIndex;
66
+ #else
67
+ splat.center=texture2D(centersTexture,splatUV);splat.color=texture2D(colorsTexture,splatUV);
68
+ #if !defined(IS_FOR_VOXELIZATION)
69
+ splat.covA=texture2D(covariancesATexture,splatUV)*splat.center.w;splat.covB=texture2D(covariancesBTexture,splatUV)*splat.center.w;
70
+ #endif
71
+ #endif
72
+ #if SH_DEGREE>0 || IS_COMPOUND
73
+ ivec2 splatUVint=getDataUVint(splatIndex,dataTextureSize);
74
+ #endif
75
+ #if SH_DEGREE>0 && !defined(USE_SOG)
76
+ splat.sh0=texelFetch(shTexture0,splatUVint,0);
77
+ #endif
78
+ #if SH_DEGREE>1 && !defined(USE_SOG)
79
+ splat.sh1=texelFetch(shTexture1,splatUVint,0);
80
+ #endif
81
+ #if SH_DEGREE>2 && !defined(USE_SOG)
82
+ splat.sh2=texelFetch(shTexture2,splatUVint,0);
83
+ #endif
84
+ #if SH_DEGREE>3 && !defined(USE_SOG)
85
+ splat.sh3=texelFetch(shTexture3,splatUVint,0);splat.sh4=texelFetch(shTexture4,splatUVint,0);
86
+ #endif
87
+ #if IS_COMPOUND
88
+ splat.partIndex=uint(texture2D(partIndicesTexture,splatUV).r*255.0+0.5);
89
+ #endif
90
+ #if defined(IS_FOR_VOXELIZATION)
91
+ splat.rotationA=texture2D(rotationsATexture,splatUV);splat.rotationB=texture2D(rotationsBTexture,splatUV);splat.rotationScale=texture2D(rotationScaleTexture,splatUV);
92
+ #endif
93
+ return splat;}
94
+ #if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)
95
+ vec3 computeColorFromSHDegree(vec3 dir,const vec3 sh[25],float _so1,float _so2,float _so3,float _so4)
96
+ {const float SH_C0=0.28209479;const float SH_C1=0.48860251;float SH_C2[5];SH_C2[0]=1.092548430;SH_C2[1]=-1.09254843;SH_C2[2]=0.315391565;SH_C2[3]=-1.09254843;SH_C2[4]=0.546274215;float SH_C3[7];SH_C3[0]=-0.59004358;SH_C3[1]=2.890611442;SH_C3[2]=-0.45704579;SH_C3[3]=0.373176332;SH_C3[4]=-0.45704579;SH_C3[5]=1.445305721;SH_C3[6]=-0.59004358;float SH_C4[9];SH_C4[0]= 2.5033429418;SH_C4[1]=-1.7701307698;SH_C4[2]= 0.9461746958;SH_C4[3]=-0.6690465436;SH_C4[4]= 0.1057855469;SH_C4[5]=-0.6690465436;SH_C4[6]= 0.4730873479;SH_C4[7]=-1.7701307698;SH_C4[8]= 0.6258357354;vec3 result=/*SH_C0**/sh[0];
97
+ #if SH_DEGREE>0
98
+ float x=dir.x;float y=dir.y;float z=dir.z;result+=_so1*(- SH_C1*y*sh[1]+SH_C1*z*sh[2]-SH_C1*x*sh[3]);
99
+ #if SH_DEGREE>1
100
+ float xx=x*x,yy=y*y,zz=z*z;float xy=x*y,yz=y*z,xz=x*z;result+=_so2*(
101
+ SH_C2[0]*xy*sh[4] +
102
+ SH_C2[1]*yz*sh[5] +
103
+ SH_C2[2]*(2.0*zz-xx-yy)*sh[6] +
104
+ SH_C2[3]*xz*sh[7] +
105
+ SH_C2[4]*(xx-yy)*sh[8]);
106
+ #if SH_DEGREE>2
107
+ result+=_so3*(
108
+ SH_C3[0]*y*(3.0*xx-yy)*sh[9] +
109
+ SH_C3[1]*xy*z*sh[10] +
110
+ SH_C3[2]*y*(4.0*zz-xx-yy)*sh[11] +
111
+ SH_C3[3]*z*(2.0*zz-3.0*xx-3.0*yy)*sh[12] +
112
+ SH_C3[4]*x*(4.0*zz-xx-yy)*sh[13] +
113
+ SH_C3[5]*z*(xx-yy)*sh[14] +
114
+ SH_C3[6]*x*(xx-3.0*yy)*sh[15]);
115
+ #if SH_DEGREE>3
116
+ result+=_so4*(
117
+ SH_C4[0]*x*y*(xx-yy)*sh[16] +
118
+ SH_C4[1]*y*z*(3.0*xx-yy)*sh[17] +
119
+ SH_C4[2]*x*y*(7.0*zz-1.0)*sh[18] +
120
+ SH_C4[3]*y*z*(7.0*zz-3.0)*sh[19] +
121
+ SH_C4[4]*(zz*(35.0*zz-30.0)+3.0)*sh[20] +
122
+ SH_C4[5]*x*z*(7.0*zz-3.0)*sh[21] +
123
+ SH_C4[6]*(xx-yy)*(7.0*zz-1.0)*sh[22] +
124
+ SH_C4[7]*x*z*(xx-3.0*yy)*sh[23] +
125
+ SH_C4[8]*(xx*(xx-3.0*yy)-yy*(3.0*xx-yy))*sh[24]);
126
+ #endif
127
+ #endif
128
+ #endif
129
+ #endif
130
+ return result;}
131
+ vec4 decompose(uint value)
132
+ {vec4 components=vec4(
133
+ float((value ) & 255u),
134
+ float((value>>uint( 8)) & 255u),
135
+ float((value>>uint(16)) & 255u),
136
+ float((value>>uint(24)) & 255u));return components*vec4(2./255.)-vec4(1.);}
137
+ #ifdef USE_SOG
138
+ vec3 computeSH(Splat splat,vec3 dir)
139
+ {
140
+ #if SH_DEGREE>0
141
+ vec3 sh[25];sh[0]=vec3(0.,0.,0.);ivec2 labelSize=textureSize(sogShNLabelsTexture,0);int idx=int(splat.splatIndex+0.5);int lx=idx-(idx/labelSize.x)*labelSize.x;int ly=idx/labelSize.x;vec4 labelRaw=texelFetch(sogShNLabelsTexture,ivec2(lx,ly),0);int n=int(labelRaw.r*255.0+0.5)+int(labelRaw.g*255.0+0.5)*256;int coeffs=int(sogShCoeffCount+0.5);int u=(n-(n/64)*64)*coeffs;int v=n/64;for (int k=0; k<24; k++) {if (k>=coeffs) break;vec4 centroidRaw=texelFetch(sogShNCentroidsTexture,ivec2(u+k,v),0);vec3 shCoeff;
142
+ #ifdef USE_SOG_V2
143
+ int rIdx=int(centroidRaw.r*255.0+0.5);int gIdx=int(centroidRaw.g*255.0+0.5);int bIdx=int(centroidRaw.b*255.0+0.5);shCoeff.r=texelFetch(sogCodebookTexture,ivec2(512+rIdx,0),0).r;shCoeff.g=texelFetch(sogCodebookTexture,ivec2(512+gIdx,0),0).r;shCoeff.b=texelFetch(sogCodebookTexture,ivec2(512+bIdx,0),0).r;
144
+ #else
145
+ shCoeff=mix(vec3(sogShnMin),vec3(sogShnMax),centroidRaw.rgb);
146
+ #endif
147
+ sh[k+1]=shCoeff;}
148
+ return computeColorFromSHDegree(dir,sh,1.,1.,1.,1.);
149
+ #else
150
+ return vec3(0.,0.,0.);
151
+ #endif
152
+ }
153
+ #else
154
+ vec3 computeSHWeighted(Splat splat,vec3 dir,float _so1,float _so2,float _so3,float _so4)
155
+ {vec3 sh[25];sh[0]=vec3(0.,0.,0.);
156
+ #if SH_DEGREE>0
157
+ vec4 sh00=decompose(splat.sh0.x);vec4 sh01=decompose(splat.sh0.y);vec4 sh02=decompose(splat.sh0.z);sh[1]=vec3(sh00.x,sh00.y,sh00.z);sh[2]=vec3(sh00.w,sh01.x,sh01.y);sh[3]=vec3(sh01.z,sh01.w,sh02.x);
158
+ #endif
159
+ #if SH_DEGREE>1
160
+ vec4 sh03=decompose(splat.sh0.w);vec4 sh04=decompose(splat.sh1.x);vec4 sh05=decompose(splat.sh1.y);sh[4]=vec3(sh02.y,sh02.z,sh02.w);sh[5]=vec3(sh03.x,sh03.y,sh03.z);sh[6]=vec3(sh03.w,sh04.x,sh04.y);sh[7]=vec3(sh04.z,sh04.w,sh05.x);sh[8]=vec3(sh05.y,sh05.z,sh05.w);
161
+ #endif
162
+ #if SH_DEGREE>2
163
+ vec4 sh06=decompose(splat.sh1.z);vec4 sh07=decompose(splat.sh1.w);vec4 sh08=decompose(splat.sh2.x);vec4 sh09=decompose(splat.sh2.y);vec4 sh10=decompose(splat.sh2.z);vec4 sh11=decompose(splat.sh2.w);sh[9]=vec3(sh06.x,sh06.y,sh06.z);sh[10]=vec3(sh06.w,sh07.x,sh07.y);sh[11]=vec3(sh07.z,sh07.w,sh08.x);sh[12]=vec3(sh08.y,sh08.z,sh08.w);sh[13]=vec3(sh09.x,sh09.y,sh09.z);sh[14]=vec3(sh09.w,sh10.x,sh10.y);sh[15]=vec3(sh10.z,sh10.w,sh11.x);
164
+ #endif
165
+ #if SH_DEGREE>3
166
+ vec4 sh12=decompose(splat.sh3.x);vec4 sh13=decompose(splat.sh3.y);vec4 sh14=decompose(splat.sh3.z);vec4 sh15=decompose(splat.sh3.w);vec4 sh16=decompose(splat.sh4.x);vec4 sh17=decompose(splat.sh4.y);sh[16]=vec3(sh11.y,sh11.z,sh11.w);sh[17]=vec3(sh12.x,sh12.y,sh12.z);sh[18]=vec3(sh12.w,sh13.x,sh13.y);sh[19]=vec3(sh13.z,sh13.w,sh14.x);sh[20]=vec3(sh14.y,sh14.z,sh14.w);sh[21]=vec3(sh15.x,sh15.y,sh15.z);sh[22]=vec3(sh15.w,sh16.x,sh16.y);sh[23]=vec3(sh16.z,sh16.w,sh17.x);sh[24]=vec3(sh17.y,sh17.z,sh17.w);
167
+ #endif
168
+ return computeColorFromSHDegree(dir,sh,_so1,_so2,_so3,_so4);}
169
+ vec3 computeSH(Splat splat,vec3 dir)
170
+ {
171
+ #if !defined(GS_DBG_ENABLED) || GS_DBG_SH_ORDER1==1
172
+ float _w1=1.0;
173
+ #else
174
+ float _w1=0.0;
175
+ #endif
176
+ #if !defined(GS_DBG_ENABLED) || GS_DBG_SH_ORDER2==1
177
+ float _w2=1.0;
178
+ #else
179
+ float _w2=0.0;
180
+ #endif
181
+ #if !defined(GS_DBG_ENABLED) || GS_DBG_SH_ORDER3==1
182
+ float _w3=1.0;
183
+ #else
184
+ float _w3=0.0;
185
+ #endif
186
+ #if !defined(GS_DBG_ENABLED) || GS_DBG_SH_ORDER4==1
187
+ float _w4=1.0;
188
+ #else
189
+ float _w4=0.0;
190
+ #endif
191
+ return computeSHWeighted(splat,dir,_w1,_w2,_w3,_w4);}
192
+ #endif
193
+ #else
194
+ vec3 computeSH(Splat splat,vec3 dir)
195
+ {return vec3(0.,0.,0.);}
196
+ #endif
197
+ #if !defined(IS_FOR_VOXELIZATION)
198
+ vec4 gaussianSplatting(vec2 meshPos,vec3 worldPos,vec2 scale,vec3 covA,vec3 covB,mat4 worldMatrix,mat4 viewMatrix,mat4 projectionMatrix)
199
+ {mat4 modelView=viewMatrix*worldMatrix;vec4 camspace=viewMatrix*vec4(worldPos,1.);vec4 pos2d=projectionMatrix*camspace;float bounds=1.2*pos2d.w;if (pos2d.z<-pos2d.w || pos2d.x<-bounds || pos2d.x>bounds
200
+ || pos2d.y<-bounds || pos2d.y>bounds) {return vec4(0.0,0.0,2.0,1.0);}
201
+ mat3 Vrk=mat3(
202
+ covA.x,covA.y,covA.z,
203
+ covA.y,covB.x,covB.y,
204
+ covA.z,covB.y,covB.z
205
+ );bool isOrtho=abs(projectionMatrix[3][3]-1.0)<0.001;mat3 J;if (isOrtho) {J=mat3(
206
+ focal.x,0.,0.,
207
+ 0.,focal.y,0.,
208
+ 0.,0.,0.
209
+ );} else {J=mat3(
210
+ focal.x/camspace.z,0.,-(focal.x*camspace.x)/(camspace.z*camspace.z),
211
+ 0.,focal.y/camspace.z,-(focal.y*camspace.y)/(camspace.z*camspace.z),
212
+ 0.,0.,0.
213
+ );}
214
+ mat3 T=transpose(mat3(modelView))*J;mat3 cov2d=transpose(T)*Vrk*T;
215
+ #if COMPENSATION
216
+ float c00=cov2d[0][0];float c11=cov2d[1][1];float c01=cov2d[0][1];float detOrig=c00*c11-c01*c01;
217
+ #endif
218
+ cov2d[0][0]+=kernelSize;cov2d[1][1]+=kernelSize;
219
+ #if COMPENSATION
220
+ vec3 c2d=vec3(cov2d[0][0],c01,cov2d[1][1]);float detBlur=c2d.x*c2d.z-c2d.y*c2d.y;float compensation=sqrt(max(0.,detOrig/detBlur));vColor.w*=compensation;
221
+ #endif
222
+ float mid=(cov2d[0][0]+cov2d[1][1])/2.0;float radius=length(vec2((cov2d[0][0]-cov2d[1][1])/2.0,cov2d[0][1]));float epsilon=0.0001;float lambda1=mid+radius+epsilon,lambda2=mid-radius+epsilon;if (lambda2<0.0)
223
+ {return vec4(0.0,0.0,2.0,1.0);}
224
+ if (minPixelSize>0.0) {float l1=2.0*min(sqrt(2.0*lambda1),1024.0);float l2=2.0*min(sqrt(2.0*lambda2),1024.0);if (max(l1,l2)<minPixelSize) {return vec4(0.0,0.0,2.0,1.0);}}
225
+ vec2 diagonalVector=normalize(vec2(cov2d[0][1],lambda1-cov2d[0][0]));vec2 majorAxis=min(sqrt(2.0*lambda1),1024.0)*diagonalVector;vec2 minorAxis=min(sqrt(2.0*lambda2),1024.0)*vec2(diagonalVector.y,-diagonalVector.x);vec2 vCenter=vec2(pos2d);float scaleFactor=isOrtho ? 1.0 : pos2d.w;return vec4(
226
+ vCenter
227
+ + ((meshPos.x*majorAxis
228
+ + meshPos.y*minorAxis)*invViewport*scaleFactor)*scale,pos2d.zw);}
229
+ #endif
230
+ #if IS_COMPOUND
231
+ mat4 getPartWorld(uint partIndex) {return partWorld[partIndex];}
232
+ #endif
233
+ #if defined(IS_FOR_VOXELIZATION)
234
+ vec4 computeVoxelSplatWorldPos(vec4 rotationA,vec4 rotationB,vec4 rotationScale,vec3 center,mat4 splatWorld,mat4 viewMatrix,mat4 invWorldScale,vec2 quadPos) {mat3 splatRotation=mat3(
235
+ vec3(rotationA.x,rotationA.y,rotationA.z),
236
+ vec3(rotationA.w,rotationB.x,rotationB.y),
237
+ vec3(rotationB.z,rotationB.w,rotationScale.x)
238
+ );vec3 splatScale=vec3(rotationScale.y,rotationScale.z,rotationScale.w);mat3 rotToView=mat3(viewMatrix)*mat3(invWorldScale)*mat3(splatWorld)*splatRotation;vec3 axisLengthInViewZ=abs(vec3(rotToView[0][2],rotToView[1][2],rotToView[2][2]));float gaussianSplatCutoffStddev=1.4142135624/2.0;
239
+ vec3 offsetSplatSpace;if (axisLengthInViewZ.x>axisLengthInViewZ.y && axisLengthInViewZ.x>axisLengthInViewZ.z) {offsetSplatSpace=vec3(0.0,quadPos.x,quadPos.y)*splatScale*gaussianSplatCutoffStddev;} else if (axisLengthInViewZ.y>axisLengthInViewZ.z) {offsetSplatSpace=vec3(quadPos.x,0.0,quadPos.y)*splatScale*gaussianSplatCutoffStddev;} else {offsetSplatSpace=vec3(quadPos.x,quadPos.y,0.0)*splatScale*gaussianSplatCutoffStddev;}
240
+ vec3 vertexObjectSpace=center+splatRotation*offsetSplatSpace;return splatWorld*vec4(vertexObjectSpace,1.0);}
241
+ #endif
242
+ `;e.IncludesShadersStore[s]||(e.IncludesShadersStore[s]=i);const r={name:s,shader:i};export{x as a,r as b,n as g};
@@ -0,0 +1,296 @@
1
+ import{S as t}from"./index-B2zBEWsq.js";const e="gaussianSplatting",s=`fn getDataUV(index: f32,dataTextureSize: vec2f)->vec2<f32> {let y: f32=floor(index/dataTextureSize.x);let x: f32=index-y*dataTextureSize.x;return vec2f((x+0.5),(y+0.5));}
2
+ struct Splat {center: vec4f,
3
+ color: vec4f,
4
+ covA: vec4f,
5
+ covB: vec4f,
6
+ #if SH_DEGREE>0
7
+ sh0: vec4<u32>,
8
+ #endif
9
+ #if SH_DEGREE>1
10
+ sh1: vec4<u32>,
11
+ #endif
12
+ #if SH_DEGREE>2
13
+ sh2: vec4<u32>,
14
+ #endif
15
+ #if SH_DEGREE>3
16
+ sh3: vec4<u32>,
17
+ sh4: vec4<u32>,
18
+ #endif
19
+ #if IS_COMPOUND
20
+ partIndex: u32,
21
+ #endif
22
+ #if defined(IS_FOR_VOXELIZATION)
23
+ rotationA: vec4f,
24
+ rotationB: vec4f,
25
+ rotationScale: vec4f,
26
+ #endif
27
+ #ifdef USE_SOG
28
+ splatIndex: f32,
29
+ #endif
30
+ };fn getSplatIndex(localIndex: i32,splatIndex0: vec4f,splatIndex1: vec4f,splatIndex2: vec4f,splatIndex3: vec4f)->f32 {var splatIndex: f32;switch (localIndex)
31
+ {case 0:
32
+ {splatIndex=splatIndex0.x;break;}
33
+ case 1:
34
+ {splatIndex=splatIndex0.y;break;}
35
+ case 2:
36
+ {splatIndex=splatIndex0.z;break;}
37
+ case 3:
38
+ {splatIndex=splatIndex0.w;break;}
39
+ case 4:
40
+ {splatIndex=splatIndex1.x;break;}
41
+ case 5:
42
+ {splatIndex=splatIndex1.y;break;}
43
+ case 6:
44
+ {splatIndex=splatIndex1.z;break;}
45
+ case 7:
46
+ {splatIndex=splatIndex1.w;break;}
47
+ case 8:
48
+ {splatIndex=splatIndex2.x;break;}
49
+ case 9:
50
+ {splatIndex=splatIndex2.y;break;}
51
+ case 10:
52
+ {splatIndex=splatIndex2.z;break;}
53
+ case 11:
54
+ {splatIndex=splatIndex2.w;break;}
55
+ case 12:
56
+ {splatIndex=splatIndex3.x;break;}
57
+ case 13:
58
+ {splatIndex=splatIndex3.y;break;}
59
+ case 14:
60
+ {splatIndex=splatIndex3.z;break;}
61
+ default:
62
+ {splatIndex=splatIndex3.w;break;}}
63
+ return splatIndex;}
64
+ fn readSplat(splatIndex: f32,dataTextureSize: vec2f)->Splat {var splat: Splat;let splatUV=getDataUV(splatIndex,dataTextureSize);let splatUVi32=vec2<i32>(i32(splatUV.x),i32(splatUV.y));
65
+ #ifdef USE_SOG
66
+ let mL=textureLoad(centersTexture,splatUVi32,0);let mU=textureLoad(covariancesATexture,splatUVi32,0);let sRaw=textureLoad(covariancesBTexture,splatUVi32,0);let qRaw=textureLoad(sogQuatsTexture,splatUVi32,0);let c0=textureLoad(colorsTexture,splatUVi32,0);let q16=(mU.xyz*256.0+mL.xyz)*(255.0/65535.0);let nPos=mix(uniforms.sogMeansMin,uniforms.sogMeansMax,q16);let center3=sign(nPos)*(exp(abs(nPos))-vec3f(1.0));splat.center=vec4f(center3,1.0);
67
+ #ifdef USE_SOG_V2
68
+ let sIdx=floor(sRaw.xyz*255.0+0.5);var splatScale: vec3f;splatScale.x=exp(textureLoad(sogCodebookTexture,vec2<i32>(i32(sIdx.x),0),0).r);splatScale.y=exp(textureLoad(sogCodebookTexture,vec2<i32>(i32(sIdx.y),0),0).r);splatScale.z=exp(textureLoad(sogCodebookTexture,vec2<i32>(i32(sIdx.z),0),0).r);
69
+ #else
70
+ let splatScale=exp(mix(uniforms.sogScalesMin,uniforms.sogScalesMax,sRaw.xyz));
71
+ #endif
72
+ let invSqrt2: f32=0.70710678118;let qabc=(qRaw.xyz-vec3f(0.5))*2.0*invSqrt2;let qMode=i32(qRaw.w*255.0+0.5)-252;let qd=sqrt(max(0.0,1.0-dot(qabc,qabc)));var quat: vec4f;if (qMode==0) { quat=vec4f(qd,qabc.x,qabc.y,qabc.z); }
73
+ else if (qMode==1) { quat=vec4f(qabc.x,qd,qabc.y,qabc.z); }
74
+ else if (qMode==2) { quat=vec4f(qabc.x,qabc.y,qd,qabc.z); }
75
+ else { quat=vec4f(qabc.x,qabc.y,qabc.z,qd); }
76
+ let qw=quat.x; let qx=quat.y; let qy=quat.z; let qz=quat.w;let R=mat3x3<f32>(
77
+ 1.0-2.0*(qy*qy+qz*qz),2.0*(qx*qy+qw*qz), 2.0*(qx*qz-qw*qy),
78
+ 2.0*(qx*qy-qw*qz), 1.0-2.0*(qx*qx+qz*qz),2.0*(qy*qz+qw*qx),
79
+ 2.0*(qx*qz+qw*qy), 2.0*(qy*qz-qw*qx), 1.0-2.0*(qx*qx+qy*qy)
80
+ );let S2=mat3x3<f32>(
81
+ 4.0*splatScale.x*splatScale.x,0.0,0.0,
82
+ 0.0,4.0*splatScale.y*splatScale.y,0.0,
83
+ 0.0,0.0,4.0*splatScale.z*splatScale.z
84
+ );let Sigma=R*S2*transpose(R);splat.covA=vec4f(Sigma[0][0],Sigma[0][1],Sigma[0][2],Sigma[1][1]);splat.covB=vec4f(Sigma[1][2],Sigma[2][2],0.0,0.0);let SH_C0_SOG: f32=0.28209479177387814;
85
+ #ifdef USE_SOG_V2
86
+ var c3: vec3f;c3.x=textureLoad(sogCodebookTexture,vec2<i32>(256+i32(c0.x*255.0+0.5),0),0).r;c3.y=textureLoad(sogCodebookTexture,vec2<i32>(256+i32(c0.y*255.0+0.5),0),0).r;c3.z=textureLoad(sogCodebookTexture,vec2<i32>(256+i32(c0.z*255.0+0.5),0),0).r;let colRgb=vec3f(0.5)+c3*SH_C0_SOG;let colA=c0.w;
87
+ #else
88
+ let cLerp=mix(uniforms.sogSh0Min,uniforms.sogSh0Max,c0);let colRgb=vec3f(0.5)+cLerp.xyz*SH_C0_SOG;let colA=1.0/(1.0+exp(-cLerp.w));
89
+ #endif
90
+ splat.color=vec4f(colRgb,colA);splat.splatIndex=splatIndex;
91
+ #else
92
+ splat.center=textureLoad(centersTexture,splatUVi32,0);splat.color=textureLoad(colorsTexture,splatUVi32,0);
93
+ #if !defined(IS_FOR_VOXELIZATION)
94
+ splat.covA=textureLoad(covariancesATexture,splatUVi32,0)*splat.center.w;splat.covB=textureLoad(covariancesBTexture,splatUVi32,0)*splat.center.w;
95
+ #endif
96
+ #endif
97
+ #if SH_DEGREE>0 && !defined(USE_SOG)
98
+ splat.sh0=textureLoad(shTexture0,splatUVi32,0);
99
+ #endif
100
+ #if SH_DEGREE>1 && !defined(USE_SOG)
101
+ splat.sh1=textureLoad(shTexture1,splatUVi32,0);
102
+ #endif
103
+ #if SH_DEGREE>2 && !defined(USE_SOG)
104
+ splat.sh2=textureLoad(shTexture2,splatUVi32,0);
105
+ #endif
106
+ #if SH_DEGREE>3 && !defined(USE_SOG)
107
+ splat.sh3=textureLoad(shTexture3,splatUVi32,0);splat.sh4=textureLoad(shTexture4,splatUVi32,0);
108
+ #endif
109
+ #if IS_COMPOUND
110
+ splat.partIndex=u32(textureLoad(partIndicesTexture,splatUVi32,0).r*255.0+0.5);
111
+ #endif
112
+ #if defined(IS_FOR_VOXELIZATION)
113
+ splat.rotationA=textureLoad(rotationsATexture,splatUVi32,0);splat.rotationB=textureLoad(rotationsBTexture,splatUVi32,0);splat.rotationScale=textureLoad(rotationScaleTexture,splatUVi32,0);
114
+ #endif
115
+ return splat;}
116
+ fn computeColorFromSHDegree(dir: vec3f,sh: array<vec3<f32>,25>,_so1: f32,_so2: f32,_so3: f32,_so4: f32)->vec3f
117
+ {let SH_C0: f32=0.28209479;let SH_C1: f32=0.48860251;var SH_C2: array<f32,5>=array<f32,5>(
118
+ 1.092548430,
119
+ -1.09254843,
120
+ 0.315391565,
121
+ -1.09254843,
122
+ 0.546274215
123
+ );var SH_C3: array<f32,7>=array<f32,7>(
124
+ -0.59004358,
125
+ 2.890611442,
126
+ -0.45704579,
127
+ 0.373176332,
128
+ -0.45704579,
129
+ 1.445305721,
130
+ -0.59004358
131
+ );var SH_C4: array<f32,9>=array<f32,9>(
132
+ 2.5033429418,
133
+ -1.7701307698,
134
+ 0.9461746958,
135
+ -0.6690465436,
136
+ 0.1057855469,
137
+ -0.6690465436,
138
+ 0.4730873479,
139
+ -1.7701307698,
140
+ 0.6258357354
141
+ );var result: vec3f=/*SH_C0**/sh[0];
142
+ #if SH_DEGREE>0
143
+ let x: f32=dir.x;let y: f32=dir.y;let z: f32=dir.z;result+=_so1*(-SH_C1*y*sh[1]+SH_C1*z*sh[2]-SH_C1*x*sh[3]);
144
+ #if SH_DEGREE>1
145
+ let xx: f32=x*x;let yy: f32=y*y;let zz: f32=z*z;let xy: f32=x*y;let yz: f32=y*z;let xz: f32=x*z;result+=_so2*(
146
+ SH_C2[0]*xy*sh[4] +
147
+ SH_C2[1]*yz*sh[5] +
148
+ SH_C2[2]*(2.0f*zz-xx-yy)*sh[6] +
149
+ SH_C2[3]*xz*sh[7] +
150
+ SH_C2[4]*(xx-yy)*sh[8]);
151
+ #if SH_DEGREE>2
152
+ result+=_so3*(
153
+ SH_C3[0]*y*(3.0f*xx-yy)*sh[9] +
154
+ SH_C3[1]*xy*z*sh[10] +
155
+ SH_C3[2]*y*(4.0f*zz-xx-yy)*sh[11] +
156
+ SH_C3[3]*z*(2.0f*zz-3.0f*xx-3.0f*yy)*sh[12] +
157
+ SH_C3[4]*x*(4.0f*zz-xx-yy)*sh[13] +
158
+ SH_C3[5]*z*(xx-yy)*sh[14] +
159
+ SH_C3[6]*x*(xx-3.0f*yy)*sh[15]);
160
+ #if SH_DEGREE>3
161
+ result+=_so4*(
162
+ SH_C4[0]*x*y*(xx-yy)*sh[16] +
163
+ SH_C4[1]*y*z*(3.0f*xx-yy)*sh[17] +
164
+ SH_C4[2]*x*y*(7.0f*zz-1.0f)*sh[18] +
165
+ SH_C4[3]*y*z*(7.0f*zz-3.0f)*sh[19] +
166
+ SH_C4[4]*(zz*(35.0f*zz-30.0f)+3.0f)*sh[20] +
167
+ SH_C4[5]*x*z*(7.0f*zz-3.0f)*sh[21] +
168
+ SH_C4[6]*(xx-yy)*(7.0f*zz-1.0f)*sh[22] +
169
+ SH_C4[7]*x*z*(xx-3.0f*yy)*sh[23] +
170
+ SH_C4[8]*(xx*(xx-3.0f*yy)-yy*(3.0f*xx-yy))*sh[24]);
171
+ #endif
172
+ #endif
173
+ #endif
174
+ #endif
175
+ return result;}
176
+ fn decompose(value: u32)->vec4f
177
+ {let components : vec4f=vec4f(
178
+ f32((value ) & 255u),
179
+ f32((value>>u32( 8)) & 255u),
180
+ f32((value>>u32(16)) & 255u),
181
+ f32((value>>u32(24)) & 255u));return components*vec4f(2./255.)-vec4f(1.);}
182
+ #ifdef USE_SOG
183
+ fn computeSH(splat: Splat,dir: vec3f)->vec3f
184
+ {
185
+ #if SH_DEGREE>0
186
+ var sh: array<vec3<f32>,25>;sh[0]=vec3f(0.,0.,0.);let labelSize=textureDimensions(sogShNLabelsTexture,0);let idx=i32(splat.splatIndex+0.5);let lw=i32(labelSize.x);let lx=idx-(idx/lw)*lw;let ly=idx/lw;let labelRaw=textureLoad(sogShNLabelsTexture,vec2<i32>(lx,ly),0);let n=i32(labelRaw.r*255.0+0.5)+i32(labelRaw.g*255.0+0.5)*256;let coeffs=i32(uniforms.sogShCoeffCount+0.5);let u=(n-(n/64)*64)*coeffs;let v=n/64;for (var k: i32=0; k<24; k=k+1) {if (k>=coeffs) { break; }
187
+ let centroidRaw=textureLoad(sogShNCentroidsTexture,vec2<i32>(u+k,v),0);var shCoeff: vec3f;
188
+ #ifdef USE_SOG_V2
189
+ let rIdx=i32(centroidRaw.r*255.0+0.5);let gIdx=i32(centroidRaw.g*255.0+0.5);let bIdx=i32(centroidRaw.b*255.0+0.5);shCoeff.r=textureLoad(sogCodebookTexture,vec2<i32>(512+rIdx,0),0).r;shCoeff.g=textureLoad(sogCodebookTexture,vec2<i32>(512+gIdx,0),0).r;shCoeff.b=textureLoad(sogCodebookTexture,vec2<i32>(512+bIdx,0),0).r;
190
+ #else
191
+ shCoeff=mix(vec3f(uniforms.sogShnMin),vec3f(uniforms.sogShnMax),centroidRaw.rgb);
192
+ #endif
193
+ sh[k+1]=shCoeff;}
194
+ return computeColorFromSHDegree(dir,sh,1.,1.,1.,1.);
195
+ #else
196
+ return vec3f(0.,0.,0.);
197
+ #endif
198
+ }
199
+ #else
200
+ fn computeSHWeighted(splat: Splat,dir: vec3f,_so1: f32,_so2: f32,_so3: f32,_so4: f32)->vec3f
201
+ {var sh: array<vec3<f32>,25>;sh[0]=vec3f(0.,0.,0.);
202
+ #if SH_DEGREE>0
203
+ let sh00: vec4f=decompose(splat.sh0.x);let sh01: vec4f=decompose(splat.sh0.y);let sh02: vec4f=decompose(splat.sh0.z);sh[1]=vec3f(sh00.x,sh00.y,sh00.z);sh[2]=vec3f(sh00.w,sh01.x,sh01.y);sh[3]=vec3f(sh01.z,sh01.w,sh02.x);
204
+ #endif
205
+ #if SH_DEGREE>1
206
+ let sh03: vec4f=decompose(splat.sh0.w);let sh04: vec4f=decompose(splat.sh1.x);let sh05: vec4f=decompose(splat.sh1.y);sh[4]=vec3f(sh02.y,sh02.z,sh02.w);sh[5]=vec3f(sh03.x,sh03.y,sh03.z);sh[6]=vec3f(sh03.w,sh04.x,sh04.y);sh[7]=vec3f(sh04.z,sh04.w,sh05.x);sh[8]=vec3f(sh05.y,sh05.z,sh05.w);
207
+ #endif
208
+ #if SH_DEGREE>2
209
+ let sh06: vec4f=decompose(splat.sh1.z);let sh07: vec4f=decompose(splat.sh1.w);let sh08: vec4f=decompose(splat.sh2.x);let sh09: vec4f=decompose(splat.sh2.y);let sh10: vec4f=decompose(splat.sh2.z);let sh11: vec4f=decompose(splat.sh2.w);sh[9]=vec3f(sh06.x,sh06.y,sh06.z);sh[10]=vec3f(sh06.w,sh07.x,sh07.y);sh[11]=vec3f(sh07.z,sh07.w,sh08.x);sh[12]=vec3f(sh08.y,sh08.z,sh08.w);sh[13]=vec3f(sh09.x,sh09.y,sh09.z);sh[14]=vec3f(sh09.w,sh10.x,sh10.y);sh[15]=vec3f(sh10.z,sh10.w,sh11.x);
210
+ #endif
211
+ #if SH_DEGREE>3
212
+ let sh12: vec4f=decompose(splat.sh3.x);let sh13: vec4f=decompose(splat.sh3.y);let sh14: vec4f=decompose(splat.sh3.z);let sh15: vec4f=decompose(splat.sh3.w);let sh16: vec4f=decompose(splat.sh4.x);let sh17: vec4f=decompose(splat.sh4.y);sh[16]=vec3f(sh11.y,sh11.z,sh11.w);sh[17]=vec3f(sh12.x,sh12.y,sh12.z);sh[18]=vec3f(sh12.w,sh13.x,sh13.y);sh[19]=vec3f(sh13.z,sh13.w,sh14.x);sh[20]=vec3f(sh14.y,sh14.z,sh14.w);sh[21]=vec3f(sh15.x,sh15.y,sh15.z);sh[22]=vec3f(sh15.w,sh16.x,sh16.y);sh[23]=vec3f(sh16.z,sh16.w,sh17.x);sh[24]=vec3f(sh17.y,sh17.z,sh17.w);
213
+ #endif
214
+ return computeColorFromSHDegree(dir,sh,_so1,_so2,_so3,_so4);}
215
+ fn computeSH(splat: Splat,dir: vec3f)->vec3f
216
+ {
217
+ #if !defined(GS_DBG_ENABLED) || GS_DBG_SH_ORDER1==1
218
+ let _w1: f32=1.0;
219
+ #else
220
+ let _w1: f32=0.0;
221
+ #endif
222
+ #if !defined(GS_DBG_ENABLED) || GS_DBG_SH_ORDER2==1
223
+ let _w2: f32=1.0;
224
+ #else
225
+ let _w2: f32=0.0;
226
+ #endif
227
+ #if !defined(GS_DBG_ENABLED) || GS_DBG_SH_ORDER3==1
228
+ let _w3: f32=1.0;
229
+ #else
230
+ let _w3: f32=0.0;
231
+ #endif
232
+ #if !defined(GS_DBG_ENABLED) || GS_DBG_SH_ORDER4==1
233
+ let _w4: f32=1.0;
234
+ #else
235
+ let _w4: f32=0.0;
236
+ #endif
237
+ return computeSHWeighted(splat,dir,_w1,_w2,_w3,_w4);}
238
+ #endif
239
+ fn gaussianSplatting(
240
+ meshPos: vec2<f32>,
241
+ worldPos: vec3<f32>,
242
+ scale: vec2<f32>,
243
+ covA: vec3<f32>,
244
+ covB: vec3<f32>,
245
+ worldMatrix: mat4x4<f32>,
246
+ viewMatrix: mat4x4<f32>,
247
+ projectionMatrix: mat4x4<f32>,
248
+ focal: vec2f,
249
+ invViewport: vec2f,
250
+ kernelSize: f32,
251
+ minPixelSize: f32
252
+ )->vec4f {let modelView=viewMatrix*worldMatrix;let camspace=viewMatrix*vec4f(worldPos,1.0);let pos2d=projectionMatrix*camspace;let bounds=1.2*pos2d.w;if (pos2d.z<0. || pos2d.x<-bounds || pos2d.x>bounds || pos2d.y<-bounds || pos2d.y>bounds) {return vec4f(0.0,0.0,2.0,1.0);}
253
+ let Vrk=mat3x3<f32>(
254
+ covA.x,covA.y,covA.z,
255
+ covA.y,covB.x,covB.y,
256
+ covA.z,covB.y,covB.z
257
+ );let isOrtho=abs(projectionMatrix[3][3]-1.0)<0.001;var J: mat3x3<f32>;if (isOrtho) {J=mat3x3<f32>(
258
+ focal.x,0.0,0.0,
259
+ 0.0,focal.y,0.0,
260
+ 0.0,0.0,0.0
261
+ );} else {J=mat3x3<f32>(
262
+ focal.x/camspace.z,0.0,-(focal.x*camspace.x)/(camspace.z*camspace.z),
263
+ 0.0,focal.y/camspace.z,-(focal.y*camspace.y)/(camspace.z*camspace.z),
264
+ 0.0,0.0,0.0
265
+ );}
266
+ let T=transpose(mat3x3<f32>(
267
+ modelView[0].xyz,
268
+ modelView[1].xyz,
269
+ modelView[2].xyz))*J;var cov2d=transpose(T)*Vrk*T;
270
+ #if COMPENSATION
271
+ let c00: f32=cov2d[0][0];let c11: f32=cov2d[1][1];let c01: f32=cov2d[0][1];let detOrig: f32=c00*c11-c01*c01;
272
+ #endif
273
+ cov2d[0][0]+=kernelSize;cov2d[1][1]+=kernelSize;
274
+ #if COMPENSATION
275
+ let c2d: vec3f=vec3f(cov2d[0][0],c01,cov2d[1][1]);let detBlur: f32=c2d.x*c2d.z-c2d.y*c2d.y;let compensation: f32=sqrt(max(0.,detOrig/detBlur));vertexOutputs.vColor.w*=compensation;
276
+ #endif
277
+ let mid=(cov2d[0][0]+cov2d[1][1])/2.0;let radius=length(vec2<f32>((cov2d[0][0]-cov2d[1][1])/2.0,cov2d[0][1]));let lambda1=mid+radius;let lambda2=mid-radius;if (lambda2<0.0) {return vec4f(0.0,0.0,2.0,1.0);}
278
+ if (minPixelSize>0.0) {let l1=2.0*min(sqrt(2.0*lambda1),1024.0);let l2=2.0*min(sqrt(2.0*lambda2),1024.0);if (max(l1,l2)<minPixelSize) {return vec4f(0.0,0.0,2.0,1.0);}}
279
+ let diagonalVector=normalize(vec2<f32>(cov2d[0][1],lambda1-cov2d[0][0]));let majorAxis=min(sqrt(2.0*lambda1),1024.0)*diagonalVector;let minorAxis=min(sqrt(2.0*lambda2),1024.0)*vec2<f32>(diagonalVector.y,-diagonalVector.x);let vCenter=vec2<f32>(pos2d.x,pos2d.y);let scaleFactor=select(pos2d.w,1.0,isOrtho);return vec4f(
280
+ vCenter+((meshPos.x*majorAxis+meshPos.y*minorAxis)*invViewport*scaleFactor)*scale,
281
+ pos2d.z,
282
+ pos2d.w
283
+ );}
284
+ #if IS_COMPOUND
285
+ fn getPartWorld(partIndex: u32)->mat4x4<f32> {return uniforms.partWorld[partIndex];}
286
+ #endif
287
+ #if defined(IS_FOR_VOXELIZATION)
288
+ fn computeVoxelSplatWorldPos(rotationA: vec4f,rotationB: vec4f,rotationScale: vec4f,center: vec3f,splatWorld: mat4x4f,viewMatrix: mat4x4f,invWorldScale: mat4x4f,quadPos: vec2f)->vec4f {let splatRotation=mat3x3f(
289
+ rotationA.xyz,
290
+ vec3f(rotationA.w,rotationB.x,rotationB.y),
291
+ vec3f(rotationB.z,rotationB.w,rotationScale.x)
292
+ );let splatScale=rotationScale.yzw;let view3x3=mat3x3f(viewMatrix[0].xyz,viewMatrix[1].xyz,viewMatrix[2].xyz);let invWorldScale3x3=mat3x3f(invWorldScale[0].xyz,invWorldScale[1].xyz,invWorldScale[2].xyz);let splatWorld3x3=mat3x3f(splatWorld[0].xyz,splatWorld[1].xyz,splatWorld[2].xyz);let rotToView=view3x3*invWorldScale3x3*splatWorld3x3*splatRotation;let axisLengthInViewZ=abs(vec3f(rotToView[0][2],rotToView[1][2],rotToView[2][2]));let gaussianSplatCutoffStddev: f32=0.7071067812;
293
+ var offsetSplatSpace: vec3f;if (axisLengthInViewZ.x>axisLengthInViewZ.y && axisLengthInViewZ.x>axisLengthInViewZ.z) {offsetSplatSpace=vec3f(0.0,quadPos.x,quadPos.y)*splatScale*gaussianSplatCutoffStddev;} else if (axisLengthInViewZ.y>axisLengthInViewZ.z) {offsetSplatSpace=vec3f(quadPos.x,0.0,quadPos.y)*splatScale*gaussianSplatCutoffStddev;} else {offsetSplatSpace=vec3f(quadPos.x,quadPos.y,0.0)*splatScale*gaussianSplatCutoffStddev;}
294
+ let vertexObjectSpace=center+splatRotation*offsetSplatSpace;return splatWorld*vec4f(vertexObjectSpace,1.0);}
295
+ #endif
296
+ `;t.IncludesShadersStoreWGSL[e]||(t.IncludesShadersStoreWGSL[e]=s);const l={name:e,shader:s};export{l as g};
@@ -0,0 +1,38 @@
1
+ import{S as a,ah as l,o as t,ai as c,aj as g,ak as s,al as d}from"./index-B2zBEWsq.js";import{p as f}from"./packingFunctions-DTwzBRBx.js";const n="gaussianSplattingFragmentDeclaration",i=`vec4 gaussianColor(vec4 inColor)
2
+ {float A=-dot(vPosition,vPosition);if (A<-4.0) discard;float B=exp(A)*inColor.a;
3
+ #include<logDepthFragment>
4
+ vec3 color=inColor.rgb;
5
+ #ifdef FOG
6
+ #include<fogFragment>
7
+ #endif
8
+ return vec4(color,B);}
9
+ `;a.IncludesShadersStore[n]||(a.IncludesShadersStore[n]=i);const F={name:n,shader:i},o="gaussianSplattingPixelShader",r=`#include<clipPlaneFragmentDeclaration>
10
+ #include<logDepthDeclaration>
11
+ #include<fogFragmentDeclaration>
12
+ #ifdef GPUPICKER_DEPTH
13
+ layout(location=0) out highp vec4 glFragData[2];
14
+ #endif
15
+ #ifdef GPUPICKER_PACK_DEPTH
16
+ #include<packingFunctions>
17
+ #endif
18
+ varying vec4 vColor;varying vec2 vPosition;
19
+ #define CUSTOM_FRAGMENT_DEFINITIONS
20
+ #include<gaussianSplattingFragmentDeclaration>
21
+ void main () {
22
+ #define CUSTOM_FRAGMENT_MAIN_BEGIN
23
+ #include<clipPlaneFragment>
24
+ vec4 finalColor=gaussianColor(vColor);
25
+ #define CUSTOM_FRAGMENT_BEFORE_FRAGCOLOR
26
+ #ifdef GPUPICKER_DEPTH
27
+ glFragData[0]=finalColor;
28
+ #ifdef GPUPICKER_PACK_DEPTH
29
+ glFragData[1]=pack(gl_FragCoord.z);
30
+ #else
31
+ glFragData[1]=vec4(gl_FragCoord.z,0.0,0.0,1.0);
32
+ #endif
33
+ #else
34
+ gl_FragColor=finalColor;
35
+ #endif
36
+ #define CUSTOM_FRAGMENT_MAIN_END
37
+ }
38
+ `;a.ShadersStore[o]||(a.ShadersStore[o]=r);const S=[l,t,c,f,g,s,F,d];for(const e of S)a.IncludesShadersStore[e.name]||(a.IncludesShadersStore[e.name]=e.shader);const m={name:o,shader:r};export{m as gaussianSplattingPixelShader};
@@ -0,0 +1,37 @@
1
+ import{S as n}from"./index-B2zBEWsq.js";import{c as o,a as s}from"./clipPlaneFragment-BXRtt4jj.js";import{l}from"./logDepthDeclaration-BR8XRz9F.js";import{f,l as c,a as g}from"./fogFragment-DtDlQBnz.js";import{p as S}from"./packingFunctions-BHPwcGG2.js";const a="gaussianSplattingFragmentDeclaration",i=`fn gaussianColor(inColor: vec4f,inPosition: vec2f)->vec4f
2
+ {var A : f32=-dot(inPosition,inPosition);if (A>-4.0)
3
+ {var B: f32=exp(A)*inColor.a;
4
+ #include<logDepthFragment>
5
+ var color: vec3f=inColor.rgb;
6
+ #ifdef FOG
7
+ #include<fogFragment>
8
+ #endif
9
+ return vec4f(color,B);} else {return vec4f(0.0);}}
10
+ `;n.IncludesShadersStoreWGSL[a]||(n.IncludesShadersStoreWGSL[a]=i);const u={name:a,shader:i},t="gaussianSplattingPixelShader",r=`#include<clipPlaneFragmentDeclaration>
11
+ #include<logDepthDeclaration>
12
+ #include<fogFragmentDeclaration>
13
+ #ifdef GPUPICKER_PACK_DEPTH
14
+ #include<packingFunctions>
15
+ #endif
16
+ varying vColor: vec4f;varying vPosition: vec2f;
17
+ #define CUSTOM_FRAGMENT_DEFINITIONS
18
+ #include<gaussianSplattingFragmentDeclaration>
19
+ @fragment
20
+ fn main(input: FragmentInputs)->FragmentOutputs {
21
+ #define CUSTOM_FRAGMENT_MAIN_BEGIN
22
+ #include<clipPlaneFragment>
23
+ var finalColor: vec4f=gaussianColor(input.vColor,input.vPosition);
24
+ #define CUSTOM_FRAGMENT_BEFORE_FRAGCOLOR
25
+ #ifdef GPUPICKER_DEPTH
26
+ fragmentOutputs.fragData0=finalColor;
27
+ #ifdef GPUPICKER_PACK_DEPTH
28
+ fragmentOutputs.fragData1=pack(fragmentInputs.position.z);
29
+ #else
30
+ fragmentOutputs.fragData1=vec4f(fragmentInputs.position.z,0.0,0.0,1.0);
31
+ #endif
32
+ #else
33
+ fragmentOutputs.color=finalColor;
34
+ #endif
35
+ #define CUSTOM_FRAGMENT_MAIN_END
36
+ }
37
+ `;n.ShadersStoreWGSL[t]||(n.ShadersStoreWGSL[t]=r);const d=[o,l,f,S,c,g,u,s];for(const e of d)n.IncludesShadersStoreWGSL[e.name]||(n.IncludesShadersStoreWGSL[e.name]=e.shader);const D={name:t,shader:r};export{D as gaussianSplattingPixelShaderWGSL};