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,693 @@
1
+ import{S as e}from"./index-B2zBEWsq.js";import"./mainUVVaryingDeclaration-BxQWGFcG.js";import"./oitFragment-CTMCOfNP.js";const t="pbrFragmentExtraDeclaration",v=`varying vPositionW: vec3f;
2
+ #if DEBUGMODE>0
3
+ varying vClipSpacePosition: vec4f;
4
+ #endif
5
+ #include<mainUVVaryingDeclaration>[1..7]
6
+ #ifdef NORMAL
7
+ varying vNormalW: vec3f;
8
+ #if defined(USESPHERICALFROMREFLECTIONMAP) && defined(USESPHERICALINVERTEX)
9
+ varying vEnvironmentIrradiance: vec3f;
10
+ #endif
11
+ #endif
12
+ #if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES)
13
+ varying vColor: vec4f;
14
+ #endif
15
+ #if defined(CLUSTLIGHT_BATCH) && CLUSTLIGHT_BATCH>0
16
+ varying vViewDepth: f32;
17
+ #endif
18
+ `;e.IncludesShadersStoreWGSL[t]||(e.IncludesShadersStoreWGSL[t]=v);const R={name:t,shader:v},i="subSurfaceScatteringFunctions",g=`fn testLightingForSSS(diffusionProfile: f32)->bool
19
+ {return diffusionProfile<1.;}`;e.IncludesShadersStoreWGSL[i]||(e.IncludesShadersStoreWGSL[i]=g);const M={name:i,shader:g},f="importanceSampling",h=`fn hemisphereCosSample(u: vec2f)->vec3f {var phi: f32=2.*PI*u.x;var cosTheta2: f32=1.-u.y;var cosTheta: f32=sqrt(cosTheta2);var sinTheta: f32=sqrt(1.-cosTheta2);return vec3f(sinTheta*cos(phi),sinTheta*sin(phi),cosTheta);}
20
+ fn hemisphereImportanceSampleDggx(u: vec2f,a: f32)->vec3f {var phi: f32=2.*PI*u.x;var cosTheta2: f32=(1.-u.y)/(1.+(a+1.)*((a-1.)*u.y));var cosTheta: f32=sqrt(cosTheta2);var sinTheta: f32=sqrt(1.-cosTheta2);return vec3f(sinTheta*cos(phi),sinTheta*sin(phi),cosTheta);}
21
+ fn hemisphereImportanceSampleDggxAnisotropic(Xi: vec2f,alphaTangent: f32,alphaBitangent: f32)->vec3f
22
+ {let alphaT: f32=max(alphaTangent,0.0001);let alphaB: f32=max(alphaBitangent,0.0001);var phi: f32=atan(alphaB/alphaT*tan(2.0f*PI*Xi.x));if (Xi.x>0.5) {phi+=PI; }
23
+ let cosPhi: f32=cos(phi);let sinPhi: f32=sin(phi);let alpha2: f32=(cosPhi*cosPhi)/(alphaT*alphaT) +
24
+ (sinPhi*sinPhi)/(alphaB*alphaB);let tanTheta2: f32=Xi.y/(1.0f-Xi.y)/alpha2;let cosTheta: f32=1.0f/sqrt(1.0f+tanTheta2);let sinTheta: f32=sqrt(max(0.0f,1.0f-cosTheta*cosTheta));return vec3f(sinTheta*cosPhi,sinTheta*sinPhi,cosTheta);}
25
+ fn hemisphereImportanceSampleDCharlie(u: vec2f,a: f32)->vec3f {
26
+ var phi: f32=2.*PI*u.x;var sinTheta: f32=pow(u.y,a/(2.*a+1.));var cosTheta: f32=sqrt(1.-sinTheta*sinTheta);return vec3f(sinTheta*cos(phi),sinTheta*sin(phi),cosTheta);}`;e.IncludesShadersStoreWGSL[f]||(e.IncludesShadersStoreWGSL[f]=h);const F={name:f,shader:h},r="pbrHelperFunctions",p=`#define MINIMUMVARIANCE 0.0005
27
+ #ifndef TEXRD_DEFINED
28
+ fn TEXRD(t: texture_2d<f32>,ts: sampler,uv: vec2f)->vec4f {return textureSample(t,ts,uv);}
29
+ #define TEXRD_DEFINED
30
+ #endif
31
+ fn convertRoughnessToAverageSlope(roughness: f32)->f32
32
+ {return roughness*roughness+MINIMUMVARIANCE;}
33
+ fn fresnelGrazingReflectance(reflectance0: f32)->f32 {var reflectance90: f32=saturate(reflectance0*25.0);return reflectance90;}
34
+ fn getAARoughnessFactors(normalVector: vec3f)->vec2f {
35
+ #ifdef SPECULARAA
36
+ var nDfdx: vec3f=dpdx(normalVector.xyz);var nDfdy: vec3f=dpdy(normalVector.xyz);var slopeSquare: f32=max(dot(nDfdx,nDfdx),dot(nDfdy,nDfdy));var geometricRoughnessFactor: f32=pow(saturate(slopeSquare),0.333);var geometricAlphaGFactor: f32=sqrt(slopeSquare);geometricAlphaGFactor*=0.75;return vec2f(geometricRoughnessFactor,geometricAlphaGFactor);
37
+ #else
38
+ return vec2f(0.);
39
+ #endif
40
+ }
41
+ #ifdef ANISOTROPIC
42
+ #ifdef ANISOTROPIC_LEGACY
43
+ fn getAnisotropicRoughness(alphaG: f32,anisotropy: f32)->vec2f {var alphaT: f32=max(alphaG*(1.0+anisotropy),MINIMUMVARIANCE);var alphaB: f32=max(alphaG*(1.0-anisotropy),MINIMUMVARIANCE);return vec2f(alphaT,alphaB);}
44
+ fn getAnisotropicBentNormals(T: vec3f,B: vec3f,N: vec3f,V: vec3f,anisotropy: f32,roughness: f32)->vec3f {var anisotropicFrameDirection: vec3f=select(T,B,anisotropy>=0.0);var anisotropicFrameTangent: vec3f=cross(normalize(anisotropicFrameDirection),V);var anisotropicFrameNormal: vec3f=cross(anisotropicFrameTangent,anisotropicFrameDirection);var anisotropicNormal: vec3f=normalize(mix(N,anisotropicFrameNormal,abs(anisotropy)));return anisotropicNormal;}
45
+ #elif ANISOTROPIC_OPENPBR
46
+ fn getAnisotropicRoughness(alphaG: f32,anisotropy: f32)->vec2f {var alphaT: f32=max(alphaG*alphaG*sqrt(2.0/(1.0+(1.0-anisotropy)*(1.0-anisotropy))),MINIMUMVARIANCE);var alphaB: f32=max(alphaT*(1.0-anisotropy),MINIMUMVARIANCE);return vec2f(alphaT,alphaB);}
47
+ #else
48
+ fn getAnisotropicRoughness(alphaG: f32,anisotropy: f32)->vec2f {var alphaT: f32=max(mix(alphaG,1.0,anisotropy*anisotropy),MINIMUMVARIANCE);var alphaB: f32=max(alphaG,MINIMUMVARIANCE);return vec2f(alphaT,alphaB);}
49
+ fn getAnisotropicBentNormals(T: vec3f,B: vec3f,N: vec3f,V: vec3f,anisotropy: f32,roughness: f32)->vec3f {var bentNormal: vec3f=cross(B,V);bentNormal=normalize(cross(bentNormal,B));var sq=1.0-anisotropy*(1.0-roughness);var a: f32=sq*sq*sq*sq;bentNormal=normalize(mix(bentNormal,N,a));return bentNormal;}
50
+ #endif
51
+ #endif
52
+ #if defined(CLEARCOAT) || defined(SS_REFRACTION)
53
+ fn cocaLambertVec3(alpha: vec3f,distance: f32)->vec3f {return exp(-alpha*distance);}
54
+ fn cocaLambert(NdotVRefract: f32,NdotLRefract: f32,alpha: vec3f,thickness: f32)->vec3f {return cocaLambertVec3(alpha,(thickness*((NdotLRefract+NdotVRefract)/(NdotLRefract*NdotVRefract))));}
55
+ fn computeColorAtDistanceInMedia(color: vec3f,distance: f32)->vec3f {return -log(color)/distance;}
56
+ fn computeClearCoatAbsorption(NdotVRefract: f32,NdotLRefract: f32,clearCoatColor: vec3f,clearCoatThickness: f32,clearCoatIntensity: f32)->vec3f {var clearCoatAbsorption: vec3f=mix( vec3f(1.0),
57
+ cocaLambert(NdotVRefract,NdotLRefract,clearCoatColor,clearCoatThickness),
58
+ clearCoatIntensity);return clearCoatAbsorption;}
59
+ #endif
60
+ #ifdef MICROSURFACEAUTOMATIC
61
+ fn computeDefaultMicroSurface(microSurface: f32,reflectivityColor: vec3f)->f32
62
+ {const kReflectivityNoAlphaWorkflow_SmoothnessMax: f32=0.95;var reflectivityLuminance: f32=getLuminance(reflectivityColor);var reflectivityLuma: f32=sqrt(reflectivityLuminance);var resultMicroSurface=reflectivityLuma*kReflectivityNoAlphaWorkflow_SmoothnessMax;return resultMicroSurface;}
63
+ #endif
64
+ `;e.IncludesShadersStoreWGSL[r]||(e.IncludesShadersStoreWGSL[r]=p);const _={name:r,shader:p},n="pbrDirectLightingSetupFunctions",E=`struct preLightingInfo
65
+ {lightOffset: vec3f,
66
+ lightDistanceSquared: f32,
67
+ lightDistance: f32,
68
+ attenuation: f32,
69
+ L: vec3f,
70
+ H: vec3f,
71
+ NdotV: f32,
72
+ NdotLUnclamped: f32,
73
+ NdotL: f32,
74
+ VdotH: f32,
75
+ LdotV: f32,
76
+ roughness: f32,
77
+ diffuseRoughness: f32,
78
+ surfaceAlbedo: vec3f,
79
+ #ifdef IRIDESCENCE
80
+ iridescenceIntensity: f32
81
+ #endif
82
+ #if defined(AREALIGHTUSED) && defined(AREALIGHTSUPPORTED)
83
+ areaLightDiffuse: vec3f,
84
+ #ifdef SPECULARTERM
85
+ areaLightSpecular: vec3f,
86
+ areaLightFresnel: vec4f
87
+ #endif
88
+ #endif
89
+ };fn computePointAndSpotPreLightingInfo(lightData: vec4f,V: vec3f,N: vec3f,posW: vec3f)->preLightingInfo {var result: preLightingInfo;result.lightOffset=lightData.xyz-posW;result.lightDistanceSquared=dot(result.lightOffset,result.lightOffset);result.lightDistance=sqrt(result.lightDistanceSquared);result.L=normalize(result.lightOffset);result.H=normalize(V+result.L);result.VdotH=saturate(dot(V,result.H));result.NdotLUnclamped=dot(N,result.L);result.NdotL=saturateEps(result.NdotLUnclamped);return result;}
90
+ fn computeDirectionalPreLightingInfo(lightData: vec4f,V: vec3f,N: vec3f)->preLightingInfo {var result: preLightingInfo;result.lightDistance=length(-lightData.xyz);result.L=normalize(-lightData.xyz);result.H=normalize(V+result.L);result.VdotH=saturate(dot(V,result.H));result.NdotLUnclamped=dot(N,result.L);result.NdotL=saturateEps(result.NdotLUnclamped);result.LdotV=dot(result.L,V);return result;}
91
+ fn computeHemisphericPreLightingInfo(lightData: vec4f,V: vec3f,N: vec3f)->preLightingInfo {var result: preLightingInfo;result.NdotL=dot(N,lightData.xyz)*0.5+0.5;result.NdotL=saturateEps(result.NdotL);result.NdotLUnclamped=result.NdotL;
92
+ #ifdef SPECULARTERM
93
+ result.L=normalize(lightData.xyz);result.H=normalize(V+result.L);result.VdotH=saturate(dot(V,result.H));
94
+ #endif
95
+ return result;}
96
+ #if defined(AREALIGHTUSED) && defined(AREALIGHTSUPPORTED)
97
+ #include<ltcHelperFunctions>
98
+ var areaLightsLTC1SamplerSampler: sampler;var areaLightsLTC1Sampler: texture_2d<f32>;var areaLightsLTC2SamplerSampler: sampler;var areaLightsLTC2Sampler: texture_2d<f32>;fn computeAreaPreLightingInfo(ltc1: texture_2d<f32>,ltc1Sampler:sampler,ltc2:texture_2d<f32>,ltc2Sampler:sampler,viewDirectionW: vec3f,vNormal:vec3f,vPosition:vec3f,lightCenter:vec3f,halfWidth:vec3f, halfHeight:vec3f,roughness:f32)->preLightingInfo {var result: preLightingInfo;var data: areaLightData=computeAreaLightSpecularDiffuseFresnel(ltc1,ltc1Sampler,ltc2,ltc2Sampler,viewDirectionW,vNormal,vPosition,lightCenter,halfWidth,halfHeight,roughness);
99
+ #ifdef SPECULARTERM
100
+ result.areaLightFresnel=data.Fresnel;result.areaLightSpecular=data.Specular;
101
+ #endif
102
+ result.areaLightDiffuse+=data.Diffuse;return result;}
103
+ fn computeAreaPreLightingInfoWithTexture(ltc1: texture_2d<f32>,ltc1Sampler:sampler,ltc2:texture_2d<f32>,ltc2Sampler:sampler,emissionTexture:texture_2d<f32>,emissionTextureSampler:sampler,viewDirectionW: vec3f,vNormal:vec3f,vPosition:vec3f,lightCenter:vec3f,halfWidth:vec3f, halfHeight:vec3f,roughness:f32)->preLightingInfo {var result: preLightingInfo;result.lightOffset=lightCenter-vPosition;result.lightDistanceSquared=dot(result.lightOffset,result.lightOffset);result.lightDistance=sqrt(result.lightDistanceSquared);var data: areaLightData=computeAreaLightSpecularDiffuseFresnelWithEmission(ltc1,ltc1Sampler,ltc2,ltc2Sampler,emissionTexture,emissionTextureSampler,viewDirectionW,vNormal,vPosition,lightCenter,halfWidth,halfHeight,roughness);
104
+ #ifdef SPECULARTERM
105
+ result.areaLightFresnel=data.Fresnel;result.areaLightSpecular=data.Specular;
106
+ #endif
107
+ result.areaLightDiffuse=data.Diffuse;result.LdotV=0.;result.roughness=0.;result.diffuseRoughness=0.;result.surfaceAlbedo=vec3f(0.);return result;}
108
+ #endif
109
+ `;e.IncludesShadersStoreWGSL[n]||(e.IncludesShadersStoreWGSL[n]=E);const G={name:n,shader:E},a="pbrDirectLightingFalloffFunctions",L=`fn computeDistanceLightFalloff_Standard(lightOffset: vec3f,range: f32)->f32
110
+ {return max(0.,1.0-length(lightOffset)/range);}
111
+ fn computeDistanceLightFalloff_Physical(lightDistanceSquared: f32)->f32
112
+ {return 1.0/maxEps(lightDistanceSquared);}
113
+ fn computeDistanceLightFalloff_GLTF(lightDistanceSquared: f32,inverseSquaredRange: f32)->f32
114
+ {var lightDistanceFalloff: f32=1.0/maxEps(lightDistanceSquared);var factor: f32=lightDistanceSquared*inverseSquaredRange;var attenuation: f32=saturate(1.0-factor*factor);attenuation*=attenuation;lightDistanceFalloff*=attenuation;return lightDistanceFalloff;}
115
+ fn computeDirectionalLightFalloff_IES(lightDirection: vec3f,directionToLightCenterW: vec3f,iesLightTexture: texture_2d<f32>,iesLightTextureSampler: sampler)->f32
116
+ {var cosAngle: f32=dot(-lightDirection,directionToLightCenterW);var angle=acos(cosAngle)/PI;return textureSampleLevel(iesLightTexture,iesLightTextureSampler,vec2f(angle,0),0.).r;}
117
+ fn computeDistanceLightFalloff(lightOffset: vec3f,lightDistanceSquared: f32,range: f32,inverseSquaredRange: f32)->f32
118
+ {
119
+ #ifdef USEPHYSICALLIGHTFALLOFF
120
+ return computeDistanceLightFalloff_Physical(lightDistanceSquared);
121
+ #elif defined(USEGLTFLIGHTFALLOFF)
122
+ return computeDistanceLightFalloff_GLTF(lightDistanceSquared,inverseSquaredRange);
123
+ #else
124
+ return computeDistanceLightFalloff_Standard(lightOffset,range);
125
+ #endif
126
+ }
127
+ fn computeDirectionalLightFalloff_Standard(lightDirection: vec3f,directionToLightCenterW: vec3f,cosHalfAngle: f32,exponent: f32)->f32
128
+ {var falloff: f32=0.0;var cosAngle: f32=maxEps(dot(-lightDirection,directionToLightCenterW));if (cosAngle>=cosHalfAngle)
129
+ {falloff=max(0.,pow(cosAngle,exponent));}
130
+ return falloff;}
131
+ fn computeDirectionalLightFalloff_Physical(lightDirection: vec3f,directionToLightCenterW: vec3f,cosHalfAngle: f32)->f32
132
+ {const kMinusLog2ConeAngleIntensityRatio: f32=6.64385618977;
133
+ var concentrationKappa: f32=kMinusLog2ConeAngleIntensityRatio/(1.0-cosHalfAngle);var lightDirectionSpreadSG: vec4f= vec4f(-lightDirection*concentrationKappa,-concentrationKappa);var falloff: f32=exp2(dot( vec4f(directionToLightCenterW,1.0),lightDirectionSpreadSG));return falloff;}
134
+ fn computeDirectionalLightFalloff_GLTF(lightDirection: vec3f,directionToLightCenterW: vec3f,lightAngleScale: f32,lightAngleOffset: f32)->f32
135
+ {var cd: f32=dot(-lightDirection,directionToLightCenterW);var falloff: f32=saturate(cd*lightAngleScale+lightAngleOffset);falloff*=falloff;return falloff;}
136
+ fn computeDirectionalLightFalloff(lightDirection: vec3f,directionToLightCenterW: vec3f,cosHalfAngle: f32,exponent: f32,lightAngleScale: f32,lightAngleOffset: f32)->f32
137
+ {
138
+ #ifdef USEPHYSICALLIGHTFALLOFF
139
+ return computeDirectionalLightFalloff_Physical(lightDirection,directionToLightCenterW,cosHalfAngle);
140
+ #elif defined(USEGLTFLIGHTFALLOFF)
141
+ return computeDirectionalLightFalloff_GLTF(lightDirection,directionToLightCenterW,lightAngleScale,lightAngleOffset);
142
+ #else
143
+ return computeDirectionalLightFalloff_Standard(lightDirection,directionToLightCenterW,cosHalfAngle,exponent);
144
+ #endif
145
+ }`;e.IncludesShadersStoreWGSL[a]||(e.IncludesShadersStoreWGSL[a]=L);const B={name:a,shader:L},o="hdrFilteringFunctions",m=`#ifdef NUM_SAMPLES
146
+ #if NUM_SAMPLES>0
147
+ fn radicalInverse_VdC(value: u32)->f32
148
+ {var bits=(value<<16u) | (value>>16u);bits=((bits & 0x55555555u)<<1u) | ((bits & 0xAAAAAAAAu)>>1u);bits=((bits & 0x33333333u)<<2u) | ((bits & 0xCCCCCCCCu)>>2u);bits=((bits & 0x0F0F0F0Fu)<<4u) | ((bits & 0xF0F0F0F0u)>>4u);bits=((bits & 0x00FF00FFu)<<8u) | ((bits & 0xFF00FF00u)>>8u);return f32(bits)*2.3283064365386963e-10; }
149
+ fn hammersley(i: u32,N: u32)->vec2f
150
+ {return vec2f( f32(i)/ f32(N),radicalInverse_VdC(i));}
151
+ fn log4(x: f32)->f32 {return log2(x)/2.;}
152
+ fn uv_to_normal(uv: vec2f)->vec3f {var N: vec3f;var uvRange: vec2f=uv;var theta: f32=uvRange.x*2.0*PI;var phi: f32=uvRange.y*PI;N.x=cos(theta)*sin(phi);N.z=sin(theta)*sin(phi);N.y=cos(phi);return N;}
153
+ const NUM_SAMPLES_FLOAT: f32= f32(NUM_SAMPLES);const NUM_SAMPLES_FLOAT_INVERSED: f32=1./NUM_SAMPLES_FLOAT;const K: f32=4.;fn irradiance(
154
+ #ifdef CUSTOM_IRRADIANCE_FILTERING_INPUT
155
+ CUSTOM_IRRADIANCE_FILTERING_INPUT
156
+ #else
157
+ inputTexture: texture_cube<f32>,inputSampler: sampler,
158
+ #endif
159
+ inputN: vec3f,
160
+ filteringInfo: vec2f,
161
+ diffuseRoughness: f32,
162
+ surfaceAlbedo: vec3f,
163
+ inputV: vec3f
164
+ #ifdef IBL_CDF_FILTERING
165
+ ,icdfSampler: texture_2d<f32>,icdfSamplerSampler: sampler
166
+ #endif
167
+ )->vec3f
168
+ {var n: vec3f=normalize(inputN);var result: vec3f= vec3f(0.0);
169
+ #ifndef IBL_CDF_FILTERING
170
+ var tangent: vec3f=select(vec3f(1.,0.,0.),vec3f(0.,0.,1.),abs(n.z)<0.999);tangent=normalize(cross(tangent,n));var bitangent: vec3f=cross(n,tangent);var tbn: mat3x3f= mat3x3f(tangent,bitangent,n);var tbnInverse: mat3x3f=transpose(tbn);
171
+ #endif
172
+ var maxLevel: f32=filteringInfo.y;var dim0: f32=filteringInfo.x;var omegaP: f32=(4.*PI)/(6.*dim0*dim0);var clampedAlbedo: vec3f=clamp(surfaceAlbedo,vec3f(0.1),vec3f(1.0));for(var i: u32=0u; i<NUM_SAMPLES; i++)
173
+ {var Xi: vec2f=hammersley(i,NUM_SAMPLES);
174
+ #ifdef IBL_CDF_FILTERING
175
+ var T: vec2f;T.x=textureSampleLevel(icdfSampler,icdfSamplerSampler,vec2(Xi.x,0.0),0.0).x;T.y=textureSampleLevel(icdfSampler,icdfSamplerSampler,vec2(T.x,Xi.y),0.0).y;var Ls: vec3f=uv_to_normal(vec2f(1.0-fract(T.x+0.25),T.y));var NoL: f32=dot(n,Ls);var NoV: f32=dot(n,inputV);
176
+ #if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON
177
+ var LoV: f32=dot(Ls,inputV);
178
+ #elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_BURLEY
179
+ var H: vec3f=(inputV+Ls)*0.5;var VoH: f32=dot(inputV,H);
180
+ #endif
181
+ #else
182
+ var Ls: vec3f=hemisphereCosSample(Xi);Ls=normalize(Ls);var Ns: vec3f= vec3f(0.,0.,1.);var NoL: f32=dot(Ns,Ls);var V: vec3f=tbnInverse*inputV;var NoV: f32=dot(Ns,V);
183
+ #if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON
184
+ var LoV: f32=dot(Ls,V);
185
+ #elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_BURLEY
186
+ var H: vec3f=(V+Ls)*0.5;var VoH: f32=dot(V,H);
187
+ #endif
188
+ #endif
189
+ if (NoL>0.) {
190
+ #ifdef IBL_CDF_FILTERING
191
+ var pdf: f32=textureSampleLevel(icdfSampler,icdfSamplerSampler,T,0.0).z;var c: vec3f=textureSampleLevel(inputTexture,inputSampler,Ls,0.0).rgb;
192
+ #else
193
+ var pdf_inversed: f32=PI/NoL;var omegaS: f32=NUM_SAMPLES_FLOAT_INVERSED*pdf_inversed;var l: f32=log4(omegaS)-log4(omegaP)+log4(K);var mipLevel: f32=clamp(l,0.0,maxLevel);
194
+ #ifdef CUSTOM_IRRADIANCE_FILTERING_FUNCTION
195
+ CUSTOM_IRRADIANCE_FILTERING_FUNCTION
196
+ #else
197
+ var c: vec3f=textureSampleLevel(inputTexture,inputSampler,tbn*Ls,mipLevel).rgb;
198
+ #endif
199
+ #endif
200
+ #ifdef GAMMA_INPUT
201
+ c=toLinearSpaceVec3(c);
202
+ #endif
203
+ var diffuseRoughnessTerm: vec3f=vec3f(1.0);
204
+ #if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON
205
+ diffuseRoughnessTerm=diffuseBRDF_EON(clampedAlbedo,diffuseRoughness,NoL,NoV,LoV)*PI;
206
+ #elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_BURLEY
207
+ diffuseRoughnessTerm=vec3f(diffuseBRDF_Burley(NoL,NoV,VoH,diffuseRoughness)*PI);
208
+ #endif
209
+ #ifdef IBL_CDF_FILTERING
210
+ var light: vec3f=vec3f(0.0);if (pdf>1e-6) {light=vec3f(1.0)/vec3f(pdf)*c;}
211
+ result+=NoL*diffuseRoughnessTerm*light;
212
+ #else
213
+ result+=c*diffuseRoughnessTerm;
214
+ #endif
215
+ }}
216
+ result=result*NUM_SAMPLES_FLOAT_INVERSED;
217
+ #if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON
218
+ result=result/clampedAlbedo;
219
+ #endif
220
+ return result;}
221
+ fn radiance(alphaG: f32,inputTexture: texture_cube<f32>,inputSampler: sampler,inputN: vec3f,filteringInfo: vec2f)->vec3f
222
+ {var n: vec3f=normalize(inputN);var c: vec3f=textureSampleLevel(inputTexture,inputSampler,n,0.0).rgb;
223
+ if (alphaG==0.) {
224
+ #ifdef GAMMA_INPUT
225
+ c=toLinearSpaceVec3(c);
226
+ #endif
227
+ return c;} else {var result: vec3f= vec3f(0.);var tangent: vec3f=select(vec3f(1.,0.,0.),vec3f(0.,0.,1.),abs(n.z)<0.999);tangent=normalize(cross(tangent,n));var bitangent: vec3f=cross(n,tangent);var tbn: mat3x3f= mat3x3f(tangent,bitangent,n);var maxLevel: f32=filteringInfo.y;var dim0: f32=filteringInfo.x;var omegaP: f32=(4.*PI)/(6.*dim0*dim0);var weight: f32=0.;for(var i: u32=0u; i<NUM_SAMPLES; i++)
228
+ {var Xi: vec2f=hammersley(i,NUM_SAMPLES);var H: vec3f=hemisphereImportanceSampleDggx(Xi,alphaG);var NoV: f32=1.;var NoH: f32=H.z;var NoH2: f32=H.z*H.z;var NoL: f32=2.*NoH2-1.;var L: vec3f= vec3f(2.*NoH*H.x,2.*NoH*H.y,NoL);L=normalize(L);if (NoL>0.) {var pdf_inversed: f32=4./normalDistributionFunction_TrowbridgeReitzGGX(NoH,alphaG);var omegaS: f32=NUM_SAMPLES_FLOAT_INVERSED*pdf_inversed;var l: f32=log4(omegaS)-log4(omegaP)+log4(K);var mipLevel: f32=clamp( f32(l),0.0,maxLevel);weight+=NoL;var c: vec3f=textureSampleLevel(inputTexture,inputSampler,tbn*L,mipLevel).rgb;
229
+ #ifdef GAMMA_INPUT
230
+ c=toLinearSpaceVec3(c);
231
+ #endif
232
+ result+=c*NoL;}}
233
+ result=result/weight;return result;}}
234
+ #ifdef ANISOTROPIC
235
+ fn radianceAnisotropic(
236
+ alphaTangent: f32,
237
+ alphaBitangent: f32,
238
+ inputTexture: texture_cube<f32>,
239
+ inputSampler: sampler,
240
+ inputView: vec3f,
241
+ inputTangent: vec3f,
242
+ inputBitangent: vec3f,
243
+ inputNormal: vec3f,
244
+ filteringInfo: vec2f,
245
+ noiseInput: vec2f,
246
+ isRefraction: bool,
247
+ ior: f32
248
+ )->vec3f {var V: vec3f=inputView;var N: vec3f=inputNormal;var T: vec3f=inputTangent;var B: vec3f=inputBitangent;var result: vec3f=vec3f(0.f);var maxLevel: f32=filteringInfo.y;var dim0: f32=filteringInfo.x;let clampedAlphaT: f32=max(alphaTangent,MINIMUMVARIANCE);let clampedAlphaB: f32=max(alphaBitangent,MINIMUMVARIANCE);var effectiveDim: f32=dim0*sqrt(clampedAlphaT*clampedAlphaB);var omegaP: f32=(4.f*PI)/(6.f*effectiveDim*effectiveDim);let noiseScale: f32=clamp(log2(f32(NUM_SAMPLES))/12.0f,0.0f,1.0f);var weight: f32=0.f;for(var i: u32=0u; i<NUM_SAMPLES; i++)
249
+ {var Xi: vec2f=hammersley(i,NUM_SAMPLES);Xi=fract(Xi+noiseInput*mix(0.5f,0.015f,noiseScale));
250
+ var H_tangent: vec3f=hemisphereImportanceSampleDggxAnisotropic(Xi,clampedAlphaT,clampedAlphaB);var H: vec3f=normalize(H_tangent.x*T+H_tangent.y*B+H_tangent.z*N);var L: vec3f;if (isRefraction) {L=refract(-V,H,1.0/ior);} else {L=reflect(-V,H);}
251
+ var NoH: f32=max(dot(N,H),0.001f);var VoH: f32=max(dot(V,H),0.001f);var NoL: f32=max(dot(N,L),0.001f);if (NoL>0.f) {var pdf_inversed: f32=4./normalDistributionFunction_BurleyGGX_Anisotropic(
252
+ H_tangent.z,H_tangent.x,H_tangent.y,vec2f(clampedAlphaT,clampedAlphaB)
253
+ );var omegaS: f32=NUM_SAMPLES_FLOAT_INVERSED*pdf_inversed;var l: f32=log4(omegaS)-log4(omegaP)+log4(K);var mipLevel: f32=clamp(l,0.0f,maxLevel);weight+=NoL;var c: vec3f=textureSampleLevel(inputTexture,inputSampler,L,mipLevel).rgb;
254
+ #if GAMMA_INPUT
255
+ c=toLinearSpaceVec3(c);
256
+ #endif
257
+ result+=c*NoL;}}
258
+ result=result/weight;return result;}
259
+ #endif
260
+ #endif
261
+ #endif
262
+ `;e.IncludesShadersStoreWGSL[o]||(e.IncludesShadersStoreWGSL[o]=m);const U={name:o,shader:m},l="pbrBlockReflectance0",S=`var reflectanceF0: f32=reflectivityOut.reflectanceF0;var specularEnvironmentR0: vec3f=reflectivityOut.colorReflectanceF0;var specularEnvironmentR90: vec3f= reflectivityOut.reflectanceF90;
263
+ #ifdef ALPHAFRESNEL
264
+ var reflectance90: f32=fresnelGrazingReflectance(reflectanceF0);specularEnvironmentR90=specularEnvironmentR90*reflectance90;
265
+ #endif
266
+ `;e.IncludesShadersStoreWGSL[l]||(e.IncludesShadersStoreWGSL[l]=S);const b={name:l,shader:S},c="pbrDirectLightingFunctions",D=`#define CLEARCOATREFLECTANCE90 1.0
267
+ struct lightingInfo
268
+ {diffuse: vec3f,
269
+ #ifdef SS_TRANSLUCENCY
270
+ diffuseTransmission: vec3f,
271
+ #endif
272
+ #ifdef SPECULARTERM
273
+ specular: vec3f,
274
+ #endif
275
+ #ifdef CLEARCOAT
276
+ clearCoat: vec4f,
277
+ #endif
278
+ #ifdef SHEEN
279
+ sheen: vec3f
280
+ #endif
281
+ };fn adjustRoughnessFromLightProperties(roughness: f32,lightRadius: f32,lightDistance: f32)->f32 {
282
+ #if defined(USEPHYSICALLIGHTFALLOFF) || defined(USEGLTFLIGHTFALLOFF)
283
+ var lightRoughness: f32=lightRadius/lightDistance;var totalRoughness: f32=saturate(lightRoughness+roughness);return totalRoughness;
284
+ #else
285
+ return roughness;
286
+ #endif
287
+ }
288
+ fn computeHemisphericDiffuseLighting(info: preLightingInfo,lightColor: vec3f,groundColor: vec3f)->vec3f {return mix(groundColor,lightColor,info.NdotL);}
289
+ #if defined(AREALIGHTUSED) && defined(AREALIGHTSUPPORTED)
290
+ fn computeAreaDiffuseLighting(info: preLightingInfo,lightColor: vec3f)->vec3f {return info.areaLightDiffuse*lightColor;}
291
+ #endif
292
+ fn computeDiffuseLighting(info: preLightingInfo,lightColor: vec3f)->vec3f {var diffuseTerm: vec3f=vec3f(1.0/PI);
293
+ #if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_LEGACY
294
+ diffuseTerm=vec3f(diffuseBRDF_Burley(info.NdotL,info.NdotV,info.VdotH,info.roughness));
295
+ #elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_BURLEY
296
+ diffuseTerm=vec3f(diffuseBRDF_Burley(info.NdotL,info.NdotV,info.VdotH,info.diffuseRoughness));
297
+ #elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON
298
+ var clampedAlbedo: vec3f=clamp(info.surfaceAlbedo,vec3f(0.1),vec3f(1.0));diffuseTerm=diffuseBRDF_EON(clampedAlbedo,info.diffuseRoughness,info.NdotL,info.NdotV,info.LdotV);diffuseTerm/=clampedAlbedo;
299
+ #endif
300
+ return diffuseTerm*info.attenuation*info.NdotL*lightColor;}
301
+ fn computeProjectionTextureDiffuseLighting(projectionLightTexture: texture_2d<f32>,projectionLightSampler: sampler,textureProjectionMatrix: mat4x4f,posW: vec3f)->vec3f{var strq: vec4f=textureProjectionMatrix* vec4f(posW,1.0);strq/=strq.w;var textureColor: vec3f=textureSample(projectionLightTexture,projectionLightSampler,strq.xy).rgb;return toLinearSpaceVec3(textureColor);}
302
+ #ifdef SS_TRANSLUCENCY
303
+ fn computeDiffuseTransmittedLighting(info: preLightingInfo,lightColor: vec3f,transmittance: vec3f)->vec3f {var transmittanceNdotL=vec3f(0.0);var NdotL: f32=absEps(info.NdotLUnclamped);
304
+ #ifndef SS_TRANSLUCENCY_LEGACY
305
+ if (info.NdotLUnclamped<0.0) {
306
+ #endif
307
+ var wrapNdotL: f32=computeWrappedDiffuseNdotL(NdotL,0.02);var trAdapt: f32=step(0.,info.NdotLUnclamped);transmittanceNdotL=mix(transmittance*wrapNdotL, vec3f(wrapNdotL),trAdapt);
308
+ #ifndef SS_TRANSLUCENCY_LEGACY
309
+ }
310
+ var diffuseTerm : vec3f=vec3f(1.0/PI);
311
+ #if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_LEGACY
312
+ diffuseTerm=vec3f(diffuseBRDF_Burley(
313
+ info.NdotL,info.NdotV,info.VdotH,info.roughness));
314
+ #elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_BURLEY
315
+ diffuseTerm=vec3f(diffuseBRDF_Burley(
316
+ info.NdotL,info.NdotV,info.VdotH,info.diffuseRoughness));
317
+ #elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON
318
+ var clampedAlbedo: vec3f=clamp(info.surfaceAlbedo,vec3f(0.1),vec3f(1.0));diffuseTerm=diffuseBRDF_EON(clampedAlbedo,info.diffuseRoughness,
319
+ info.NdotL,info.NdotV,info.LdotV);diffuseTerm/=clampedAlbedo;
320
+ #endif
321
+ return (transmittanceNdotL*diffuseTerm)*info.attenuation*lightColor;
322
+ #else
323
+ let diffuseTerm=diffuseBRDF_Burley(NdotL,info.NdotV,info.VdotH,info.roughness);return diffuseTerm*transmittanceNdotL*info.attenuation*lightColor;
324
+ #endif
325
+ }
326
+ #endif
327
+ #ifdef SPECULARTERM
328
+ fn computeSpecularLighting(info: preLightingInfo,N: vec3f,reflectance0: vec3f,fresnel: vec3f,geometricRoughnessFactor: f32,lightColor: vec3f)->vec3f {var NdotH: f32=saturateEps(dot(N,info.H));var roughness: f32=max(info.roughness,geometricRoughnessFactor);var alphaG: f32=convertRoughnessToAverageSlope(roughness);var modifiedFresnel: vec3f=fresnel;
329
+ #ifdef IRIDESCENCE
330
+ modifiedFresnel=mix(fresnel,reflectance0,info.iridescenceIntensity);
331
+ #endif
332
+ var distribution: f32=normalDistributionFunction_TrowbridgeReitzGGX(NdotH,alphaG);
333
+ #ifdef BRDF_V_HEIGHT_CORRELATED
334
+ var smithVisibility: f32=smithVisibility_GGXCorrelated(info.NdotL,info.NdotV,alphaG);
335
+ #else
336
+ var smithVisibility: f32=smithVisibility_TrowbridgeReitzGGXFast(info.NdotL,info.NdotV,alphaG);
337
+ #endif
338
+ var specTerm: vec3f=modifiedFresnel*distribution*smithVisibility;return specTerm*info.attenuation*info.NdotL*lightColor;}
339
+ #if defined(AREALIGHTUSED) && defined(AREALIGHTSUPPORTED)
340
+ fn computeAreaSpecularLighting(info: preLightingInfo,specularColor: vec3f,reflectance0: vec3f,reflectance90: vec3f)->vec3f {var fresnel:vec3f =reflectance0*specularColor*info.areaLightFresnel.x+( vec3f( 1.0 )-specularColor )*info.areaLightFresnel.y*reflectance90;return specularColor*fresnel*info.areaLightSpecular;}
341
+ #endif
342
+ #endif
343
+ #ifdef FUZZ
344
+ fn evalFuzz(L: vec3f,NdotL: f32,NdotV: f32,T: vec3f,B: vec3f,ltcLut: vec3f)->f32
345
+ {if (NdotL<=0.0f || NdotV<=0.0f) {return 0.0f;}
346
+ let M=mat3x3f(
347
+ vec3f(ltcLut.r,0.0f,0.0f),
348
+ vec3f(ltcLut.g,1.0f,0.0f),
349
+ vec3f(0.0f,0.0f,1.0f)
350
+ );let Llocal: vec3f=vec3f(dot(L,T),dot(L,B),NdotL);let Lwarp: vec3f=normalize(M*Llocal);let cosThetaWarp: f32=max(Lwarp.z,0.0f);return cosThetaWarp*NdotL;}
351
+ #endif
352
+ #if defined(ANISOTROPIC) && defined(ANISOTROPIC_OPENPBR)
353
+ fn computeAnisotropicSpecularLighting(info: preLightingInfo,V: vec3f,N: vec3f,T: vec3f,B: vec3f,anisotropy: f32,geometricRoughnessFactor: f32,lightColor: vec3f)->vec3f {var NdotH: f32=saturateEps(dot(N,info.H));var TdotH: f32=dot(T,info.H);var BdotH: f32=dot(B,info.H);var TdotV: f32=dot(T,V);var BdotV: f32=dot(B,V);var TdotL: f32=dot(T,info.L);var BdotL: f32=dot(B,info.L);var alphaG: f32=convertRoughnessToAverageSlope(info.roughness);var alphaTB: vec2f=getAnisotropicRoughness(alphaG,anisotropy);var distribution: f32=normalDistributionFunction_BurleyGGX_Anisotropic(NdotH,TdotH,BdotH,alphaTB);var smithVisibility: f32=smithVisibility_GGXCorrelated_Anisotropic(info.NdotL,info.NdotV,TdotV,BdotV,TdotL,BdotL,alphaTB);var specTerm: vec3f=vec3f(distribution*smithVisibility);return specTerm*info.attenuation*info.NdotL*lightColor;}
354
+ #elif defined(ANISOTROPIC)
355
+ fn computeAnisotropicSpecularLighting(info: preLightingInfo,V: vec3f,N: vec3f,T: vec3f,B: vec3f,anisotropy: f32,reflectance0: vec3f,reflectance90: vec3f,geometricRoughnessFactor: f32,lightColor: vec3f)->vec3f {var NdotH: f32=saturateEps(dot(N,info.H));var TdotH: f32=dot(T,info.H);var BdotH: f32=dot(B,info.H);var TdotV: f32=dot(T,V);var BdotV: f32=dot(B,V);var TdotL: f32=dot(T,info.L);var BdotL: f32=dot(B,info.L);var alphaG: f32=convertRoughnessToAverageSlope(info.roughness);var alphaTB: vec2f=getAnisotropicRoughness(alphaG,anisotropy);alphaTB=max(alphaTB,vec2f(geometricRoughnessFactor*geometricRoughnessFactor));var fresnel: vec3f=fresnelSchlickGGXVec3(info.VdotH,reflectance0,reflectance90);
356
+ #ifdef IRIDESCENCE
357
+ fresnel=mix(fresnel,reflectance0,info.iridescenceIntensity);
358
+ #endif
359
+ var distribution: f32=normalDistributionFunction_BurleyGGX_Anisotropic(NdotH,TdotH,BdotH,alphaTB);var smithVisibility: f32=smithVisibility_GGXCorrelated_Anisotropic(info.NdotL,info.NdotV,TdotV,BdotV,TdotL,BdotL,alphaTB);var specTerm: vec3f=fresnel*distribution*smithVisibility;return specTerm*info.attenuation*info.NdotL*lightColor;}
360
+ #endif
361
+ #ifdef CLEARCOAT
362
+ fn computeClearCoatLighting(info: preLightingInfo,Ncc: vec3f,geometricRoughnessFactor: f32,clearCoatIntensity: f32,lightColor: vec3f)->vec4f {var NccdotL: f32=saturateEps(dot(Ncc,info.L));var NccdotH: f32=saturateEps(dot(Ncc,info.H));var clearCoatRoughness: f32=max(info.roughness,geometricRoughnessFactor);var alphaG: f32=convertRoughnessToAverageSlope(clearCoatRoughness);var fresnel: f32=fresnelSchlickGGX(info.VdotH,uniforms.vClearCoatRefractionParams.x,CLEARCOATREFLECTANCE90);fresnel*=clearCoatIntensity;var distribution: f32=normalDistributionFunction_TrowbridgeReitzGGX(NccdotH,alphaG);var kelemenVisibility: f32=visibility_Kelemen(info.VdotH);var clearCoatTerm: f32=fresnel*distribution*kelemenVisibility;return vec4f(
363
+ clearCoatTerm*info.attenuation*NccdotL*lightColor,
364
+ 1.0-fresnel
365
+ );}
366
+ fn computeClearCoatLightingAbsorption(NdotVRefract: f32,L: vec3f,Ncc: vec3f,clearCoatColor: vec3f,clearCoatThickness: f32,clearCoatIntensity: f32)->vec3f {var LRefract: vec3f=-refract(L,Ncc,uniforms.vClearCoatRefractionParams.y);var NdotLRefract: f32=saturateEps(dot(Ncc,LRefract));var absorption: vec3f=computeClearCoatAbsorption(NdotVRefract,NdotLRefract,clearCoatColor,clearCoatThickness,clearCoatIntensity);return absorption;}
367
+ #endif
368
+ #ifdef SHEEN
369
+ fn computeSheenLighting(info: preLightingInfo,N: vec3f,reflectance0: vec3f,reflectance90: vec3f,geometricRoughnessFactor: f32,lightColor: vec3f)->vec3f {var NdotH: f32=saturateEps(dot(N,info.H));var roughness: f32=max(info.roughness,geometricRoughnessFactor);var alphaG: f32=convertRoughnessToAverageSlope(roughness);var fresnel: f32=1.;var distribution: f32=normalDistributionFunction_CharlieSheen(NdotH,alphaG);/*#ifdef SHEEN_SOFTER
370
+ var visibility: f32=visibility_CharlieSheen(info.NdotL,info.NdotV,alphaG);
371
+ #else */
372
+ var visibility: f32=visibility_Ashikhmin(info.NdotL,info.NdotV);/* #endif */
373
+ var sheenTerm: f32=fresnel*distribution*visibility;return sheenTerm*info.attenuation*info.NdotL*lightColor;}
374
+ #endif
375
+ #if defined(CLUSTLIGHT_BATCH) && CLUSTLIGHT_BATCH>0
376
+ #include<clusteredLightingFunctions>
377
+ fn computeClusteredLighting(
378
+ lightDataTexture: texture_2d<f32>,
379
+ tileMaskBuffer: ptr<storage,array<u32>>,
380
+ lightData: vec4f,
381
+ sliceRange: vec2u,
382
+ V: vec3f,
383
+ N: vec3f,
384
+ posW: vec3f,
385
+ surfaceAlbedo: vec3f,
386
+ reflectivityOut: reflectivityOutParams,
387
+ #ifdef IRIDESCENCE
388
+ iridescenceIntensity: f32,
389
+ #endif
390
+ #ifdef SS_TRANSLUCENCY
391
+ subSurfaceOut: subSurfaceOutParams,
392
+ #endif
393
+ #ifdef SPECULARTERM
394
+ AARoughnessFactor: f32,
395
+ #endif
396
+ #ifdef ANISOTROPIC
397
+ anisotropicOut: anisotropicOutParams,
398
+ #endif
399
+ #ifdef SHEEN
400
+ sheenOut: sheenOutParams,
401
+ #endif
402
+ #ifdef CLEARCOAT
403
+ clearcoatOut: clearcoatOutParams,
404
+ #endif
405
+ )->lightingInfo {let NdotV=absEps(dot(N,V));
406
+ #include<pbrBlockReflectance0>
407
+ #ifdef CLEARCOAT
408
+ specularEnvironmentR0=clearcoatOut.specularEnvironmentR0;
409
+ #endif
410
+ var result: lightingInfo;let tilePosition=vec2u(fragmentInputs.position.xy*lightData.xy);let maskResolution=vec2u(lightData.zw);var tileIndex=(tilePosition.x*maskResolution.x+tilePosition.y)*maskResolution.y;let batchRange=sliceRange/CLUSTLIGHT_BATCH;var batchOffset=batchRange.x*CLUSTLIGHT_BATCH;tileIndex+=batchRange.x;for (var i=batchRange.x; i<=batchRange.y; i+=1) {var mask=tileMaskBuffer[tileIndex];tileIndex+=1;let maskOffset=max(sliceRange.x,batchOffset)-batchOffset;
411
+ let maskWidth=min(sliceRange.y-batchOffset+1,CLUSTLIGHT_BATCH);mask=extractBits(mask,maskOffset,maskWidth);while mask != 0 {let trailing=firstTrailingBit(mask);mask ^= 1u<<trailing;let light=getClusteredLight(lightDataTexture,batchOffset+maskOffset+trailing);var preInfo=computePointAndSpotPreLightingInfo(light.vLightData,V,N,posW);preInfo.NdotV=NdotV;preInfo.attenuation=computeDistanceLightFalloff(preInfo.lightOffset,preInfo.lightDistanceSquared,light.vLightFalloff.x,light.vLightFalloff.y);if light.vLightDirection.w>=0.0 {preInfo.attenuation*=computeDirectionalLightFalloff(light.vLightDirection.xyz,preInfo.L,light.vLightDirection.w,light.vLightData.w,light.vLightFalloff.z,light.vLightFalloff.w);}
412
+ preInfo.roughness=adjustRoughnessFromLightProperties(reflectivityOut.roughness,light.vLightSpecular.a,preInfo.lightDistance);preInfo.diffuseRoughness=reflectivityOut.diffuseRoughness;preInfo.surfaceAlbedo=surfaceAlbedo;
413
+ #ifdef IRIDESCENCE
414
+ preInfo.iridescenceIntensity=iridescenceIntensity;
415
+ #endif
416
+ var info: lightingInfo;
417
+ #ifdef SS_TRANSLUCENCY
418
+ #ifdef SS_TRANSLUCENCY_LEGACY
419
+ info.diffuse=computeDiffuseTransmittedLighting(preInfo,light.vLightDiffuse.rgb,subSurfaceOut.transmittance);info.diffuseTransmission=vec3(0);
420
+ #else
421
+ info.diffuse=computeDiffuseLighting(preInfo,light.vLightDiffuse.rgb)*(1.0-subSurfaceOut.translucencyIntensity);info.diffuseTransmission=computeDiffuseTransmittedLighting(preInfo,light.vLightDiffuse.rgb,subSurfaceOut.transmittance);
422
+ #endif
423
+ #else
424
+ info.diffuse=computeDiffuseLighting(preInfo,light.vLightDiffuse.rgb);
425
+ #endif
426
+ #ifdef SPECULARTERM
427
+ #if CONDUCTOR_SPECULAR_MODEL==CONDUCTOR_SPECULAR_MODEL_OPENPBR
428
+ let metalFresnel=reflectivityOut.specularWeight*getF82Specular(preInfo.VdotH,specularEnvironmentR0,reflectivityOut.colorReflectanceF90,reflectivityOut.roughness);let dielectricFresnel=fresnelSchlickGGXVec3(preInfo.VdotH,reflectivityOut.dielectricColorF0,reflectivityOut.colorReflectanceF90);let coloredFresnel=mix(dielectricFresnel,metalFresnel,reflectivityOut.metallic);
429
+ #else
430
+ let coloredFresnel=fresnelSchlickGGXVec3(preInfo.VdotH,specularEnvironmentR0,reflectivityOut.colorReflectanceF90);
431
+ #endif
432
+ #ifndef LEGACY_SPECULAR_ENERGY_CONSERVATION
433
+ let NdotH=dot(N,preInfo.H);let fresnel=fresnelSchlickGGXVec3(NdotH,vec3(reflectanceF0),specularEnvironmentR90);info.diffuse*=(vec3(1.0)-fresnel);
434
+ #endif
435
+ #ifdef ANISOTROPIC
436
+ info.specular=computeAnisotropicSpecularLighting(preInfo,V,N,anisotropicOut.anisotropicTangent,anisotropicOut.anisotropicBitangent,anisotropicOut.anisotropy,specularEnvironmentR0,specularEnvironmentR90,AARoughnessFactor,light.vLightDiffuse.rgb);
437
+ #else
438
+ info.specular=computeSpecularLighting(preInfo,N,specularEnvironmentR0,coloredFresnel,AARoughnessFactor,light.vLightDiffuse.rgb);
439
+ #endif
440
+ #endif
441
+ #ifdef SHEEN
442
+ #ifdef SHEEN_LINKWITHALBEDO
443
+ preInfo.roughness=sheenOut.sheenIntensity;
444
+ #else
445
+ preInfo.roughness=adjustRoughnessFromLightProperties(sheenOut.sheenRoughness,light.vLightSpecular.a,preInfo.lightDistance);
446
+ #endif
447
+ info.sheen=computeSheenLighting(preInfo,normalW,sheenOut.sheenColor,specularEnvironmentR90,AARoughnessFactor,light.vLightDiffuse.rgb);
448
+ #endif
449
+ #ifdef CLEARCOAT
450
+ preInfo.roughness=adjustRoughnessFromLightProperties(clearcoatOut.clearCoatRoughness,light.vLightSpecular.a,preInfo.lightDistance);info.clearCoat=computeClearCoatLighting(preInfo,clearcoatOut.clearCoatNormalW,clearcoatOut.clearCoatAARoughnessFactors.x,clearcoatOut.clearCoatIntensity,light.vLightDiffuse.rgb);
451
+ #ifdef CLEARCOAT_TINT
452
+ let absorption=computeClearCoatLightingAbsorption(clearcoatOut.clearCoatNdotVRefract,preInfo.L,clearcoatOut.clearCoatNormalW,clearcoatOut.clearCoatColor,clearcoatOut.clearCoatThickness,clearcoatOut.clearCoatIntensity);info.diffuse*=absorption;
453
+ #ifdef SS_TRANSLUCENCY
454
+ info.diffuseTransmission*=absorption;
455
+ #endif
456
+ #ifdef SPECULARTERM
457
+ info.specular*=absorption;
458
+ #endif
459
+ #endif
460
+ info.diffuse*=info.clearCoat.w;
461
+ #ifdef SS_TRANSLUCENCY
462
+ info.diffuseTransmission*=info.clearCoat.w;
463
+ #endif
464
+ #ifdef SPECULARTERM
465
+ info.specular*=info.clearCoat.w;
466
+ #endif
467
+ #ifdef SHEEN
468
+ info.sheen*=info.clearCoat.w;
469
+ #endif
470
+ #endif
471
+ result.diffuse+=info.diffuse;
472
+ #ifdef SS_TRANSLUCENCY
473
+ result.diffuseTransmission+=info.diffuseTransmission;
474
+ #endif
475
+ #ifdef SPECULARTERM
476
+ result.specular+=info.specular;
477
+ #endif
478
+ #ifdef CLEARCOAT
479
+ result.clearCoat+=info.clearCoat;
480
+ #endif
481
+ #ifdef SHEEN
482
+ result.sheen+=info.sheen;
483
+ #endif
484
+ }
485
+ batchOffset+=CLUSTLIGHT_BATCH;}
486
+ return result;}
487
+ #endif
488
+ `;e.IncludesShadersStoreWGSL[c]||(e.IncludesShadersStoreWGSL[c]=D);const x={name:c,shader:D},s="pbrBlockNormalGeometric",A=`var viewDirectionW: vec3f=normalize(scene.vEyePosition.xyz-input.vPositionW);
489
+ #ifdef NORMAL
490
+ var normalW: vec3f=normalize(input.vNormalW);
491
+ #else
492
+ var normalW: vec3f=normalize(cross(dpdx(input.vPositionW),dpdy(input.vPositionW)))*scene.vEyePosition.w;
493
+ #endif
494
+ var geometricNormalW: vec3f=normalW;
495
+ #if defined(TWOSIDEDLIGHTING) && defined(NORMAL)
496
+ geometricNormalW=select(-geometricNormalW,geometricNormalW,fragmentInputs.frontFacing);
497
+ #endif
498
+ `;e.IncludesShadersStoreWGSL[s]||(e.IncludesShadersStoreWGSL[s]=A);const P={name:s,shader:A},d="pbrBlockImageProcessing",T=`#if defined(IMAGEPROCESSINGPOSTPROCESS) || defined(SS_SCATTERING)
499
+ #if !defined(SKIPFINALCOLORCLAMP)
500
+ finalColor=vec4f(clamp(finalColor.rgb,vec3f(0.),vec3f(30.0)),finalColor.a);
501
+ #endif
502
+ #else
503
+ finalColor=applyImageProcessing(finalColor);
504
+ #endif
505
+ finalColor=vec4f(finalColor.rgb,finalColor.a*mesh.visibility);
506
+ #ifdef PREMULTIPLYALPHA
507
+ finalColor=vec4f(finalColor.rgb*finalColor.a,finalColor.a);;
508
+ #endif
509
+ `;e.IncludesShadersStoreWGSL[d]||(e.IncludesShadersStoreWGSL[d]=T);const V={name:d,shader:T},u="pbrDebug",N=`#if DEBUGMODE>0
510
+ if (input.vClipSpacePosition.x/input.vClipSpacePosition.w>=uniforms.vDebugMode.x) {var color: vec3f;
511
+ #if DEBUGMODE==1
512
+ color=fragmentInputs.vPositionW.rgb;
513
+ #define DEBUGMODE_NORMALIZE
514
+ #elif DEBUGMODE==2 && defined(NORMAL)
515
+ color=fragmentInputs.vNormalW.rgb;
516
+ #define DEBUGMODE_NORMALIZE
517
+ #elif DEBUGMODE==3 && defined(BUMP) || DEBUGMODE==3 && defined(PARALLAX) || DEBUGMODE==3 && defined(ANISOTROPIC)
518
+ color=TBN[0];
519
+ #define DEBUGMODE_NORMALIZE
520
+ #elif DEBUGMODE==4 && defined(BUMP) || DEBUGMODE==4 && defined(PARALLAX) || DEBUGMODE==4 && defined(ANISOTROPIC)
521
+ color=TBN[1];
522
+ #define DEBUGMODE_NORMALIZE
523
+ #elif DEBUGMODE==5
524
+ color=normalW;
525
+ #define DEBUGMODE_NORMALIZE
526
+ #elif DEBUGMODE==6 && defined(MAINUV1)
527
+ color= vec3f(input.vMainUV1,0.0);
528
+ #elif DEBUGMODE==7 && defined(MAINUV2)
529
+ color= vec3f(input.vMainUV2,0.0);
530
+ #elif DEBUGMODE==8 && defined(CLEARCOAT) && defined(CLEARCOAT_BUMP)
531
+ color=clearcoatOut.TBNClearCoat[0];
532
+ #define DEBUGMODE_NORMALIZE
533
+ #elif DEBUGMODE==9 && defined(CLEARCOAT) && defined(CLEARCOAT_BUMP)
534
+ color=clearcoatOut.TBNClearCoat[1];
535
+ #define DEBUGMODE_NORMALIZE
536
+ #elif DEBUGMODE==10 && defined(CLEARCOAT)
537
+ color=clearcoatOut.clearCoatNormalW;
538
+ #define DEBUGMODE_NORMALIZE
539
+ #elif DEBUGMODE==11 && defined(ANISOTROPIC)
540
+ color=anisotropicOut.anisotropicNormal;
541
+ #define DEBUGMODE_NORMALIZE
542
+ #elif DEBUGMODE==12 && defined(ANISOTROPIC)
543
+ color=anisotropicOut.anisotropicTangent;
544
+ #define DEBUGMODE_NORMALIZE
545
+ #elif DEBUGMODE==13 && defined(ANISOTROPIC)
546
+ color=anisotropicOut.anisotropicBitangent;
547
+ #define DEBUGMODE_NORMALIZE
548
+ #elif DEBUGMODE==20 && defined(ALBEDO)
549
+ color=albedoTexture.rgb;
550
+ #ifndef GAMMAALBEDO
551
+ #define DEBUGMODE_GAMMA
552
+ #endif
553
+ #elif DEBUGMODE==21 && defined(AMBIENT)
554
+ color=aoOut.ambientOcclusionColorMap.rgb;
555
+ #elif DEBUGMODE==22 && defined(OPACITY)
556
+ color=opacityMap.rgb;
557
+ #elif DEBUGMODE==23 && defined(EMISSIVE)
558
+ color=emissiveColorTex.rgb;
559
+ #ifndef GAMMAEMISSIVE
560
+ #define DEBUGMODE_GAMMA
561
+ #endif
562
+ #elif DEBUGMODE==24 && defined(LIGHTMAP)
563
+ color=lightmapColor;
564
+ #ifndef GAMMALIGHTMAP
565
+ #define DEBUGMODE_GAMMA
566
+ #endif
567
+ #elif DEBUGMODE==25 && defined(REFLECTIVITY) && defined(METALLICWORKFLOW)
568
+ color=reflectivityOut.surfaceMetallicColorMap.rgb;
569
+ #elif DEBUGMODE==26 && defined(REFLECTIVITY) && !defined(METALLICWORKFLOW)
570
+ color=reflectivityOut.surfaceReflectivityColorMap.rgb;
571
+ #define DEBUGMODE_GAMMA
572
+ #elif DEBUGMODE==27 && defined(CLEARCOAT) && defined(CLEARCOAT_TEXTURE)
573
+ color= vec3f(clearcoatOut.clearCoatMapData.rg,0.0);
574
+ #elif DEBUGMODE==28 && defined(CLEARCOAT) && defined(CLEARCOAT_TINT) && defined(CLEARCOAT_TINT_TEXTURE)
575
+ color=clearcoatOut.clearCoatTintMapData.rgb;
576
+ #elif DEBUGMODE==29 && defined(SHEEN) && defined(SHEEN_TEXTURE)
577
+ color=sheenOut.sheenMapData.rgb;
578
+ #elif DEBUGMODE==30 && defined(ANISOTROPIC) && defined(ANISOTROPIC_TEXTURE)
579
+ color=anisotropicOut.anisotropyMapData.rgb;
580
+ #elif DEBUGMODE==31 && defined(SUBSURFACE) && defined(SS_THICKNESSANDMASK_TEXTURE)
581
+ color=subSurfaceOut.thicknessMap.rgb;
582
+ #elif DEBUGMODE==32 && defined(BUMP)
583
+ color=textureSample(bumpSampler,bumpSamplerSampler,fragmentInputs.vBumpUV).rgb;
584
+ #elif DEBUGMODE==40 && defined(SS_REFRACTION)
585
+ color=subSurfaceOut.environmentRefraction.rgb;
586
+ #define DEBUGMODE_GAMMA
587
+ #elif DEBUGMODE==41 && defined(REFLECTION)
588
+ color=reflectionOut.environmentRadiance.rgb;
589
+ #ifndef GAMMAREFLECTION
590
+ #define DEBUGMODE_GAMMA
591
+ #endif
592
+ #elif DEBUGMODE==42 && defined(CLEARCOAT) && defined(REFLECTION)
593
+ color=clearcoatOut.environmentClearCoatRadiance.rgb;
594
+ #define DEBUGMODE_GAMMA
595
+ #elif DEBUGMODE==50
596
+ color=diffuseBase.rgb;
597
+ #define DEBUGMODE_GAMMA
598
+ #elif DEBUGMODE==51 && defined(SPECULARTERM)
599
+ color=specularBase.rgb;
600
+ #define DEBUGMODE_GAMMA
601
+ #elif DEBUGMODE==52 && defined(CLEARCOAT)
602
+ color=clearCoatBase.rgb;
603
+ #define DEBUGMODE_GAMMA
604
+ #elif DEBUGMODE==53 && defined(SHEEN)
605
+ color=sheenBase.rgb;
606
+ #define DEBUGMODE_GAMMA
607
+ #elif DEBUGMODE==54 && defined(REFLECTION)
608
+ color=reflectionOut.environmentIrradiance.rgb;
609
+ #ifndef GAMMAREFLECTION
610
+ #define DEBUGMODE_GAMMA
611
+ #endif
612
+ #elif DEBUGMODE==60
613
+ color=surfaceAlbedo.rgb;
614
+ #define DEBUGMODE_GAMMA
615
+ #elif DEBUGMODE==61
616
+ color=clearcoatOut.specularEnvironmentR0;
617
+ #define DEBUGMODE_GAMMA
618
+ #elif DEBUGMODE==62 && defined(METALLICWORKFLOW)
619
+ color= vec3f(reflectivityOut.metallic);
620
+ #elif DEBUGMODE==71 && defined(METALLICWORKFLOW)
621
+ color=reflectivityOut.metallicF0;
622
+ #elif DEBUGMODE==63
623
+ color= vec3f(roughness);
624
+ #elif DEBUGMODE==64
625
+ color= vec3f(alphaG);
626
+ #elif DEBUGMODE==65
627
+ color= vec3f(NdotV);
628
+ #elif DEBUGMODE==66 && defined(CLEARCOAT) && defined(CLEARCOAT_TINT)
629
+ color=clearcoatOut.clearCoatColor;
630
+ #define DEBUGMODE_GAMMA
631
+ #elif DEBUGMODE==67 && defined(CLEARCOAT)
632
+ color= vec3f(clearcoatOut.clearCoatRoughness);
633
+ #elif DEBUGMODE==68 && defined(CLEARCOAT)
634
+ color= vec3f(clearcoatOut.clearCoatNdotV);
635
+ #elif DEBUGMODE==69 && defined(SUBSURFACE) && defined(SS_TRANSLUCENCY)
636
+ color=subSurfaceOut.transmittance;
637
+ #elif DEBUGMODE==70 && defined(SUBSURFACE) && defined(SS_REFRACTION)
638
+ color=subSurfaceOut.refractionTransmittance;
639
+ #elif DEBUGMODE==72
640
+ color= vec3f(microSurface);
641
+ #elif DEBUGMODE==73
642
+ color=uniforms.vAlbedoColor.rgb;
643
+ #define DEBUGMODE_GAMMA
644
+ #elif DEBUGMODE==74 && !defined(METALLICWORKFLOW)
645
+ color=uniforms.vReflectivityColor.rgb;
646
+ #define DEBUGMODE_GAMMA
647
+ #elif DEBUGMODE==75
648
+ color=uniforms.vEmissiveColor;
649
+ #define DEBUGMODE_GAMMA
650
+ #elif DEBUGMODE==80 && defined(RADIANCEOCCLUSION)
651
+ color= vec3f(seo);
652
+ #elif DEBUGMODE==81 && defined(HORIZONOCCLUSION) && defined(BUMP) && defined(REFLECTIONMAP_3D)
653
+ color= vec3f(eho);
654
+ #elif DEBUGMODE==82 && defined(MS_BRDF_ENERGY_CONSERVATION)
655
+ color= vec3f(energyConservationFactor);
656
+ #elif DEBUGMODE==83 && defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX)
657
+ color=baseSpecularEnvironmentReflectance;
658
+ #define DEBUGMODE_GAMMA
659
+ #elif DEBUGMODE==84 && defined(CLEARCOAT) && defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX)
660
+ color=clearcoatOut.clearCoatEnvironmentReflectance;
661
+ #define DEBUGMODE_GAMMA
662
+ #elif DEBUGMODE==85 && defined(SHEEN) && defined(REFLECTION)
663
+ color=sheenOut.sheenEnvironmentReflectance;
664
+ #define DEBUGMODE_GAMMA
665
+ #elif DEBUGMODE==86 && defined(ALPHABLEND)
666
+ color= vec3f(luminanceOverAlpha);
667
+ #elif DEBUGMODE==87
668
+ color= vec3f(alpha);
669
+ #elif DEBUGMODE==88 && defined(ALBEDO)
670
+ color= vec3f(albedoTexture.a);
671
+ #elif DEBUGMODE==89
672
+ color=aoOut.ambientOcclusionColor;
673
+ #else
674
+ var stripeWidth: f32=30.;var stripePos: f32=abs(floor(input.position.x/stripeWidth));var whichColor: f32=((stripePos)%(2.));var color1: vec3f= vec3f(.6,.2,.2);var color2: vec3f= vec3f(.3,.1,.1);color=mix(color1,color2,whichColor);
675
+ #endif
676
+ color*=uniforms.vDebugMode.y;
677
+ #ifdef DEBUGMODE_NORMALIZE
678
+ color=normalize(color)*0.5+0.5;
679
+ #endif
680
+ #ifdef DEBUGMODE_GAMMA
681
+ color=toGammaSpaceVec3(color);
682
+ #endif
683
+ fragmentOutputs.color=vec4f(color,1.0);
684
+ #ifdef PREPASS
685
+ fragmentOutputs.fragData0=toLinearSpaceVec3(color);
686
+ fragmentOutputs.fragData1=vec4f(0.,0.,0.,0.);
687
+ #endif
688
+ #ifdef DEBUGMODE_FORCERETURN
689
+ return fragmentOutputs;
690
+ #endif
691
+ }
692
+ #endif
693
+ `;e.IncludesShadersStoreWGSL[u]||(e.IncludesShadersStoreWGSL[u]=N);const y={name:u,shader:N};export{_ as a,G as b,B as c,b as d,x as e,P as f,V as g,U as h,F as i,y as j,R as p,M as s};