@onerjs/core 9.0.2 → 9.0.3

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 (473) hide show
  1. package/Buffers/buffer.pure.js +4 -0
  2. package/Buffers/buffer.pure.js.map +1 -1
  3. package/Cameras/camera.pure.d.ts +14 -0
  4. package/Cameras/camera.pure.js +15 -0
  5. package/Cameras/camera.pure.js.map +1 -1
  6. package/Compute/computeShader.pure.d.ts +2 -1
  7. package/Compute/computeShader.pure.js +29 -10
  8. package/Compute/computeShader.pure.js.map +1 -1
  9. package/Culling/ray.core.js +22 -9
  10. package/Culling/ray.core.js.map +1 -1
  11. package/Engines/IDrawContext.d.ts +2 -0
  12. package/Engines/IDrawContext.js.map +1 -1
  13. package/Engines/Native/nativeInterfaces.d.ts +55 -4
  14. package/Engines/Native/nativeInterfaces.js.map +1 -1
  15. package/Engines/Native/nativeRenderTargetWrapper.d.ts +1 -0
  16. package/Engines/Native/nativeRenderTargetWrapper.js +5 -1
  17. package/Engines/Native/nativeRenderTargetWrapper.js.map +1 -1
  18. package/Engines/Processors/shaderCodeInliner.d.ts +2 -0
  19. package/Engines/Processors/shaderCodeInliner.js +251 -6
  20. package/Engines/Processors/shaderCodeInliner.js.map +1 -1
  21. package/Engines/Processors/shaderProcessor.js +10 -1
  22. package/Engines/Processors/shaderProcessor.js.map +1 -1
  23. package/Engines/WebGPU/Extensions/engine.debugging.pure.js +12 -0
  24. package/Engines/WebGPU/Extensions/engine.debugging.pure.js.map +1 -1
  25. package/Engines/WebGPU/Extensions/engine.multiRender.pure.js +0 -1
  26. package/Engines/WebGPU/Extensions/engine.multiRender.pure.js.map +1 -1
  27. package/Engines/WebGPU/Extensions/engine.query.pure.js +5 -0
  28. package/Engines/WebGPU/Extensions/engine.query.pure.js.map +1 -1
  29. package/Engines/WebGPU/webgpuBufferManager.js +7 -0
  30. package/Engines/WebGPU/webgpuBufferManager.js.map +1 -1
  31. package/Engines/WebGPU/webgpuCacheTextureView.d.ts +1 -1
  32. package/Engines/WebGPU/webgpuCacheTextureView.js +20 -8
  33. package/Engines/WebGPU/webgpuCacheTextureView.js.map +1 -1
  34. package/Engines/WebGPU/webgpuDrawContext.d.ts +2 -0
  35. package/Engines/WebGPU/webgpuDrawContext.js +6 -0
  36. package/Engines/WebGPU/webgpuDrawContext.js.map +1 -1
  37. package/Engines/WebGPU/webgpuQuerySet.d.ts +3 -3
  38. package/Engines/WebGPU/webgpuQuerySet.js +23 -9
  39. package/Engines/WebGPU/webgpuQuerySet.js.map +1 -1
  40. package/Engines/WebGPU/webgpuRenderPassCommandStream.d.ts +156 -0
  41. package/Engines/WebGPU/webgpuRenderPassCommandStream.js +323 -0
  42. package/Engines/WebGPU/webgpuRenderPassCommandStream.js.map +1 -0
  43. package/Engines/WebGPU/webgpuTextureManager.d.ts +1 -1
  44. package/Engines/WebGPU/webgpuTextureManager.js +4 -3
  45. package/Engines/WebGPU/webgpuTextureManager.js.map +1 -1
  46. package/Engines/WebGPU/webgpuTimestampQuery.d.ts +3 -1
  47. package/Engines/WebGPU/webgpuTimestampQuery.js +9 -6
  48. package/Engines/WebGPU/webgpuTimestampQuery.js.map +1 -1
  49. package/Engines/abstractEngine.pure.d.ts +2 -0
  50. package/Engines/abstractEngine.pure.js +14 -5
  51. package/Engines/abstractEngine.pure.js.map +1 -1
  52. package/Engines/constants.d.ts +6 -0
  53. package/Engines/constants.js +6 -0
  54. package/Engines/constants.js.map +1 -1
  55. package/Engines/engine.d.ts +198 -24
  56. package/Engines/pure.d.ts +1 -0
  57. package/Engines/pure.js +1 -0
  58. package/Engines/pure.js.map +1 -1
  59. package/Engines/renderCommandBatcher.pure.d.ts +16 -0
  60. package/Engines/renderCommandBatcher.pure.js +24 -0
  61. package/Engines/renderCommandBatcher.pure.js.map +1 -0
  62. package/Engines/thinEngine.functions.js +3 -2
  63. package/Engines/thinEngine.functions.js.map +1 -1
  64. package/Engines/thinEngine.pure.js +18 -2
  65. package/Engines/thinEngine.pure.js.map +1 -1
  66. package/Engines/thinNativeEngine.pure.d.ts +10 -7
  67. package/Engines/thinNativeEngine.pure.js +117 -46
  68. package/Engines/thinNativeEngine.pure.js.map +1 -1
  69. package/Engines/thinWebGPUEngine.d.ts +8 -0
  70. package/Engines/thinWebGPUEngine.js +11 -0
  71. package/Engines/thinWebGPUEngine.js.map +1 -1
  72. package/Engines/webgpuEngine.pure.d.ts +60 -1
  73. package/Engines/webgpuEngine.pure.js +238 -42
  74. package/Engines/webgpuEngine.pure.js.map +1 -1
  75. package/FlowGraph/Blocks/Data/Audio/flowGraphGetSoundVolumeBlock.pure.d.ts +3 -3
  76. package/FlowGraph/Blocks/Data/Audio/flowGraphGetSoundVolumeBlock.pure.js +2 -1
  77. package/FlowGraph/Blocks/Data/Audio/flowGraphGetSoundVolumeBlock.pure.js.map +1 -1
  78. package/FlowGraph/Blocks/Data/Audio/flowGraphIsSoundPlayingBlock.pure.d.ts +3 -3
  79. package/FlowGraph/Blocks/Data/Audio/flowGraphIsSoundPlayingBlock.pure.js +2 -1
  80. package/FlowGraph/Blocks/Data/Audio/flowGraphIsSoundPlayingBlock.pure.js.map +1 -1
  81. package/FlowGraph/Blocks/Event/flowGraphMeshIntersectionEventBlock.d.ts +5 -0
  82. package/FlowGraph/Blocks/Event/flowGraphMeshIntersectionEventBlock.js +8 -0
  83. package/FlowGraph/Blocks/Event/flowGraphMeshIntersectionEventBlock.js.map +1 -0
  84. package/FlowGraph/Blocks/Event/flowGraphMeshIntersectionEventBlock.pure.d.ts +77 -0
  85. package/FlowGraph/Blocks/Event/flowGraphMeshIntersectionEventBlock.pure.js +141 -0
  86. package/FlowGraph/Blocks/Event/flowGraphMeshIntersectionEventBlock.pure.js.map +1 -0
  87. package/FlowGraph/Blocks/Event/flowGraphSoundEndedEventBlock.pure.d.ts +5 -3
  88. package/FlowGraph/Blocks/Event/flowGraphSoundEndedEventBlock.pure.js +38 -7
  89. package/FlowGraph/Blocks/Event/flowGraphSoundEndedEventBlock.pure.js.map +1 -1
  90. package/FlowGraph/Blocks/Event/index.d.ts +1 -0
  91. package/FlowGraph/Blocks/Event/index.js +1 -0
  92. package/FlowGraph/Blocks/Event/index.js.map +1 -1
  93. package/FlowGraph/Blocks/Event/pure.d.ts +1 -0
  94. package/FlowGraph/Blocks/Event/pure.js +1 -0
  95. package/FlowGraph/Blocks/Event/pure.js.map +1 -1
  96. package/FlowGraph/Blocks/Execution/Audio/flowGraphPauseSoundBlock.pure.d.ts +3 -3
  97. package/FlowGraph/Blocks/Execution/Audio/flowGraphPauseSoundBlock.pure.js +2 -1
  98. package/FlowGraph/Blocks/Execution/Audio/flowGraphPauseSoundBlock.pure.js.map +1 -1
  99. package/FlowGraph/Blocks/Execution/Audio/flowGraphPlaySoundBlock.pure.d.ts +3 -3
  100. package/FlowGraph/Blocks/Execution/Audio/flowGraphPlaySoundBlock.pure.js +2 -1
  101. package/FlowGraph/Blocks/Execution/Audio/flowGraphPlaySoundBlock.pure.js.map +1 -1
  102. package/FlowGraph/Blocks/Execution/Audio/flowGraphSetSoundVolumeBlock.pure.d.ts +3 -3
  103. package/FlowGraph/Blocks/Execution/Audio/flowGraphSetSoundVolumeBlock.pure.js +2 -1
  104. package/FlowGraph/Blocks/Execution/Audio/flowGraphSetSoundVolumeBlock.pure.js.map +1 -1
  105. package/FlowGraph/Blocks/Execution/Audio/flowGraphStopSoundBlock.pure.d.ts +3 -3
  106. package/FlowGraph/Blocks/Execution/Audio/flowGraphStopSoundBlock.pure.js +2 -1
  107. package/FlowGraph/Blocks/Execution/Audio/flowGraphStopSoundBlock.pure.js.map +1 -1
  108. package/FlowGraph/Blocks/allBlocks.pure.js +2 -0
  109. package/FlowGraph/Blocks/allBlocks.pure.js.map +1 -1
  110. package/FlowGraph/Blocks/flowGraphBlockFactory.js +2 -0
  111. package/FlowGraph/Blocks/flowGraphBlockFactory.js.map +1 -1
  112. package/FlowGraph/Blocks/flowGraphBlockNames.d.ts +1 -0
  113. package/FlowGraph/Blocks/flowGraphBlockNames.js +1 -0
  114. package/FlowGraph/Blocks/flowGraphBlockNames.js.map +1 -1
  115. package/FlowGraph/flowGraph.d.ts +12 -1
  116. package/FlowGraph/flowGraph.js +38 -0
  117. package/FlowGraph/flowGraph.js.map +1 -1
  118. package/FlowGraph/flowGraphCoordinator.d.ts +44 -0
  119. package/FlowGraph/flowGraphCoordinator.js +141 -0
  120. package/FlowGraph/flowGraphCoordinator.js.map +1 -1
  121. package/FlowGraph/flowGraphDataConnection.pure.js +41 -14
  122. package/FlowGraph/flowGraphDataConnection.pure.js.map +1 -1
  123. package/FlowGraph/flowGraphParser.js +105 -5
  124. package/FlowGraph/flowGraphParser.js.map +1 -1
  125. package/FlowGraph/flowGraphSoundAssets.d.ts +40 -0
  126. package/FlowGraph/flowGraphSoundAssets.js +33 -0
  127. package/FlowGraph/flowGraphSoundAssets.js.map +1 -0
  128. package/FlowGraph/index.d.ts +1 -0
  129. package/FlowGraph/index.js +1 -0
  130. package/FlowGraph/index.js.map +1 -1
  131. package/FlowGraph/pure.d.ts +1 -0
  132. package/FlowGraph/pure.js +1 -0
  133. package/FlowGraph/pure.js.map +1 -1
  134. package/FlowGraph/serialization.d.ts +8 -0
  135. package/FlowGraph/serialization.js +31 -12
  136. package/FlowGraph/serialization.js.map +1 -1
  137. package/FlowGraph/typeDefinitions.d.ts +25 -0
  138. package/FlowGraph/typeDefinitions.js.map +1 -1
  139. package/FrameGraph/Tasks/PostProcesses/taaTask.js +2 -0
  140. package/FrameGraph/Tasks/PostProcesses/taaTask.js.map +1 -1
  141. package/Instrumentation/engineInstrumentation.d.ts +1 -0
  142. package/Instrumentation/engineInstrumentation.js +25 -6
  143. package/Instrumentation/engineInstrumentation.js.map +1 -1
  144. package/Lights/Clustered/clusteredLightContainer.pure.js +2 -0
  145. package/Lights/Clustered/clusteredLightContainer.pure.js.map +1 -1
  146. package/Lights/Shadows/cascadedShadowGenerator.pure.d.ts +36 -1
  147. package/Lights/Shadows/cascadedShadowGenerator.pure.js +202 -27
  148. package/Lights/Shadows/cascadedShadowGenerator.pure.js.map +1 -1
  149. package/Lights/directionalLight.pure.d.ts +24 -10
  150. package/Lights/directionalLight.pure.js +29 -11
  151. package/Lights/directionalLight.pure.js.map +1 -1
  152. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js +4 -4
  153. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js.map +1 -1
  154. package/Materials/Node/Blocks/Dual/lightBlock.pure.js +1 -1
  155. package/Materials/Node/Blocks/Dual/lightBlock.pure.js.map +1 -1
  156. package/Materials/Node/Blocks/Input/inputBlock.pure.js +4 -0
  157. package/Materials/Node/Blocks/Input/inputBlock.pure.js.map +1 -1
  158. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.d.ts +9 -0
  159. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js +23 -3
  160. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js.map +1 -1
  161. package/Materials/PBR/openpbrMaterial.pure.js +1 -1
  162. package/Materials/PBR/openpbrMaterial.pure.js.map +1 -1
  163. package/Materials/PBR/pbrBaseMaterial.pure.d.ts +9 -0
  164. package/Materials/PBR/pbrBaseMaterial.pure.js +60 -1
  165. package/Materials/PBR/pbrBaseMaterial.pure.js.map +1 -1
  166. package/Materials/PBR/pbrBaseSimpleMaterial.d.ts +11 -0
  167. package/Materials/PBR/pbrBaseSimpleMaterial.js +21 -2
  168. package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
  169. package/Materials/PBR/pbrMaterial.pure.d.ts +12 -0
  170. package/Materials/PBR/pbrMaterial.pure.js +23 -3
  171. package/Materials/PBR/pbrMaterial.pure.js.map +1 -1
  172. package/Materials/Textures/Filtering/hdrIrradianceFiltering.d.ts +1 -0
  173. package/Materials/Textures/Filtering/hdrIrradianceFiltering.js +10 -0
  174. package/Materials/Textures/Filtering/hdrIrradianceFiltering.js.map +1 -1
  175. package/Materials/Textures/HTML/htmlInCanvasPolyfill.d.ts +5 -0
  176. package/Materials/Textures/HTML/htmlInCanvasPolyfill.js +7 -0
  177. package/Materials/Textures/HTML/htmlInCanvasPolyfill.js.map +1 -1
  178. package/Materials/Textures/HTML/htmlInteractionManager.d.ts +9 -3
  179. package/Materials/Textures/HTML/htmlInteractionManager.js +64 -5
  180. package/Materials/Textures/HTML/htmlInteractionManager.js.map +1 -1
  181. package/Materials/Textures/HTML/htmlTexture.d.ts +11 -11
  182. package/Materials/Textures/HTML/htmlTexture.js +106 -65
  183. package/Materials/Textures/HTML/htmlTexture.js.map +1 -1
  184. package/Materials/Textures/Loaders/internalTextureLoader.d.ts +2 -1
  185. package/Materials/Textures/Loaders/internalTextureLoader.js.map +1 -1
  186. package/Materials/Textures/Loaders/ktxTextureLoader.d.ts +2 -1
  187. package/Materials/Textures/Loaders/ktxTextureLoader.js +4 -50
  188. package/Materials/Textures/Loaders/ktxTextureLoader.js.map +1 -1
  189. package/Materials/Textures/Procedurals/proceduralTexture.pure.js +10 -0
  190. package/Materials/Textures/Procedurals/proceduralTexture.pure.js.map +1 -1
  191. package/Materials/Textures/dynamicTexture.pure.js +6 -0
  192. package/Materials/Textures/dynamicTexture.pure.js.map +1 -1
  193. package/Materials/Textures/ktx2encoderTypes.d.ts +51 -0
  194. package/Materials/Textures/ktx2encoderTypes.js +2 -0
  195. package/Materials/Textures/ktx2encoderTypes.js.map +1 -0
  196. package/Materials/Textures/renderTargetTexture.pure.js +10 -2
  197. package/Materials/Textures/renderTargetTexture.pure.js.map +1 -1
  198. package/Materials/Textures/textureMerger.d.ts +11 -0
  199. package/Materials/Textures/textureMerger.js +34 -19
  200. package/Materials/Textures/textureMerger.js.map +1 -1
  201. package/Materials/Textures/textureProcessor.d.ts +145 -0
  202. package/Materials/Textures/textureProcessor.js +445 -45
  203. package/Materials/Textures/textureProcessor.js.map +1 -1
  204. package/Materials/Textures/textureSampling.functions.d.ts +41 -0
  205. package/Materials/Textures/textureSampling.functions.js +82 -0
  206. package/Materials/Textures/textureSampling.functions.js.map +1 -0
  207. package/Materials/drawWrapper.d.ts +8 -0
  208. package/Materials/drawWrapper.js +19 -0
  209. package/Materials/drawWrapper.js.map +1 -1
  210. package/Materials/effect.pure.d.ts +6 -0
  211. package/Materials/effect.pure.js +28 -6
  212. package/Materials/effect.pure.js.map +1 -1
  213. package/Materials/effect.webgl.functions.pure.js +1 -1
  214. package/Materials/effect.webgl.functions.pure.js.map +1 -1
  215. package/Materials/material.pure.d.ts +5 -0
  216. package/Materials/material.pure.js +9 -2
  217. package/Materials/material.pure.js.map +1 -1
  218. package/Materials/materialFlags.d.ts +6 -0
  219. package/Materials/materialFlags.js +14 -0
  220. package/Materials/materialFlags.js.map +1 -1
  221. package/Materials/materialHelper.functions.d.ts +2 -1
  222. package/Materials/materialHelper.functions.js +36 -2
  223. package/Materials/materialHelper.functions.js.map +1 -1
  224. package/Materials/materialHelper.geometryrendering.js +19 -16
  225. package/Materials/materialHelper.geometryrendering.js.map +1 -1
  226. package/Materials/materialPluginManager.pure.js +12 -8
  227. package/Materials/materialPluginManager.pure.js.map +1 -1
  228. package/Materials/prePassConfiguration.js +19 -16
  229. package/Materials/prePassConfiguration.js.map +1 -1
  230. package/Materials/shaderMaterial.pure.js +19 -6
  231. package/Materials/shaderMaterial.pure.js.map +1 -1
  232. package/Materials/shadowDepthWrapper.d.ts +6 -0
  233. package/Materials/shadowDepthWrapper.js +17 -0
  234. package/Materials/shadowDepthWrapper.js.map +1 -1
  235. package/Meshes/Compression/dracoCodec.d.ts +14 -0
  236. package/Meshes/Compression/dracoCodec.js +22 -0
  237. package/Meshes/Compression/dracoCodec.js.map +1 -1
  238. package/Meshes/Compression/dracoDecoder.d.ts +1 -0
  239. package/Meshes/Compression/dracoDecoder.js +27 -0
  240. package/Meshes/Compression/dracoDecoder.js.map +1 -1
  241. package/Meshes/Compression/dracoEncoder.d.ts +1 -0
  242. package/Meshes/Compression/dracoEncoder.js +8 -0
  243. package/Meshes/Compression/dracoEncoder.js.map +1 -1
  244. package/Meshes/Compression/meshoptCompression.d.ts +1 -0
  245. package/Meshes/Compression/meshoptCompression.js +9 -0
  246. package/Meshes/Compression/meshoptCompression.js.map +1 -1
  247. package/Meshes/GaussianSplatting/gaussianSplattingGpuSorter.d.ts +415 -0
  248. package/Meshes/GaussianSplatting/gaussianSplattingGpuSorter.js +912 -0
  249. package/Meshes/GaussianSplatting/gaussianSplattingGpuSorter.js.map +1 -0
  250. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.d.ts +3 -0
  251. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +40 -9
  252. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
  253. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +112 -8
  254. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +696 -74
  255. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
  256. package/Meshes/abstractMesh.pure.js +12 -4
  257. package/Meshes/abstractMesh.pure.js.map +1 -1
  258. package/Meshes/geometry.d.ts +5 -0
  259. package/Meshes/geometry.js +25 -0
  260. package/Meshes/geometry.js.map +1 -1
  261. package/Meshes/index.d.ts +1 -0
  262. package/Meshes/index.js +1 -0
  263. package/Meshes/index.js.map +1 -1
  264. package/Meshes/mesh.pure.d.ts +7 -0
  265. package/Meshes/mesh.pure.js +18 -13
  266. package/Meshes/mesh.pure.js.map +1 -1
  267. package/Meshes/pure.d.ts +1 -0
  268. package/Meshes/pure.js +1 -0
  269. package/Meshes/pure.js.map +1 -1
  270. package/Meshes/subMesh.pure.d.ts +3 -0
  271. package/Meshes/subMesh.pure.js +26 -0
  272. package/Meshes/subMesh.pure.js.map +1 -1
  273. package/Meshes/thinInstanceMesh.pure.js +5 -3
  274. package/Meshes/thinInstanceMesh.pure.js.map +1 -1
  275. package/Misc/index.d.ts +1 -0
  276. package/Misc/index.js +1 -0
  277. package/Misc/index.js.map +1 -1
  278. package/Misc/khronosTextureContainer2.d.ts +3 -2
  279. package/Misc/khronosTextureContainer2.js +24 -6
  280. package/Misc/khronosTextureContainer2.js.map +1 -1
  281. package/Misc/khronosTextureContainer2Encoder.d.ts +166 -0
  282. package/Misc/khronosTextureContainer2Encoder.js +556 -0
  283. package/Misc/khronosTextureContainer2Encoder.js.map +1 -0
  284. package/Misc/khronosTextureContainer2EncoderWorker.d.ts +61 -0
  285. package/Misc/khronosTextureContainer2EncoderWorker.js +55 -0
  286. package/Misc/khronosTextureContainer2EncoderWorker.js.map +1 -0
  287. package/Misc/pure.d.ts +1 -0
  288. package/Misc/pure.js +1 -0
  289. package/Misc/pure.js.map +1 -1
  290. package/Misc/textureFormat.functions.d.ts +6 -0
  291. package/Misc/textureFormat.functions.js +54 -0
  292. package/Misc/textureFormat.functions.js.map +1 -0
  293. package/Misc/textureTools.d.ts +6 -2
  294. package/Misc/textureTools.js +100 -42
  295. package/Misc/textureTools.js.map +1 -1
  296. package/Misc/tools.pure.js +1 -1
  297. package/Misc/tools.pure.js.map +1 -1
  298. package/Particles/Node/Blocks/systemBlock.pure.d.ts +1 -1
  299. package/Particles/Node/Blocks/systemBlock.pure.js +6 -3
  300. package/Particles/Node/Blocks/systemBlock.pure.js.map +1 -1
  301. package/Particles/computeShaderParticleSystem.pure.js +5 -0
  302. package/Particles/computeShaderParticleSystem.pure.js.map +1 -1
  303. package/Particles/gpuParticleSystem.pure.d.ts +2 -0
  304. package/Particles/gpuParticleSystem.pure.js +25 -1
  305. package/Particles/gpuParticleSystem.pure.js.map +1 -1
  306. package/Particles/solidParticle.d.ts +5 -0
  307. package/Particles/solidParticle.js +5 -0
  308. package/Particles/solidParticle.js.map +1 -1
  309. package/Particles/solidParticleSystem.d.ts +10 -0
  310. package/Particles/solidParticleSystem.js +72 -13
  311. package/Particles/solidParticleSystem.js.map +1 -1
  312. package/Particles/thinParticleSystem.pure.js +4 -0
  313. package/Particles/thinParticleSystem.pure.js.map +1 -1
  314. package/PostProcesses/RenderPipeline/Pipelines/taaMaterialManager.pure.d.ts +27 -6
  315. package/PostProcesses/RenderPipeline/Pipelines/taaMaterialManager.pure.js +60 -5
  316. package/PostProcesses/RenderPipeline/Pipelines/taaMaterialManager.pure.js.map +1 -1
  317. package/PostProcesses/thinTAAPostProcess.d.ts +1 -0
  318. package/PostProcesses/thinTAAPostProcess.js +17 -1
  319. package/PostProcesses/thinTAAPostProcess.js.map +1 -1
  320. package/PostProcesses/volumetricLightScatteringPostProcess.pure.d.ts +2 -1
  321. package/PostProcesses/volumetricLightScatteringPostProcess.pure.js +6 -5
  322. package/PostProcesses/volumetricLightScatteringPostProcess.pure.js.map +1 -1
  323. package/Rendering/boundingBoxRenderer.pure.js +2 -3
  324. package/Rendering/boundingBoxRenderer.pure.js.map +1 -1
  325. package/Rendering/geometryBufferRenderer.pure.js +8 -2
  326. package/Rendering/geometryBufferRenderer.pure.js.map +1 -1
  327. package/Rendering/objectRenderer.d.ts +1 -0
  328. package/Rendering/objectRenderer.js +14 -0
  329. package/Rendering/objectRenderer.js.map +1 -1
  330. package/Shaders/ShadersInclude/bumpFragmentMainFunctions.js +2 -2
  331. package/Shaders/ShadersInclude/bumpFragmentMainFunctions.js.map +1 -1
  332. package/Shaders/ShadersInclude/bumpVertex.js +1 -1
  333. package/Shaders/ShadersInclude/bumpVertex.js.map +1 -1
  334. package/Shaders/ShadersInclude/bumpVertexDeclaration.js +1 -1
  335. package/Shaders/ShadersInclude/bumpVertexDeclaration.js.map +1 -1
  336. package/Shaders/ShadersInclude/hdrFilteringFunctions.js +5 -1
  337. package/Shaders/ShadersInclude/hdrFilteringFunctions.js.map +1 -1
  338. package/Shaders/ShadersInclude/helperFunctions.js +2 -2
  339. package/Shaders/ShadersInclude/helperFunctions.js.map +1 -1
  340. package/Shaders/ShadersInclude/openpbrBackgroundTransmission.js +1 -1
  341. package/Shaders/ShadersInclude/openpbrBackgroundTransmission.js.map +1 -1
  342. package/Shaders/ShadersInclude/openpbrVertexDeclaration.js +6 -0
  343. package/Shaders/ShadersInclude/openpbrVertexDeclaration.js.map +1 -1
  344. package/Shaders/ShadersInclude/pbrBlockFinalLitComponents.js +11 -1
  345. package/Shaders/ShadersInclude/pbrBlockFinalLitComponents.js.map +1 -1
  346. package/Shaders/ShadersInclude/pbrBlockNormalFinal.js +9 -0
  347. package/Shaders/ShadersInclude/pbrBlockNormalFinal.js.map +1 -1
  348. package/Shaders/ShadersInclude/pbrBlockReflectance.js +1 -1
  349. package/Shaders/ShadersInclude/pbrBlockReflectance.js.map +1 -1
  350. package/Shaders/ShadersInclude/pbrClusteredLightingFunctions.js +1 -1
  351. package/Shaders/ShadersInclude/pbrClusteredLightingFunctions.js.map +1 -1
  352. package/Shaders/ShadersInclude/pbrFragmentDeclaration.js +7 -1
  353. package/Shaders/ShadersInclude/pbrFragmentDeclaration.js.map +1 -1
  354. package/Shaders/ShadersInclude/pbrFragmentSamplersDeclaration.js +1 -0
  355. package/Shaders/ShadersInclude/pbrFragmentSamplersDeclaration.js.map +1 -1
  356. package/Shaders/ShadersInclude/pbrIBLFunctions.js +12 -0
  357. package/Shaders/ShadersInclude/pbrIBLFunctions.js.map +1 -1
  358. package/Shaders/ShadersInclude/pbrUboDeclaration.js +1 -1
  359. package/Shaders/ShadersInclude/pbrUboDeclaration.js.map +1 -1
  360. package/Shaders/ShadersInclude/pbrVertexDeclaration.js +3 -0
  361. package/Shaders/ShadersInclude/pbrVertexDeclaration.js.map +1 -1
  362. package/Shaders/geometry.vertex.js +6 -6
  363. package/Shaders/geometry.vertex.js.map +1 -1
  364. package/Shaders/gpuUpdateParticles.vertex.js +1 -1
  365. package/Shaders/gpuUpdateParticles.vertex.js.map +1 -1
  366. package/Shaders/lod.fragment.js +15 -2
  367. package/Shaders/lod.fragment.js.map +1 -1
  368. package/Shaders/lod3D.fragment.js +15 -2
  369. package/Shaders/lod3D.fragment.js.map +1 -1
  370. package/Shaders/lodCube.fragment.js +15 -2
  371. package/Shaders/lodCube.fragment.js.map +1 -1
  372. package/Shaders/openpbr.vertex.js +2 -0
  373. package/Shaders/openpbr.vertex.js.map +1 -1
  374. package/Shaders/pbr.fragment.js +12 -1
  375. package/Shaders/pbr.fragment.js.map +1 -1
  376. package/Shaders/pbr.vertex.js +2 -0
  377. package/Shaders/pbr.vertex.js.map +1 -1
  378. package/Shaders/textureMerger.fragment.js +28 -0
  379. package/Shaders/textureMerger.fragment.js.map +1 -1
  380. package/Shaders/textureProcessor.fragment.js +26 -4
  381. package/Shaders/textureProcessor.fragment.js.map +1 -1
  382. package/Shaders/volumetricLightScattering.fragment.js +1 -1
  383. package/Shaders/volumetricLightScattering.fragment.js.map +1 -1
  384. package/ShadersWGSL/ShadersInclude/bumpFragmentMainFunctions.js +2 -2
  385. package/ShadersWGSL/ShadersInclude/bumpFragmentMainFunctions.js.map +1 -1
  386. package/ShadersWGSL/ShadersInclude/bumpVertex.js +1 -1
  387. package/ShadersWGSL/ShadersInclude/bumpVertex.js.map +1 -1
  388. package/ShadersWGSL/ShadersInclude/bumpVertexDeclaration.js +1 -1
  389. package/ShadersWGSL/ShadersInclude/bumpVertexDeclaration.js.map +1 -1
  390. package/ShadersWGSL/ShadersInclude/hdrFilteringFunctions.js +1 -1
  391. package/ShadersWGSL/ShadersInclude/hdrFilteringFunctions.js.map +1 -1
  392. package/ShadersWGSL/ShadersInclude/helperFunctions.js +2 -2
  393. package/ShadersWGSL/ShadersInclude/helperFunctions.js.map +1 -1
  394. package/ShadersWGSL/ShadersInclude/lightFragment.js +44 -2
  395. package/ShadersWGSL/ShadersInclude/lightFragment.js.map +1 -1
  396. package/ShadersWGSL/ShadersInclude/lightUboDeclaration.js +17 -3
  397. package/ShadersWGSL/ShadersInclude/lightUboDeclaration.js.map +1 -1
  398. package/ShadersWGSL/ShadersInclude/lightVxUboDeclaration.js +12 -1
  399. package/ShadersWGSL/ShadersInclude/lightVxUboDeclaration.js.map +1 -1
  400. package/ShadersWGSL/ShadersInclude/openpbrBackgroundTransmission.js +1 -1
  401. package/ShadersWGSL/ShadersInclude/openpbrBackgroundTransmission.js.map +1 -1
  402. package/ShadersWGSL/ShadersInclude/pbrBlockFinalLitComponents.js +11 -1
  403. package/ShadersWGSL/ShadersInclude/pbrBlockFinalLitComponents.js.map +1 -1
  404. package/ShadersWGSL/ShadersInclude/pbrBlockNormalFinal.js +9 -0
  405. package/ShadersWGSL/ShadersInclude/pbrBlockNormalFinal.js.map +1 -1
  406. package/ShadersWGSL/ShadersInclude/pbrBlockReflectance.js +1 -1
  407. package/ShadersWGSL/ShadersInclude/pbrBlockReflectance.js.map +1 -1
  408. package/ShadersWGSL/ShadersInclude/pbrClusteredLightingFunctions.js +1 -1
  409. package/ShadersWGSL/ShadersInclude/pbrClusteredLightingFunctions.js.map +1 -1
  410. package/ShadersWGSL/ShadersInclude/pbrDirectLightingSetupFunctions.js +1 -1
  411. package/ShadersWGSL/ShadersInclude/pbrDirectLightingSetupFunctions.js.map +1 -1
  412. package/ShadersWGSL/ShadersInclude/pbrFragmentSamplersDeclaration.js +1 -0
  413. package/ShadersWGSL/ShadersInclude/pbrFragmentSamplersDeclaration.js.map +1 -1
  414. package/ShadersWGSL/ShadersInclude/pbrIBLFunctions.js +8 -0
  415. package/ShadersWGSL/ShadersInclude/pbrIBLFunctions.js.map +1 -1
  416. package/ShadersWGSL/ShadersInclude/pbrUboDeclaration.js +1 -1
  417. package/ShadersWGSL/ShadersInclude/pbrUboDeclaration.js.map +1 -1
  418. package/ShadersWGSL/ShadersInclude/prePassVertex.js +2 -2
  419. package/ShadersWGSL/ShadersInclude/prePassVertex.js.map +1 -1
  420. package/ShadersWGSL/ShadersInclude/prePassVertexDeclaration.js +1 -1
  421. package/ShadersWGSL/ShadersInclude/prePassVertexDeclaration.js.map +1 -1
  422. package/ShadersWGSL/ShadersInclude/sceneUboDeclaration.js +3 -1
  423. package/ShadersWGSL/ShadersInclude/sceneUboDeclaration.js.map +1 -1
  424. package/ShadersWGSL/ShadersInclude/shadowsVertex.js +16 -0
  425. package/ShadersWGSL/ShadersInclude/shadowsVertex.js.map +1 -1
  426. package/ShadersWGSL/default.fragment.js +4 -4
  427. package/ShadersWGSL/default.fragment.js.map +1 -1
  428. package/ShadersWGSL/default.vertex.js +1 -1
  429. package/ShadersWGSL/default.vertex.js.map +1 -1
  430. package/ShadersWGSL/gaussianSplatting.vertex.js +3 -3
  431. package/ShadersWGSL/gaussianSplatting.vertex.js.map +1 -1
  432. package/ShadersWGSL/gpuUpdateParticles.compute.js +1 -1
  433. package/ShadersWGSL/gpuUpdateParticles.compute.js.map +1 -1
  434. package/ShadersWGSL/gsSortCount.compute.d.ts +5 -0
  435. package/ShadersWGSL/gsSortCount.compute.js +19 -0
  436. package/ShadersWGSL/gsSortCount.compute.js.map +1 -0
  437. package/ShadersWGSL/gsSortKeys.compute.d.ts +5 -0
  438. package/ShadersWGSL/gsSortKeys.compute.js +49 -0
  439. package/ShadersWGSL/gsSortKeys.compute.js.map +1 -0
  440. package/ShadersWGSL/gsSortOutput.compute.d.ts +5 -0
  441. package/ShadersWGSL/gsSortOutput.compute.js +28 -0
  442. package/ShadersWGSL/gsSortOutput.compute.js.map +1 -0
  443. package/ShadersWGSL/gsSortScanLocal.compute.d.ts +5 -0
  444. package/ShadersWGSL/gsSortScanLocal.compute.js +23 -0
  445. package/ShadersWGSL/gsSortScanLocal.compute.js.map +1 -0
  446. package/ShadersWGSL/gsSortScanSums.compute.d.ts +5 -0
  447. package/ShadersWGSL/gsSortScanSums.compute.js +19 -0
  448. package/ShadersWGSL/gsSortScanSums.compute.js.map +1 -0
  449. package/ShadersWGSL/gsSortScatter.compute.d.ts +5 -0
  450. package/ShadersWGSL/gsSortScatter.compute.js +33 -0
  451. package/ShadersWGSL/gsSortScatter.compute.js.map +1 -0
  452. package/ShadersWGSL/lod.fragment.js +14 -2
  453. package/ShadersWGSL/lod.fragment.js.map +1 -1
  454. package/ShadersWGSL/lod3D.fragment.js +14 -2
  455. package/ShadersWGSL/lod3D.fragment.js.map +1 -1
  456. package/ShadersWGSL/lodCube.fragment.js +14 -2
  457. package/ShadersWGSL/lodCube.fragment.js.map +1 -1
  458. package/ShadersWGSL/openpbr.vertex.js +3 -1
  459. package/ShadersWGSL/openpbr.vertex.js.map +1 -1
  460. package/ShadersWGSL/pbr.fragment.js +11 -0
  461. package/ShadersWGSL/pbr.fragment.js.map +1 -1
  462. package/ShadersWGSL/pbr.vertex.js +3 -1
  463. package/ShadersWGSL/pbr.vertex.js.map +1 -1
  464. package/ShadersWGSL/textureMerger.fragment.js +40 -4
  465. package/ShadersWGSL/textureMerger.fragment.js.map +1 -1
  466. package/ShadersWGSL/textureProcessor.fragment.js +26 -4
  467. package/ShadersWGSL/textureProcessor.fragment.js.map +1 -1
  468. package/Sprites/spriteRenderer.js +15 -5
  469. package/Sprites/spriteRenderer.js.map +1 -1
  470. package/package.json +1 -1
  471. package/scene.pure.d.ts +23 -1
  472. package/scene.pure.js +83 -1
  473. package/scene.pure.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"pbr.fragment.js","sourceRoot":"","sources":["../../../../dev/core/src/ShadersWGSL/pbr.fragment.ts"],"names":[],"mappings":"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","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../Engines/shaderStore\";\nimport { objectIdFunctionsWGSL } from \"./ShadersInclude/objectIdFunctions\";\nimport { prePassDeclarationWGSL } from \"./ShadersInclude/prePassDeclaration\";\nimport { oitDeclarationWGSL } from \"./ShadersInclude/oitDeclaration\";\nimport { sceneUboDeclarationWGSL } from \"./ShadersInclude/sceneUboDeclaration\";\nimport { meshUboDeclarationWGSL } from \"./ShadersInclude/meshUboDeclaration\";\nimport { pbrUboDeclarationWGSL } from \"./ShadersInclude/pbrUboDeclaration\";\nimport { mainUVVaryingDeclarationWGSL } from \"./ShadersInclude/mainUVVaryingDeclaration\";\nimport { pbrFragmentExtraDeclarationWGSL } from \"./ShadersInclude/pbrFragmentExtraDeclaration\";\nimport { lightUboDeclarationWGSL } from \"./ShadersInclude/lightUboDeclaration\";\nimport { samplerFragmentDeclarationWGSL } from \"./ShadersInclude/samplerFragmentDeclaration\";\nimport { samplerFragmentAlternateDeclarationWGSL } from \"./ShadersInclude/samplerFragmentAlternateDeclaration\";\nimport { pbrFragmentReflectionDeclarationWGSL } from \"./ShadersInclude/pbrFragmentReflectionDeclaration\";\nimport { pbrFragmentSamplersDeclarationWGSL } from \"./ShadersInclude/pbrFragmentSamplersDeclaration\";\nimport { imageProcessingDeclarationWGSL } from \"./ShadersInclude/imageProcessingDeclaration\";\nimport { clipPlaneFragmentDeclarationWGSL } from \"./ShadersInclude/clipPlaneFragmentDeclaration\";\nimport { logDepthDeclarationWGSL } from \"./ShadersInclude/logDepthDeclaration\";\nimport { fogFragmentDeclarationWGSL } from \"./ShadersInclude/fogFragmentDeclaration\";\nimport { textureRepetitionFunctionsWGSL } from \"./ShadersInclude/textureRepetitionFunctions\";\nimport { helperFunctionsWGSL } from \"./ShadersInclude/helperFunctions\";\nimport { subSurfaceScatteringFunctionsWGSL } from \"./ShadersInclude/subSurfaceScatteringFunctions\";\nimport { importanceSamplingWGSL } from \"./ShadersInclude/importanceSampling\";\nimport { pbrHelperFunctionsWGSL } from \"./ShadersInclude/pbrHelperFunctions\";\nimport { imageProcessingFunctionsWGSL } from \"./ShadersInclude/imageProcessingFunctions\";\nimport { shadowsFragmentFunctionsWGSL } from \"./ShadersInclude/shadowsFragmentFunctions\";\nimport { harmonicsFunctionsWGSL } from \"./ShadersInclude/harmonicsFunctions\";\nimport { ltcHelperFunctionsWGSL } from \"./ShadersInclude/ltcHelperFunctions\";\nimport { pbrDirectLightingSetupFunctionsWGSL } from \"./ShadersInclude/pbrDirectLightingSetupFunctions\";\nimport { pbrDirectLightingFalloffFunctionsWGSL } from \"./ShadersInclude/pbrDirectLightingFalloffFunctions\";\nimport { pbrBRDFFunctionsWGSL } from \"./ShadersInclude/pbrBRDFFunctions\";\nimport { hdrFilteringFunctionsWGSL } from \"./ShadersInclude/hdrFilteringFunctions\";\nimport { clusteredLightingFunctionsWGSL } from \"./ShadersInclude/clusteredLightingFunctions\";\nimport { pbrBlockReflectance0WGSL } from \"./ShadersInclude/pbrBlockReflectance0\";\nimport { pbrClusteredLightingFunctionsWGSL } from \"./ShadersInclude/pbrClusteredLightingFunctions\";\nimport { pbrDirectLightingFunctionsWGSL } from \"./ShadersInclude/pbrDirectLightingFunctions\";\nimport { pbrIBLFunctionsWGSL } from \"./ShadersInclude/pbrIBLFunctions\";\nimport { bumpFragmentMainFunctionsWGSL } from \"./ShadersInclude/bumpFragmentMainFunctions\";\nimport { bumpFragmentFunctionsWGSL } from \"./ShadersInclude/bumpFragmentFunctions\";\nimport { reflectionFunctionWGSL } from \"./ShadersInclude/reflectionFunction\";\nimport { decalFragmentWGSL } from \"./ShadersInclude/decalFragment\";\nimport { pbrBlockAlbedoOpacityWGSL } from \"./ShadersInclude/pbrBlockAlbedoOpacity\";\nimport { pbrBlockReflectivityWGSL } from \"./ShadersInclude/pbrBlockReflectivity\";\nimport { pbrBlockAmbientOcclusionWGSL } from \"./ShadersInclude/pbrBlockAmbientOcclusion\";\nimport { pbrBlockAlphaFresnelWGSL } from \"./ShadersInclude/pbrBlockAlphaFresnel\";\nimport { pbrBlockAnisotropicWGSL } from \"./ShadersInclude/pbrBlockAnisotropic\";\nimport { pbrBlockReflectionWGSL } from \"./ShadersInclude/pbrBlockReflection\";\nimport { pbrBlockSheenWGSL } from \"./ShadersInclude/pbrBlockSheen\";\nimport { pbrBlockClearcoatWGSL } from \"./ShadersInclude/pbrBlockClearcoat\";\nimport { pbrBlockIridescenceWGSL } from \"./ShadersInclude/pbrBlockIridescence\";\nimport { pbrBlockSubSurfaceWGSL } from \"./ShadersInclude/pbrBlockSubSurface\";\nimport { clipPlaneFragmentWGSL } from \"./ShadersInclude/clipPlaneFragment\";\nimport { pbrBlockNormalGeometricWGSL } from \"./ShadersInclude/pbrBlockNormalGeometric\";\nimport { bumpFragmentWGSL } from \"./ShadersInclude/bumpFragment\";\nimport { pbrBlockNormalFinalWGSL } from \"./ShadersInclude/pbrBlockNormalFinal\";\nimport { depthPrePassWGSL } from \"./ShadersInclude/depthPrePass\";\nimport { pbrBlockLightmapInitWGSL } from \"./ShadersInclude/pbrBlockLightmapInit\";\nimport { pbrBlockGeometryInfoWGSL } from \"./ShadersInclude/pbrBlockGeometryInfo\";\nimport { pbrBlockReflectanceWGSL } from \"./ShadersInclude/pbrBlockReflectance\";\nimport { pbrBlockDirectLightingWGSL } from \"./ShadersInclude/pbrBlockDirectLighting\";\nimport { lightFragmentWGSL } from \"./ShadersInclude/lightFragment\";\nimport { pbrBlockFinalLitComponentsWGSL } from \"./ShadersInclude/pbrBlockFinalLitComponents\";\nimport { pbrBlockFinalUnlitComponentsWGSL } from \"./ShadersInclude/pbrBlockFinalUnlitComponents\";\nimport { pbrBlockFinalColorCompositionWGSL } from \"./ShadersInclude/pbrBlockFinalColorComposition\";\nimport { logDepthFragmentWGSL } from \"./ShadersInclude/logDepthFragment\";\nimport { fogFragmentWGSL } from \"./ShadersInclude/fogFragment\";\nimport { pbrBlockImageProcessingWGSL } from \"./ShadersInclude/pbrBlockImageProcessing\";\nimport { meshBlendTagFragmentOutputWGSL } from \"./ShadersInclude/meshBlendTagFragmentOutput\";\nimport { pbrBlockPrePassWGSL } from \"./ShadersInclude/pbrBlockPrePass\";\nimport { oitFragmentWGSL } from \"./ShadersInclude/oitFragment\";\nimport { pbrDebugWGSL } from \"./ShadersInclude/pbrDebug\";\n\nconst name = \"pbrPixelShader\";\nconst shader = `#define PBR_FRAGMENT_SHADER\n#define CUSTOM_FRAGMENT_BEGIN\n#include<prePassDeclaration>[SCENE_MRT_COUNT]\n#include<oitDeclaration>\n#ifndef FROMLINEARSPACE\n#define FROMLINEARSPACE\n#endif\n#include<pbrUboDeclaration>\n#include<pbrFragmentExtraDeclaration>\n#include<lightUboDeclaration>[0..maxSimultaneousLights]\n#include<pbrFragmentSamplersDeclaration>\n#include<imageProcessingDeclaration>\n#include<clipPlaneFragmentDeclaration>\n#include<logDepthDeclaration>\n#include<fogFragmentDeclaration>\n#include<textureRepetitionFunctions>\n#include<helperFunctions>\n#include<subSurfaceScatteringFunctions>\n#include<importanceSampling>\n#include<pbrHelperFunctions>\n#include<imageProcessingFunctions>\n#include<shadowsFragmentFunctions>\n#include<harmonicsFunctions>\n#include<pbrDirectLightingSetupFunctions>\n#include<pbrDirectLightingFalloffFunctions>\n#include<pbrBRDFFunctions>\n#include<hdrFilteringFunctions>\n#include<pbrDirectLightingFunctions>\n#include<pbrIBLFunctions>\n#include<bumpFragmentMainFunctions>\n#include<bumpFragmentFunctions>\n#ifdef REFLECTION\n#include<reflectionFunction>\n#endif\n#define CUSTOM_FRAGMENT_DEFINITIONS\n#include<pbrBlockAlbedoOpacity>\n#include<pbrBlockReflectivity>\n#include<pbrBlockAmbientOcclusion>\n#include<pbrBlockAlphaFresnel>\n#include<pbrBlockAnisotropic>\n#include<pbrBlockReflection>\n#include<pbrBlockSheen>\n#include<pbrBlockClearcoat>\n#include<pbrBlockIridescence>\n#include<pbrBlockSubSurface>\n@fragment\nfn main(input: FragmentInputs)->FragmentOutputs {\n#define CUSTOM_FRAGMENT_MAIN_BEGIN\n#include<clipPlaneFragment>\n#include<pbrBlockNormalGeometric>\n#include<bumpFragment>\n#include<pbrBlockNormalFinal>\nvar albedoOpacityOut: albedoOpacityOutParams;\n#ifdef ALBEDO\nvar albedoTexture: vec4f=TEXRD(albedoSampler,albedoSamplerSampler,fragmentInputs.vAlbedoUV+uvOffset);\n#endif\n#ifdef BASE_WEIGHT\nvar baseWeightTexture: vec4f=TEXRD(baseWeightSampler,baseWeightSamplerSampler,fragmentInputs.vBaseWeightUV+uvOffset);\n#endif\n#ifdef OPACITY\nvar opacityMap: vec4f=TEXRD(opacitySampler,opacitySamplerSampler,fragmentInputs.vOpacityUV+uvOffset);\n#endif\n#ifdef DECAL\nvar decalColor: vec4f=textureSample(decalSampler,decalSamplerSampler,fragmentInputs.vDecalUV+uvOffset);\n#endif\nalbedoOpacityOut=albedoOpacityBlock(\nuniforms.vAlbedoColor\n#ifdef ALBEDO\n,albedoTexture\n,uniforms.vAlbedoInfos\n#endif\n,uniforms.baseWeight\n#ifdef BASE_WEIGHT\n,baseWeightTexture\n,uniforms.vBaseWeightInfos\n#endif\n#ifdef OPACITY\n,opacityMap\n,uniforms.vOpacityInfos\n#endif\n#ifdef DETAIL\n,detailColor\n,uniforms.vDetailInfos\n#endif\n#ifdef DECAL\n,decalColor\n,uniforms.vDecalInfos\n#endif\n);var surfaceAlbedo: vec3f=albedoOpacityOut.surfaceAlbedo;var alpha: f32=albedoOpacityOut.alpha;\n#define CUSTOM_FRAGMENT_UPDATE_ALPHA\n#define DEPTHPREPASS_SKIP_EARLY_RETURN\n#include<depthPrePass>\n#ifndef DEPTHPREPASS\n#define CUSTOM_FRAGMENT_BEFORE_LIGHTS\nvar aoOut: ambientOcclusionOutParams;\n#ifdef AMBIENT\nvar ambientOcclusionColorMap: vec3f=TEXRD(ambientSampler,ambientSamplerSampler,fragmentInputs.vAmbientUV+uvOffset).rgb;\n#endif\naoOut=ambientOcclusionBlock(\n#ifdef AMBIENT\nambientOcclusionColorMap,\nuniforms.vAmbientInfos\n#endif\n);\n#include<pbrBlockLightmapInit>\n#ifdef UNLIT\nvar diffuseBase: vec3f= vec3f(1.,1.,1.);\n#else\nvar baseColor: vec3f=surfaceAlbedo;var reflectivityOut: reflectivityOutParams;\n#if defined(REFLECTIVITY)\nvar surfaceMetallicOrReflectivityColorMap: vec4f=TEXRD(reflectivitySampler,reflectivitySamplerSampler,fragmentInputs.vReflectivityUV+uvOffset);var baseReflectivity: vec4f=surfaceMetallicOrReflectivityColorMap;\n#ifndef METALLICWORKFLOW\n#ifdef REFLECTIVITY_GAMMA\nsurfaceMetallicOrReflectivityColorMap=toLinearSpaceVec4(surfaceMetallicOrReflectivityColorMap);\n#endif\nsurfaceMetallicOrReflectivityColorMap=vec4f(surfaceMetallicOrReflectivityColorMap.rgb*uniforms.vReflectivityInfos.y,surfaceMetallicOrReflectivityColorMap.a);\n#endif\n#endif\n#if defined(MICROSURFACEMAP)\nvar microSurfaceTexel: vec4f=TEXRD(microSurfaceSampler,microSurfaceSamplerSampler,fragmentInputs.vMicroSurfaceSamplerUV+uvOffset)*uniforms.vMicroSurfaceSamplerInfos.y;\n#endif\n#ifdef BASE_DIFFUSE_ROUGHNESS\nvar baseDiffuseRoughnessTexture: f32=TEXRD(baseDiffuseRoughnessSampler,baseDiffuseRoughnessSamplerSampler,fragmentInputs.vBaseDiffuseRoughnessUV+uvOffset).x;\n#endif\n#ifdef METALLICWORKFLOW\nvar metallicReflectanceFactors: vec4f=uniforms.vMetallicReflectanceFactors;\n#ifdef REFLECTANCE\nvar reflectanceFactorsMap: vec4f=TEXRD(reflectanceSampler,reflectanceSamplerSampler,fragmentInputs.vReflectanceUV+uvOffset);\n#ifdef REFLECTANCE_GAMMA\nreflectanceFactorsMap=toLinearSpaceVec4(reflectanceFactorsMap);\n#endif\nmetallicReflectanceFactors=vec4f(metallicReflectanceFactors.rgb*reflectanceFactorsMap.rgb,metallicReflectanceFactors.a);\n#endif\n#ifdef METALLIC_REFLECTANCE\nvar metallicReflectanceFactorsMap: vec4f=TEXRD(metallicReflectanceSampler,metallicReflectanceSamplerSampler,fragmentInputs.vMetallicReflectanceUV+uvOffset);\n#ifdef METALLIC_REFLECTANCE_GAMMA\nmetallicReflectanceFactorsMap=toLinearSpaceVec4(metallicReflectanceFactorsMap);\n#endif\n#ifndef METALLIC_REFLECTANCE_USE_ALPHA_ONLY\nmetallicReflectanceFactors=vec4f(metallicReflectanceFactors.rgb*metallicReflectanceFactorsMap.rgb,metallicReflectanceFactors.a);\n#endif\nmetallicReflectanceFactors.a*=metallicReflectanceFactorsMap.a;\n#endif\n#endif\nreflectivityOut=reflectivityBlock(\nuniforms.vReflectivityColor\n#ifdef METALLICWORKFLOW\n,surfaceAlbedo\n,metallicReflectanceFactors\n#endif\n,uniforms.baseDiffuseRoughness\n#ifdef BASE_DIFFUSE_ROUGHNESS\n,baseDiffuseRoughnessTexture\n,uniforms.vBaseDiffuseRoughnessInfos\n#endif\n#ifdef REFLECTIVITY\n,uniforms.vReflectivityInfos\n,surfaceMetallicOrReflectivityColorMap\n#endif\n#if defined(METALLICWORKFLOW) && defined(REFLECTIVITY) && defined(AOSTOREINMETALMAPRED)\n,aoOut.ambientOcclusionColor\n#endif\n#ifdef MICROSURFACEMAP\n,microSurfaceTexel\n#endif\n#ifdef DETAIL\n,detailColor\n,uniforms.vDetailInfos\n#endif\n);var microSurface: f32=reflectivityOut.microSurface;var roughness: f32=reflectivityOut.roughness;var diffuseRoughness: f32=reflectivityOut.diffuseRoughness;\n#ifdef METALLICWORKFLOW\nsurfaceAlbedo=reflectivityOut.surfaceAlbedo;\n#endif\n#if defined(METALLICWORKFLOW) && defined(REFLECTIVITY) && defined(AOSTOREINMETALMAPRED)\naoOut.ambientOcclusionColor=reflectivityOut.ambientOcclusionColor;\n#endif\n#ifdef ALPHAFRESNEL\n#if defined(ALPHATEST) || defined(ALPHABLEND)\nvar alphaFresnelOut: alphaFresnelOutParams;alphaFresnelOut=alphaFresnelBlock(\nnormalW,\nviewDirectionW,\nalpha,\nmicroSurface\n);alpha=alphaFresnelOut.alpha;\n#endif\n#endif\n#include<pbrBlockGeometryInfo>\n#ifdef ANISOTROPIC\nvar anisotropicOut: anisotropicOutParams;\n#ifdef ANISOTROPIC_TEXTURE\nvar anisotropyMapData: vec3f=TEXRD(anisotropySampler,anisotropySamplerSampler,fragmentInputs.vAnisotropyUV+uvOffset).rgb*uniforms.vAnisotropyInfos.y;\n#endif\nanisotropicOut=anisotropicBlock(\nuniforms.vAnisotropy,\nroughness,\n#ifdef ANISOTROPIC_TEXTURE\nanisotropyMapData,\n#endif\nTBN,\nnormalW,\nviewDirectionW\n);\n#endif\n#ifdef REFLECTION\nvar reflectionOut: reflectionOutParams;\n#ifndef USE_CUSTOM_REFLECTION\nreflectionOut=reflectionBlock(\nfragmentInputs.vPositionW\n,normalW\n,alphaG\n,uniforms.vReflectionMicrosurfaceInfos\n,uniforms.vReflectionInfos\n,uniforms.vReflectionColor\n#ifdef ANISOTROPIC\n,anisotropicOut\n#endif\n#if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)\n,NdotVUnclamped\n#endif\n#ifdef LINEARSPECULARREFLECTION\n,roughness\n#endif\n,reflectionSampler\n,reflectionSamplerSampler\n#if defined(NORMAL) && defined(USESPHERICALINVERTEX)\n,fragmentInputs.vEnvironmentIrradiance\n#endif\n#if (defined(USESPHERICALFROMREFLECTIONMAP) && (!defined(NORMAL) || !defined(USESPHERICALINVERTEX))) || (defined(USEIRRADIANCEMAP) && defined(REFLECTIONMAP_3D))\n,uniforms.reflectionMatrix\n#endif\n#ifdef USEIRRADIANCEMAP\n,irradianceSampler\n,irradianceSamplerSampler\n#ifdef USE_IRRADIANCE_DOMINANT_DIRECTION\n,uniforms.vReflectionDominantDirection\n#endif\n#endif\n#ifndef LODBASEDMICROSFURACE\n,reflectionLowSampler\n,reflectionLowSamplerSampler\n,reflectionHighSampler\n,reflectionHighSamplerSampler\n#endif\n#ifdef REALTIME_FILTERING\n,uniforms.vReflectionFilteringInfo\n#ifdef IBL_CDF_FILTERING\n,icdfSampler\n,icdfSamplerSampler\n#endif\n#endif\n,viewDirectionW\n,diffuseRoughness\n,surfaceAlbedo\n);\n#else\n#define CUSTOM_REFLECTION\n#endif\n#endif\n#include<pbrBlockReflectance0>\n#ifdef SHEEN\nvar sheenOut: sheenOutParams;\n#ifdef SHEEN_TEXTURE\nvar sheenMapData: vec4f=TEXRD(sheenSampler,sheenSamplerSampler,fragmentInputs.vSheenUV+uvOffset);\n#endif\n#if defined(SHEEN_ROUGHNESS) && defined(SHEEN_TEXTURE_ROUGHNESS) && !defined(SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE)\nvar sheenMapRoughnessData: vec4f=TEXRD(sheenRoughnessSampler,sheenRoughnessSamplerSampler,fragmentInputs.vSheenRoughnessUV+uvOffset)*uniforms.vSheenInfos.w;\n#endif\nsheenOut=sheenBlock(\nuniforms.vSheenColor\n#ifdef SHEEN_ROUGHNESS\n,uniforms.vSheenRoughness\n#if defined(SHEEN_TEXTURE_ROUGHNESS) && !defined(SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE)\n,sheenMapRoughnessData\n#endif\n#endif\n,roughness\n#ifdef SHEEN_TEXTURE\n,sheenMapData\n,uniforms.vSheenInfos.y\n#endif\n,reflectanceF0\n#ifdef SHEEN_LINKWITHALBEDO\n,baseColor\n,surfaceAlbedo\n#endif\n#ifdef ENVIRONMENTBRDF\n,NdotV\n,environmentBrdf\n#endif\n#if defined(REFLECTION) && defined(ENVIRONMENTBRDF)\n,AARoughnessFactors\n,uniforms.vReflectionMicrosurfaceInfos\n,uniforms.vReflectionInfos\n,uniforms.vReflectionColor\n,uniforms.vLightingIntensity\n,reflectionSampler\n,reflectionSamplerSampler\n,reflectionOut.reflectionCoords\n,NdotVUnclamped\n#ifndef LODBASEDMICROSFURACE\n,reflectionLowSampler\n,reflectionLowSamplerSampler\n,reflectionHighSampler\n,reflectionHighSamplerSampler\n#endif\n#ifdef REALTIME_FILTERING\n,uniforms.vReflectionFilteringInfo\n#endif\n#if !defined(REFLECTIONMAP_SKYBOX) && defined(RADIANCEOCCLUSION)\n,seo\n#endif\n#if !defined(REFLECTIONMAP_SKYBOX) && defined(HORIZONOCCLUSION) && defined(BUMP) && defined(REFLECTIONMAP_3D)\n,eho\n#endif\n#endif\n);\n#ifdef SHEEN_LINKWITHALBEDO\nsurfaceAlbedo=sheenOut.surfaceAlbedo;\n#endif\n#endif\n#ifdef CLEARCOAT\n#ifdef CLEARCOAT_TEXTURE\nvar clearCoatMapData: vec2f=TEXRD(clearCoatSampler,clearCoatSamplerSampler,fragmentInputs.vClearCoatUV+uvOffset).rg*uniforms.vClearCoatInfos.y;\n#endif\n#endif\n#ifdef IRIDESCENCE\nvar iridescenceOut: iridescenceOutParams;\n#ifdef IRIDESCENCE_TEXTURE\nvar iridescenceMapData: vec2f=TEXRD(iridescenceSampler,iridescenceSamplerSampler,fragmentInputs.vIridescenceUV+uvOffset).rg*uniforms.vIridescenceInfos.y;\n#endif\n#ifdef IRIDESCENCE_THICKNESS_TEXTURE\nvar iridescenceThicknessMapData: vec2f=TEXRD(iridescenceThicknessSampler,iridescenceThicknessSamplerSampler,fragmentInputs.vIridescenceThicknessUV+uvOffset).rg*uniforms.vIridescenceInfos.w;\n#endif\niridescenceOut=iridescenceBlock(\nuniforms.vIridescenceParams\n,NdotV\n,specularEnvironmentR0\n#ifdef IRIDESCENCE_TEXTURE\n,iridescenceMapData\n#endif\n#ifdef IRIDESCENCE_THICKNESS_TEXTURE\n,iridescenceThicknessMapData\n#endif\n#ifdef CLEARCOAT\n,NdotVUnclamped\n,uniforms.vClearCoatParams\n#ifdef CLEARCOAT_TEXTURE\n,clearCoatMapData\n#endif\n#endif\n);var iridescenceIntensity: f32=iridescenceOut.iridescenceIntensity;specularEnvironmentR0=iridescenceOut.specularEnvironmentR0;\n#endif\nvar clearcoatOut: clearcoatOutParams;\n#ifdef CLEARCOAT\n#if defined(CLEARCOAT_TEXTURE_ROUGHNESS) && !defined(CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE)\nvar clearCoatMapRoughnessData: vec4f=TEXRD(clearCoatRoughnessSampler,clearCoatRoughnessSamplerSampler,fragmentInputs.vClearCoatRoughnessUV+uvOffset)*uniforms.vClearCoatInfos.w;\n#endif\n#if defined(CLEARCOAT_TINT) && defined(CLEARCOAT_TINT_TEXTURE)\nvar clearCoatTintMapData: vec4f=TEXRD(clearCoatTintSampler,clearCoatTintSamplerSampler,fragmentInputs.vClearCoatTintUV+uvOffset);\n#endif\n#ifdef CLEARCOAT_BUMP\nvar clearCoatBumpMapData: vec4f=TEXRD(clearCoatBumpSampler,clearCoatBumpSamplerSampler,fragmentInputs.vClearCoatBumpUV+uvOffset);\n#endif\nclearcoatOut=clearcoatBlock(\nfragmentInputs.vPositionW\n,geometricNormalW\n,viewDirectionW\n,uniforms.vClearCoatParams\n#if defined(CLEARCOAT_TEXTURE_ROUGHNESS) && !defined(CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE)\n,clearCoatMapRoughnessData\n#endif\n,specularEnvironmentR0\n#ifdef CLEARCOAT_TEXTURE\n,clearCoatMapData\n#endif\n#ifdef CLEARCOAT_TINT\n,uniforms.vClearCoatTintParams\n,uniforms.clearCoatColorAtDistance\n,uniforms.vClearCoatRefractionParams\n#ifdef CLEARCOAT_TINT_TEXTURE\n,clearCoatTintMapData\n#endif\n#endif\n#ifdef CLEARCOAT_BUMP\n,uniforms.vClearCoatBumpInfos\n,clearCoatBumpMapData\n,fragmentInputs.vClearCoatBumpUV\n#if defined(TANGENT) && defined(NORMAL)\n,mat3x3<f32>(input.vTBN0,input.vTBN1,input.vTBN2)\n#else\n,uniforms.vClearCoatTangentSpaceParams\n#endif\n#ifdef OBJECTSPACE_NORMALMAP\n,uniforms.normalMatrix\n#endif\n#endif\n#if defined(FORCENORMALFORWARD) && defined(NORMAL)\n,faceNormal\n#endif\n#ifdef REFLECTION\n,uniforms.vReflectionMicrosurfaceInfos\n,uniforms.vReflectionInfos\n,uniforms.vReflectionColor\n,uniforms.vLightingIntensity\n,reflectionSampler\n,reflectionSamplerSampler\n#ifndef LODBASEDMICROSFURACE\n,reflectionLowSampler\n,reflectionLowSamplerSampler\n,reflectionHighSampler\n,reflectionHighSamplerSampler\n#endif\n#ifdef REALTIME_FILTERING\n,uniforms.vReflectionFilteringInfo\n#endif\n#endif\n#if defined(CLEARCOAT_BUMP) || defined(TWOSIDEDLIGHTING)\n,select(-1.,1.,fragmentInputs.frontFacing)\n#endif\n);\n#else\nclearcoatOut.specularEnvironmentR0=specularEnvironmentR0;\n#endif\n#include<pbrBlockReflectance>\nvar subSurfaceOut: subSurfaceOutParams;\n#ifdef SUBSURFACE\n#ifdef SS_THICKNESSANDMASK_TEXTURE\nvar thicknessMap: vec4f=TEXRD(thicknessSampler,thicknessSamplerSampler,fragmentInputs.vThicknessUV+uvOffset);\n#endif\n#ifdef SS_REFRACTIONINTENSITY_TEXTURE\nvar refractionIntensityMap: vec4f=TEXRD(refractionIntensitySampler,refractionIntensitySamplerSampler,fragmentInputs.vRefractionIntensityUV+uvOffset);\n#endif\n#ifdef SS_TRANSLUCENCYINTENSITY_TEXTURE\nvar translucencyIntensityMap: vec4f=TEXRD(translucencyIntensitySampler,translucencyIntensitySamplerSampler,fragmentInputs.vTranslucencyIntensityUV+uvOffset);\n#endif\n#ifdef SS_TRANSLUCENCYCOLOR_TEXTURE\nvar translucencyColorMap: vec4f=TEXRD(translucencyColorSampler,translucencyColorSamplerSampler,fragmentInputs.vTranslucencyColorUV+uvOffset);\n#ifdef SS_TRANSLUCENCYCOLOR_TEXTURE_GAMMA\ntranslucencyColorMap=toLinearSpaceVec4(translucencyColorMap);\n#endif\n#endif\nsubSurfaceOut=subSurfaceBlock(\nuniforms.vSubSurfaceIntensity\n,uniforms.vThicknessParam\n,uniforms.vTintColor\n,normalW\n#ifdef LEGACY_SPECULAR_ENERGY_CONSERVATION\n,vec3f(max(colorSpecularEnvironmentReflectance.r,max(colorSpecularEnvironmentReflectance.g,colorSpecularEnvironmentReflectance.b)))\n#else\n,baseSpecularEnvironmentReflectance\n#endif\n#ifdef SS_THICKNESSANDMASK_TEXTURE\n,thicknessMap\n#endif\n#ifdef SS_REFRACTIONINTENSITY_TEXTURE\n,refractionIntensityMap\n#endif\n#ifdef SS_TRANSLUCENCYINTENSITY_TEXTURE\n,translucencyIntensityMap\n#endif\n#ifdef REFLECTION\n#ifdef SS_TRANSLUCENCY\n,uniforms.reflectionMatrix\n#ifdef USESPHERICALFROMREFLECTIONMAP\n#if !defined(NORMAL) || !defined(USESPHERICALINVERTEX)\n,reflectionOut.irradianceVector\n#endif\n#if defined(REALTIME_FILTERING)\n,reflectionSampler\n,reflectionSamplerSampler\n,uniforms.vReflectionFilteringInfo\n#ifdef IBL_CDF_FILTERING\n,icdfSampler\n,icdfSamplerSampler\n#endif\n#endif\n#endif\n#ifdef USEIRRADIANCEMAP\n,irradianceSampler\n,irradianceSamplerSampler\n#endif\n#endif\n#endif\n#if defined(SS_REFRACTION) || defined(SS_TRANSLUCENCY)\n,surfaceAlbedo\n#endif\n#ifdef SS_REFRACTION\n,fragmentInputs.vPositionW\n,viewDirectionW\n,scene.view\n,uniforms.vRefractionInfos\n,uniforms.refractionMatrix\n,uniforms.vRefractionMicrosurfaceInfos\n,uniforms.vLightingIntensity\n#ifdef SS_LINKREFRACTIONTOTRANSPARENCY\n,alpha\n#endif\n#ifdef SS_LODINREFRACTIONALPHA\n,NdotVUnclamped\n#endif\n#ifdef SS_LINEARSPECULARREFRACTION\n,roughness\n#endif\n,alphaG\n,refractionSampler\n,refractionSamplerSampler\n#ifndef LODBASEDMICROSFURACE\n,refractionLowSampler\n,refractionLowSamplerSampler\n,refractionHighSampler\n,refractionHighSamplerSampler\n#endif\n#ifdef ANISOTROPIC\n,anisotropicOut\n#endif\n#ifdef REALTIME_FILTERING\n,uniforms.vRefractionFilteringInfo\n#endif\n#ifdef SS_USE_LOCAL_REFRACTIONMAP_CUBIC\n,uniforms.vRefractionPosition\n,uniforms.vRefractionSize\n#endif\n#ifdef SS_DISPERSION\n,uniforms.dispersion\n#endif\n#endif\n#ifdef SS_TRANSLUCENCY\n,uniforms.vDiffusionDistance\n,uniforms.vTranslucencyColor\n#ifdef SS_TRANSLUCENCYCOLOR_TEXTURE\n,translucencyColorMap\n#endif\n#endif\n);\n#ifdef SS_REFRACTION\nsurfaceAlbedo=subSurfaceOut.surfaceAlbedo;\n#ifdef SS_LINKREFRACTIONTOTRANSPARENCY\nalpha=subSurfaceOut.alpha;\n#endif\n#endif\n#else\nsubSurfaceOut.specularEnvironmentReflectance=colorSpecularEnvironmentReflectance;\n#endif\n#include<pbrBlockDirectLighting>\n#include<lightFragment>[0..maxSimultaneousLights]\n#include<pbrBlockFinalLitComponents>\n#endif \n#include<pbrBlockFinalUnlitComponents>\n#define CUSTOM_FRAGMENT_BEFORE_FINALCOLORCOMPOSITION\n#include<pbrBlockFinalColorComposition>\n#include<logDepthFragment>\n#include<fogFragment>(color,finalColor)\n#include<pbrBlockImageProcessing>\n#define CUSTOM_FRAGMENT_BEFORE_FRAGCOLOR\n#ifdef PREPASS\n#include<pbrBlockPrePass>\n#endif\n#if !defined(PREPASS) && !defined(ORDER_INDEPENDENT_TRANSPARENCY)\nfragmentOutputs.color=finalColor;\n#endif\n#include<oitFragment>\n#if ORDER_INDEPENDENT_TRANSPARENCY\nif (fragDepth==nearestDepth) {fragmentOutputs.frontColor=vec4f(fragmentOutputs.frontColor.rgb+finalColor.rgb*finalColor.a*alphaMultiplier,1.0-alphaMultiplier*(1.0-finalColor.a));} else {fragmentOutputs.backColor+=finalColor;}\n#endif\n#include<pbrDebug>\n#define CUSTOM_FRAGMENT_MAIN_END\n#endif\n}\n`;\n// Sideeffect\nif (!ShaderStore.ShadersStoreWGSL[name]) {\n ShaderStore.ShadersStoreWGSL[name] = shader;\n}\nconst includes = [objectIdFunctionsWGSL, prePassDeclarationWGSL, oitDeclarationWGSL, sceneUboDeclarationWGSL, meshUboDeclarationWGSL, pbrUboDeclarationWGSL, mainUVVaryingDeclarationWGSL, pbrFragmentExtraDeclarationWGSL, lightUboDeclarationWGSL, samplerFragmentDeclarationWGSL, samplerFragmentAlternateDeclarationWGSL, pbrFragmentReflectionDeclarationWGSL, pbrFragmentSamplersDeclarationWGSL, imageProcessingDeclarationWGSL, clipPlaneFragmentDeclarationWGSL, logDepthDeclarationWGSL, fogFragmentDeclarationWGSL, textureRepetitionFunctionsWGSL, helperFunctionsWGSL, subSurfaceScatteringFunctionsWGSL, importanceSamplingWGSL, pbrHelperFunctionsWGSL, imageProcessingFunctionsWGSL, shadowsFragmentFunctionsWGSL, harmonicsFunctionsWGSL, ltcHelperFunctionsWGSL, pbrDirectLightingSetupFunctionsWGSL, pbrDirectLightingFalloffFunctionsWGSL, pbrBRDFFunctionsWGSL, hdrFilteringFunctionsWGSL, clusteredLightingFunctionsWGSL, pbrBlockReflectance0WGSL, pbrClusteredLightingFunctionsWGSL, pbrDirectLightingFunctionsWGSL, pbrIBLFunctionsWGSL, bumpFragmentMainFunctionsWGSL, bumpFragmentFunctionsWGSL, reflectionFunctionWGSL, decalFragmentWGSL, pbrBlockAlbedoOpacityWGSL, pbrBlockReflectivityWGSL, pbrBlockAmbientOcclusionWGSL, pbrBlockAlphaFresnelWGSL, pbrBlockAnisotropicWGSL, pbrBlockReflectionWGSL, pbrBlockSheenWGSL, pbrBlockClearcoatWGSL, pbrBlockIridescenceWGSL, pbrBlockSubSurfaceWGSL, clipPlaneFragmentWGSL, pbrBlockNormalGeometricWGSL, bumpFragmentWGSL, pbrBlockNormalFinalWGSL, depthPrePassWGSL, pbrBlockLightmapInitWGSL, pbrBlockGeometryInfoWGSL, pbrBlockReflectanceWGSL, pbrBlockDirectLightingWGSL, lightFragmentWGSL, pbrBlockFinalLitComponentsWGSL, pbrBlockFinalUnlitComponentsWGSL, pbrBlockFinalColorCompositionWGSL, logDepthFragmentWGSL, fogFragmentWGSL, pbrBlockImageProcessingWGSL, meshBlendTagFragmentOutputWGSL, pbrBlockPrePassWGSL, oitFragmentWGSL, pbrDebugWGSL];\nfor (const inc of includes) {\n if (!ShaderStore.IncludesShadersStoreWGSL[inc.name]) {\n ShaderStore.IncludesShadersStoreWGSL[inc.name] = inc.shader;\n }\n}\n\n/** @internal */\nexport const pbrPixelShaderWGSL = { name, shader };\n"]}
1
+ {"version":3,"file":"pbr.fragment.js","sourceRoot":"","sources":["../../../../dev/core/src/ShadersWGSL/pbr.fragment.ts"],"names":[],"mappings":"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","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../Engines/shaderStore\";\nimport { objectIdFunctionsWGSL } from \"./ShadersInclude/objectIdFunctions\";\nimport { prePassDeclarationWGSL } from \"./ShadersInclude/prePassDeclaration\";\nimport { oitDeclarationWGSL } from \"./ShadersInclude/oitDeclaration\";\nimport { sceneUboDeclarationWGSL } from \"./ShadersInclude/sceneUboDeclaration\";\nimport { meshUboDeclarationWGSL } from \"./ShadersInclude/meshUboDeclaration\";\nimport { pbrUboDeclarationWGSL } from \"./ShadersInclude/pbrUboDeclaration\";\nimport { mainUVVaryingDeclarationWGSL } from \"./ShadersInclude/mainUVVaryingDeclaration\";\nimport { pbrFragmentExtraDeclarationWGSL } from \"./ShadersInclude/pbrFragmentExtraDeclaration\";\nimport { lightUboDeclarationWGSL } from \"./ShadersInclude/lightUboDeclaration\";\nimport { samplerFragmentDeclarationWGSL } from \"./ShadersInclude/samplerFragmentDeclaration\";\nimport { samplerFragmentAlternateDeclarationWGSL } from \"./ShadersInclude/samplerFragmentAlternateDeclaration\";\nimport { pbrFragmentReflectionDeclarationWGSL } from \"./ShadersInclude/pbrFragmentReflectionDeclaration\";\nimport { pbrFragmentSamplersDeclarationWGSL } from \"./ShadersInclude/pbrFragmentSamplersDeclaration\";\nimport { imageProcessingDeclarationWGSL } from \"./ShadersInclude/imageProcessingDeclaration\";\nimport { clipPlaneFragmentDeclarationWGSL } from \"./ShadersInclude/clipPlaneFragmentDeclaration\";\nimport { logDepthDeclarationWGSL } from \"./ShadersInclude/logDepthDeclaration\";\nimport { fogFragmentDeclarationWGSL } from \"./ShadersInclude/fogFragmentDeclaration\";\nimport { textureRepetitionFunctionsWGSL } from \"./ShadersInclude/textureRepetitionFunctions\";\nimport { helperFunctionsWGSL } from \"./ShadersInclude/helperFunctions\";\nimport { subSurfaceScatteringFunctionsWGSL } from \"./ShadersInclude/subSurfaceScatteringFunctions\";\nimport { importanceSamplingWGSL } from \"./ShadersInclude/importanceSampling\";\nimport { pbrHelperFunctionsWGSL } from \"./ShadersInclude/pbrHelperFunctions\";\nimport { imageProcessingFunctionsWGSL } from \"./ShadersInclude/imageProcessingFunctions\";\nimport { shadowsFragmentFunctionsWGSL } from \"./ShadersInclude/shadowsFragmentFunctions\";\nimport { harmonicsFunctionsWGSL } from \"./ShadersInclude/harmonicsFunctions\";\nimport { ltcHelperFunctionsWGSL } from \"./ShadersInclude/ltcHelperFunctions\";\nimport { pbrDirectLightingSetupFunctionsWGSL } from \"./ShadersInclude/pbrDirectLightingSetupFunctions\";\nimport { pbrDirectLightingFalloffFunctionsWGSL } from \"./ShadersInclude/pbrDirectLightingFalloffFunctions\";\nimport { pbrBRDFFunctionsWGSL } from \"./ShadersInclude/pbrBRDFFunctions\";\nimport { hdrFilteringFunctionsWGSL } from \"./ShadersInclude/hdrFilteringFunctions\";\nimport { clusteredLightingFunctionsWGSL } from \"./ShadersInclude/clusteredLightingFunctions\";\nimport { pbrBlockReflectance0WGSL } from \"./ShadersInclude/pbrBlockReflectance0\";\nimport { pbrClusteredLightingFunctionsWGSL } from \"./ShadersInclude/pbrClusteredLightingFunctions\";\nimport { pbrDirectLightingFunctionsWGSL } from \"./ShadersInclude/pbrDirectLightingFunctions\";\nimport { pbrIBLFunctionsWGSL } from \"./ShadersInclude/pbrIBLFunctions\";\nimport { bumpFragmentMainFunctionsWGSL } from \"./ShadersInclude/bumpFragmentMainFunctions\";\nimport { bumpFragmentFunctionsWGSL } from \"./ShadersInclude/bumpFragmentFunctions\";\nimport { reflectionFunctionWGSL } from \"./ShadersInclude/reflectionFunction\";\nimport { decalFragmentWGSL } from \"./ShadersInclude/decalFragment\";\nimport { pbrBlockAlbedoOpacityWGSL } from \"./ShadersInclude/pbrBlockAlbedoOpacity\";\nimport { pbrBlockReflectivityWGSL } from \"./ShadersInclude/pbrBlockReflectivity\";\nimport { pbrBlockAmbientOcclusionWGSL } from \"./ShadersInclude/pbrBlockAmbientOcclusion\";\nimport { pbrBlockAlphaFresnelWGSL } from \"./ShadersInclude/pbrBlockAlphaFresnel\";\nimport { pbrBlockAnisotropicWGSL } from \"./ShadersInclude/pbrBlockAnisotropic\";\nimport { pbrBlockReflectionWGSL } from \"./ShadersInclude/pbrBlockReflection\";\nimport { pbrBlockSheenWGSL } from \"./ShadersInclude/pbrBlockSheen\";\nimport { pbrBlockClearcoatWGSL } from \"./ShadersInclude/pbrBlockClearcoat\";\nimport { pbrBlockIridescenceWGSL } from \"./ShadersInclude/pbrBlockIridescence\";\nimport { pbrBlockSubSurfaceWGSL } from \"./ShadersInclude/pbrBlockSubSurface\";\nimport { clipPlaneFragmentWGSL } from \"./ShadersInclude/clipPlaneFragment\";\nimport { pbrBlockNormalGeometricWGSL } from \"./ShadersInclude/pbrBlockNormalGeometric\";\nimport { bumpFragmentWGSL } from \"./ShadersInclude/bumpFragment\";\nimport { pbrBlockNormalFinalWGSL } from \"./ShadersInclude/pbrBlockNormalFinal\";\nimport { depthPrePassWGSL } from \"./ShadersInclude/depthPrePass\";\nimport { pbrBlockLightmapInitWGSL } from \"./ShadersInclude/pbrBlockLightmapInit\";\nimport { pbrBlockGeometryInfoWGSL } from \"./ShadersInclude/pbrBlockGeometryInfo\";\nimport { pbrBlockReflectanceWGSL } from \"./ShadersInclude/pbrBlockReflectance\";\nimport { pbrBlockDirectLightingWGSL } from \"./ShadersInclude/pbrBlockDirectLighting\";\nimport { lightFragmentWGSL } from \"./ShadersInclude/lightFragment\";\nimport { pbrBlockFinalLitComponentsWGSL } from \"./ShadersInclude/pbrBlockFinalLitComponents\";\nimport { pbrBlockFinalUnlitComponentsWGSL } from \"./ShadersInclude/pbrBlockFinalUnlitComponents\";\nimport { pbrBlockFinalColorCompositionWGSL } from \"./ShadersInclude/pbrBlockFinalColorComposition\";\nimport { logDepthFragmentWGSL } from \"./ShadersInclude/logDepthFragment\";\nimport { fogFragmentWGSL } from \"./ShadersInclude/fogFragment\";\nimport { pbrBlockImageProcessingWGSL } from \"./ShadersInclude/pbrBlockImageProcessing\";\nimport { meshBlendTagFragmentOutputWGSL } from \"./ShadersInclude/meshBlendTagFragmentOutput\";\nimport { pbrBlockPrePassWGSL } from \"./ShadersInclude/pbrBlockPrePass\";\nimport { oitFragmentWGSL } from \"./ShadersInclude/oitFragment\";\nimport { pbrDebugWGSL } from \"./ShadersInclude/pbrDebug\";\n\nconst name = \"pbrPixelShader\";\nconst shader = `#define PBR_FRAGMENT_SHADER\n#define CUSTOM_FRAGMENT_BEGIN\n#include<prePassDeclaration>[SCENE_MRT_COUNT]\n#include<oitDeclaration>\n#ifndef FROMLINEARSPACE\n#define FROMLINEARSPACE\n#endif\n#include<pbrUboDeclaration>\n#include<pbrFragmentExtraDeclaration>\n#include<lightUboDeclaration>[0..maxSimultaneousLights]\n#include<pbrFragmentSamplersDeclaration>\n#include<imageProcessingDeclaration>\n#include<clipPlaneFragmentDeclaration>\n#include<logDepthDeclaration>\n#include<fogFragmentDeclaration>\n#include<textureRepetitionFunctions>\n#include<helperFunctions>\n#include<subSurfaceScatteringFunctions>\n#include<importanceSampling>\n#include<pbrHelperFunctions>\n#include<imageProcessingFunctions>\n#include<shadowsFragmentFunctions>\n#include<harmonicsFunctions>\n#include<pbrDirectLightingSetupFunctions>\n#include<pbrDirectLightingFalloffFunctions>\n#include<pbrBRDFFunctions>\n#include<hdrFilteringFunctions>\n#include<pbrDirectLightingFunctions>\n#include<pbrIBLFunctions>\n#include<bumpFragmentMainFunctions>\n#include<bumpFragmentFunctions>\n#ifdef REFLECTION\n#include<reflectionFunction>\n#endif\n#define CUSTOM_FRAGMENT_DEFINITIONS\n#include<pbrBlockAlbedoOpacity>\n#include<pbrBlockReflectivity>\n#include<pbrBlockAmbientOcclusion>\n#include<pbrBlockAlphaFresnel>\n#include<pbrBlockAnisotropic>\n#include<pbrBlockReflection>\n#include<pbrBlockSheen>\n#include<pbrBlockClearcoat>\n#include<pbrBlockIridescence>\n#include<pbrBlockSubSurface>\n@fragment\nfn main(input: FragmentInputs)->FragmentOutputs {\n#define CUSTOM_FRAGMENT_MAIN_BEGIN\n#include<clipPlaneFragment>\n#include<pbrBlockNormalGeometric>\n#ifdef BENTNORMAL\nlet bentNormalBaseW: vec3f=normalW;\n#endif\n#include<bumpFragment>\n#ifdef BENTNORMAL\n#if defined(TANGENT) && defined(NORMAL) && BENTNORMALDIRECTUV==1 && (!defined(BUMP) || BUMPDIRECTUV==1) && !defined(NONUNIFORMSCALING) && !defined(THIN_INSTANCES)\nlet bentNormalTBN: mat3x3f=mat3x3f(input.vTBN0,input.vTBN1,input.vTBN2);\n#else\nlet bentNormalUV: vec2f=select(-fragmentInputs.vBentNormalUV,fragmentInputs.vBentNormalUV,fragmentInputs.frontFacing);let bentNormalTBN: mat3x3f=cotangent_frame(bentNormalBaseW,input.vPositionW,bentNormalUV,uniforms.vTangentSpaceParams);\n#endif\nvar bentNormalW: vec3f=normalize(bentNormalTBN*(TEXRD(bentNormalSampler,bentNormalSamplerSampler,fragmentInputs.vBentNormalUV+uvOffset).rgb*2.0-1.0));let bentNormalStrength: f32=saturate(uniforms.vBentNormalInfos.y);\n#endif\n#include<pbrBlockNormalFinal>\nvar albedoOpacityOut: albedoOpacityOutParams;\n#ifdef ALBEDO\nvar albedoTexture: vec4f=TEXRD(albedoSampler,albedoSamplerSampler,fragmentInputs.vAlbedoUV+uvOffset);\n#endif\n#ifdef BASE_WEIGHT\nvar baseWeightTexture: vec4f=TEXRD(baseWeightSampler,baseWeightSamplerSampler,fragmentInputs.vBaseWeightUV+uvOffset);\n#endif\n#ifdef OPACITY\nvar opacityMap: vec4f=TEXRD(opacitySampler,opacitySamplerSampler,fragmentInputs.vOpacityUV+uvOffset);\n#endif\n#ifdef DECAL\nvar decalColor: vec4f=textureSample(decalSampler,decalSamplerSampler,fragmentInputs.vDecalUV+uvOffset);\n#endif\nalbedoOpacityOut=albedoOpacityBlock(\nuniforms.vAlbedoColor\n#ifdef ALBEDO\n,albedoTexture\n,uniforms.vAlbedoInfos\n#endif\n,uniforms.baseWeight\n#ifdef BASE_WEIGHT\n,baseWeightTexture\n,uniforms.vBaseWeightInfos\n#endif\n#ifdef OPACITY\n,opacityMap\n,uniforms.vOpacityInfos\n#endif\n#ifdef DETAIL\n,detailColor\n,uniforms.vDetailInfos\n#endif\n#ifdef DECAL\n,decalColor\n,uniforms.vDecalInfos\n#endif\n);var surfaceAlbedo: vec3f=albedoOpacityOut.surfaceAlbedo;var alpha: f32=albedoOpacityOut.alpha;\n#define CUSTOM_FRAGMENT_UPDATE_ALPHA\n#define DEPTHPREPASS_SKIP_EARLY_RETURN\n#include<depthPrePass>\n#ifndef DEPTHPREPASS\n#define CUSTOM_FRAGMENT_BEFORE_LIGHTS\nvar aoOut: ambientOcclusionOutParams;\n#ifdef AMBIENT\nvar ambientOcclusionColorMap: vec3f=TEXRD(ambientSampler,ambientSamplerSampler,fragmentInputs.vAmbientUV+uvOffset).rgb;\n#endif\naoOut=ambientOcclusionBlock(\n#ifdef AMBIENT\nambientOcclusionColorMap,\nuniforms.vAmbientInfos\n#endif\n);\n#include<pbrBlockLightmapInit>\n#ifdef UNLIT\nvar diffuseBase: vec3f= vec3f(1.,1.,1.);\n#else\nvar baseColor: vec3f=surfaceAlbedo;var reflectivityOut: reflectivityOutParams;\n#if defined(REFLECTIVITY)\nvar surfaceMetallicOrReflectivityColorMap: vec4f=TEXRD(reflectivitySampler,reflectivitySamplerSampler,fragmentInputs.vReflectivityUV+uvOffset);var baseReflectivity: vec4f=surfaceMetallicOrReflectivityColorMap;\n#ifndef METALLICWORKFLOW\n#ifdef REFLECTIVITY_GAMMA\nsurfaceMetallicOrReflectivityColorMap=toLinearSpaceVec4(surfaceMetallicOrReflectivityColorMap);\n#endif\nsurfaceMetallicOrReflectivityColorMap=vec4f(surfaceMetallicOrReflectivityColorMap.rgb*uniforms.vReflectivityInfos.y,surfaceMetallicOrReflectivityColorMap.a);\n#endif\n#endif\n#if defined(MICROSURFACEMAP)\nvar microSurfaceTexel: vec4f=TEXRD(microSurfaceSampler,microSurfaceSamplerSampler,fragmentInputs.vMicroSurfaceSamplerUV+uvOffset)*uniforms.vMicroSurfaceSamplerInfos.y;\n#endif\n#ifdef BASE_DIFFUSE_ROUGHNESS\nvar baseDiffuseRoughnessTexture: f32=TEXRD(baseDiffuseRoughnessSampler,baseDiffuseRoughnessSamplerSampler,fragmentInputs.vBaseDiffuseRoughnessUV+uvOffset).x;\n#endif\n#ifdef METALLICWORKFLOW\nvar metallicReflectanceFactors: vec4f=uniforms.vMetallicReflectanceFactors;\n#ifdef REFLECTANCE\nvar reflectanceFactorsMap: vec4f=TEXRD(reflectanceSampler,reflectanceSamplerSampler,fragmentInputs.vReflectanceUV+uvOffset);\n#ifdef REFLECTANCE_GAMMA\nreflectanceFactorsMap=toLinearSpaceVec4(reflectanceFactorsMap);\n#endif\nmetallicReflectanceFactors=vec4f(metallicReflectanceFactors.rgb*reflectanceFactorsMap.rgb,metallicReflectanceFactors.a);\n#endif\n#ifdef METALLIC_REFLECTANCE\nvar metallicReflectanceFactorsMap: vec4f=TEXRD(metallicReflectanceSampler,metallicReflectanceSamplerSampler,fragmentInputs.vMetallicReflectanceUV+uvOffset);\n#ifdef METALLIC_REFLECTANCE_GAMMA\nmetallicReflectanceFactorsMap=toLinearSpaceVec4(metallicReflectanceFactorsMap);\n#endif\n#ifndef METALLIC_REFLECTANCE_USE_ALPHA_ONLY\nmetallicReflectanceFactors=vec4f(metallicReflectanceFactors.rgb*metallicReflectanceFactorsMap.rgb,metallicReflectanceFactors.a);\n#endif\nmetallicReflectanceFactors.a*=metallicReflectanceFactorsMap.a;\n#endif\n#endif\nreflectivityOut=reflectivityBlock(\nuniforms.vReflectivityColor\n#ifdef METALLICWORKFLOW\n,surfaceAlbedo\n,metallicReflectanceFactors\n#endif\n,uniforms.baseDiffuseRoughness\n#ifdef BASE_DIFFUSE_ROUGHNESS\n,baseDiffuseRoughnessTexture\n,uniforms.vBaseDiffuseRoughnessInfos\n#endif\n#ifdef REFLECTIVITY\n,uniforms.vReflectivityInfos\n,surfaceMetallicOrReflectivityColorMap\n#endif\n#if defined(METALLICWORKFLOW) && defined(REFLECTIVITY) && defined(AOSTOREINMETALMAPRED)\n,aoOut.ambientOcclusionColor\n#endif\n#ifdef MICROSURFACEMAP\n,microSurfaceTexel\n#endif\n#ifdef DETAIL\n,detailColor\n,uniforms.vDetailInfos\n#endif\n);var microSurface: f32=reflectivityOut.microSurface;var roughness: f32=reflectivityOut.roughness;var diffuseRoughness: f32=reflectivityOut.diffuseRoughness;\n#ifdef METALLICWORKFLOW\nsurfaceAlbedo=reflectivityOut.surfaceAlbedo;\n#endif\n#if defined(METALLICWORKFLOW) && defined(REFLECTIVITY) && defined(AOSTOREINMETALMAPRED)\naoOut.ambientOcclusionColor=reflectivityOut.ambientOcclusionColor;\n#endif\n#ifdef ALPHAFRESNEL\n#if defined(ALPHATEST) || defined(ALPHABLEND)\nvar alphaFresnelOut: alphaFresnelOutParams;alphaFresnelOut=alphaFresnelBlock(\nnormalW,\nviewDirectionW,\nalpha,\nmicroSurface\n);alpha=alphaFresnelOut.alpha;\n#endif\n#endif\n#include<pbrBlockGeometryInfo>\n#ifdef ANISOTROPIC\nvar anisotropicOut: anisotropicOutParams;\n#ifdef ANISOTROPIC_TEXTURE\nvar anisotropyMapData: vec3f=TEXRD(anisotropySampler,anisotropySamplerSampler,fragmentInputs.vAnisotropyUV+uvOffset).rgb*uniforms.vAnisotropyInfos.y;\n#endif\nanisotropicOut=anisotropicBlock(\nuniforms.vAnisotropy,\nroughness,\n#ifdef ANISOTROPIC_TEXTURE\nanisotropyMapData,\n#endif\nTBN,\nnormalW,\nviewDirectionW\n);\n#endif\n#ifdef REFLECTION\nvar reflectionOut: reflectionOutParams;\n#ifndef USE_CUSTOM_REFLECTION\nreflectionOut=reflectionBlock(\nfragmentInputs.vPositionW\n,normalW\n,alphaG\n,uniforms.vReflectionMicrosurfaceInfos\n,uniforms.vReflectionInfos\n,uniforms.vReflectionColor\n#ifdef ANISOTROPIC\n,anisotropicOut\n#endif\n#if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)\n,NdotVUnclamped\n#endif\n#ifdef LINEARSPECULARREFLECTION\n,roughness\n#endif\n,reflectionSampler\n,reflectionSamplerSampler\n#if defined(NORMAL) && defined(USESPHERICALINVERTEX)\n,fragmentInputs.vEnvironmentIrradiance\n#endif\n#if (defined(USESPHERICALFROMREFLECTIONMAP) && (!defined(NORMAL) || !defined(USESPHERICALINVERTEX))) || (defined(USEIRRADIANCEMAP) && defined(REFLECTIONMAP_3D))\n,uniforms.reflectionMatrix\n#endif\n#ifdef USEIRRADIANCEMAP\n,irradianceSampler\n,irradianceSamplerSampler\n#ifdef USE_IRRADIANCE_DOMINANT_DIRECTION\n,uniforms.vReflectionDominantDirection\n#endif\n#endif\n#ifndef LODBASEDMICROSFURACE\n,reflectionLowSampler\n,reflectionLowSamplerSampler\n,reflectionHighSampler\n,reflectionHighSamplerSampler\n#endif\n#ifdef REALTIME_FILTERING\n,uniforms.vReflectionFilteringInfo\n#ifdef IBL_CDF_FILTERING\n,icdfSampler\n,icdfSamplerSampler\n#endif\n#endif\n,viewDirectionW\n,diffuseRoughness\n,surfaceAlbedo\n);\n#else\n#define CUSTOM_REFLECTION\n#endif\n#endif\n#include<pbrBlockReflectance0>\n#ifdef SHEEN\nvar sheenOut: sheenOutParams;\n#ifdef SHEEN_TEXTURE\nvar sheenMapData: vec4f=TEXRD(sheenSampler,sheenSamplerSampler,fragmentInputs.vSheenUV+uvOffset);\n#endif\n#if defined(SHEEN_ROUGHNESS) && defined(SHEEN_TEXTURE_ROUGHNESS) && !defined(SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE)\nvar sheenMapRoughnessData: vec4f=TEXRD(sheenRoughnessSampler,sheenRoughnessSamplerSampler,fragmentInputs.vSheenRoughnessUV+uvOffset)*uniforms.vSheenInfos.w;\n#endif\nsheenOut=sheenBlock(\nuniforms.vSheenColor\n#ifdef SHEEN_ROUGHNESS\n,uniforms.vSheenRoughness\n#if defined(SHEEN_TEXTURE_ROUGHNESS) && !defined(SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE)\n,sheenMapRoughnessData\n#endif\n#endif\n,roughness\n#ifdef SHEEN_TEXTURE\n,sheenMapData\n,uniforms.vSheenInfos.y\n#endif\n,reflectanceF0\n#ifdef SHEEN_LINKWITHALBEDO\n,baseColor\n,surfaceAlbedo\n#endif\n#ifdef ENVIRONMENTBRDF\n,NdotV\n,environmentBrdf\n#endif\n#if defined(REFLECTION) && defined(ENVIRONMENTBRDF)\n,AARoughnessFactors\n,uniforms.vReflectionMicrosurfaceInfos\n,uniforms.vReflectionInfos\n,uniforms.vReflectionColor\n,uniforms.vLightingIntensity\n,reflectionSampler\n,reflectionSamplerSampler\n,reflectionOut.reflectionCoords\n,NdotVUnclamped\n#ifndef LODBASEDMICROSFURACE\n,reflectionLowSampler\n,reflectionLowSamplerSampler\n,reflectionHighSampler\n,reflectionHighSamplerSampler\n#endif\n#ifdef REALTIME_FILTERING\n,uniforms.vReflectionFilteringInfo\n#endif\n#if !defined(REFLECTIONMAP_SKYBOX) && defined(RADIANCEOCCLUSION)\n,seo\n#endif\n#if !defined(REFLECTIONMAP_SKYBOX) && defined(HORIZONOCCLUSION) && defined(BUMP) && defined(REFLECTIONMAP_3D)\n,eho\n#endif\n#endif\n);\n#ifdef SHEEN_LINKWITHALBEDO\nsurfaceAlbedo=sheenOut.surfaceAlbedo;\n#endif\n#endif\n#ifdef CLEARCOAT\n#ifdef CLEARCOAT_TEXTURE\nvar clearCoatMapData: vec2f=TEXRD(clearCoatSampler,clearCoatSamplerSampler,fragmentInputs.vClearCoatUV+uvOffset).rg*uniforms.vClearCoatInfos.y;\n#endif\n#endif\n#ifdef IRIDESCENCE\nvar iridescenceOut: iridescenceOutParams;\n#ifdef IRIDESCENCE_TEXTURE\nvar iridescenceMapData: vec2f=TEXRD(iridescenceSampler,iridescenceSamplerSampler,fragmentInputs.vIridescenceUV+uvOffset).rg*uniforms.vIridescenceInfos.y;\n#endif\n#ifdef IRIDESCENCE_THICKNESS_TEXTURE\nvar iridescenceThicknessMapData: vec2f=TEXRD(iridescenceThicknessSampler,iridescenceThicknessSamplerSampler,fragmentInputs.vIridescenceThicknessUV+uvOffset).rg*uniforms.vIridescenceInfos.w;\n#endif\niridescenceOut=iridescenceBlock(\nuniforms.vIridescenceParams\n,NdotV\n,specularEnvironmentR0\n#ifdef IRIDESCENCE_TEXTURE\n,iridescenceMapData\n#endif\n#ifdef IRIDESCENCE_THICKNESS_TEXTURE\n,iridescenceThicknessMapData\n#endif\n#ifdef CLEARCOAT\n,NdotVUnclamped\n,uniforms.vClearCoatParams\n#ifdef CLEARCOAT_TEXTURE\n,clearCoatMapData\n#endif\n#endif\n);var iridescenceIntensity: f32=iridescenceOut.iridescenceIntensity;specularEnvironmentR0=iridescenceOut.specularEnvironmentR0;\n#endif\nvar clearcoatOut: clearcoatOutParams;\n#ifdef CLEARCOAT\n#if defined(CLEARCOAT_TEXTURE_ROUGHNESS) && !defined(CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE)\nvar clearCoatMapRoughnessData: vec4f=TEXRD(clearCoatRoughnessSampler,clearCoatRoughnessSamplerSampler,fragmentInputs.vClearCoatRoughnessUV+uvOffset)*uniforms.vClearCoatInfos.w;\n#endif\n#if defined(CLEARCOAT_TINT) && defined(CLEARCOAT_TINT_TEXTURE)\nvar clearCoatTintMapData: vec4f=TEXRD(clearCoatTintSampler,clearCoatTintSamplerSampler,fragmentInputs.vClearCoatTintUV+uvOffset);\n#endif\n#ifdef CLEARCOAT_BUMP\nvar clearCoatBumpMapData: vec4f=TEXRD(clearCoatBumpSampler,clearCoatBumpSamplerSampler,fragmentInputs.vClearCoatBumpUV+uvOffset);\n#endif\nclearcoatOut=clearcoatBlock(\nfragmentInputs.vPositionW\n,geometricNormalW\n,viewDirectionW\n,uniforms.vClearCoatParams\n#if defined(CLEARCOAT_TEXTURE_ROUGHNESS) && !defined(CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE)\n,clearCoatMapRoughnessData\n#endif\n,specularEnvironmentR0\n#ifdef CLEARCOAT_TEXTURE\n,clearCoatMapData\n#endif\n#ifdef CLEARCOAT_TINT\n,uniforms.vClearCoatTintParams\n,uniforms.clearCoatColorAtDistance\n,uniforms.vClearCoatRefractionParams\n#ifdef CLEARCOAT_TINT_TEXTURE\n,clearCoatTintMapData\n#endif\n#endif\n#ifdef CLEARCOAT_BUMP\n,uniforms.vClearCoatBumpInfos\n,clearCoatBumpMapData\n,fragmentInputs.vClearCoatBumpUV\n#if defined(TANGENT) && defined(NORMAL)\n,mat3x3<f32>(input.vTBN0,input.vTBN1,input.vTBN2)\n#else\n,uniforms.vClearCoatTangentSpaceParams\n#endif\n#ifdef OBJECTSPACE_NORMALMAP\n,uniforms.normalMatrix\n#endif\n#endif\n#if defined(FORCENORMALFORWARD) && defined(NORMAL)\n,faceNormal\n#endif\n#ifdef REFLECTION\n,uniforms.vReflectionMicrosurfaceInfos\n,uniforms.vReflectionInfos\n,uniforms.vReflectionColor\n,uniforms.vLightingIntensity\n,reflectionSampler\n,reflectionSamplerSampler\n#ifndef LODBASEDMICROSFURACE\n,reflectionLowSampler\n,reflectionLowSamplerSampler\n,reflectionHighSampler\n,reflectionHighSamplerSampler\n#endif\n#ifdef REALTIME_FILTERING\n,uniforms.vReflectionFilteringInfo\n#endif\n#endif\n#if defined(CLEARCOAT_BUMP) || defined(TWOSIDEDLIGHTING)\n,select(-1.,1.,fragmentInputs.frontFacing)\n#endif\n);\n#else\nclearcoatOut.specularEnvironmentR0=specularEnvironmentR0;\n#endif\n#include<pbrBlockReflectance>\nvar subSurfaceOut: subSurfaceOutParams;\n#ifdef SUBSURFACE\n#ifdef SS_THICKNESSANDMASK_TEXTURE\nvar thicknessMap: vec4f=TEXRD(thicknessSampler,thicknessSamplerSampler,fragmentInputs.vThicknessUV+uvOffset);\n#endif\n#ifdef SS_REFRACTIONINTENSITY_TEXTURE\nvar refractionIntensityMap: vec4f=TEXRD(refractionIntensitySampler,refractionIntensitySamplerSampler,fragmentInputs.vRefractionIntensityUV+uvOffset);\n#endif\n#ifdef SS_TRANSLUCENCYINTENSITY_TEXTURE\nvar translucencyIntensityMap: vec4f=TEXRD(translucencyIntensitySampler,translucencyIntensitySamplerSampler,fragmentInputs.vTranslucencyIntensityUV+uvOffset);\n#endif\n#ifdef SS_TRANSLUCENCYCOLOR_TEXTURE\nvar translucencyColorMap: vec4f=TEXRD(translucencyColorSampler,translucencyColorSamplerSampler,fragmentInputs.vTranslucencyColorUV+uvOffset);\n#ifdef SS_TRANSLUCENCYCOLOR_TEXTURE_GAMMA\ntranslucencyColorMap=toLinearSpaceVec4(translucencyColorMap);\n#endif\n#endif\nsubSurfaceOut=subSurfaceBlock(\nuniforms.vSubSurfaceIntensity\n,uniforms.vThicknessParam\n,uniforms.vTintColor\n,normalW\n#ifdef LEGACY_SPECULAR_ENERGY_CONSERVATION\n,vec3f(max(colorSpecularEnvironmentReflectance.r,max(colorSpecularEnvironmentReflectance.g,colorSpecularEnvironmentReflectance.b)))\n#else\n,baseSpecularEnvironmentReflectance\n#endif\n#ifdef SS_THICKNESSANDMASK_TEXTURE\n,thicknessMap\n#endif\n#ifdef SS_REFRACTIONINTENSITY_TEXTURE\n,refractionIntensityMap\n#endif\n#ifdef SS_TRANSLUCENCYINTENSITY_TEXTURE\n,translucencyIntensityMap\n#endif\n#ifdef REFLECTION\n#ifdef SS_TRANSLUCENCY\n,uniforms.reflectionMatrix\n#ifdef USESPHERICALFROMREFLECTIONMAP\n#if !defined(NORMAL) || !defined(USESPHERICALINVERTEX)\n,reflectionOut.irradianceVector\n#endif\n#if defined(REALTIME_FILTERING)\n,reflectionSampler\n,reflectionSamplerSampler\n,uniforms.vReflectionFilteringInfo\n#ifdef IBL_CDF_FILTERING\n,icdfSampler\n,icdfSamplerSampler\n#endif\n#endif\n#endif\n#ifdef USEIRRADIANCEMAP\n,irradianceSampler\n,irradianceSamplerSampler\n#endif\n#endif\n#endif\n#if defined(SS_REFRACTION) || defined(SS_TRANSLUCENCY)\n,surfaceAlbedo\n#endif\n#ifdef SS_REFRACTION\n,fragmentInputs.vPositionW\n,viewDirectionW\n,scene.view\n,uniforms.vRefractionInfos\n,uniforms.refractionMatrix\n,uniforms.vRefractionMicrosurfaceInfos\n,uniforms.vLightingIntensity\n#ifdef SS_LINKREFRACTIONTOTRANSPARENCY\n,alpha\n#endif\n#ifdef SS_LODINREFRACTIONALPHA\n,NdotVUnclamped\n#endif\n#ifdef SS_LINEARSPECULARREFRACTION\n,roughness\n#endif\n,alphaG\n,refractionSampler\n,refractionSamplerSampler\n#ifndef LODBASEDMICROSFURACE\n,refractionLowSampler\n,refractionLowSamplerSampler\n,refractionHighSampler\n,refractionHighSamplerSampler\n#endif\n#ifdef ANISOTROPIC\n,anisotropicOut\n#endif\n#ifdef REALTIME_FILTERING\n,uniforms.vRefractionFilteringInfo\n#endif\n#ifdef SS_USE_LOCAL_REFRACTIONMAP_CUBIC\n,uniforms.vRefractionPosition\n,uniforms.vRefractionSize\n#endif\n#ifdef SS_DISPERSION\n,uniforms.dispersion\n#endif\n#endif\n#ifdef SS_TRANSLUCENCY\n,uniforms.vDiffusionDistance\n,uniforms.vTranslucencyColor\n#ifdef SS_TRANSLUCENCYCOLOR_TEXTURE\n,translucencyColorMap\n#endif\n#endif\n);\n#ifdef SS_REFRACTION\nsurfaceAlbedo=subSurfaceOut.surfaceAlbedo;\n#ifdef SS_LINKREFRACTIONTOTRANSPARENCY\nalpha=subSurfaceOut.alpha;\n#endif\n#endif\n#else\nsubSurfaceOut.specularEnvironmentReflectance=colorSpecularEnvironmentReflectance;\n#endif\n#include<pbrBlockDirectLighting>\n#include<lightFragment>[0..maxSimultaneousLights]\n#include<pbrBlockFinalLitComponents>\n#endif \n#include<pbrBlockFinalUnlitComponents>\n#define CUSTOM_FRAGMENT_BEFORE_FINALCOLORCOMPOSITION\n#include<pbrBlockFinalColorComposition>\n#include<logDepthFragment>\n#include<fogFragment>(color,finalColor)\n#include<pbrBlockImageProcessing>\n#define CUSTOM_FRAGMENT_BEFORE_FRAGCOLOR\n#ifdef PREPASS\n#include<pbrBlockPrePass>\n#endif\n#if !defined(PREPASS) && !defined(ORDER_INDEPENDENT_TRANSPARENCY)\nfragmentOutputs.color=finalColor;\n#endif\n#include<oitFragment>\n#if ORDER_INDEPENDENT_TRANSPARENCY\nif (fragDepth==nearestDepth) {fragmentOutputs.frontColor=vec4f(fragmentOutputs.frontColor.rgb+finalColor.rgb*finalColor.a*alphaMultiplier,1.0-alphaMultiplier*(1.0-finalColor.a));} else {fragmentOutputs.backColor+=finalColor;}\n#endif\n#include<pbrDebug>\n#define CUSTOM_FRAGMENT_MAIN_END\n#endif\n}\n`;\n// Sideeffect\nif (!ShaderStore.ShadersStoreWGSL[name]) {\n ShaderStore.ShadersStoreWGSL[name] = shader;\n}\nconst includes = [objectIdFunctionsWGSL, prePassDeclarationWGSL, oitDeclarationWGSL, sceneUboDeclarationWGSL, meshUboDeclarationWGSL, pbrUboDeclarationWGSL, mainUVVaryingDeclarationWGSL, pbrFragmentExtraDeclarationWGSL, lightUboDeclarationWGSL, samplerFragmentDeclarationWGSL, samplerFragmentAlternateDeclarationWGSL, pbrFragmentReflectionDeclarationWGSL, pbrFragmentSamplersDeclarationWGSL, imageProcessingDeclarationWGSL, clipPlaneFragmentDeclarationWGSL, logDepthDeclarationWGSL, fogFragmentDeclarationWGSL, textureRepetitionFunctionsWGSL, helperFunctionsWGSL, subSurfaceScatteringFunctionsWGSL, importanceSamplingWGSL, pbrHelperFunctionsWGSL, imageProcessingFunctionsWGSL, shadowsFragmentFunctionsWGSL, harmonicsFunctionsWGSL, ltcHelperFunctionsWGSL, pbrDirectLightingSetupFunctionsWGSL, pbrDirectLightingFalloffFunctionsWGSL, pbrBRDFFunctionsWGSL, hdrFilteringFunctionsWGSL, clusteredLightingFunctionsWGSL, pbrBlockReflectance0WGSL, pbrClusteredLightingFunctionsWGSL, pbrDirectLightingFunctionsWGSL, pbrIBLFunctionsWGSL, bumpFragmentMainFunctionsWGSL, bumpFragmentFunctionsWGSL, reflectionFunctionWGSL, decalFragmentWGSL, pbrBlockAlbedoOpacityWGSL, pbrBlockReflectivityWGSL, pbrBlockAmbientOcclusionWGSL, pbrBlockAlphaFresnelWGSL, pbrBlockAnisotropicWGSL, pbrBlockReflectionWGSL, pbrBlockSheenWGSL, pbrBlockClearcoatWGSL, pbrBlockIridescenceWGSL, pbrBlockSubSurfaceWGSL, clipPlaneFragmentWGSL, pbrBlockNormalGeometricWGSL, bumpFragmentWGSL, pbrBlockNormalFinalWGSL, depthPrePassWGSL, pbrBlockLightmapInitWGSL, pbrBlockGeometryInfoWGSL, pbrBlockReflectanceWGSL, pbrBlockDirectLightingWGSL, lightFragmentWGSL, pbrBlockFinalLitComponentsWGSL, pbrBlockFinalUnlitComponentsWGSL, pbrBlockFinalColorCompositionWGSL, logDepthFragmentWGSL, fogFragmentWGSL, pbrBlockImageProcessingWGSL, meshBlendTagFragmentOutputWGSL, pbrBlockPrePassWGSL, oitFragmentWGSL, pbrDebugWGSL];\nfor (const inc of includes) {\n if (!ShaderStore.IncludesShadersStoreWGSL[inc.name]) {\n ShaderStore.IncludesShadersStoreWGSL[inc.name] = inc.shader;\n }\n}\n\n/** @internal */\nexport const pbrPixelShaderWGSL = { name, shader };\n"]}
@@ -68,6 +68,7 @@ attribute color: vec4f;
68
68
  #include<samplerVertexDeclaration>(_DEFINENAME_,BASE_DIFFUSE_ROUGHNESS,_VARYINGNAME_,BaseDiffuseRoughness)
69
69
  #include<samplerVertexDeclaration>(_DEFINENAME_,DETAIL,_VARYINGNAME_,Detail)
70
70
  #include<samplerVertexDeclaration>(_DEFINENAME_,AMBIENT,_VARYINGNAME_,Ambient)
71
+ #include<samplerVertexDeclaration>(_DEFINENAME_,BENTNORMAL,_VARYINGNAME_,BentNormal)
71
72
  #include<samplerVertexDeclaration>(_DEFINENAME_,OPACITY,_VARYINGNAME_,Opacity)
72
73
  #include<samplerVertexDeclaration>(_DEFINENAME_,EMISSIVE,_VARYINGNAME_,Emissive)
73
74
  #include<samplerVertexDeclaration>(_DEFINENAME_,LIGHTMAP,_VARYINGNAME_,Lightmap)
@@ -180,7 +181,7 @@ vertexOutputs.vPositionUVW=positionUpdated;
180
181
  #define CUSTOM_VERTEX_UPDATE_NORMAL
181
182
  #include<instancesVertex>
182
183
  #if defined(PREPASS) && ((defined(PREPASS_VELOCITY) || defined(PREPASS_VELOCITY_LINEAR)) && !defined(BONES_VELOCITY_ENABLED)
183
- vertexOutputs.vCurrentPosition=scene.viewProjection*finalWorld*vec4f(positionUpdated,1.0);vertexOutputs.vPreviousPosition=uniforms.previousViewProjection*finalPreviousWorld*vec4f(positionUpdated,1.0);
184
+ vertexOutputs.vCurrentPosition=scene.viewProjection*finalWorld*vec4f(positionUpdated,1.0);vertexOutputs.vPreviousPosition=scene.previousViewProjection*finalPreviousWorld*vec4f(positionUpdated,1.0);
184
185
  #endif
185
186
  #ifdef USE_VERTEX_PULLING
186
187
  #include<bonesVertex>(vertexInputs.matricesIndices,vp_matricesIndices,vertexInputs.matricesWeights,vp_matricesWeights,vertexInputs.matricesIndicesExtra,vp_matricesIndicesExtra,vertexInputs.matricesWeightsExtra,vp_matricesWeightsExtra)
@@ -252,6 +253,7 @@ vertexOutputs.vMainUV2=uv2Updated;
252
253
  #include<samplerVertexImplementation>(_DEFINENAME_,BASE_DIFFUSE_ROUGHNESS,_VARYINGNAME_,BaseDiffuseRoughness,_MATRIXNAME_,baseDiffuseRoughness,_INFONAME_,BaseDiffuseRoughnessInfos.x)
253
254
  #include<samplerVertexImplementation>(_DEFINENAME_,DETAIL,_VARYINGNAME_,Detail,_MATRIXNAME_,detail,_INFONAME_,DetailInfos.x)
254
255
  #include<samplerVertexImplementation>(_DEFINENAME_,AMBIENT,_VARYINGNAME_,Ambient,_MATRIXNAME_,ambient,_INFONAME_,AmbientInfos.x)
256
+ #include<samplerVertexImplementation>(_DEFINENAME_,BENTNORMAL,_VARYINGNAME_,BentNormal,_MATRIXNAME_,bentNormal,_INFONAME_,BentNormalInfos.x)
255
257
  #include<samplerVertexImplementation>(_DEFINENAME_,OPACITY,_VARYINGNAME_,Opacity,_MATRIXNAME_,opacity,_INFONAME_,OpacityInfos.x)
256
258
  #include<samplerVertexImplementation>(_DEFINENAME_,EMISSIVE,_VARYINGNAME_,Emissive,_MATRIXNAME_,emissive,_INFONAME_,EmissiveInfos.x)
257
259
  #include<samplerVertexImplementation>(_DEFINENAME_,LIGHTMAP,_VARYINGNAME_,Lightmap,_MATRIXNAME_,lightmap,_INFONAME_,LightmapInfos.x)
@@ -1 +1 @@
1
- {"version":3,"file":"pbr.vertex.js","sourceRoot":"","sources":["../../../../dev/core/src/ShadersWGSL/pbr.vertex.ts"],"names":[],"mappings":"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","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../Engines/shaderStore\";\nimport { sceneUboDeclarationWGSL } from \"./ShadersInclude/sceneUboDeclaration\";\nimport { meshUboDeclarationWGSL } from \"./ShadersInclude/meshUboDeclaration\";\nimport { pbrUboDeclarationWGSL } from \"./ShadersInclude/pbrUboDeclaration\";\nimport { uvAttributeDeclarationWGSL } from \"./ShadersInclude/uvAttributeDeclaration\";\nimport { mainUVVaryingDeclarationWGSL } from \"./ShadersInclude/mainUVVaryingDeclaration\";\nimport { helperFunctionsWGSL } from \"./ShadersInclude/helperFunctions\";\nimport { pbrBRDFFunctionsWGSL } from \"./ShadersInclude/pbrBRDFFunctions\";\nimport { bonesDeclarationWGSL } from \"./ShadersInclude/bonesDeclaration\";\nimport { bakedVertexAnimationDeclarationWGSL } from \"./ShadersInclude/bakedVertexAnimationDeclaration\";\nimport { instancesDeclarationWGSL } from \"./ShadersInclude/instancesDeclaration\";\nimport { prePassVertexDeclarationWGSL } from \"./ShadersInclude/prePassVertexDeclaration\";\nimport { samplerVertexDeclarationWGSL } from \"./ShadersInclude/samplerVertexDeclaration\";\nimport { harmonicsFunctionsWGSL } from \"./ShadersInclude/harmonicsFunctions\";\nimport { bumpVertexDeclarationWGSL } from \"./ShadersInclude/bumpVertexDeclaration\";\nimport { clipPlaneVertexDeclarationWGSL } from \"./ShadersInclude/clipPlaneVertexDeclaration\";\nimport { fogVertexDeclarationWGSL } from \"./ShadersInclude/fogVertexDeclaration\";\nimport { lightVxUboDeclarationWGSL } from \"./ShadersInclude/lightVxUboDeclaration\";\nimport { morphTargetsVertexGlobalDeclarationWGSL } from \"./ShadersInclude/morphTargetsVertexGlobalDeclaration\";\nimport { morphTargetsVertexDeclarationWGSL } from \"./ShadersInclude/morphTargetsVertexDeclaration\";\nimport { logDepthDeclarationWGSL } from \"./ShadersInclude/logDepthDeclaration\";\nimport { vertexPullingDeclarationWGSL } from \"./ShadersInclude/vertexPullingDeclaration\";\nimport { vertexPullingVertexWGSL } from \"./ShadersInclude/vertexPullingVertex\";\nimport { morphTargetsVertexGlobalWGSL } from \"./ShadersInclude/morphTargetsVertexGlobal\";\nimport { morphTargetsVertexWGSL } from \"./ShadersInclude/morphTargetsVertex\";\nimport { instancesVertexWGSL } from \"./ShadersInclude/instancesVertex\";\nimport { bonesVertexWGSL } from \"./ShadersInclude/bonesVertex\";\nimport { bakedVertexAnimationWGSL } from \"./ShadersInclude/bakedVertexAnimation\";\nimport { prePassVertexWGSL } from \"./ShadersInclude/prePassVertex\";\nimport { uvVariableDeclarationWGSL } from \"./ShadersInclude/uvVariableDeclaration\";\nimport { samplerVertexImplementationWGSL } from \"./ShadersInclude/samplerVertexImplementation\";\nimport { bumpVertexWGSL } from \"./ShadersInclude/bumpVertex\";\nimport { clipPlaneVertexWGSL } from \"./ShadersInclude/clipPlaneVertex\";\nimport { fogVertexWGSL } from \"./ShadersInclude/fogVertex\";\nimport { shadowsVertexWGSL } from \"./ShadersInclude/shadowsVertex\";\nimport { vertexColorMixingWGSL } from \"./ShadersInclude/vertexColorMixing\";\nimport { logDepthVertexWGSL } from \"./ShadersInclude/logDepthVertex\";\n\nconst name = \"pbrVertexShader\";\nconst shader = `#define PBR_VERTEX_SHADER\n#include<pbrUboDeclaration>\n#define CUSTOM_VERTEX_BEGIN\n#ifndef USE_VERTEX_PULLING\nattribute position: vec3f;\n#ifdef NORMAL\nattribute normal: vec3f;\n#endif\n#ifdef TANGENT\nattribute tangent: vec4f;\n#endif\n#ifdef UV1\nattribute uv: vec2f;\n#endif\n#include<uvAttributeDeclaration>[2..7]\n#ifdef VERTEXCOLOR\nattribute color: vec4f;\n#endif\n#endif\n#include<mainUVVaryingDeclaration>[1..7]\n#include<helperFunctions>\n#include<pbrBRDFFunctions>\n#include<bonesDeclaration>\n#include<bakedVertexAnimationDeclaration>\n#include<instancesDeclaration>\n#include<prePassVertexDeclaration>\n#include<samplerVertexDeclaration>(_DEFINENAME_,ALBEDO,_VARYINGNAME_,Albedo)\n#include<samplerVertexDeclaration>(_DEFINENAME_,BASE_WEIGHT,_VARYINGNAME_,BaseWeight)\n#include<samplerVertexDeclaration>(_DEFINENAME_,BASE_DIFFUSE_ROUGHNESS,_VARYINGNAME_,BaseDiffuseRoughness)\n#include<samplerVertexDeclaration>(_DEFINENAME_,DETAIL,_VARYINGNAME_,Detail)\n#include<samplerVertexDeclaration>(_DEFINENAME_,AMBIENT,_VARYINGNAME_,Ambient)\n#include<samplerVertexDeclaration>(_DEFINENAME_,OPACITY,_VARYINGNAME_,Opacity)\n#include<samplerVertexDeclaration>(_DEFINENAME_,EMISSIVE,_VARYINGNAME_,Emissive)\n#include<samplerVertexDeclaration>(_DEFINENAME_,LIGHTMAP,_VARYINGNAME_,Lightmap)\n#include<samplerVertexDeclaration>(_DEFINENAME_,REFLECTIVITY,_VARYINGNAME_,Reflectivity)\n#include<samplerVertexDeclaration>(_DEFINENAME_,MICROSURFACEMAP,_VARYINGNAME_,MicroSurfaceSampler)\n#include<samplerVertexDeclaration>(_DEFINENAME_,METALLIC_REFLECTANCE,_VARYINGNAME_,MetallicReflectance)\n#include<samplerVertexDeclaration>(_DEFINENAME_,REFLECTANCE,_VARYINGNAME_,Reflectance)\n#include<samplerVertexDeclaration>(_DEFINENAME_,BUMP,_VARYINGNAME_,Bump)\n#include<samplerVertexDeclaration>(_DEFINENAME_,DECAL,_VARYINGNAME_,Decal)\n#ifdef CLEARCOAT\n#include<samplerVertexDeclaration>(_DEFINENAME_,CLEARCOAT_TEXTURE,_VARYINGNAME_,ClearCoat)\n#include<samplerVertexDeclaration>(_DEFINENAME_,CLEARCOAT_TEXTURE_ROUGHNESS,_VARYINGNAME_,ClearCoatRoughness)\n#include<samplerVertexDeclaration>(_DEFINENAME_,CLEARCOAT_BUMP,_VARYINGNAME_,ClearCoatBump)\n#include<samplerVertexDeclaration>(_DEFINENAME_,CLEARCOAT_TINT_TEXTURE,_VARYINGNAME_,ClearCoatTint)\n#endif\n#ifdef IRIDESCENCE\n#include<samplerVertexDeclaration>(_DEFINENAME_,IRIDESCENCE_TEXTURE,_VARYINGNAME_,Iridescence)\n#include<samplerVertexDeclaration>(_DEFINENAME_,IRIDESCENCE_THICKNESS_TEXTURE,_VARYINGNAME_,IridescenceThickness)\n#endif\n#ifdef SHEEN\n#include<samplerVertexDeclaration>(_DEFINENAME_,SHEEN_TEXTURE,_VARYINGNAME_,Sheen)\n#include<samplerVertexDeclaration>(_DEFINENAME_,SHEEN_TEXTURE_ROUGHNESS,_VARYINGNAME_,SheenRoughness)\n#endif\n#ifdef ANISOTROPIC\n#include<samplerVertexDeclaration>(_DEFINENAME_,ANISOTROPIC_TEXTURE,_VARYINGNAME_,Anisotropy)\n#endif\n#ifdef SUBSURFACE\n#include<samplerVertexDeclaration>(_DEFINENAME_,SS_THICKNESSANDMASK_TEXTURE,_VARYINGNAME_,Thickness)\n#include<samplerVertexDeclaration>(_DEFINENAME_,SS_REFRACTIONINTENSITY_TEXTURE,_VARYINGNAME_,RefractionIntensity)\n#include<samplerVertexDeclaration>(_DEFINENAME_,SS_TRANSLUCENCYINTENSITY_TEXTURE,_VARYINGNAME_,TranslucencyIntensity)\n#include<samplerVertexDeclaration>(_DEFINENAME_,SS_TRANSLUCENCYCOLOR_TEXTURE,_VARYINGNAME_,TranslucencyColor)\n#endif\nvarying vPositionW: vec3f;\n#if DEBUGMODE>0\nvarying vClipSpacePosition: vec4f;\n#endif\n#ifdef NORMAL\nvarying vNormalW: vec3f;\n#if defined(USESPHERICALFROMREFLECTIONMAP) && defined(USESPHERICALINVERTEX)\nvarying vEnvironmentIrradiance: vec3f;\n#include<harmonicsFunctions>\n#endif\n#endif\n#if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES)\nvarying vColor: vec4f;\n#endif\n#include<bumpVertexDeclaration>\n#include<clipPlaneVertexDeclaration>\n#include<fogVertexDeclaration>\n#include<lightVxUboDeclaration>[0..maxSimultaneousLights]\n#include<morphTargetsVertexGlobalDeclaration>\n#include<morphTargetsVertexDeclaration>[0..maxSimultaneousMorphTargets]\n#ifdef REFLECTIONMAP_SKYBOX\nvarying vPositionUVW: vec3f;\n#endif\n#if defined(REFLECTIONMAP_EQUIRECTANGULAR_FIXED) || defined(REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED)\nvarying vDirectionW: vec3f;\n#endif\n#if defined(CLUSTLIGHT_BATCH) && CLUSTLIGHT_BATCH>0\nvarying vViewDepth: f32;\n#endif\n#include<logDepthDeclaration>\n#include<vertexPullingDeclaration>\n#define CUSTOM_VERTEX_DEFINITIONS\n@vertex\nfn main(input : VertexInputs)->FragmentInputs {\n#define CUSTOM_VERTEX_MAIN_BEGIN\n#ifdef USE_VERTEX_PULLING\nvar positionUpdated: vec3f=vec3f(0.0);\n#ifdef NORMAL\nvar normalUpdated: vec3f=vec3f(0.0);\n#endif\n#ifdef TANGENT\nvar tangentUpdated: vec4f=vec4f(0.0);\n#endif\n#ifdef UV1\nvar uvUpdated: vec2f=vec2f(0.0);\n#endif\n#ifdef UV2\nvar uv2Updated: vec2f=vec2f(0.0);\n#endif\n#ifdef VERTEXCOLOR\nvar colorUpdated: vec4f=vec4f(0.0);\n#endif\n#else\nvar positionUpdated: vec3f=vertexInputs.position;\n#ifdef NORMAL\nvar normalUpdated: vec3f=vertexInputs.normal;\n#endif\n#ifdef TANGENT\nvar tangentUpdated: vec4f=vertexInputs.tangent;\n#endif\n#ifdef UV1\nvar uvUpdated: vec2f=vertexInputs.uv;\n#endif\n#ifdef UV2\nvar uv2Updated: vec2f=vertexInputs.uv2;\n#endif\n#ifdef VERTEXCOLOR\nvar colorUpdated: vec4f=vertexInputs.color;\n#endif\n#endif\n#include<vertexPullingVertex>\n#include<morphTargetsVertexGlobal>\n#include<morphTargetsVertex>[0..maxSimultaneousMorphTargets]\n#ifdef REFLECTIONMAP_SKYBOX\nvertexOutputs.vPositionUVW=positionUpdated;\n#endif\n#define CUSTOM_VERTEX_UPDATE_POSITION\n#define CUSTOM_VERTEX_UPDATE_NORMAL\n#include<instancesVertex>\n#if defined(PREPASS) && ((defined(PREPASS_VELOCITY) || defined(PREPASS_VELOCITY_LINEAR)) && !defined(BONES_VELOCITY_ENABLED)\nvertexOutputs.vCurrentPosition=scene.viewProjection*finalWorld*vec4f(positionUpdated,1.0);vertexOutputs.vPreviousPosition=uniforms.previousViewProjection*finalPreviousWorld*vec4f(positionUpdated,1.0);\n#endif\n#ifdef USE_VERTEX_PULLING\n#include<bonesVertex>(vertexInputs.matricesIndices,vp_matricesIndices,vertexInputs.matricesWeights,vp_matricesWeights,vertexInputs.matricesIndicesExtra,vp_matricesIndicesExtra,vertexInputs.matricesWeightsExtra,vp_matricesWeightsExtra)\n#include<bakedVertexAnimation>(vertexInputs.matricesIndices,vp_matricesIndices,vertexInputs.matricesWeights,vp_matricesWeights,vertexInputs.matricesIndicesExtra,vp_matricesIndicesExtra,vertexInputs.matricesWeightsExtra,vp_matricesWeightsExtra)\n#else\n#include<bonesVertex>\n#include<bakedVertexAnimation>\n#endif\nvar worldPos: vec4f=finalWorld* vec4f(positionUpdated,1.0);vertexOutputs.vPositionW= worldPos.xyz;\n#ifdef PREPASS\n#include<prePassVertex>\n#endif\n#ifdef NORMAL\nvar normalWorld: mat3x3f= mat3x3f(finalWorld[0].xyz,finalWorld[1].xyz,finalWorld[2].xyz);\n#if defined(INSTANCES) && defined(THIN_INSTANCES)\nvertexOutputs.vNormalW=normalUpdated/ vec3f(dot(normalWorld[0],normalWorld[0]),dot(normalWorld[1],normalWorld[1]),dot(normalWorld[2],normalWorld[2]));vertexOutputs.vNormalW=normalize(normalWorld*vertexOutputs.vNormalW);\n#else\n#ifdef NONUNIFORMSCALING\nnormalWorld=transposeMat3(inverseMat3(normalWorld));\n#endif\nvertexOutputs.vNormalW=normalize(normalWorld*normalUpdated);\n#endif\n#if defined(USESPHERICALFROMREFLECTIONMAP) && defined(USESPHERICALINVERTEX)\n#if BASE_DIFFUSE_MODEL != BRDF_DIFFUSE_MODEL_LAMBERT && BASE_DIFFUSE_MODEL != BRDF_DIFFUSE_MODEL_LEGACY\nvar viewDirectionW: vec3f=normalize(scene.vEyePosition.xyz-vertexOutputs.vPositionW);var NdotV: f32=max(dot(vertexOutputs.vNormalW,viewDirectionW),0.0);var roughNormal: vec3f=mix(vertexOutputs.vNormalW,viewDirectionW,(0.5*(1.0-NdotV))*uniforms.baseDiffuseRoughness);var reflectionVector: vec3f= (uniforms.reflectionMatrix* vec4f(roughNormal,0)).xyz;\n#else\nvar reflectionVector: vec3f= (uniforms.reflectionMatrix* vec4f(vertexOutputs.vNormalW,0)).xyz;\n#endif\n#ifdef REFLECTIONMAP_OPPOSITEZ\nreflectionVector.z*=-1.0;\n#endif\nvertexOutputs.vEnvironmentIrradiance=computeEnvironmentIrradiance(reflectionVector);\n#endif\n#endif\n#define CUSTOM_VERTEX_UPDATE_WORLDPOS\n#ifdef MULTIVIEW\nif (gl_ViewID_OVR==0u) {vertexOutputs.position=scene.viewProjection*worldPos;} else {vertexOutputs.position=scene.viewProjectionR*worldPos;}\n#else\nvertexOutputs.position=scene.viewProjection*worldPos;\n#endif\n#if DEBUGMODE>0\nvertexOutputs.vClipSpacePosition=vertexOutputs.position;\n#endif\n#if defined(REFLECTIONMAP_EQUIRECTANGULAR_FIXED) || defined(REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED)\nvertexOutputs.vDirectionW=normalize((finalWorld*vec4f(positionUpdated,0.0)).xyz);\n#endif\n#if defined(CLUSTLIGHT_BATCH) && CLUSTLIGHT_BATCH>0\n#ifdef RIGHT_HANDED\nvertexOutputs.vViewDepth=-(scene.view*worldPos).z;\n#else\nvertexOutputs.vViewDepth=(scene.view*worldPos).z;\n#endif\n#endif\n#ifndef UV1\nvar uvUpdated: vec2f= vec2f(0.,0.);\n#endif\n#ifdef MAINUV1\nvertexOutputs.vMainUV1=uvUpdated;\n#endif\n#ifndef UV2\nvar uv2Updated: vec2f= vec2f(0.,0.);\n#endif\n#ifdef MAINUV2\nvertexOutputs.vMainUV2=uv2Updated;\n#endif\n#include<uvVariableDeclaration>[3..7]\n#include<samplerVertexImplementation>(_DEFINENAME_,ALBEDO,_VARYINGNAME_,Albedo,_MATRIXNAME_,albedo,_INFONAME_,AlbedoInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,BASE_WEIGHT,_VARYINGNAME_,BaseWeight,_MATRIXNAME_,baseWeight,_INFONAME_,BaseWeightInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,BASE_DIFFUSE_ROUGHNESS,_VARYINGNAME_,BaseDiffuseRoughness,_MATRIXNAME_,baseDiffuseRoughness,_INFONAME_,BaseDiffuseRoughnessInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,DETAIL,_VARYINGNAME_,Detail,_MATRIXNAME_,detail,_INFONAME_,DetailInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,AMBIENT,_VARYINGNAME_,Ambient,_MATRIXNAME_,ambient,_INFONAME_,AmbientInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,OPACITY,_VARYINGNAME_,Opacity,_MATRIXNAME_,opacity,_INFONAME_,OpacityInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,EMISSIVE,_VARYINGNAME_,Emissive,_MATRIXNAME_,emissive,_INFONAME_,EmissiveInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,LIGHTMAP,_VARYINGNAME_,Lightmap,_MATRIXNAME_,lightmap,_INFONAME_,LightmapInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,REFLECTIVITY,_VARYINGNAME_,Reflectivity,_MATRIXNAME_,reflectivity,_INFONAME_,ReflectivityInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,MICROSURFACEMAP,_VARYINGNAME_,MicroSurfaceSampler,_MATRIXNAME_,microSurfaceSampler,_INFONAME_,MicroSurfaceSamplerInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,METALLIC_REFLECTANCE,_VARYINGNAME_,MetallicReflectance,_MATRIXNAME_,metallicReflectance,_INFONAME_,MetallicReflectanceInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,REFLECTANCE,_VARYINGNAME_,Reflectance,_MATRIXNAME_,reflectance,_INFONAME_,ReflectanceInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,BUMP,_VARYINGNAME_,Bump,_MATRIXNAME_,bump,_INFONAME_,BumpInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,DECAL,_VARYINGNAME_,Decal,_MATRIXNAME_,decal,_INFONAME_,DecalInfos.x)\n#ifdef CLEARCOAT\n#include<samplerVertexImplementation>(_DEFINENAME_,CLEARCOAT_TEXTURE,_VARYINGNAME_,ClearCoat,_MATRIXNAME_,clearCoat,_INFONAME_,ClearCoatInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,CLEARCOAT_TEXTURE_ROUGHNESS,_VARYINGNAME_,ClearCoatRoughness,_MATRIXNAME_,clearCoatRoughness,_INFONAME_,ClearCoatInfos.z)\n#include<samplerVertexImplementation>(_DEFINENAME_,CLEARCOAT_BUMP,_VARYINGNAME_,ClearCoatBump,_MATRIXNAME_,clearCoatBump,_INFONAME_,ClearCoatBumpInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,CLEARCOAT_TINT_TEXTURE,_VARYINGNAME_,ClearCoatTint,_MATRIXNAME_,clearCoatTint,_INFONAME_,ClearCoatTintInfos.x)\n#endif\n#ifdef IRIDESCENCE\n#include<samplerVertexImplementation>(_DEFINENAME_,IRIDESCENCE_TEXTURE,_VARYINGNAME_,Iridescence,_MATRIXNAME_,iridescence,_INFONAME_,IridescenceInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,IRIDESCENCE_THICKNESS_TEXTURE,_VARYINGNAME_,IridescenceThickness,_MATRIXNAME_,iridescenceThickness,_INFONAME_,IridescenceInfos.z)\n#endif\n#ifdef SHEEN\n#include<samplerVertexImplementation>(_DEFINENAME_,SHEEN_TEXTURE,_VARYINGNAME_,Sheen,_MATRIXNAME_,sheen,_INFONAME_,SheenInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,SHEEN_TEXTURE_ROUGHNESS,_VARYINGNAME_,SheenRoughness,_MATRIXNAME_,sheenRoughness,_INFONAME_,SheenInfos.z)\n#endif\n#ifdef ANISOTROPIC\n#include<samplerVertexImplementation>(_DEFINENAME_,ANISOTROPIC_TEXTURE,_VARYINGNAME_,Anisotropy,_MATRIXNAME_,anisotropy,_INFONAME_,AnisotropyInfos.x)\n#endif\n#ifdef SUBSURFACE\n#include<samplerVertexImplementation>(_DEFINENAME_,SS_THICKNESSANDMASK_TEXTURE,_VARYINGNAME_,Thickness,_MATRIXNAME_,thickness,_INFONAME_,ThicknessInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,SS_REFRACTIONINTENSITY_TEXTURE,_VARYINGNAME_,RefractionIntensity,_MATRIXNAME_,refractionIntensity,_INFONAME_,RefractionIntensityInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,SS_TRANSLUCENCYINTENSITY_TEXTURE,_VARYINGNAME_,TranslucencyIntensity,_MATRIXNAME_,translucencyIntensity,_INFONAME_,TranslucencyIntensityInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,SS_TRANSLUCENCYCOLOR_TEXTURE,_VARYINGNAME_,TranslucencyColor,_MATRIXNAME_,translucencyColor,_INFONAME_,TranslucencyColorInfos.x)\n#endif\n#include<bumpVertex>\n#include<clipPlaneVertex>\n#include<fogVertex>\n#include<shadowsVertex>[0..maxSimultaneousLights]\n#include<vertexColorMixing>\n#include<logDepthVertex>\n#define CUSTOM_VERTEX_MAIN_END\n}`;\n// Sideeffect\nif (!ShaderStore.ShadersStoreWGSL[name]) {\n ShaderStore.ShadersStoreWGSL[name] = shader;\n}\nconst includes = [sceneUboDeclarationWGSL, meshUboDeclarationWGSL, pbrUboDeclarationWGSL, uvAttributeDeclarationWGSL, mainUVVaryingDeclarationWGSL, helperFunctionsWGSL, pbrBRDFFunctionsWGSL, bonesDeclarationWGSL, bakedVertexAnimationDeclarationWGSL, instancesDeclarationWGSL, prePassVertexDeclarationWGSL, samplerVertexDeclarationWGSL, harmonicsFunctionsWGSL, bumpVertexDeclarationWGSL, clipPlaneVertexDeclarationWGSL, fogVertexDeclarationWGSL, lightVxUboDeclarationWGSL, morphTargetsVertexGlobalDeclarationWGSL, morphTargetsVertexDeclarationWGSL, logDepthDeclarationWGSL, vertexPullingDeclarationWGSL, vertexPullingVertexWGSL, morphTargetsVertexGlobalWGSL, morphTargetsVertexWGSL, instancesVertexWGSL, bonesVertexWGSL, bakedVertexAnimationWGSL, prePassVertexWGSL, uvVariableDeclarationWGSL, samplerVertexImplementationWGSL, bumpVertexWGSL, clipPlaneVertexWGSL, fogVertexWGSL, shadowsVertexWGSL, vertexColorMixingWGSL, logDepthVertexWGSL];\nfor (const inc of includes) {\n if (!ShaderStore.IncludesShadersStoreWGSL[inc.name]) {\n ShaderStore.IncludesShadersStoreWGSL[inc.name] = inc.shader;\n }\n}\n\n/** @internal */\nexport const pbrVertexShaderWGSL = { name, shader };\n"]}
1
+ {"version":3,"file":"pbr.vertex.js","sourceRoot":"","sources":["../../../../dev/core/src/ShadersWGSL/pbr.vertex.ts"],"names":[],"mappings":"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","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../Engines/shaderStore\";\nimport { sceneUboDeclarationWGSL } from \"./ShadersInclude/sceneUboDeclaration\";\nimport { meshUboDeclarationWGSL } from \"./ShadersInclude/meshUboDeclaration\";\nimport { pbrUboDeclarationWGSL } from \"./ShadersInclude/pbrUboDeclaration\";\nimport { uvAttributeDeclarationWGSL } from \"./ShadersInclude/uvAttributeDeclaration\";\nimport { mainUVVaryingDeclarationWGSL } from \"./ShadersInclude/mainUVVaryingDeclaration\";\nimport { helperFunctionsWGSL } from \"./ShadersInclude/helperFunctions\";\nimport { pbrBRDFFunctionsWGSL } from \"./ShadersInclude/pbrBRDFFunctions\";\nimport { bonesDeclarationWGSL } from \"./ShadersInclude/bonesDeclaration\";\nimport { bakedVertexAnimationDeclarationWGSL } from \"./ShadersInclude/bakedVertexAnimationDeclaration\";\nimport { instancesDeclarationWGSL } from \"./ShadersInclude/instancesDeclaration\";\nimport { prePassVertexDeclarationWGSL } from \"./ShadersInclude/prePassVertexDeclaration\";\nimport { samplerVertexDeclarationWGSL } from \"./ShadersInclude/samplerVertexDeclaration\";\nimport { harmonicsFunctionsWGSL } from \"./ShadersInclude/harmonicsFunctions\";\nimport { bumpVertexDeclarationWGSL } from \"./ShadersInclude/bumpVertexDeclaration\";\nimport { clipPlaneVertexDeclarationWGSL } from \"./ShadersInclude/clipPlaneVertexDeclaration\";\nimport { fogVertexDeclarationWGSL } from \"./ShadersInclude/fogVertexDeclaration\";\nimport { lightVxUboDeclarationWGSL } from \"./ShadersInclude/lightVxUboDeclaration\";\nimport { morphTargetsVertexGlobalDeclarationWGSL } from \"./ShadersInclude/morphTargetsVertexGlobalDeclaration\";\nimport { morphTargetsVertexDeclarationWGSL } from \"./ShadersInclude/morphTargetsVertexDeclaration\";\nimport { logDepthDeclarationWGSL } from \"./ShadersInclude/logDepthDeclaration\";\nimport { vertexPullingDeclarationWGSL } from \"./ShadersInclude/vertexPullingDeclaration\";\nimport { vertexPullingVertexWGSL } from \"./ShadersInclude/vertexPullingVertex\";\nimport { morphTargetsVertexGlobalWGSL } from \"./ShadersInclude/morphTargetsVertexGlobal\";\nimport { morphTargetsVertexWGSL } from \"./ShadersInclude/morphTargetsVertex\";\nimport { instancesVertexWGSL } from \"./ShadersInclude/instancesVertex\";\nimport { bonesVertexWGSL } from \"./ShadersInclude/bonesVertex\";\nimport { bakedVertexAnimationWGSL } from \"./ShadersInclude/bakedVertexAnimation\";\nimport { prePassVertexWGSL } from \"./ShadersInclude/prePassVertex\";\nimport { uvVariableDeclarationWGSL } from \"./ShadersInclude/uvVariableDeclaration\";\nimport { samplerVertexImplementationWGSL } from \"./ShadersInclude/samplerVertexImplementation\";\nimport { bumpVertexWGSL } from \"./ShadersInclude/bumpVertex\";\nimport { clipPlaneVertexWGSL } from \"./ShadersInclude/clipPlaneVertex\";\nimport { fogVertexWGSL } from \"./ShadersInclude/fogVertex\";\nimport { shadowsVertexWGSL } from \"./ShadersInclude/shadowsVertex\";\nimport { vertexColorMixingWGSL } from \"./ShadersInclude/vertexColorMixing\";\nimport { logDepthVertexWGSL } from \"./ShadersInclude/logDepthVertex\";\n\nconst name = \"pbrVertexShader\";\nconst shader = `#define PBR_VERTEX_SHADER\n#include<pbrUboDeclaration>\n#define CUSTOM_VERTEX_BEGIN\n#ifndef USE_VERTEX_PULLING\nattribute position: vec3f;\n#ifdef NORMAL\nattribute normal: vec3f;\n#endif\n#ifdef TANGENT\nattribute tangent: vec4f;\n#endif\n#ifdef UV1\nattribute uv: vec2f;\n#endif\n#include<uvAttributeDeclaration>[2..7]\n#ifdef VERTEXCOLOR\nattribute color: vec4f;\n#endif\n#endif\n#include<mainUVVaryingDeclaration>[1..7]\n#include<helperFunctions>\n#include<pbrBRDFFunctions>\n#include<bonesDeclaration>\n#include<bakedVertexAnimationDeclaration>\n#include<instancesDeclaration>\n#include<prePassVertexDeclaration>\n#include<samplerVertexDeclaration>(_DEFINENAME_,ALBEDO,_VARYINGNAME_,Albedo)\n#include<samplerVertexDeclaration>(_DEFINENAME_,BASE_WEIGHT,_VARYINGNAME_,BaseWeight)\n#include<samplerVertexDeclaration>(_DEFINENAME_,BASE_DIFFUSE_ROUGHNESS,_VARYINGNAME_,BaseDiffuseRoughness)\n#include<samplerVertexDeclaration>(_DEFINENAME_,DETAIL,_VARYINGNAME_,Detail)\n#include<samplerVertexDeclaration>(_DEFINENAME_,AMBIENT,_VARYINGNAME_,Ambient)\n#include<samplerVertexDeclaration>(_DEFINENAME_,BENTNORMAL,_VARYINGNAME_,BentNormal)\n#include<samplerVertexDeclaration>(_DEFINENAME_,OPACITY,_VARYINGNAME_,Opacity)\n#include<samplerVertexDeclaration>(_DEFINENAME_,EMISSIVE,_VARYINGNAME_,Emissive)\n#include<samplerVertexDeclaration>(_DEFINENAME_,LIGHTMAP,_VARYINGNAME_,Lightmap)\n#include<samplerVertexDeclaration>(_DEFINENAME_,REFLECTIVITY,_VARYINGNAME_,Reflectivity)\n#include<samplerVertexDeclaration>(_DEFINENAME_,MICROSURFACEMAP,_VARYINGNAME_,MicroSurfaceSampler)\n#include<samplerVertexDeclaration>(_DEFINENAME_,METALLIC_REFLECTANCE,_VARYINGNAME_,MetallicReflectance)\n#include<samplerVertexDeclaration>(_DEFINENAME_,REFLECTANCE,_VARYINGNAME_,Reflectance)\n#include<samplerVertexDeclaration>(_DEFINENAME_,BUMP,_VARYINGNAME_,Bump)\n#include<samplerVertexDeclaration>(_DEFINENAME_,DECAL,_VARYINGNAME_,Decal)\n#ifdef CLEARCOAT\n#include<samplerVertexDeclaration>(_DEFINENAME_,CLEARCOAT_TEXTURE,_VARYINGNAME_,ClearCoat)\n#include<samplerVertexDeclaration>(_DEFINENAME_,CLEARCOAT_TEXTURE_ROUGHNESS,_VARYINGNAME_,ClearCoatRoughness)\n#include<samplerVertexDeclaration>(_DEFINENAME_,CLEARCOAT_BUMP,_VARYINGNAME_,ClearCoatBump)\n#include<samplerVertexDeclaration>(_DEFINENAME_,CLEARCOAT_TINT_TEXTURE,_VARYINGNAME_,ClearCoatTint)\n#endif\n#ifdef IRIDESCENCE\n#include<samplerVertexDeclaration>(_DEFINENAME_,IRIDESCENCE_TEXTURE,_VARYINGNAME_,Iridescence)\n#include<samplerVertexDeclaration>(_DEFINENAME_,IRIDESCENCE_THICKNESS_TEXTURE,_VARYINGNAME_,IridescenceThickness)\n#endif\n#ifdef SHEEN\n#include<samplerVertexDeclaration>(_DEFINENAME_,SHEEN_TEXTURE,_VARYINGNAME_,Sheen)\n#include<samplerVertexDeclaration>(_DEFINENAME_,SHEEN_TEXTURE_ROUGHNESS,_VARYINGNAME_,SheenRoughness)\n#endif\n#ifdef ANISOTROPIC\n#include<samplerVertexDeclaration>(_DEFINENAME_,ANISOTROPIC_TEXTURE,_VARYINGNAME_,Anisotropy)\n#endif\n#ifdef SUBSURFACE\n#include<samplerVertexDeclaration>(_DEFINENAME_,SS_THICKNESSANDMASK_TEXTURE,_VARYINGNAME_,Thickness)\n#include<samplerVertexDeclaration>(_DEFINENAME_,SS_REFRACTIONINTENSITY_TEXTURE,_VARYINGNAME_,RefractionIntensity)\n#include<samplerVertexDeclaration>(_DEFINENAME_,SS_TRANSLUCENCYINTENSITY_TEXTURE,_VARYINGNAME_,TranslucencyIntensity)\n#include<samplerVertexDeclaration>(_DEFINENAME_,SS_TRANSLUCENCYCOLOR_TEXTURE,_VARYINGNAME_,TranslucencyColor)\n#endif\nvarying vPositionW: vec3f;\n#if DEBUGMODE>0\nvarying vClipSpacePosition: vec4f;\n#endif\n#ifdef NORMAL\nvarying vNormalW: vec3f;\n#if defined(USESPHERICALFROMREFLECTIONMAP) && defined(USESPHERICALINVERTEX)\nvarying vEnvironmentIrradiance: vec3f;\n#include<harmonicsFunctions>\n#endif\n#endif\n#if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES)\nvarying vColor: vec4f;\n#endif\n#include<bumpVertexDeclaration>\n#include<clipPlaneVertexDeclaration>\n#include<fogVertexDeclaration>\n#include<lightVxUboDeclaration>[0..maxSimultaneousLights]\n#include<morphTargetsVertexGlobalDeclaration>\n#include<morphTargetsVertexDeclaration>[0..maxSimultaneousMorphTargets]\n#ifdef REFLECTIONMAP_SKYBOX\nvarying vPositionUVW: vec3f;\n#endif\n#if defined(REFLECTIONMAP_EQUIRECTANGULAR_FIXED) || defined(REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED)\nvarying vDirectionW: vec3f;\n#endif\n#if defined(CLUSTLIGHT_BATCH) && CLUSTLIGHT_BATCH>0\nvarying vViewDepth: f32;\n#endif\n#include<logDepthDeclaration>\n#include<vertexPullingDeclaration>\n#define CUSTOM_VERTEX_DEFINITIONS\n@vertex\nfn main(input : VertexInputs)->FragmentInputs {\n#define CUSTOM_VERTEX_MAIN_BEGIN\n#ifdef USE_VERTEX_PULLING\nvar positionUpdated: vec3f=vec3f(0.0);\n#ifdef NORMAL\nvar normalUpdated: vec3f=vec3f(0.0);\n#endif\n#ifdef TANGENT\nvar tangentUpdated: vec4f=vec4f(0.0);\n#endif\n#ifdef UV1\nvar uvUpdated: vec2f=vec2f(0.0);\n#endif\n#ifdef UV2\nvar uv2Updated: vec2f=vec2f(0.0);\n#endif\n#ifdef VERTEXCOLOR\nvar colorUpdated: vec4f=vec4f(0.0);\n#endif\n#else\nvar positionUpdated: vec3f=vertexInputs.position;\n#ifdef NORMAL\nvar normalUpdated: vec3f=vertexInputs.normal;\n#endif\n#ifdef TANGENT\nvar tangentUpdated: vec4f=vertexInputs.tangent;\n#endif\n#ifdef UV1\nvar uvUpdated: vec2f=vertexInputs.uv;\n#endif\n#ifdef UV2\nvar uv2Updated: vec2f=vertexInputs.uv2;\n#endif\n#ifdef VERTEXCOLOR\nvar colorUpdated: vec4f=vertexInputs.color;\n#endif\n#endif\n#include<vertexPullingVertex>\n#include<morphTargetsVertexGlobal>\n#include<morphTargetsVertex>[0..maxSimultaneousMorphTargets]\n#ifdef REFLECTIONMAP_SKYBOX\nvertexOutputs.vPositionUVW=positionUpdated;\n#endif\n#define CUSTOM_VERTEX_UPDATE_POSITION\n#define CUSTOM_VERTEX_UPDATE_NORMAL\n#include<instancesVertex>\n#if defined(PREPASS) && ((defined(PREPASS_VELOCITY) || defined(PREPASS_VELOCITY_LINEAR)) && !defined(BONES_VELOCITY_ENABLED)\nvertexOutputs.vCurrentPosition=scene.viewProjection*finalWorld*vec4f(positionUpdated,1.0);vertexOutputs.vPreviousPosition=scene.previousViewProjection*finalPreviousWorld*vec4f(positionUpdated,1.0);\n#endif\n#ifdef USE_VERTEX_PULLING\n#include<bonesVertex>(vertexInputs.matricesIndices,vp_matricesIndices,vertexInputs.matricesWeights,vp_matricesWeights,vertexInputs.matricesIndicesExtra,vp_matricesIndicesExtra,vertexInputs.matricesWeightsExtra,vp_matricesWeightsExtra)\n#include<bakedVertexAnimation>(vertexInputs.matricesIndices,vp_matricesIndices,vertexInputs.matricesWeights,vp_matricesWeights,vertexInputs.matricesIndicesExtra,vp_matricesIndicesExtra,vertexInputs.matricesWeightsExtra,vp_matricesWeightsExtra)\n#else\n#include<bonesVertex>\n#include<bakedVertexAnimation>\n#endif\nvar worldPos: vec4f=finalWorld* vec4f(positionUpdated,1.0);vertexOutputs.vPositionW= worldPos.xyz;\n#ifdef PREPASS\n#include<prePassVertex>\n#endif\n#ifdef NORMAL\nvar normalWorld: mat3x3f= mat3x3f(finalWorld[0].xyz,finalWorld[1].xyz,finalWorld[2].xyz);\n#if defined(INSTANCES) && defined(THIN_INSTANCES)\nvertexOutputs.vNormalW=normalUpdated/ vec3f(dot(normalWorld[0],normalWorld[0]),dot(normalWorld[1],normalWorld[1]),dot(normalWorld[2],normalWorld[2]));vertexOutputs.vNormalW=normalize(normalWorld*vertexOutputs.vNormalW);\n#else\n#ifdef NONUNIFORMSCALING\nnormalWorld=transposeMat3(inverseMat3(normalWorld));\n#endif\nvertexOutputs.vNormalW=normalize(normalWorld*normalUpdated);\n#endif\n#if defined(USESPHERICALFROMREFLECTIONMAP) && defined(USESPHERICALINVERTEX)\n#if BASE_DIFFUSE_MODEL != BRDF_DIFFUSE_MODEL_LAMBERT && BASE_DIFFUSE_MODEL != BRDF_DIFFUSE_MODEL_LEGACY\nvar viewDirectionW: vec3f=normalize(scene.vEyePosition.xyz-vertexOutputs.vPositionW);var NdotV: f32=max(dot(vertexOutputs.vNormalW,viewDirectionW),0.0);var roughNormal: vec3f=mix(vertexOutputs.vNormalW,viewDirectionW,(0.5*(1.0-NdotV))*uniforms.baseDiffuseRoughness);var reflectionVector: vec3f= (uniforms.reflectionMatrix* vec4f(roughNormal,0)).xyz;\n#else\nvar reflectionVector: vec3f= (uniforms.reflectionMatrix* vec4f(vertexOutputs.vNormalW,0)).xyz;\n#endif\n#ifdef REFLECTIONMAP_OPPOSITEZ\nreflectionVector.z*=-1.0;\n#endif\nvertexOutputs.vEnvironmentIrradiance=computeEnvironmentIrradiance(reflectionVector);\n#endif\n#endif\n#define CUSTOM_VERTEX_UPDATE_WORLDPOS\n#ifdef MULTIVIEW\nif (gl_ViewID_OVR==0u) {vertexOutputs.position=scene.viewProjection*worldPos;} else {vertexOutputs.position=scene.viewProjectionR*worldPos;}\n#else\nvertexOutputs.position=scene.viewProjection*worldPos;\n#endif\n#if DEBUGMODE>0\nvertexOutputs.vClipSpacePosition=vertexOutputs.position;\n#endif\n#if defined(REFLECTIONMAP_EQUIRECTANGULAR_FIXED) || defined(REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED)\nvertexOutputs.vDirectionW=normalize((finalWorld*vec4f(positionUpdated,0.0)).xyz);\n#endif\n#if defined(CLUSTLIGHT_BATCH) && CLUSTLIGHT_BATCH>0\n#ifdef RIGHT_HANDED\nvertexOutputs.vViewDepth=-(scene.view*worldPos).z;\n#else\nvertexOutputs.vViewDepth=(scene.view*worldPos).z;\n#endif\n#endif\n#ifndef UV1\nvar uvUpdated: vec2f= vec2f(0.,0.);\n#endif\n#ifdef MAINUV1\nvertexOutputs.vMainUV1=uvUpdated;\n#endif\n#ifndef UV2\nvar uv2Updated: vec2f= vec2f(0.,0.);\n#endif\n#ifdef MAINUV2\nvertexOutputs.vMainUV2=uv2Updated;\n#endif\n#include<uvVariableDeclaration>[3..7]\n#include<samplerVertexImplementation>(_DEFINENAME_,ALBEDO,_VARYINGNAME_,Albedo,_MATRIXNAME_,albedo,_INFONAME_,AlbedoInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,BASE_WEIGHT,_VARYINGNAME_,BaseWeight,_MATRIXNAME_,baseWeight,_INFONAME_,BaseWeightInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,BASE_DIFFUSE_ROUGHNESS,_VARYINGNAME_,BaseDiffuseRoughness,_MATRIXNAME_,baseDiffuseRoughness,_INFONAME_,BaseDiffuseRoughnessInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,DETAIL,_VARYINGNAME_,Detail,_MATRIXNAME_,detail,_INFONAME_,DetailInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,AMBIENT,_VARYINGNAME_,Ambient,_MATRIXNAME_,ambient,_INFONAME_,AmbientInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,BENTNORMAL,_VARYINGNAME_,BentNormal,_MATRIXNAME_,bentNormal,_INFONAME_,BentNormalInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,OPACITY,_VARYINGNAME_,Opacity,_MATRIXNAME_,opacity,_INFONAME_,OpacityInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,EMISSIVE,_VARYINGNAME_,Emissive,_MATRIXNAME_,emissive,_INFONAME_,EmissiveInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,LIGHTMAP,_VARYINGNAME_,Lightmap,_MATRIXNAME_,lightmap,_INFONAME_,LightmapInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,REFLECTIVITY,_VARYINGNAME_,Reflectivity,_MATRIXNAME_,reflectivity,_INFONAME_,ReflectivityInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,MICROSURFACEMAP,_VARYINGNAME_,MicroSurfaceSampler,_MATRIXNAME_,microSurfaceSampler,_INFONAME_,MicroSurfaceSamplerInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,METALLIC_REFLECTANCE,_VARYINGNAME_,MetallicReflectance,_MATRIXNAME_,metallicReflectance,_INFONAME_,MetallicReflectanceInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,REFLECTANCE,_VARYINGNAME_,Reflectance,_MATRIXNAME_,reflectance,_INFONAME_,ReflectanceInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,BUMP,_VARYINGNAME_,Bump,_MATRIXNAME_,bump,_INFONAME_,BumpInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,DECAL,_VARYINGNAME_,Decal,_MATRIXNAME_,decal,_INFONAME_,DecalInfos.x)\n#ifdef CLEARCOAT\n#include<samplerVertexImplementation>(_DEFINENAME_,CLEARCOAT_TEXTURE,_VARYINGNAME_,ClearCoat,_MATRIXNAME_,clearCoat,_INFONAME_,ClearCoatInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,CLEARCOAT_TEXTURE_ROUGHNESS,_VARYINGNAME_,ClearCoatRoughness,_MATRIXNAME_,clearCoatRoughness,_INFONAME_,ClearCoatInfos.z)\n#include<samplerVertexImplementation>(_DEFINENAME_,CLEARCOAT_BUMP,_VARYINGNAME_,ClearCoatBump,_MATRIXNAME_,clearCoatBump,_INFONAME_,ClearCoatBumpInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,CLEARCOAT_TINT_TEXTURE,_VARYINGNAME_,ClearCoatTint,_MATRIXNAME_,clearCoatTint,_INFONAME_,ClearCoatTintInfos.x)\n#endif\n#ifdef IRIDESCENCE\n#include<samplerVertexImplementation>(_DEFINENAME_,IRIDESCENCE_TEXTURE,_VARYINGNAME_,Iridescence,_MATRIXNAME_,iridescence,_INFONAME_,IridescenceInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,IRIDESCENCE_THICKNESS_TEXTURE,_VARYINGNAME_,IridescenceThickness,_MATRIXNAME_,iridescenceThickness,_INFONAME_,IridescenceInfos.z)\n#endif\n#ifdef SHEEN\n#include<samplerVertexImplementation>(_DEFINENAME_,SHEEN_TEXTURE,_VARYINGNAME_,Sheen,_MATRIXNAME_,sheen,_INFONAME_,SheenInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,SHEEN_TEXTURE_ROUGHNESS,_VARYINGNAME_,SheenRoughness,_MATRIXNAME_,sheenRoughness,_INFONAME_,SheenInfos.z)\n#endif\n#ifdef ANISOTROPIC\n#include<samplerVertexImplementation>(_DEFINENAME_,ANISOTROPIC_TEXTURE,_VARYINGNAME_,Anisotropy,_MATRIXNAME_,anisotropy,_INFONAME_,AnisotropyInfos.x)\n#endif\n#ifdef SUBSURFACE\n#include<samplerVertexImplementation>(_DEFINENAME_,SS_THICKNESSANDMASK_TEXTURE,_VARYINGNAME_,Thickness,_MATRIXNAME_,thickness,_INFONAME_,ThicknessInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,SS_REFRACTIONINTENSITY_TEXTURE,_VARYINGNAME_,RefractionIntensity,_MATRIXNAME_,refractionIntensity,_INFONAME_,RefractionIntensityInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,SS_TRANSLUCENCYINTENSITY_TEXTURE,_VARYINGNAME_,TranslucencyIntensity,_MATRIXNAME_,translucencyIntensity,_INFONAME_,TranslucencyIntensityInfos.x)\n#include<samplerVertexImplementation>(_DEFINENAME_,SS_TRANSLUCENCYCOLOR_TEXTURE,_VARYINGNAME_,TranslucencyColor,_MATRIXNAME_,translucencyColor,_INFONAME_,TranslucencyColorInfos.x)\n#endif\n#include<bumpVertex>\n#include<clipPlaneVertex>\n#include<fogVertex>\n#include<shadowsVertex>[0..maxSimultaneousLights]\n#include<vertexColorMixing>\n#include<logDepthVertex>\n#define CUSTOM_VERTEX_MAIN_END\n}`;\n// Sideeffect\nif (!ShaderStore.ShadersStoreWGSL[name]) {\n ShaderStore.ShadersStoreWGSL[name] = shader;\n}\nconst includes = [sceneUboDeclarationWGSL, meshUboDeclarationWGSL, pbrUboDeclarationWGSL, uvAttributeDeclarationWGSL, mainUVVaryingDeclarationWGSL, helperFunctionsWGSL, pbrBRDFFunctionsWGSL, bonesDeclarationWGSL, bakedVertexAnimationDeclarationWGSL, instancesDeclarationWGSL, prePassVertexDeclarationWGSL, samplerVertexDeclarationWGSL, harmonicsFunctionsWGSL, bumpVertexDeclarationWGSL, clipPlaneVertexDeclarationWGSL, fogVertexDeclarationWGSL, lightVxUboDeclarationWGSL, morphTargetsVertexGlobalDeclarationWGSL, morphTargetsVertexDeclarationWGSL, logDepthDeclarationWGSL, vertexPullingDeclarationWGSL, vertexPullingVertexWGSL, morphTargetsVertexGlobalWGSL, morphTargetsVertexWGSL, instancesVertexWGSL, bonesVertexWGSL, bakedVertexAnimationWGSL, prePassVertexWGSL, uvVariableDeclarationWGSL, samplerVertexImplementationWGSL, bumpVertexWGSL, clipPlaneVertexWGSL, fogVertexWGSL, shadowsVertexWGSL, vertexColorMixingWGSL, logDepthVertexWGSL];\nfor (const inc of includes) {\n if (!ShaderStore.IncludesShadersStoreWGSL[inc.name]) {\n ShaderStore.IncludesShadersStoreWGSL[inc.name] = inc.shader;\n }\n}\n\n/** @internal */\nexport const pbrVertexShaderWGSL = { name, shader };\n"]}
@@ -3,15 +3,27 @@ import { ShaderStore } from "../Engines/shaderStore.js";
3
3
  const name = "textureMergerPixelShader";
4
4
  const shader = `#ifdef USE_TEXTURE0
5
5
  var inputTexture0Sampler: sampler;var inputTexture0: texture_2d<f32>;
6
+ #ifdef TEXTURE0_MATRIX
7
+ uniform inputTexture0Matrix: mat4x4f;
8
+ #endif
6
9
  #endif
7
10
  #ifdef USE_TEXTURE1
8
11
  var inputTexture1Sampler: sampler;var inputTexture1: texture_2d<f32>;
12
+ #ifdef TEXTURE1_MATRIX
13
+ uniform inputTexture1Matrix: mat4x4f;
14
+ #endif
9
15
  #endif
10
16
  #ifdef USE_TEXTURE2
11
17
  var inputTexture2Sampler: sampler;var inputTexture2: texture_2d<f32>;
18
+ #ifdef TEXTURE2_MATRIX
19
+ uniform inputTexture2Matrix: mat4x4f;
20
+ #endif
12
21
  #endif
13
22
  #ifdef USE_TEXTURE3
14
23
  var inputTexture3Sampler: sampler;var inputTexture3: texture_2d<f32>;
24
+ #ifdef TEXTURE3_MATRIX
25
+ uniform inputTexture3Matrix: mat4x4f;
26
+ #endif
15
27
  #endif
16
28
  #ifdef RED_FROM_TEXTURE
17
29
  uniform redTextureIndex: i32;uniform redSourceChannel: i32;
@@ -37,16 +49,40 @@ varying vUV: vec2f;
37
49
  #if defined(RED_FROM_TEXTURE) || defined(GREEN_FROM_TEXTURE) || defined(BLUE_FROM_TEXTURE) || defined(ALPHA_FROM_TEXTURE)
38
50
  fn sampleTexture(textureIndex: i32,uv: vec2f)->vec4f {switch (textureIndex) {
39
51
  #ifdef USE_TEXTURE0
40
- case 0: {return textureSample(inputTexture0,inputTexture0Sampler,uv);}
52
+ case 0: {
53
+ #ifdef TEXTURE0_MATRIX
54
+ return textureSample(inputTexture0,inputTexture0Sampler,(uniforms.inputTexture0Matrix*vec4f(uv,1.0,0.0)).xy);
55
+ #else
56
+ return textureSample(inputTexture0,inputTexture0Sampler,uv);
57
+ #endif
58
+ }
41
59
  #endif
42
60
  #ifdef USE_TEXTURE1
43
- case 1: {return textureSample(inputTexture1,inputTexture1Sampler,uv);}
61
+ case 1: {
62
+ #ifdef TEXTURE1_MATRIX
63
+ return textureSample(inputTexture1,inputTexture1Sampler,(uniforms.inputTexture1Matrix*vec4f(uv,1.0,0.0)).xy);
64
+ #else
65
+ return textureSample(inputTexture1,inputTexture1Sampler,uv);
66
+ #endif
67
+ }
44
68
  #endif
45
69
  #ifdef USE_TEXTURE2
46
- case 2: {return textureSample(inputTexture2,inputTexture2Sampler,uv);}
70
+ case 2: {
71
+ #ifdef TEXTURE2_MATRIX
72
+ return textureSample(inputTexture2,inputTexture2Sampler,(uniforms.inputTexture2Matrix*vec4f(uv,1.0,0.0)).xy);
73
+ #else
74
+ return textureSample(inputTexture2,inputTexture2Sampler,uv);
75
+ #endif
76
+ }
47
77
  #endif
48
78
  #ifdef USE_TEXTURE3
49
- case 3: {return textureSample(inputTexture3,inputTexture3Sampler,uv);}
79
+ case 3: {
80
+ #ifdef TEXTURE3_MATRIX
81
+ return textureSample(inputTexture3,inputTexture3Sampler,(uniforms.inputTexture3Matrix*vec4f(uv,1.0,0.0)).xy);
82
+ #else
83
+ return textureSample(inputTexture3,inputTexture3Sampler,uv);
84
+ #endif
85
+ }
50
86
  #endif
51
87
  default: {return vec4f(0.0,0.0,0.0,1.0); }}}
52
88
  fn extractChannel(color: vec4f,channelIndex: i32)->f32 {switch (channelIndex) {case 0: {return color.r; }
@@ -1 +1 @@
1
- {"version":3,"file":"textureMerger.fragment.js","sourceRoot":"","sources":["../../../../dev/core/src/ShadersWGSL/textureMerger.fragment.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,MAAM,IAAI,GAAG,0BAA0B,CAAC;AACxC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uCA2EwB,CAAC;AACxC,aAAa;AACb,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;IACtC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AAChD,CAAC;AAED,gBAAgB;AAChB,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../Engines/shaderStore\";\n\nconst name = \"textureMergerPixelShader\";\nconst shader = `#ifdef USE_TEXTURE0\nvar inputTexture0Sampler: sampler;var inputTexture0: texture_2d<f32>;\n#endif\n#ifdef USE_TEXTURE1\nvar inputTexture1Sampler: sampler;var inputTexture1: texture_2d<f32>;\n#endif\n#ifdef USE_TEXTURE2\nvar inputTexture2Sampler: sampler;var inputTexture2: texture_2d<f32>;\n#endif\n#ifdef USE_TEXTURE3\nvar inputTexture3Sampler: sampler;var inputTexture3: texture_2d<f32>;\n#endif\n#ifdef RED_FROM_TEXTURE\nuniform redTextureIndex: i32;uniform redSourceChannel: i32;\n#else\nuniform redConstantValue: f32;\n#endif\n#ifdef GREEN_FROM_TEXTURE\nuniform greenTextureIndex: i32;uniform greenSourceChannel: i32;\n#else\nuniform greenConstantValue: f32;\n#endif\n#ifdef BLUE_FROM_TEXTURE\nuniform blueTextureIndex: i32;uniform blueSourceChannel: i32;\n#else\nuniform blueConstantValue: f32;\n#endif\n#ifdef ALPHA_FROM_TEXTURE\nuniform alphaTextureIndex: i32;uniform alphaSourceChannel: i32;\n#else\nuniform alphaConstantValue: f32;\n#endif\nvarying vUV: vec2f;\n#if defined(RED_FROM_TEXTURE) || defined(GREEN_FROM_TEXTURE) || defined(BLUE_FROM_TEXTURE) || defined(ALPHA_FROM_TEXTURE)\nfn sampleTexture(textureIndex: i32,uv: vec2f)->vec4f {switch (textureIndex) {\n#ifdef USE_TEXTURE0\ncase 0: {return textureSample(inputTexture0,inputTexture0Sampler,uv);}\n#endif\n#ifdef USE_TEXTURE1\ncase 1: {return textureSample(inputTexture1,inputTexture1Sampler,uv);}\n#endif\n#ifdef USE_TEXTURE2\ncase 2: {return textureSample(inputTexture2,inputTexture2Sampler,uv);}\n#endif\n#ifdef USE_TEXTURE3\ncase 3: {return textureSample(inputTexture3,inputTexture3Sampler,uv);}\n#endif\ndefault: {return vec4f(0.0,0.0,0.0,1.0); }}}\nfn extractChannel(color: vec4f,channelIndex: i32)->f32 {switch (channelIndex) {case 0: {return color.r; }\ncase 1: {return color.g; }\ncase 2: {return color.b; }\ndefault: {return color.a; }}}\n#endif\n@fragment\nfn main(input: FragmentInputs)->FragmentOutputs {let uv: vec2f=input.vUV;\n#ifdef RED_FROM_TEXTURE\nlet redSample: vec4f=sampleTexture(uniforms.redTextureIndex,uv);let r: f32=extractChannel(redSample,uniforms.redSourceChannel);\n#else\nlet r: f32=uniforms.redConstantValue;\n#endif\n#ifdef GREEN_FROM_TEXTURE\nlet greenSample: vec4f=sampleTexture(uniforms.greenTextureIndex,uv);let g: f32=extractChannel(greenSample,uniforms.greenSourceChannel);\n#else\nlet g: f32=uniforms.greenConstantValue;\n#endif\n#ifdef BLUE_FROM_TEXTURE\nlet blueSample: vec4f=sampleTexture(uniforms.blueTextureIndex,uv);let b: f32=extractChannel(blueSample,uniforms.blueSourceChannel);\n#else\nlet b: f32=uniforms.blueConstantValue;\n#endif\n#ifdef ALPHA_FROM_TEXTURE\nlet alphaSample: vec4f=sampleTexture(uniforms.alphaTextureIndex,uv);let a: f32=extractChannel(alphaSample,uniforms.alphaSourceChannel);\n#else\nlet a: f32=uniforms.alphaConstantValue;\n#endif\nfragmentOutputs.color=vec4f(r,g,b,a);}`;\n// Sideeffect\nif (!ShaderStore.ShadersStoreWGSL[name]) {\n ShaderStore.ShadersStoreWGSL[name] = shader;\n}\n\n/** @internal */\nexport const textureMergerPixelShaderWGSL = { name, shader };\n"]}
1
+ {"version":3,"file":"textureMerger.fragment.js","sourceRoot":"","sources":["../../../../dev/core/src/ShadersWGSL/textureMerger.fragment.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,MAAM,IAAI,GAAG,0BAA0B,CAAC;AACxC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uCA+GwB,CAAC;AACxC,aAAa;AACb,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;IACtC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AAChD,CAAC;AAED,gBAAgB;AAChB,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../Engines/shaderStore\";\n\nconst name = \"textureMergerPixelShader\";\nconst shader = `#ifdef USE_TEXTURE0\nvar inputTexture0Sampler: sampler;var inputTexture0: texture_2d<f32>;\n#ifdef TEXTURE0_MATRIX\nuniform inputTexture0Matrix: mat4x4f;\n#endif\n#endif\n#ifdef USE_TEXTURE1\nvar inputTexture1Sampler: sampler;var inputTexture1: texture_2d<f32>;\n#ifdef TEXTURE1_MATRIX\nuniform inputTexture1Matrix: mat4x4f;\n#endif\n#endif\n#ifdef USE_TEXTURE2\nvar inputTexture2Sampler: sampler;var inputTexture2: texture_2d<f32>;\n#ifdef TEXTURE2_MATRIX\nuniform inputTexture2Matrix: mat4x4f;\n#endif\n#endif\n#ifdef USE_TEXTURE3\nvar inputTexture3Sampler: sampler;var inputTexture3: texture_2d<f32>;\n#ifdef TEXTURE3_MATRIX\nuniform inputTexture3Matrix: mat4x4f;\n#endif\n#endif\n#ifdef RED_FROM_TEXTURE\nuniform redTextureIndex: i32;uniform redSourceChannel: i32;\n#else\nuniform redConstantValue: f32;\n#endif\n#ifdef GREEN_FROM_TEXTURE\nuniform greenTextureIndex: i32;uniform greenSourceChannel: i32;\n#else\nuniform greenConstantValue: f32;\n#endif\n#ifdef BLUE_FROM_TEXTURE\nuniform blueTextureIndex: i32;uniform blueSourceChannel: i32;\n#else\nuniform blueConstantValue: f32;\n#endif\n#ifdef ALPHA_FROM_TEXTURE\nuniform alphaTextureIndex: i32;uniform alphaSourceChannel: i32;\n#else\nuniform alphaConstantValue: f32;\n#endif\nvarying vUV: vec2f;\n#if defined(RED_FROM_TEXTURE) || defined(GREEN_FROM_TEXTURE) || defined(BLUE_FROM_TEXTURE) || defined(ALPHA_FROM_TEXTURE)\nfn sampleTexture(textureIndex: i32,uv: vec2f)->vec4f {switch (textureIndex) {\n#ifdef USE_TEXTURE0\ncase 0: {\n#ifdef TEXTURE0_MATRIX\nreturn textureSample(inputTexture0,inputTexture0Sampler,(uniforms.inputTexture0Matrix*vec4f(uv,1.0,0.0)).xy);\n#else\nreturn textureSample(inputTexture0,inputTexture0Sampler,uv);\n#endif\n}\n#endif\n#ifdef USE_TEXTURE1\ncase 1: {\n#ifdef TEXTURE1_MATRIX\nreturn textureSample(inputTexture1,inputTexture1Sampler,(uniforms.inputTexture1Matrix*vec4f(uv,1.0,0.0)).xy);\n#else\nreturn textureSample(inputTexture1,inputTexture1Sampler,uv);\n#endif\n}\n#endif\n#ifdef USE_TEXTURE2\ncase 2: {\n#ifdef TEXTURE2_MATRIX\nreturn textureSample(inputTexture2,inputTexture2Sampler,(uniforms.inputTexture2Matrix*vec4f(uv,1.0,0.0)).xy);\n#else\nreturn textureSample(inputTexture2,inputTexture2Sampler,uv);\n#endif\n}\n#endif\n#ifdef USE_TEXTURE3\ncase 3: {\n#ifdef TEXTURE3_MATRIX\nreturn textureSample(inputTexture3,inputTexture3Sampler,(uniforms.inputTexture3Matrix*vec4f(uv,1.0,0.0)).xy);\n#else\nreturn textureSample(inputTexture3,inputTexture3Sampler,uv);\n#endif\n}\n#endif\ndefault: {return vec4f(0.0,0.0,0.0,1.0); }}}\nfn extractChannel(color: vec4f,channelIndex: i32)->f32 {switch (channelIndex) {case 0: {return color.r; }\ncase 1: {return color.g; }\ncase 2: {return color.b; }\ndefault: {return color.a; }}}\n#endif\n@fragment\nfn main(input: FragmentInputs)->FragmentOutputs {let uv: vec2f=input.vUV;\n#ifdef RED_FROM_TEXTURE\nlet redSample: vec4f=sampleTexture(uniforms.redTextureIndex,uv);let r: f32=extractChannel(redSample,uniforms.redSourceChannel);\n#else\nlet r: f32=uniforms.redConstantValue;\n#endif\n#ifdef GREEN_FROM_TEXTURE\nlet greenSample: vec4f=sampleTexture(uniforms.greenTextureIndex,uv);let g: f32=extractChannel(greenSample,uniforms.greenSourceChannel);\n#else\nlet g: f32=uniforms.greenConstantValue;\n#endif\n#ifdef BLUE_FROM_TEXTURE\nlet blueSample: vec4f=sampleTexture(uniforms.blueTextureIndex,uv);let b: f32=extractChannel(blueSample,uniforms.blueSourceChannel);\n#else\nlet b: f32=uniforms.blueConstantValue;\n#endif\n#ifdef ALPHA_FROM_TEXTURE\nlet alphaSample: vec4f=sampleTexture(uniforms.alphaTextureIndex,uv);let a: f32=extractChannel(alphaSample,uniforms.alphaSourceChannel);\n#else\nlet a: f32=uniforms.alphaConstantValue;\n#endif\nfragmentOutputs.color=vec4f(r,g,b,a);}`;\n// Sideeffect\nif (!ShaderStore.ShadersStoreWGSL[name]) {\n ShaderStore.ShadersStoreWGSL[name] = shader;\n}\n\n/** @internal */\nexport const textureMergerPixelShaderWGSL = { name, shader };\n"]}
@@ -28,11 +28,14 @@ uniform factorB: vec4f;
28
28
  #if defined(OP_LERP) && (!defined(LERP_T_TEXTURE) || defined(LERP_T_FACTOR))
29
29
  uniform factorT: vec4f;
30
30
  #endif
31
+ #if defined(OP_MULTI_SCATTER_TO_SINGLE_SCATTER) || defined(OP_SINGLE_SCATTER_TO_MULTI_SCATTER)
32
+ uniform scatterAniso: f32;
33
+ #endif
31
34
  varying vUV: vec2f;@fragment
32
35
  fn main(input: FragmentInputs)->FragmentOutputs {let uv: vec2f=input.vUV;
33
36
  #ifdef OPERAND_A_TEXTURE
34
37
  #ifdef OPERAND_A_MATRIX
35
- var a: vec4f=textureSample(textureA,textureASampler,(uniforms.textureAMatrix*vec4f(uv,0.0,1.0)).xy);
38
+ var a: vec4f=textureSample(textureA,textureASampler,(uniforms.textureAMatrix*vec4f(uv,1.0,0.0)).xy);
36
39
  #else
37
40
  var a: vec4f=textureSample(textureA,textureASampler,uv);
38
41
  #endif
@@ -56,7 +59,7 @@ let a: vec4f=uniforms.factorA;
56
59
  #endif
57
60
  #ifdef OPERAND_B_TEXTURE
58
61
  #ifdef OPERAND_B_MATRIX
59
- var b: vec4f=textureSample(textureB,textureBSampler,(uniforms.textureBMatrix*vec4f(uv,0.0,1.0)).xy);
62
+ var b: vec4f=textureSample(textureB,textureBSampler,(uniforms.textureBMatrix*vec4f(uv,1.0,0.0)).xy);
60
63
  #else
61
64
  var b: vec4f=textureSample(textureB,textureBSampler,uv);
62
65
  #endif
@@ -78,7 +81,16 @@ b*=uniforms.factorB;
78
81
  #else
79
82
  let b: vec4f=uniforms.factorB;
80
83
  #endif
81
- #ifdef OP_CHANNEL_MAX
84
+ #ifdef OP_MULTI_SCATTER_TO_SINGLE_SCATTER
85
+ #ifdef MULTI_SCATTER_SCALE_B
86
+ let multiScatter: vec4f=a*b;
87
+ #else
88
+ let multiScatter: vec4f=a;
89
+ #endif
90
+ let rhoMs: vec3f=clamp(multiScatter.rgb,vec3f(0.0),vec3f(1.0));var s: vec3f=vec3f(4.09712)+4.20863*rhoMs-sqrt(vec3f(9.59217)+41.6808*rhoMs+17.7126*rhoMs*rhoMs);s=select(s,vec3f(1.0),rhoMs==vec3f(0.0));var result: vec4f=vec4f((vec3f(1.0)-s*s)/max(vec3f(1.0)-uniforms.scatterAniso*s*s,vec3f(0.0000001)),multiScatter.a);
91
+ #elif defined(OP_SINGLE_SCATTER_TO_MULTI_SCATTER)
92
+ let ssAlbedo: vec3f=clamp(a.rgb,vec3f(0.0),vec3f(1.0));let s2: vec3f=(vec3f(1.0)-ssAlbedo)/max(vec3f(1.0)-uniforms.scatterAniso*ssAlbedo,vec3f(0.0000001));let sq: vec3f=sqrt(max(s2,vec3f(0.0)));var result: vec4f=vec4f((vec3f(1.0)-sq)*(vec3f(1.0)-0.139*sq)/(vec3f(1.0)+1.17*sq),a.a);
93
+ #elif defined(OP_CHANNEL_MAX)
82
94
  var _cmax: f32=max(max(a.r,a.g),a.b);
83
95
  #ifdef CHANNEL_MAX_INCLUDE_ALPHA
84
96
  _cmax=max(_cmax,a.a);var result: vec4f=vec4f(_cmax,_cmax,_cmax,_cmax);
@@ -103,7 +115,7 @@ var result: vec4f=vec4f(_ir,_ig,_ib,_ia);
103
115
  #elif defined(OP_LERP)
104
116
  #ifdef LERP_T_TEXTURE
105
117
  #ifdef LERP_T_MATRIX
106
- var t: vec4f=textureSample(textureT,textureTSampler,(uniforms.textureTMatrix*vec4f(uv,0.0,1.0)).xy);
118
+ var t: vec4f=textureSample(textureT,textureTSampler,(uniforms.textureTMatrix*vec4f(uv,1.0,0.0)).xy);
107
119
  #else
108
120
  var t: vec4f=textureSample(textureT,textureTSampler,uv);
109
121
  #endif
@@ -128,6 +140,16 @@ let t: vec4f=uniforms.factorT;
128
140
  var result: vec4f=mix(a,b,t);
129
141
  #elif defined(OP_MAX)
130
142
  var result: vec4f=max(a,b);
143
+ #elif defined(OP_DIVIDE)
144
+ var result: vec4f=a/max(b,vec4f(0.00001));
145
+ #elif defined(OP_TRANSMISSION_FRACTION)
146
+ var result: vec4f=a/max(a+b*(vec4f(1.0)-a),vec4f(0.00001));
147
+ #elif defined(OP_THIN_WALLED_TRANSMISSION_WEIGHT)
148
+ var result: vec4f=vec4f(a.r*(1.0-b.r));
149
+ #elif defined(OP_THIN_WALLED_SUBSURFACE_WEIGHT)
150
+ let _transmittedScatter: f32=a.r*b.r;var result: vec4f=vec4f(_transmittedScatter/max(1.0-a.r+_transmittedScatter,0.00001));
151
+ #elif defined(OP_TRANSMISSION_SCATTER_ALBEDO)
152
+ var _extinction: vec3f=-log(max(a.rgb,vec3f(0.0000001)));let _absorption: vec3f=_extinction-b.rgb;_extinction-=vec3f(min(min(min(_absorption.r,_absorption.g),_absorption.b),0.0));var result: vec4f=vec4f(b.rgb/max(_extinction,vec3f(0.00001)),b.a);
131
153
  #else
132
154
  var result: vec4f=a*b;
133
155
  #endif
@@ -1 +1 @@
1
- {"version":3,"file":"textureProcessor.fragment.js","sourceRoot":"","sources":["../../../../dev/core/src/ShadersWGSL/textureProcessor.fragment.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,MAAM,IAAI,GAAG,6BAA6B,CAAC;AAC3C,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsJd,CAAC;AACF,aAAa;AACb,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;IACtC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AAChD,CAAC;AAED,gBAAgB;AAChB,MAAM,CAAC,MAAM,+BAA+B,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../Engines/shaderStore\";\n\nconst name = \"textureProcessorPixelShader\";\nconst shader = `#ifdef OPERAND_A_TEXTURE\nvar textureASampler: sampler;var textureA: texture_2d<f32>;\n#endif\n#ifdef OPERAND_B_TEXTURE\nvar textureBSampler: sampler;var textureB: texture_2d<f32>;\n#endif\n#if defined(OP_LERP) && defined(LERP_T_TEXTURE)\nvar textureTSampler: sampler;var textureT: texture_2d<f32>;\n#endif\n#ifdef OPERAND_A_MATRIX\nuniform textureAMatrix: mat4x4f;\n#endif\n#ifdef OPERAND_B_MATRIX\nuniform textureBMatrix: mat4x4f;\n#endif\n#if defined(OP_LERP) && defined(LERP_T_MATRIX)\nuniform textureTMatrix: mat4x4f;\n#endif\n#if !defined(OPERAND_A_TEXTURE) || defined(OPERAND_A_FACTOR)\nuniform factorA: vec4f;\n#endif\n#if !defined(OPERAND_B_TEXTURE) || defined(OPERAND_B_FACTOR)\nuniform factorB: vec4f;\n#endif\n#if defined(OP_LERP) && (!defined(LERP_T_TEXTURE) || defined(LERP_T_FACTOR))\nuniform factorT: vec4f;\n#endif\nvarying vUV: vec2f;@fragment\nfn main(input: FragmentInputs)->FragmentOutputs {let uv: vec2f=input.vUV;\n#ifdef OPERAND_A_TEXTURE\n#ifdef OPERAND_A_MATRIX\nvar a: vec4f=textureSample(textureA,textureASampler,(uniforms.textureAMatrix*vec4f(uv,0.0,1.0)).xy);\n#else\nvar a: vec4f=textureSample(textureA,textureASampler,uv);\n#endif\n#ifdef OPERAND_A_SRGB\na=vec4f(mix(a.rgb/vec3f(12.92),pow((a.rgb+vec3f(0.055))/vec3f(1.055),vec3f(2.4)),step(vec3f(0.04045),a.rgb)),a.a);\n#endif\n#ifdef OPERAND_A_CHANNEL_R\na=vec4f(a.rrr,a.a);\n#elif defined(OPERAND_A_CHANNEL_G)\na=vec4f(a.ggg,a.a);\n#elif defined(OPERAND_A_CHANNEL_B)\na=vec4f(a.bbb,a.a);\n#elif defined(OPERAND_A_CHANNEL_A)\na=a.aaaa;\n#endif\n#ifdef OPERAND_A_FACTOR\na*=uniforms.factorA;\n#endif\n#else\nlet a: vec4f=uniforms.factorA;\n#endif\n#ifdef OPERAND_B_TEXTURE\n#ifdef OPERAND_B_MATRIX\nvar b: vec4f=textureSample(textureB,textureBSampler,(uniforms.textureBMatrix*vec4f(uv,0.0,1.0)).xy);\n#else\nvar b: vec4f=textureSample(textureB,textureBSampler,uv);\n#endif\n#ifdef OPERAND_B_SRGB\nb=vec4f(mix(b.rgb/vec3f(12.92),pow((b.rgb+vec3f(0.055))/vec3f(1.055),vec3f(2.4)),step(vec3f(0.04045),b.rgb)),b.a);\n#endif\n#ifdef OPERAND_B_CHANNEL_R\nb=vec4f(b.rrr,b.a);\n#elif defined(OPERAND_B_CHANNEL_G)\nb=vec4f(b.ggg,b.a);\n#elif defined(OPERAND_B_CHANNEL_B)\nb=vec4f(b.bbb,b.a);\n#elif defined(OPERAND_B_CHANNEL_A)\nb=b.aaaa;\n#endif\n#ifdef OPERAND_B_FACTOR\nb*=uniforms.factorB;\n#endif\n#else\nlet b: vec4f=uniforms.factorB;\n#endif\n#ifdef OP_CHANNEL_MAX\nvar _cmax: f32=max(max(a.r,a.g),a.b);\n#ifdef CHANNEL_MAX_INCLUDE_ALPHA\n_cmax=max(_cmax,a.a);var result: vec4f=vec4f(_cmax,_cmax,_cmax,_cmax);\n#else\nvar result: vec4f=vec4f(_cmax,_cmax,_cmax,a.a);\n#endif\n#elif defined(OP_INVERT)\nvar _ir: f32=a.r; var _ig: f32=a.g; var _ib: f32=a.b; var _ia: f32=a.a;\n#ifdef INVERT_R\n_ir=1.0-_ir;\n#endif\n#ifdef INVERT_G\n_ig=1.0-_ig;\n#endif\n#ifdef INVERT_B\n_ib=1.0-_ib;\n#endif\n#ifdef INVERT_A\n_ia=1.0-_ia;\n#endif\nvar result: vec4f=vec4f(_ir,_ig,_ib,_ia);\n#elif defined(OP_LERP)\n#ifdef LERP_T_TEXTURE\n#ifdef LERP_T_MATRIX\nvar t: vec4f=textureSample(textureT,textureTSampler,(uniforms.textureTMatrix*vec4f(uv,0.0,1.0)).xy);\n#else\nvar t: vec4f=textureSample(textureT,textureTSampler,uv);\n#endif\n#ifdef LERP_T_SRGB\nt=vec4f(mix(t.rgb/vec3f(12.92),pow((t.rgb+vec3f(0.055))/vec3f(1.055),vec3f(2.4)),step(vec3f(0.04045),t.rgb)),t.a);\n#endif\n#ifdef LERP_T_CHANNEL_R\nt=vec4f(t.rrr,t.a);\n#elif defined(LERP_T_CHANNEL_G)\nt=vec4f(t.ggg,t.a);\n#elif defined(LERP_T_CHANNEL_B)\nt=vec4f(t.bbb,t.a);\n#elif defined(LERP_T_CHANNEL_A)\nt=t.aaaa;\n#endif\n#ifdef LERP_T_FACTOR\nt*=uniforms.factorT;\n#endif\n#else\nlet t: vec4f=uniforms.factorT;\n#endif\nvar result: vec4f=mix(a,b,t);\n#elif defined(OP_MAX)\nvar result: vec4f=max(a,b);\n#else\nvar result: vec4f=a*b;\n#endif\n#if defined(OUTPUT_MASK_R_ZERO) || defined(OUTPUT_MASK_G_ZERO) || defined(OUTPUT_MASK_B_ZERO) || defined(OUTPUT_MASK_A_ONE)\nvar _omr: f32=result.r; var _omg: f32=result.g; var _omb: f32=result.b; var _oma: f32=result.a;\n#ifdef OUTPUT_MASK_R_ZERO\n_omr=0.0;\n#endif\n#ifdef OUTPUT_MASK_G_ZERO\n_omg=0.0;\n#endif\n#ifdef OUTPUT_MASK_B_ZERO\n_omb=0.0;\n#endif\n#ifdef OUTPUT_MASK_A_ONE\n_oma=1.0;\n#endif\nresult=vec4f(_omr,_omg,_omb,_oma);\n#endif\n#ifdef OUTPUT_SRGB\nresult=vec4f(mix(result.rgb*vec3f(12.92),pow(result.rgb,vec3f(1.0/2.4))*vec3f(1.055)-vec3f(0.055),step(vec3f(0.0031308),result.rgb)),result.a);\n#endif\nfragmentOutputs.color=result;}\n`;\n// Sideeffect\nif (!ShaderStore.ShadersStoreWGSL[name]) {\n ShaderStore.ShadersStoreWGSL[name] = shader;\n}\n\n/** @internal */\nexport const textureProcessorPixelShaderWGSL = { name, shader };\n"]}
1
+ {"version":3,"file":"textureProcessor.fragment.js","sourceRoot":"","sources":["../../../../dev/core/src/ShadersWGSL/textureProcessor.fragment.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,MAAM,IAAI,GAAG,6BAA6B,CAAC;AAC3C,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4Kd,CAAC;AACF,aAAa;AACb,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;IACtC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AAChD,CAAC;AAED,gBAAgB;AAChB,MAAM,CAAC,MAAM,+BAA+B,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../Engines/shaderStore\";\n\nconst name = \"textureProcessorPixelShader\";\nconst shader = `#ifdef OPERAND_A_TEXTURE\nvar textureASampler: sampler;var textureA: texture_2d<f32>;\n#endif\n#ifdef OPERAND_B_TEXTURE\nvar textureBSampler: sampler;var textureB: texture_2d<f32>;\n#endif\n#if defined(OP_LERP) && defined(LERP_T_TEXTURE)\nvar textureTSampler: sampler;var textureT: texture_2d<f32>;\n#endif\n#ifdef OPERAND_A_MATRIX\nuniform textureAMatrix: mat4x4f;\n#endif\n#ifdef OPERAND_B_MATRIX\nuniform textureBMatrix: mat4x4f;\n#endif\n#if defined(OP_LERP) && defined(LERP_T_MATRIX)\nuniform textureTMatrix: mat4x4f;\n#endif\n#if !defined(OPERAND_A_TEXTURE) || defined(OPERAND_A_FACTOR)\nuniform factorA: vec4f;\n#endif\n#if !defined(OPERAND_B_TEXTURE) || defined(OPERAND_B_FACTOR)\nuniform factorB: vec4f;\n#endif\n#if defined(OP_LERP) && (!defined(LERP_T_TEXTURE) || defined(LERP_T_FACTOR))\nuniform factorT: vec4f;\n#endif\n#if defined(OP_MULTI_SCATTER_TO_SINGLE_SCATTER) || defined(OP_SINGLE_SCATTER_TO_MULTI_SCATTER)\nuniform scatterAniso: f32;\n#endif\nvarying vUV: vec2f;@fragment\nfn main(input: FragmentInputs)->FragmentOutputs {let uv: vec2f=input.vUV;\n#ifdef OPERAND_A_TEXTURE\n#ifdef OPERAND_A_MATRIX\nvar a: vec4f=textureSample(textureA,textureASampler,(uniforms.textureAMatrix*vec4f(uv,1.0,0.0)).xy);\n#else\nvar a: vec4f=textureSample(textureA,textureASampler,uv);\n#endif\n#ifdef OPERAND_A_SRGB\na=vec4f(mix(a.rgb/vec3f(12.92),pow((a.rgb+vec3f(0.055))/vec3f(1.055),vec3f(2.4)),step(vec3f(0.04045),a.rgb)),a.a);\n#endif\n#ifdef OPERAND_A_CHANNEL_R\na=vec4f(a.rrr,a.a);\n#elif defined(OPERAND_A_CHANNEL_G)\na=vec4f(a.ggg,a.a);\n#elif defined(OPERAND_A_CHANNEL_B)\na=vec4f(a.bbb,a.a);\n#elif defined(OPERAND_A_CHANNEL_A)\na=a.aaaa;\n#endif\n#ifdef OPERAND_A_FACTOR\na*=uniforms.factorA;\n#endif\n#else\nlet a: vec4f=uniforms.factorA;\n#endif\n#ifdef OPERAND_B_TEXTURE\n#ifdef OPERAND_B_MATRIX\nvar b: vec4f=textureSample(textureB,textureBSampler,(uniforms.textureBMatrix*vec4f(uv,1.0,0.0)).xy);\n#else\nvar b: vec4f=textureSample(textureB,textureBSampler,uv);\n#endif\n#ifdef OPERAND_B_SRGB\nb=vec4f(mix(b.rgb/vec3f(12.92),pow((b.rgb+vec3f(0.055))/vec3f(1.055),vec3f(2.4)),step(vec3f(0.04045),b.rgb)),b.a);\n#endif\n#ifdef OPERAND_B_CHANNEL_R\nb=vec4f(b.rrr,b.a);\n#elif defined(OPERAND_B_CHANNEL_G)\nb=vec4f(b.ggg,b.a);\n#elif defined(OPERAND_B_CHANNEL_B)\nb=vec4f(b.bbb,b.a);\n#elif defined(OPERAND_B_CHANNEL_A)\nb=b.aaaa;\n#endif\n#ifdef OPERAND_B_FACTOR\nb*=uniforms.factorB;\n#endif\n#else\nlet b: vec4f=uniforms.factorB;\n#endif\n#ifdef OP_MULTI_SCATTER_TO_SINGLE_SCATTER\n#ifdef MULTI_SCATTER_SCALE_B\nlet multiScatter: vec4f=a*b;\n#else\nlet multiScatter: vec4f=a;\n#endif\nlet rhoMs: vec3f=clamp(multiScatter.rgb,vec3f(0.0),vec3f(1.0));var s: vec3f=vec3f(4.09712)+4.20863*rhoMs-sqrt(vec3f(9.59217)+41.6808*rhoMs+17.7126*rhoMs*rhoMs);s=select(s,vec3f(1.0),rhoMs==vec3f(0.0));var result: vec4f=vec4f((vec3f(1.0)-s*s)/max(vec3f(1.0)-uniforms.scatterAniso*s*s,vec3f(0.0000001)),multiScatter.a);\n#elif defined(OP_SINGLE_SCATTER_TO_MULTI_SCATTER)\nlet ssAlbedo: vec3f=clamp(a.rgb,vec3f(0.0),vec3f(1.0));let s2: vec3f=(vec3f(1.0)-ssAlbedo)/max(vec3f(1.0)-uniforms.scatterAniso*ssAlbedo,vec3f(0.0000001));let sq: vec3f=sqrt(max(s2,vec3f(0.0)));var result: vec4f=vec4f((vec3f(1.0)-sq)*(vec3f(1.0)-0.139*sq)/(vec3f(1.0)+1.17*sq),a.a);\n#elif defined(OP_CHANNEL_MAX)\nvar _cmax: f32=max(max(a.r,a.g),a.b);\n#ifdef CHANNEL_MAX_INCLUDE_ALPHA\n_cmax=max(_cmax,a.a);var result: vec4f=vec4f(_cmax,_cmax,_cmax,_cmax);\n#else\nvar result: vec4f=vec4f(_cmax,_cmax,_cmax,a.a);\n#endif\n#elif defined(OP_INVERT)\nvar _ir: f32=a.r; var _ig: f32=a.g; var _ib: f32=a.b; var _ia: f32=a.a;\n#ifdef INVERT_R\n_ir=1.0-_ir;\n#endif\n#ifdef INVERT_G\n_ig=1.0-_ig;\n#endif\n#ifdef INVERT_B\n_ib=1.0-_ib;\n#endif\n#ifdef INVERT_A\n_ia=1.0-_ia;\n#endif\nvar result: vec4f=vec4f(_ir,_ig,_ib,_ia);\n#elif defined(OP_LERP)\n#ifdef LERP_T_TEXTURE\n#ifdef LERP_T_MATRIX\nvar t: vec4f=textureSample(textureT,textureTSampler,(uniforms.textureTMatrix*vec4f(uv,1.0,0.0)).xy);\n#else\nvar t: vec4f=textureSample(textureT,textureTSampler,uv);\n#endif\n#ifdef LERP_T_SRGB\nt=vec4f(mix(t.rgb/vec3f(12.92),pow((t.rgb+vec3f(0.055))/vec3f(1.055),vec3f(2.4)),step(vec3f(0.04045),t.rgb)),t.a);\n#endif\n#ifdef LERP_T_CHANNEL_R\nt=vec4f(t.rrr,t.a);\n#elif defined(LERP_T_CHANNEL_G)\nt=vec4f(t.ggg,t.a);\n#elif defined(LERP_T_CHANNEL_B)\nt=vec4f(t.bbb,t.a);\n#elif defined(LERP_T_CHANNEL_A)\nt=t.aaaa;\n#endif\n#ifdef LERP_T_FACTOR\nt*=uniforms.factorT;\n#endif\n#else\nlet t: vec4f=uniforms.factorT;\n#endif\nvar result: vec4f=mix(a,b,t);\n#elif defined(OP_MAX)\nvar result: vec4f=max(a,b);\n#elif defined(OP_DIVIDE)\nvar result: vec4f=a/max(b,vec4f(0.00001));\n#elif defined(OP_TRANSMISSION_FRACTION)\nvar result: vec4f=a/max(a+b*(vec4f(1.0)-a),vec4f(0.00001));\n#elif defined(OP_THIN_WALLED_TRANSMISSION_WEIGHT)\nvar result: vec4f=vec4f(a.r*(1.0-b.r));\n#elif defined(OP_THIN_WALLED_SUBSURFACE_WEIGHT)\nlet _transmittedScatter: f32=a.r*b.r;var result: vec4f=vec4f(_transmittedScatter/max(1.0-a.r+_transmittedScatter,0.00001));\n#elif defined(OP_TRANSMISSION_SCATTER_ALBEDO)\nvar _extinction: vec3f=-log(max(a.rgb,vec3f(0.0000001)));let _absorption: vec3f=_extinction-b.rgb;_extinction-=vec3f(min(min(min(_absorption.r,_absorption.g),_absorption.b),0.0));var result: vec4f=vec4f(b.rgb/max(_extinction,vec3f(0.00001)),b.a);\n#else\nvar result: vec4f=a*b;\n#endif\n#if defined(OUTPUT_MASK_R_ZERO) || defined(OUTPUT_MASK_G_ZERO) || defined(OUTPUT_MASK_B_ZERO) || defined(OUTPUT_MASK_A_ONE)\nvar _omr: f32=result.r; var _omg: f32=result.g; var _omb: f32=result.b; var _oma: f32=result.a;\n#ifdef OUTPUT_MASK_R_ZERO\n_omr=0.0;\n#endif\n#ifdef OUTPUT_MASK_G_ZERO\n_omg=0.0;\n#endif\n#ifdef OUTPUT_MASK_B_ZERO\n_omb=0.0;\n#endif\n#ifdef OUTPUT_MASK_A_ONE\n_oma=1.0;\n#endif\nresult=vec4f(_omr,_omg,_omb,_oma);\n#endif\n#ifdef OUTPUT_SRGB\nresult=vec4f(mix(result.rgb*vec3f(12.92),pow(result.rgb,vec3f(1.0/2.4))*vec3f(1.055)-vec3f(0.055),step(vec3f(0.0031308),result.rgb)),result.a);\n#endif\nfragmentOutputs.color=result;}\n`;\n// Sideeffect\nif (!ShaderStore.ShadersStoreWGSL[name]) {\n ShaderStore.ShadersStoreWGSL[name] = shader;\n}\n\n/** @internal */\nexport const textureProcessorPixelShaderWGSL = { name, shader };\n"]}
@@ -703,14 +703,24 @@ export class SpriteRenderer {
703
703
  if (cache?.usesVelocity) {
704
704
  cache.cameraHistories = new WeakMap();
705
705
  }
706
+ // The draw contexts can still hold resources of the lost device (in WebGPU, the indirect draw buffer used for the instanced draws)
707
+ cache?.drawWrapperBase._recreateDrawContext(this._engine);
708
+ cache?.drawWrapperDepth._recreateDrawContext(this._engine);
706
709
  }
707
- this._buffer._rebuild();
710
+ // Rebuild each backing buffer once: the vertex buffers are views of _buffer and _spriteBuffer, and VertexBuffer._rebuild() rebuilds its backing buffer
711
+ const buffers = new Set([this._buffer]);
708
712
  for (const key in this._vertexBuffers) {
709
- const vertexBuffer = this._vertexBuffers[key];
710
- vertexBuffer._rebuild();
713
+ buffers.add(this._vertexBuffers[key].getWrapperBuffer());
714
+ }
715
+ if (this._spriteBuffer) {
716
+ buffers.add(this._spriteBuffer);
717
+ }
718
+ if (this._previousBuffer) {
719
+ buffers.add(this._previousBuffer);
720
+ }
721
+ for (const buffer of buffers) {
722
+ buffer._rebuild();
711
723
  }
712
- this._spriteBuffer?._rebuild();
713
- this._previousBuffer?._rebuild();
714
724
  }
715
725
  /**
716
726
  * Release associated resources