@babylonjs/core 8.28.1 → 8.28.2

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 (232) hide show
  1. package/Engines/abstractEngine.js +2 -2
  2. package/Engines/abstractEngine.js.map +1 -1
  3. package/FrameGraph/frameGraphContext.d.ts +2 -1
  4. package/FrameGraph/frameGraphContext.js +4 -1
  5. package/FrameGraph/frameGraphContext.js.map +1 -1
  6. package/Materials/Background/backgroundMaterial.d.ts +19 -91
  7. package/Materials/Background/backgroundMaterial.js +17 -245
  8. package/Materials/Background/backgroundMaterial.js.map +1 -1
  9. package/Materials/Node/nodeMaterial.d.ts +57 -69
  10. package/Materials/Node/nodeMaterial.js +9 -86
  11. package/Materials/Node/nodeMaterial.js.map +1 -1
  12. package/Materials/PBR/index.d.ts +5 -0
  13. package/Materials/PBR/index.js +5 -0
  14. package/Materials/PBR/index.js.map +1 -1
  15. package/Materials/PBR/openPbrMaterial.d.ts +998 -0
  16. package/Materials/PBR/openPbrMaterial.js +2069 -0
  17. package/Materials/PBR/openPbrMaterial.js.map +1 -0
  18. package/Materials/PBR/pbrBaseMaterial.d.ts +57 -43
  19. package/Materials/PBR/pbrBaseMaterial.js +21 -304
  20. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  21. package/Materials/PBR/pbrMaterial.d.ts +0 -78
  22. package/Materials/PBR/pbrMaterial.js +0 -110
  23. package/Materials/PBR/pbrMaterial.js.map +1 -1
  24. package/Materials/imageProcessing.d.ts +65 -0
  25. package/Materials/imageProcessing.js +162 -0
  26. package/Materials/imageProcessing.js.map +1 -0
  27. package/Materials/imageProcessingConfiguration.defines.d.ts +25 -0
  28. package/Materials/imageProcessingConfiguration.defines.js +27 -0
  29. package/Materials/imageProcessingConfiguration.defines.js.map +1 -1
  30. package/Materials/index.d.ts +2 -0
  31. package/Materials/index.js +2 -0
  32. package/Materials/index.js.map +1 -1
  33. package/Materials/material.d.ts +14 -0
  34. package/Materials/material.js +14 -0
  35. package/Materials/material.js.map +1 -1
  36. package/Materials/materialHelper.functions.d.ts +53 -0
  37. package/Materials/materialHelper.functions.js +297 -0
  38. package/Materials/materialHelper.functions.js.map +1 -1
  39. package/Materials/standardMaterial.d.ts +57 -121
  40. package/Materials/standardMaterial.js +21 -250
  41. package/Materials/standardMaterial.js.map +1 -1
  42. package/Materials/uv.defines.d.ts +22 -0
  43. package/Materials/uv.defines.js +24 -0
  44. package/Materials/uv.defines.js.map +1 -0
  45. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js +1 -0
  46. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
  47. package/Misc/decorators.d.ts +7 -0
  48. package/Misc/decorators.js +34 -0
  49. package/Misc/decorators.js.map +1 -1
  50. package/Particles/Node/Blocks/Emitters/createParticleBlock.js +10 -1
  51. package/Particles/Node/Blocks/Emitters/createParticleBlock.js.map +1 -1
  52. package/Particles/Node/Blocks/index.d.ts +2 -0
  53. package/Particles/Node/Blocks/index.js +2 -0
  54. package/Particles/Node/Blocks/index.js.map +1 -1
  55. package/Particles/Node/Blocks/particleInputBlock.js +4 -1
  56. package/Particles/Node/Blocks/particleInputBlock.js.map +1 -1
  57. package/Particles/Node/Blocks/particleLocalVariableBlock.d.ts +38 -0
  58. package/Particles/Node/Blocks/particleLocalVariableBlock.js +108 -0
  59. package/Particles/Node/Blocks/particleLocalVariableBlock.js.map +1 -0
  60. package/Particles/Node/Blocks/particleVectorLengthBlock.d.ts +26 -0
  61. package/Particles/Node/Blocks/particleVectorLengthBlock.js +50 -0
  62. package/Particles/Node/Blocks/particleVectorLengthBlock.js.map +1 -0
  63. package/Rendering/IBLShadows/iblShadowsPluginMaterial.d.ts +2 -1
  64. package/Rendering/IBLShadows/iblShadowsPluginMaterial.js +45 -0
  65. package/Rendering/IBLShadows/iblShadowsPluginMaterial.js.map +1 -1
  66. package/Rendering/IBLShadows/iblShadowsRenderPipeline.js +2 -1
  67. package/Rendering/IBLShadows/iblShadowsRenderPipeline.js.map +1 -1
  68. package/Rendering/geometryBufferRenderer.js +6 -4
  69. package/Rendering/geometryBufferRenderer.js.map +1 -1
  70. package/Rendering/reflectiveShadowMap.d.ts +3 -3
  71. package/Shaders/ShadersInclude/backgroundUboDeclaration.js +1 -1
  72. package/Shaders/ShadersInclude/backgroundUboDeclaration.js.map +1 -1
  73. package/Shaders/ShadersInclude/defaultUboDeclaration.js +1 -1
  74. package/Shaders/ShadersInclude/defaultUboDeclaration.js.map +1 -1
  75. package/Shaders/ShadersInclude/hdrFilteringFunctions.js +34 -0
  76. package/Shaders/ShadersInclude/hdrFilteringFunctions.js.map +1 -1
  77. package/Shaders/ShadersInclude/importanceSampling.js +4 -0
  78. package/Shaders/ShadersInclude/importanceSampling.js.map +1 -1
  79. package/Shaders/ShadersInclude/openpbrBaseLayerData.d.ts +5 -0
  80. package/Shaders/ShadersInclude/openpbrBaseLayerData.js +127 -0
  81. package/Shaders/ShadersInclude/openpbrBaseLayerData.js.map +1 -0
  82. package/Shaders/ShadersInclude/openpbrBlockAmbientOcclusion.d.ts +5 -0
  83. package/Shaders/ShadersInclude/openpbrBlockAmbientOcclusion.js +35 -0
  84. package/Shaders/ShadersInclude/openpbrBlockAmbientOcclusion.js.map +1 -0
  85. package/Shaders/ShadersInclude/openpbrBlockNormalFinal.d.ts +5 -0
  86. package/Shaders/ShadersInclude/openpbrBlockNormalFinal.js +25 -0
  87. package/Shaders/ShadersInclude/openpbrBlockNormalFinal.js.map +1 -0
  88. package/Shaders/ShadersInclude/openpbrCoatLayerData.d.ts +5 -0
  89. package/Shaders/ShadersInclude/openpbrCoatLayerData.js +59 -0
  90. package/Shaders/ShadersInclude/openpbrCoatLayerData.js.map +1 -0
  91. package/Shaders/ShadersInclude/openpbrConductorReflectance.d.ts +5 -0
  92. package/Shaders/ShadersInclude/openpbrConductorReflectance.js +19 -0
  93. package/Shaders/ShadersInclude/openpbrConductorReflectance.js.map +1 -0
  94. package/Shaders/ShadersInclude/openpbrDielectricReflectance.d.ts +5 -0
  95. package/Shaders/ShadersInclude/openpbrDielectricReflectance.js +30 -0
  96. package/Shaders/ShadersInclude/openpbrDielectricReflectance.js.map +1 -0
  97. package/Shaders/ShadersInclude/openpbrDirectLighting.d.ts +5 -0
  98. package/Shaders/ShadersInclude/openpbrDirectLighting.js +69 -0
  99. package/Shaders/ShadersInclude/openpbrDirectLighting.js.map +1 -0
  100. package/Shaders/ShadersInclude/openpbrDirectLightingInit.d.ts +5 -0
  101. package/Shaders/ShadersInclude/openpbrDirectLightingInit.js +80 -0
  102. package/Shaders/ShadersInclude/openpbrDirectLightingInit.js.map +1 -0
  103. package/Shaders/ShadersInclude/openpbrDirectLightingShadow.d.ts +5 -0
  104. package/Shaders/ShadersInclude/openpbrDirectLightingShadow.js +129 -0
  105. package/Shaders/ShadersInclude/openpbrDirectLightingShadow.js.map +1 -0
  106. package/Shaders/ShadersInclude/openpbrEnvironmentLighting.d.ts +5 -0
  107. package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js +106 -0
  108. package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -0
  109. package/Shaders/ShadersInclude/openpbrFragmentDeclaration.d.ts +6 -0
  110. package/Shaders/ShadersInclude/openpbrFragmentDeclaration.js +115 -0
  111. package/Shaders/ShadersInclude/openpbrFragmentDeclaration.js.map +1 -0
  112. package/Shaders/ShadersInclude/openpbrFragmentSamplersDeclaration.d.ts +6 -0
  113. package/Shaders/ShadersInclude/openpbrFragmentSamplersDeclaration.js +72 -0
  114. package/Shaders/ShadersInclude/openpbrFragmentSamplersDeclaration.js.map +1 -0
  115. package/Shaders/ShadersInclude/openpbrGeometryInfo.d.ts +5 -0
  116. package/Shaders/ShadersInclude/openpbrGeometryInfo.js +46 -0
  117. package/Shaders/ShadersInclude/openpbrGeometryInfo.js.map +1 -0
  118. package/Shaders/ShadersInclude/openpbrIblFunctions.d.ts +5 -0
  119. package/Shaders/ShadersInclude/openpbrIblFunctions.js +221 -0
  120. package/Shaders/ShadersInclude/openpbrIblFunctions.js.map +1 -0
  121. package/Shaders/ShadersInclude/openpbrNormalMapFragment.d.ts +5 -0
  122. package/Shaders/ShadersInclude/openpbrNormalMapFragment.js +64 -0
  123. package/Shaders/ShadersInclude/openpbrNormalMapFragment.js.map +1 -0
  124. package/Shaders/ShadersInclude/openpbrNormalMapFragmentFunctions.d.ts +6 -0
  125. package/Shaders/ShadersInclude/openpbrNormalMapFragmentFunctions.js +45 -0
  126. package/Shaders/ShadersInclude/openpbrNormalMapFragmentFunctions.js.map +1 -0
  127. package/Shaders/ShadersInclude/openpbrNormalMapFragmentMainFunctions.d.ts +5 -0
  128. package/Shaders/ShadersInclude/openpbrNormalMapFragmentMainFunctions.js +72 -0
  129. package/Shaders/ShadersInclude/openpbrNormalMapFragmentMainFunctions.js.map +1 -0
  130. package/Shaders/ShadersInclude/openpbrNormalMapVertex.d.ts +5 -0
  131. package/Shaders/ShadersInclude/openpbrNormalMapVertex.js +16 -0
  132. package/Shaders/ShadersInclude/openpbrNormalMapVertex.js.map +1 -0
  133. package/Shaders/ShadersInclude/openpbrNormalMapVertexDeclaration.d.ts +5 -0
  134. package/Shaders/ShadersInclude/openpbrNormalMapVertexDeclaration.js +16 -0
  135. package/Shaders/ShadersInclude/openpbrNormalMapVertexDeclaration.js.map +1 -0
  136. package/Shaders/ShadersInclude/openpbrUboDeclaration.d.ts +7 -0
  137. package/Shaders/ShadersInclude/openpbrUboDeclaration.js +18 -0
  138. package/Shaders/ShadersInclude/openpbrUboDeclaration.js.map +1 -0
  139. package/Shaders/ShadersInclude/openpbrVertexDeclaration.d.ts +6 -0
  140. package/Shaders/ShadersInclude/openpbrVertexDeclaration.js +103 -0
  141. package/Shaders/ShadersInclude/openpbrVertexDeclaration.js.map +1 -0
  142. package/Shaders/ShadersInclude/pbrBRDFFunctions.js +1 -1
  143. package/Shaders/ShadersInclude/pbrBRDFFunctions.js.map +1 -1
  144. package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js +3 -1
  145. package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
  146. package/Shaders/ShadersInclude/pbrHelperFunctions.js +2 -0
  147. package/Shaders/ShadersInclude/pbrHelperFunctions.js.map +1 -1
  148. package/Shaders/ShadersInclude/pbrUboDeclaration.js +1 -1
  149. package/Shaders/ShadersInclude/pbrUboDeclaration.js.map +1 -1
  150. package/Shaders/openpbr.fragment.d.ts +54 -0
  151. package/Shaders/openpbr.fragment.js +206 -0
  152. package/Shaders/openpbr.fragment.js.map +1 -0
  153. package/Shaders/openpbr.vertex.d.ts +39 -0
  154. package/Shaders/openpbr.vertex.js +238 -0
  155. package/Shaders/openpbr.vertex.js.map +1 -0
  156. package/ShadersWGSL/ShadersInclude/backgroundUboDeclaration.js +1 -1
  157. package/ShadersWGSL/ShadersInclude/backgroundUboDeclaration.js.map +1 -1
  158. package/ShadersWGSL/ShadersInclude/defaultUboDeclaration.js +1 -1
  159. package/ShadersWGSL/ShadersInclude/defaultUboDeclaration.js.map +1 -1
  160. package/ShadersWGSL/ShadersInclude/hdrFilteringFunctions.js +28 -0
  161. package/ShadersWGSL/ShadersInclude/hdrFilteringFunctions.js.map +1 -1
  162. package/ShadersWGSL/ShadersInclude/importanceSampling.js +4 -0
  163. package/ShadersWGSL/ShadersInclude/importanceSampling.js.map +1 -1
  164. package/ShadersWGSL/ShadersInclude/openpbrBaseLayerData.d.ts +5 -0
  165. package/ShadersWGSL/ShadersInclude/openpbrBaseLayerData.js +126 -0
  166. package/ShadersWGSL/ShadersInclude/openpbrBaseLayerData.js.map +1 -0
  167. package/ShadersWGSL/ShadersInclude/openpbrBlockAmbientOcclusion.d.ts +5 -0
  168. package/ShadersWGSL/ShadersInclude/openpbrBlockAmbientOcclusion.js +36 -0
  169. package/ShadersWGSL/ShadersInclude/openpbrBlockAmbientOcclusion.js.map +1 -0
  170. package/ShadersWGSL/ShadersInclude/openpbrBlockNormalFinal.d.ts +5 -0
  171. package/ShadersWGSL/ShadersInclude/openpbrBlockNormalFinal.js +25 -0
  172. package/ShadersWGSL/ShadersInclude/openpbrBlockNormalFinal.js.map +1 -0
  173. package/ShadersWGSL/ShadersInclude/openpbrCoatLayerData.d.ts +5 -0
  174. package/ShadersWGSL/ShadersInclude/openpbrCoatLayerData.js +59 -0
  175. package/ShadersWGSL/ShadersInclude/openpbrCoatLayerData.js.map +1 -0
  176. package/ShadersWGSL/ShadersInclude/openpbrConductorReflectance.d.ts +5 -0
  177. package/ShadersWGSL/ShadersInclude/openpbrConductorReflectance.js +19 -0
  178. package/ShadersWGSL/ShadersInclude/openpbrConductorReflectance.js.map +1 -0
  179. package/ShadersWGSL/ShadersInclude/openpbrDielectricReflectance.d.ts +5 -0
  180. package/ShadersWGSL/ShadersInclude/openpbrDielectricReflectance.js +33 -0
  181. package/ShadersWGSL/ShadersInclude/openpbrDielectricReflectance.js.map +1 -0
  182. package/ShadersWGSL/ShadersInclude/openpbrDirectLighting.d.ts +5 -0
  183. package/ShadersWGSL/ShadersInclude/openpbrDirectLighting.js +69 -0
  184. package/ShadersWGSL/ShadersInclude/openpbrDirectLighting.js.map +1 -0
  185. package/ShadersWGSL/ShadersInclude/openpbrDirectLightingInit.d.ts +5 -0
  186. package/ShadersWGSL/ShadersInclude/openpbrDirectLightingInit.js +80 -0
  187. package/ShadersWGSL/ShadersInclude/openpbrDirectLightingInit.js.map +1 -0
  188. package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.d.ts +5 -0
  189. package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js +112 -0
  190. package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -0
  191. package/ShadersWGSL/ShadersInclude/openpbrFragmentSamplersDeclaration.d.ts +6 -0
  192. package/ShadersWGSL/ShadersInclude/openpbrFragmentSamplersDeclaration.js +68 -0
  193. package/ShadersWGSL/ShadersInclude/openpbrFragmentSamplersDeclaration.js.map +1 -0
  194. package/ShadersWGSL/ShadersInclude/openpbrGeometryInfo.d.ts +5 -0
  195. package/ShadersWGSL/ShadersInclude/openpbrGeometryInfo.js +54 -0
  196. package/ShadersWGSL/ShadersInclude/openpbrGeometryInfo.js.map +1 -0
  197. package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.d.ts +5 -0
  198. package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.js +218 -0
  199. package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.js.map +1 -0
  200. package/ShadersWGSL/ShadersInclude/openpbrNormalMapFragment.d.ts +5 -0
  201. package/ShadersWGSL/ShadersInclude/openpbrNormalMapFragment.js +64 -0
  202. package/ShadersWGSL/ShadersInclude/openpbrNormalMapFragment.js.map +1 -0
  203. package/ShadersWGSL/ShadersInclude/openpbrNormalMapFragmentFunctions.d.ts +6 -0
  204. package/ShadersWGSL/ShadersInclude/openpbrNormalMapFragmentFunctions.js +45 -0
  205. package/ShadersWGSL/ShadersInclude/openpbrNormalMapFragmentFunctions.js.map +1 -0
  206. package/ShadersWGSL/ShadersInclude/openpbrNormalMapFragmentMainFunctions.d.ts +5 -0
  207. package/ShadersWGSL/ShadersInclude/openpbrNormalMapFragmentMainFunctions.js +51 -0
  208. package/ShadersWGSL/ShadersInclude/openpbrNormalMapFragmentMainFunctions.js.map +1 -0
  209. package/ShadersWGSL/ShadersInclude/openpbrNormalMapVertex.d.ts +5 -0
  210. package/ShadersWGSL/ShadersInclude/openpbrNormalMapVertex.js +16 -0
  211. package/ShadersWGSL/ShadersInclude/openpbrNormalMapVertex.js.map +1 -0
  212. package/ShadersWGSL/ShadersInclude/openpbrNormalMapVertexDeclaration.d.ts +5 -0
  213. package/ShadersWGSL/ShadersInclude/openpbrNormalMapVertexDeclaration.js +16 -0
  214. package/ShadersWGSL/ShadersInclude/openpbrNormalMapVertexDeclaration.js.map +1 -0
  215. package/ShadersWGSL/ShadersInclude/openpbrUboDeclaration.d.ts +7 -0
  216. package/ShadersWGSL/ShadersInclude/openpbrUboDeclaration.js +17 -0
  217. package/ShadersWGSL/ShadersInclude/openpbrUboDeclaration.js.map +1 -0
  218. package/ShadersWGSL/ShadersInclude/pbrBRDFFunctions.js +1 -1
  219. package/ShadersWGSL/ShadersInclude/pbrBRDFFunctions.js.map +1 -1
  220. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js +3 -1
  221. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
  222. package/ShadersWGSL/ShadersInclude/pbrHelperFunctions.js +2 -0
  223. package/ShadersWGSL/ShadersInclude/pbrHelperFunctions.js.map +1 -1
  224. package/ShadersWGSL/ShadersInclude/pbrUboDeclaration.js +1 -1
  225. package/ShadersWGSL/ShadersInclude/pbrUboDeclaration.js.map +1 -1
  226. package/ShadersWGSL/openpbr.fragment.d.ts +52 -0
  227. package/ShadersWGSL/openpbr.fragment.js +193 -0
  228. package/ShadersWGSL/openpbr.fragment.js.map +1 -0
  229. package/ShadersWGSL/openpbr.vertex.d.ts +37 -0
  230. package/ShadersWGSL/openpbr.vertex.js +227 -0
  231. package/ShadersWGSL/openpbr.vertex.js.map +1 -0
  232. package/package.json +1 -1
@@ -0,0 +1,68 @@
1
+ // Do not edit.
2
+ import { ShaderStore } from "../../Engines/shaderStore.js";
3
+ import "./samplerFragmentDeclaration.js";
4
+ const name = "openpbrFragmentSamplersDeclaration";
5
+ const shader = `#include<samplerFragmentDeclaration>(_DEFINENAME_,BASE_COLOR,_VARYINGNAME_,BaseColor,_SAMPLERNAME_,baseColor)
6
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,BASE_WEIGHT,_VARYINGNAME_,BaseWeight,_SAMPLERNAME_,baseWeight)
7
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,BASE_DIFFUSE_ROUGHNESS,_VARYINGNAME_,BaseDiffuseRoughness,_SAMPLERNAME_,baseDiffuseRoughness)
8
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,BASE_METALNESS,_VARYINGNAME_,BaseMetalness,_SAMPLERNAME_,baseMetalness)
9
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,SPECULAR_WEIGHT,_VARYINGNAME_,SpecularWeight,_SAMPLERNAME_,specularWeight)
10
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,SPECULAR_COLOR,_VARYINGNAME_,SpecularColor,_SAMPLERNAME_,specularColor)
11
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,SPECULAR_ROUGHNESS,_VARYINGNAME_,SpecularRoughness,_SAMPLERNAME_,specularRoughness)
12
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,SPECULAR_ROUGHNESS_ANISOTROPY,_VARYINGNAME_,SpecularRoughnessAnisotropy,_SAMPLERNAME_,specularRoughnessAnisotropy)
13
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,COAT_WEIGHT,_VARYINGNAME_,CoatWeight,_SAMPLERNAME_,coatWeight)
14
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,COAT_COLOR,_VARYINGNAME_,CoatColor,_SAMPLERNAME_,coatColor)
15
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,COAT_ROUGHNESS,_VARYINGNAME_,CoatRoughness,_SAMPLERNAME_,coatRoughness)
16
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,COAT_ROUGHNESS_ANISOTROPY,_VARYINGNAME_,CoatRoughnessAnisotropy,_SAMPLERNAME_,coatRoughnessAnisotropy)
17
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,COAT_DARKENING,_VARYINGNAME_,CoatDarkening,_SAMPLERNAME_,coatDarkening)
18
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,GEOMETRY_OPACITY,_VARYINGNAME_,GeometryOpacity,_SAMPLERNAME_,geometryOpacity)
19
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,GEOMETRY_TANGENT,_VARYINGNAME_,GeometryTangent,_SAMPLERNAME_,geometryTangent)
20
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,GEOMETRY_COAT_TANGENT,_VARYINGNAME_,GeometryCoatTangent,_SAMPLERNAME_,geometryCoatTangent)
21
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,EMISSION_COLOR,_VARYINGNAME_,EmissionColor,_SAMPLERNAME_,emissionColor)
22
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,AMBIENT_OCCLUSION,_VARYINGNAME_,AmbientOcclusion,_SAMPLERNAME_,ambientOcclusion)
23
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,DECAL,_VARYINGNAME_,Decal,_SAMPLERNAME_,decal)
24
+ #ifdef REFLECTION
25
+ #ifdef REFLECTIONMAP_3D
26
+ var reflectionSamplerSampler: sampler;var reflectionSampler: texture_cube<f32>;
27
+ #ifdef LODBASEDMICROSFURACE
28
+ #else
29
+ var reflectionLowSamplerSampler: sampler;var reflectionLowSampler: texture_cube<f32>;var reflectionHighSamplerSampler: sampler;var reflectionHighSampler: texture_cube<f32>;
30
+ #endif
31
+ #ifdef USEIRRADIANCEMAP
32
+ var irradianceSamplerSampler: sampler;var irradianceSampler: texture_cube<f32>;
33
+ #endif
34
+ #else
35
+ var reflectionSamplerSampler: sampler;var reflectionSampler: texture_2d<f32>;
36
+ #ifdef LODBASEDMICROSFURACE
37
+ #else
38
+ var reflectionLowSamplerSampler: sampler;var reflectionLowSampler: texture_2d<f32>;var reflectionHighSamplerSampler: sampler;var reflectionHighSampler: texture_2d<f32>;
39
+ #endif
40
+ #ifdef USEIRRADIANCEMAP
41
+ var irradianceSamplerSampler: sampler;var irradianceSampler: texture_2d<f32>;
42
+ #endif
43
+ #endif
44
+ #ifdef REFLECTIONMAP_SKYBOX
45
+ varying vPositionUVW: vec3f;
46
+ #else
47
+ #if defined(REFLECTIONMAP_EQUIRECTANGULAR_FIXED) || defined(REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED)
48
+ varying vDirectionW: vec3f;
49
+ #endif
50
+ #endif
51
+ #endif
52
+ #ifdef ENVIRONMENTBRDF
53
+ var environmentBrdfSamplerSampler: sampler;var environmentBrdfSampler: texture_2d<f32>;
54
+ #endif
55
+ #ifdef ANISOTROPIC
56
+ var blueNoiseSamplerSampler: sampler;var blueNoiseSampler: texture_2d<f32>;
57
+ #endif
58
+ #ifdef IBL_CDF_FILTERING
59
+ var icdfSamplerSampler: sampler;var icdfSampler: texture_2d<f32>;
60
+ #endif
61
+ `;
62
+ // Sideeffect
63
+ if (!ShaderStore.IncludesShadersStoreWGSL[name]) {
64
+ ShaderStore.IncludesShadersStoreWGSL[name] = shader;
65
+ }
66
+ /** @internal */
67
+ export const openpbrFragmentSamplersDeclarationWGSL = { name, shader };
68
+ //# sourceMappingURL=openpbrFragmentSamplersDeclaration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openpbrFragmentSamplersDeclaration.js","sourceRoot":"","sources":["../../../../../dev/core/src/ShadersWGSL/ShadersInclude/openpbrFragmentSamplersDeclaration.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,8BAA8B,CAAC;AAEtC,MAAM,IAAI,GAAG,oCAAoC,CAAC;AAClD,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwDd,CAAC;AACF,aAAa;AACb,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC;IAC9C,WAAW,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACxD,CAAC;AACD,gBAAgB;AAChB,MAAM,CAAC,MAAM,sCAAsC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../../Engines/shaderStore\";\nimport \"./samplerFragmentDeclaration\";\n\nconst name = \"openpbrFragmentSamplersDeclaration\";\nconst shader = `#include<samplerFragmentDeclaration>(_DEFINENAME_,BASE_COLOR,_VARYINGNAME_,BaseColor,_SAMPLERNAME_,baseColor)\n#include<samplerFragmentDeclaration>(_DEFINENAME_,BASE_WEIGHT,_VARYINGNAME_,BaseWeight,_SAMPLERNAME_,baseWeight)\n#include<samplerFragmentDeclaration>(_DEFINENAME_,BASE_DIFFUSE_ROUGHNESS,_VARYINGNAME_,BaseDiffuseRoughness,_SAMPLERNAME_,baseDiffuseRoughness)\n#include<samplerFragmentDeclaration>(_DEFINENAME_,BASE_METALNESS,_VARYINGNAME_,BaseMetalness,_SAMPLERNAME_,baseMetalness)\n#include<samplerFragmentDeclaration>(_DEFINENAME_,SPECULAR_WEIGHT,_VARYINGNAME_,SpecularWeight,_SAMPLERNAME_,specularWeight)\n#include<samplerFragmentDeclaration>(_DEFINENAME_,SPECULAR_COLOR,_VARYINGNAME_,SpecularColor,_SAMPLERNAME_,specularColor)\n#include<samplerFragmentDeclaration>(_DEFINENAME_,SPECULAR_ROUGHNESS,_VARYINGNAME_,SpecularRoughness,_SAMPLERNAME_,specularRoughness)\n#include<samplerFragmentDeclaration>(_DEFINENAME_,SPECULAR_ROUGHNESS_ANISOTROPY,_VARYINGNAME_,SpecularRoughnessAnisotropy,_SAMPLERNAME_,specularRoughnessAnisotropy)\n#include<samplerFragmentDeclaration>(_DEFINENAME_,COAT_WEIGHT,_VARYINGNAME_,CoatWeight,_SAMPLERNAME_,coatWeight)\n#include<samplerFragmentDeclaration>(_DEFINENAME_,COAT_COLOR,_VARYINGNAME_,CoatColor,_SAMPLERNAME_,coatColor)\n#include<samplerFragmentDeclaration>(_DEFINENAME_,COAT_ROUGHNESS,_VARYINGNAME_,CoatRoughness,_SAMPLERNAME_,coatRoughness)\n#include<samplerFragmentDeclaration>(_DEFINENAME_,COAT_ROUGHNESS_ANISOTROPY,_VARYINGNAME_,CoatRoughnessAnisotropy,_SAMPLERNAME_,coatRoughnessAnisotropy)\n#include<samplerFragmentDeclaration>(_DEFINENAME_,COAT_DARKENING,_VARYINGNAME_,CoatDarkening,_SAMPLERNAME_,coatDarkening)\n#include<samplerFragmentDeclaration>(_DEFINENAME_,GEOMETRY_OPACITY,_VARYINGNAME_,GeometryOpacity,_SAMPLERNAME_,geometryOpacity)\n#include<samplerFragmentDeclaration>(_DEFINENAME_,GEOMETRY_TANGENT,_VARYINGNAME_,GeometryTangent,_SAMPLERNAME_,geometryTangent)\n#include<samplerFragmentDeclaration>(_DEFINENAME_,GEOMETRY_COAT_TANGENT,_VARYINGNAME_,GeometryCoatTangent,_SAMPLERNAME_,geometryCoatTangent)\n#include<samplerFragmentDeclaration>(_DEFINENAME_,EMISSION_COLOR,_VARYINGNAME_,EmissionColor,_SAMPLERNAME_,emissionColor)\n#include<samplerFragmentDeclaration>(_DEFINENAME_,AMBIENT_OCCLUSION,_VARYINGNAME_,AmbientOcclusion,_SAMPLERNAME_,ambientOcclusion)\n#include<samplerFragmentDeclaration>(_DEFINENAME_,DECAL,_VARYINGNAME_,Decal,_SAMPLERNAME_,decal)\n#ifdef REFLECTION\n#ifdef REFLECTIONMAP_3D\nvar reflectionSamplerSampler: sampler;var reflectionSampler: texture_cube<f32>;\n#ifdef LODBASEDMICROSFURACE\n#else\nvar reflectionLowSamplerSampler: sampler;var reflectionLowSampler: texture_cube<f32>;var reflectionHighSamplerSampler: sampler;var reflectionHighSampler: texture_cube<f32>;\n#endif\n#ifdef USEIRRADIANCEMAP\nvar irradianceSamplerSampler: sampler;var irradianceSampler: texture_cube<f32>;\n#endif\n#else\nvar reflectionSamplerSampler: sampler;var reflectionSampler: texture_2d<f32>;\n#ifdef LODBASEDMICROSFURACE\n#else\nvar reflectionLowSamplerSampler: sampler;var reflectionLowSampler: texture_2d<f32>;var reflectionHighSamplerSampler: sampler;var reflectionHighSampler: texture_2d<f32>;\n#endif\n#ifdef USEIRRADIANCEMAP\nvar irradianceSamplerSampler: sampler;var irradianceSampler: texture_2d<f32>;\n#endif\n#endif\n#ifdef REFLECTIONMAP_SKYBOX\nvarying vPositionUVW: vec3f;\n#else\n#if defined(REFLECTIONMAP_EQUIRECTANGULAR_FIXED) || defined(REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED)\nvarying vDirectionW: vec3f;\n#endif\n#endif\n#endif\n#ifdef ENVIRONMENTBRDF\nvar environmentBrdfSamplerSampler: sampler;var environmentBrdfSampler: texture_2d<f32>;\n#endif\n#ifdef ANISOTROPIC\nvar blueNoiseSamplerSampler: sampler;var blueNoiseSampler: texture_2d<f32>;\n#endif\n#ifdef IBL_CDF_FILTERING\nvar icdfSamplerSampler: sampler;var icdfSampler: texture_2d<f32>;\n#endif\n`;\n// Sideeffect\nif (!ShaderStore.IncludesShadersStoreWGSL[name]) {\n ShaderStore.IncludesShadersStoreWGSL[name] = shader;\n}\n/** @internal */\nexport const openpbrFragmentSamplersDeclarationWGSL = { name, shader };\n"]}
@@ -0,0 +1,5 @@
1
+ /** @internal */
2
+ export declare const openpbrGeometryInfoWGSL: {
3
+ name: string;
4
+ shader: string;
5
+ };
@@ -0,0 +1,54 @@
1
+ // Do not edit.
2
+ import { ShaderStore } from "../../Engines/shaderStore.js";
3
+ const name = "openpbrGeometryInfo";
4
+ const shader = `struct geometryInfoOutParams
5
+ {NdotV: f32,
6
+ NdotVUnclamped: f32,
7
+ environmentBrdf: vec3f,
8
+ horizonOcclusion: f32};
9
+ #ifdef ANISOTROPIC
10
+ struct geometryInfoAnisoOutParams
11
+ {NdotV: f32,
12
+ NdotVUnclamped: f32,
13
+ environmentBrdf: vec3f,
14
+ horizonOcclusion: f32,
15
+ anisotropy: f32,
16
+ anisotropicTangent: vec3f,
17
+ anisotropicBitangent: vec3f,
18
+ TBN: mat3x3<f32>};
19
+ #endif
20
+ fn geometryInfo(
21
+ normalW: vec3f,viewDirectionW: vec3f,roughness: f32,geometricNormalW: vec3f
22
+ )->geometryInfoOutParams
23
+ {var outParams: geometryInfoOutParams;outParams.NdotVUnclamped=dot(normalW,viewDirectionW);outParams.NdotV=absEps(outParams.NdotVUnclamped);
24
+ #if defined(ENVIRONMENTBRDF)
25
+ outParams.environmentBrdf=getBRDFLookup(outParams.NdotV,roughness);
26
+ #else
27
+ outParams.environmentBrdf=vec3f(0.0);
28
+ #endif
29
+ outParams.horizonOcclusion=1.0f;
30
+ #if defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX)
31
+ #ifdef HORIZONOCCLUSION
32
+ #if defined(GEOMETRY_NORMAL) || defined(GEOMETRY_COAT_NORMAL)
33
+ #ifdef REFLECTIONMAP_3D
34
+ outParams.horizonOcclusion=environmentHorizonOcclusion(-viewDirectionW,normalW,geometricNormalW);
35
+ #endif
36
+ #endif
37
+ #endif
38
+ #endif
39
+ return outParams;}
40
+ #ifdef ANISOTROPIC
41
+ fn geometryInfoAniso(
42
+ normalW: vec3f,viewDirectionW: vec3f,roughness: f32,geometricNormalW: vec3f
43
+ ,vAnisotropy: vec3f,TBN: mat3x3<f32>
44
+ )->geometryInfoAnisoOutParams
45
+ {let geoInfo: geometryInfoOutParams=geometryInfo(normalW,viewDirectionW,roughness,geometricNormalW);var outParams: geometryInfoAnisoOutParams;outParams.NdotV=geoInfo.NdotV;outParams.NdotVUnclamped=geoInfo.NdotVUnclamped;outParams.environmentBrdf=geoInfo.environmentBrdf;outParams.horizonOcclusion=geoInfo.horizonOcclusion;outParams.anisotropy=vAnisotropy.b;let anisotropyDirection: vec3f=vec3f(vAnisotropy.xy,0.);let anisoTBN: mat3x3<f32>=mat3x3<f32>(normalize(TBN[0]),normalize(TBN[1]),normalize(TBN[2]));outParams.anisotropicTangent=normalize(anisoTBN*anisotropyDirection);outParams.anisotropicBitangent=normalize(cross(anisoTBN[2],outParams.anisotropicTangent));outParams.TBN=TBN;return outParams;}
46
+ #endif
47
+ `;
48
+ // Sideeffect
49
+ if (!ShaderStore.IncludesShadersStoreWGSL[name]) {
50
+ ShaderStore.IncludesShadersStoreWGSL[name] = shader;
51
+ }
52
+ /** @internal */
53
+ export const openpbrGeometryInfoWGSL = { name, shader };
54
+ //# sourceMappingURL=openpbrGeometryInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openpbrGeometryInfo.js","sourceRoot":"","sources":["../../../../../dev/core/src/ShadersWGSL/ShadersInclude/openpbrGeometryInfo.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,IAAI,GAAG,qBAAqB,CAAC;AACnC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2Cd,CAAC;AACF,aAAa;AACb,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC;IAC9C,WAAW,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACxD,CAAC;AACD,gBAAgB;AAChB,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../../Engines/shaderStore\";\n\nconst name = \"openpbrGeometryInfo\";\nconst shader = `struct geometryInfoOutParams\n{NdotV: f32,\nNdotVUnclamped: f32,\nenvironmentBrdf: vec3f,\nhorizonOcclusion: f32};\n#ifdef ANISOTROPIC\nstruct geometryInfoAnisoOutParams\n{NdotV: f32,\nNdotVUnclamped: f32,\nenvironmentBrdf: vec3f,\nhorizonOcclusion: f32,\nanisotropy: f32,\nanisotropicTangent: vec3f,\nanisotropicBitangent: vec3f,\nTBN: mat3x3<f32>};\n#endif\nfn geometryInfo(\nnormalW: vec3f,viewDirectionW: vec3f,roughness: f32,geometricNormalW: vec3f\n)->geometryInfoOutParams\n{var outParams: geometryInfoOutParams;outParams.NdotVUnclamped=dot(normalW,viewDirectionW);outParams.NdotV=absEps(outParams.NdotVUnclamped);\n#if defined(ENVIRONMENTBRDF)\noutParams.environmentBrdf=getBRDFLookup(outParams.NdotV,roughness);\n#else\noutParams.environmentBrdf=vec3f(0.0);\n#endif\noutParams.horizonOcclusion=1.0f;\n#if defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX)\n#ifdef HORIZONOCCLUSION\n#if defined(GEOMETRY_NORMAL) || defined(GEOMETRY_COAT_NORMAL)\n#ifdef REFLECTIONMAP_3D\noutParams.horizonOcclusion=environmentHorizonOcclusion(-viewDirectionW,normalW,geometricNormalW);\n#endif\n#endif\n#endif\n#endif\nreturn outParams;}\n#ifdef ANISOTROPIC\nfn geometryInfoAniso(\nnormalW: vec3f,viewDirectionW: vec3f,roughness: f32,geometricNormalW: vec3f\n,vAnisotropy: vec3f,TBN: mat3x3<f32>\n)->geometryInfoAnisoOutParams\n{let geoInfo: geometryInfoOutParams=geometryInfo(normalW,viewDirectionW,roughness,geometricNormalW);var outParams: geometryInfoAnisoOutParams;outParams.NdotV=geoInfo.NdotV;outParams.NdotVUnclamped=geoInfo.NdotVUnclamped;outParams.environmentBrdf=geoInfo.environmentBrdf;outParams.horizonOcclusion=geoInfo.horizonOcclusion;outParams.anisotropy=vAnisotropy.b;let anisotropyDirection: vec3f=vec3f(vAnisotropy.xy,0.);let anisoTBN: mat3x3<f32>=mat3x3<f32>(normalize(TBN[0]),normalize(TBN[1]),normalize(TBN[2]));outParams.anisotropicTangent=normalize(anisoTBN*anisotropyDirection);outParams.anisotropicBitangent=normalize(cross(anisoTBN[2],outParams.anisotropicTangent));outParams.TBN=TBN;return outParams;}\n#endif\n`;\n// Sideeffect\nif (!ShaderStore.IncludesShadersStoreWGSL[name]) {\n ShaderStore.IncludesShadersStoreWGSL[name] = shader;\n}\n/** @internal */\nexport const openpbrGeometryInfoWGSL = { name, shader };\n"]}
@@ -0,0 +1,5 @@
1
+ /** @internal */
2
+ export declare const openpbrIblFunctionsWGSL: {
3
+ name: string;
4
+ shader: string;
5
+ };
@@ -0,0 +1,218 @@
1
+ // Do not edit.
2
+ import { ShaderStore } from "../../Engines/shaderStore.js";
3
+ const name = "openpbrIblFunctions";
4
+ const shader = `#ifdef REFLECTION
5
+ fn sampleIrradiance(
6
+ surfaceNormal: vec3f
7
+ #if defined(NORMAL) && defined(USESPHERICALINVERTEX)
8
+ ,vEnvironmentIrradianceSH: vec3f
9
+ #endif
10
+ #if (defined(USESPHERICALFROMREFLECTIONMAP) && (!defined(NORMAL) || !defined(USESPHERICALINVERTEX))) || (defined(USEIRRADIANCEMAP) && defined(REFLECTIONMAP_3D))
11
+ ,iblMatrix: mat4x4f
12
+ #endif
13
+ #ifdef USEIRRADIANCEMAP
14
+ #ifdef REFLECTIONMAP_3D
15
+ ,irradianceSampler: texture_cube<f32>
16
+ ,irradianceSamplerSampler: sampler
17
+ #else
18
+ ,irradianceSampler: texture_2d<f32>
19
+ ,irradianceSamplerSampler: sampler
20
+ #endif
21
+ #ifdef USE_IRRADIANCE_DOMINANT_DIRECTION
22
+ ,reflectionDominantDirection: vec3f
23
+ #endif
24
+ #endif
25
+ #ifdef REALTIME_FILTERING
26
+ ,reflectionFilteringInfo: vec2f
27
+ #ifdef IBL_CDF_FILTERING
28
+ ,icdfSampler: texture_2d<f32>
29
+ ,icdfSamplerSampler: sampler
30
+ #endif
31
+ #endif
32
+ ,reflectionInfos: vec2f
33
+ ,viewDirectionW: vec3f
34
+ ,diffuseRoughness: f32
35
+ ,surfaceAlbedo: vec3f
36
+ )->vec3f {var environmentIrradiance=vec3f(0.,0.,0.);
37
+ #if (defined(USESPHERICALFROMREFLECTIONMAP) && (!defined(NORMAL) || !defined(USESPHERICALINVERTEX))) || (defined(USEIRRADIANCEMAP) && defined(REFLECTIONMAP_3D))
38
+ var irradianceVector=(iblMatrix*vec4f(surfaceNormal,0.0f)).xyz;let irradianceView=(iblMatrix*vec4f(viewDirectionW,0.0f)).xyz;
39
+ #if !defined(USE_IRRADIANCE_DOMINANT_DIRECTION) && !defined(REALTIME_FILTERING)
40
+ #if BASE_DIFFUSE_MODEL != BRDF_DIFFUSE_MODEL_LAMBERT && BASE_DIFFUSE_MODEL != BRDF_DIFFUSE_MODEL_LEGACY
41
+ {let NdotV=max(dot(surfaceNormal,viewDirectionW),0.0f);irradianceVector=mix(irradianceVector,irradianceView,(0.5f*(1.0f-NdotV))*diffuseRoughness);}
42
+ #endif
43
+ #endif
44
+ #ifdef REFLECTIONMAP_OPPOSITEZ
45
+ irradianceVector.z*=-1.0f;
46
+ #endif
47
+ #ifdef INVERTCUBICMAP
48
+ irradianceVector.y*=-1.0f;
49
+ #endif
50
+ #endif
51
+ #ifdef USESPHERICALFROMREFLECTIONMAP
52
+ #if defined(NORMAL) && defined(USESPHERICALINVERTEX)
53
+ environmentIrradiance=vEnvironmentIrradianceSH;
54
+ #else
55
+ #if defined(REALTIME_FILTERING)
56
+ environmentIrradiance=irradiance(reflectionSampler,reflectionSamplerSampler,irradianceVector,reflectionFilteringInfo,diffuseRoughness,surfaceAlbedo,irradianceView
57
+ #ifdef IBL_CDF_FILTERING
58
+ ,icdfSampler
59
+ ,icdfSamplerSampler
60
+ #endif
61
+ );
62
+ #else
63
+ environmentIrradiance=computeEnvironmentIrradiance(irradianceVector);
64
+ #endif
65
+ #endif
66
+ #elif defined(USEIRRADIANCEMAP)
67
+ #ifdef REFLECTIONMAP_3D
68
+ let environmentIrradianceFromTexture: vec4f=textureSample(irradianceSampler,irradianceSamplerSampler,irradianceVector);
69
+ #else
70
+ let environmentIrradianceFromTexture: vec4f=textureSample(irradianceSampler,irradianceSamplerSampler,reflectionCoords);
71
+ #endif
72
+ environmentIrradiance=environmentIrradianceFromTexture.rgb;
73
+ #ifdef RGBDREFLECTION
74
+ environmentIrradiance.rgb=fromRGBD(environmentIrradianceFromTexture);
75
+ #endif
76
+ #ifdef GAMMAREFLECTION
77
+ environmentIrradiance.rgb=toLinearSpace(environmentIrradiance.rgb);
78
+ #endif
79
+ #ifdef USE_IRRADIANCE_DOMINANT_DIRECTION
80
+ let Ls: vec3f=normalize(reflectionDominantDirection);let NoL: f32=dot(irradianceVector,Ls);let NoV: f32=dot(irradianceVector,irradianceView);var diffuseRoughnessTerm=vec3f(1.0f);
81
+ #if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON
82
+ let LoV: f32=dot (Ls,irradianceView);let mag: f32=length(reflectionDominantDirection)*2.0f;let clampedAlbedo: vec3f=clamp(surfaceAlbedo,vec3f(0.1f),vec3f(1.0f));diffuseRoughnessTerm=diffuseBRDF_EON(clampedAlbedo,diffuseRoughness,NoL,NoV,LoV)*PI;diffuseRoughnessTerm=diffuseRoughnessTerm/clampedAlbedo;diffuseRoughnessTerm=mix(vec3f(1.0f),diffuseRoughnessTerm,sqrt(clamp(mag*NoV,0.0f,1.0f)));
83
+ #elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_BURLEY
84
+ let H: vec3f=(irradianceView+Ls)*0.5f;let VoH: f32=dot(irradianceView,H);diffuseRoughnessTerm=vec3f(diffuseBRDF_Burley(NoL,NoV,VoH,diffuseRoughness)*PI);
85
+ #endif
86
+ environmentIrradiance=environmentIrradiance.rgb*diffuseRoughnessTerm;
87
+ #endif
88
+ #endif
89
+ environmentIrradiance*=reflectionInfos.x;return environmentIrradiance;}
90
+ #ifdef REFLECTIONMAP_3D
91
+ fn createReflectionCoords(vPositionW: vec3f,normalW: vec3f)->vec3f
92
+ #else
93
+ fn createReflectionCoords(vPositionW: vec3f,normalW: vec3f)->vec2f
94
+ #endif
95
+ {var reflectionVector: vec3f=computeReflectionCoords(vec4f(vPositionW,1.0f),normalW);
96
+ #ifdef REFLECTIONMAP_OPPOSITEZ
97
+ reflectionVector.z*=-1.0;
98
+ #endif
99
+ #ifdef REFLECTIONMAP_3D
100
+ var reflectionCoords: vec3f=reflectionVector;
101
+ #else
102
+ var reflectionCoords: vec2f=reflectionVector.xy;
103
+ #ifdef REFLECTIONMAP_PROJECTION
104
+ reflectionCoords/=reflectionVector.z;
105
+ #endif
106
+ reflectionCoords.y=1.0f-reflectionCoords.y;
107
+ #endif
108
+ return reflectionCoords;}
109
+ fn sampleRadiance(
110
+ alphaG: f32
111
+ ,reflectionMicrosurfaceInfos: vec3f
112
+ ,reflectionInfos: vec2f
113
+ ,geoInfo: geometryInfoOutParams
114
+ #ifdef REFLECTIONMAP_3D
115
+ ,reflectionSampler: texture_cube<f32>
116
+ ,reflectionSamplerSampler: sampler
117
+ ,reflectionCoords: vec3f
118
+ #else
119
+ ,reflectionSampler: texture_2d<f32>
120
+ ,reflectionSamplerSampler: sampler
121
+ ,reflectionCoords: vec2f
122
+ #endif
123
+ #ifdef REALTIME_FILTERING
124
+ ,reflectionFilteringInfo: vec2f
125
+ #endif
126
+ )->vec3f {var environmentRadiance: vec4f=vec4f(0.f,0.f,0.f,0.f);
127
+ #if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
128
+ var reflectionLOD: f32=getLodFromAlphaG(reflectionMicrosurfaceInfos.x,alphaG,geoInfo.NdotVUnclamped);
129
+ #elif defined(LINEARSPECULARREFLECTION)
130
+ var reflectionLOD: f32=getLinearLodFromRoughness(reflectionMicrosurfaceInfos.x,roughness);
131
+ #else
132
+ var reflectionLOD: f32=getLodFromAlphaG(reflectionMicrosurfaceInfos.x,alphaG);
133
+ #endif
134
+ reflectionLOD=reflectionLOD*reflectionMicrosurfaceInfos.y+reflectionMicrosurfaceInfos.z;
135
+ #ifdef REALTIME_FILTERING
136
+ environmentRadiance=vec4f(radiance(alphaG,reflectionSampler,reflectionSamplerSampler,reflectionCoords,reflectionFilteringInfo),1.0f);
137
+ #else
138
+ environmentRadiance=textureSampleLevel(reflectionSampler,reflectionSamplerSampler,reflectionCoords,reflectionLOD);
139
+ #endif
140
+ #ifdef RGBDREFLECTION
141
+ environmentRadiance.rgb=fromRGBD(environmentRadiance);
142
+ #endif
143
+ #ifdef GAMMAREFLECTION
144
+ environmentRadiance.rgb=toLinearSpace(environmentRadiance.rgb);
145
+ #endif
146
+ return environmentRadiance.rgb;}
147
+ #if defined(ANISOTROPIC)
148
+ fn sampleRadianceAnisotropic(
149
+ alphaG: f32
150
+ ,reflectionMicrosurfaceInfos: vec3f
151
+ ,reflectionInfos: vec2f
152
+ ,geoInfo: geometryInfoAnisoOutParams
153
+ ,normalW: vec3f
154
+ ,viewDirectionW: vec3f
155
+ ,positionW: vec3f
156
+ ,noise: vec3f
157
+ #ifdef REFLECTIONMAP_3D
158
+ ,reflectionSampler: texture_cube<f32>
159
+ ,reflectionSamplerSampler: sampler
160
+ #else
161
+ ,reflectionSampler: texture_2d<f32>
162
+ ,reflectionSamplerSampler: sampler
163
+ #endif
164
+ #ifdef REALTIME_FILTERING
165
+ ,reflectionFilteringInfo: vec2f
166
+ #endif
167
+ )->vec3f {var environmentRadiance: vec4f=vec4f(0.f,0.f,0.f,0.f);let alphaT=alphaG*sqrt(2.0f/(1.0f+(1.0f-geoInfo.anisotropy)*(1.0f-geoInfo.anisotropy)));let alphaB=(1.0f-geoInfo.anisotropy)*alphaT;let modifiedAlphaG=alphaB;
168
+ #if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
169
+ var reflectionLOD: f32=getLodFromAlphaG(reflectionMicrosurfaceInfos.x,modifiedAlphaG,geoInfo.NdotVUnclamped);
170
+ #elif defined(LINEARSPECULARREFLECTION)
171
+ var reflectionLOD: f32=getLinearLodFromRoughness(reflectionMicrosurfaceInfos.x,roughness);
172
+ #else
173
+ var reflectionLOD: f32=getLodFromAlphaG(reflectionMicrosurfaceInfos.x,modifiedAlphaG);
174
+ #endif
175
+ reflectionLOD=reflectionLOD*reflectionMicrosurfaceInfos.y+reflectionMicrosurfaceInfos.z;
176
+ #ifdef REALTIME_FILTERING
177
+ var view=(uniforms.reflectionMatrix*vec4f(viewDirectionW,0.0f)).xyz;var tangent=(uniforms.reflectionMatrix*vec4f(geoInfo.anisotropicTangent,0.0f)).xyz;var bitangent=(uniforms.reflectionMatrix*vec4f(geoInfo.anisotropicBitangent,0.0f)).xyz;var normal=(uniforms.reflectionMatrix*vec4f(normalW,0.0f)).xyz;
178
+ #ifdef REFLECTIONMAP_OPPOSITEZ
179
+ view.z*=-1.0f;tangent.z*=-1.0f;bitangent.z*=-1.0f;normal.z*=-1.0f;
180
+ #endif
181
+ environmentRadiance =
182
+ vec4f(radianceAnisotropic(alphaT,alphaB,reflectionSampler,reflectionSamplerSampler,
183
+ view,tangent,
184
+ bitangent,normal,
185
+ reflectionFilteringInfo,noise.xy),
186
+ 1.0f);
187
+ #else
188
+ const samples: i32=16;var radianceSample=vec4f(0.0);var accumulatedRadiance=vec3f(0.0);var reflectionCoords=vec3f(0.0);var sample_weight=0.0f;var total_weight=0.0f;let step=1.0f/f32(max(samples-1,1));for (var i: i32=0; i<samples; i++) {var t: f32=mix(-1.0,1.0,f32(i)*step);t+=step*2.0*noise.x;sample_weight=max(1.0-abs(t),0.001);sample_weight*=sample_weight;t*=min(4.0*alphaT*geoInfo.anisotropy,1.0);var bentNormal: vec3f;if (t<0.0) {let blend: f32=t+1.0;bentNormal=normalize(mix(-geoInfo.anisotropicTangent,normalW,blend));} else if (t>0.0) {let blend: f32=t;bentNormal=normalize(mix(normalW,geoInfo.anisotropicTangent,blend));} else {bentNormal=normalW;}
189
+ reflectionCoords=createReflectionCoords(positionW,bentNormal);radianceSample=textureSampleLevel(reflectionSampler,reflectionSamplerSampler,reflectionCoords,reflectionLOD);
190
+ #ifdef RGBDREFLECTION
191
+ accumulatedRadiance+=vec3f(sample_weight)*fromRGBD(radianceSample);
192
+ #elif defined(GAMMAREFLECTION)
193
+ accumulatedRadiance+=vec3f(sample_weight)*toLinearSpace(radianceSample.rgb);
194
+ #else
195
+ accumulatedRadiance+=vec3f(sample_weight)*radianceSample.rgb;
196
+ #endif
197
+ total_weight+=sample_weight;}
198
+ environmentRadiance=vec4f(accumulatedRadiance/vec3f(total_weight),1.0f);
199
+ #endif
200
+ environmentRadiance=vec4f(environmentRadiance.rgb*reflectionInfos.xxx,environmentRadiance.a);return environmentRadiance.rgb;}
201
+ #endif
202
+ fn conductorIblFresnel(reflectance: ReflectanceParams,NdotV: f32,roughness: f32,environmentBrdf: vec3f)->vec3f
203
+ {
204
+ #if (CONDUCTOR_SPECULAR_MODEL==CONDUCTOR_SPECULAR_MODEL_OPENPBR)
205
+ let albedoF0: vec3f=mix(reflectance.coloredF0,pow(reflectance.coloredF0,vec3f(1.4f)),roughness);return getF82Specular(NdotV,albedoF0,reflectance.coloredF90,roughness);
206
+ #else
207
+ return getReflectanceFromBRDFLookup(reflectance.coloredF0,reflectance.coloredF90,environmentBrdf);
208
+ #endif
209
+ }
210
+ #endif
211
+ `;
212
+ // Sideeffect
213
+ if (!ShaderStore.IncludesShadersStoreWGSL[name]) {
214
+ ShaderStore.IncludesShadersStoreWGSL[name] = shader;
215
+ }
216
+ /** @internal */
217
+ export const openpbrIblFunctionsWGSL = { name, shader };
218
+ //# sourceMappingURL=openpbrIblFunctions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openpbrIblFunctions.js","sourceRoot":"","sources":["../../../../../dev/core/src/ShadersWGSL/ShadersInclude/openpbrIblFunctions.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,IAAI,GAAG,qBAAqB,CAAC;AACnC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+Md,CAAC;AACF,aAAa;AACb,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC;IAC9C,WAAW,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACxD,CAAC;AACD,gBAAgB;AAChB,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../../Engines/shaderStore\";\n\nconst name = \"openpbrIblFunctions\";\nconst shader = `#ifdef REFLECTION\nfn sampleIrradiance(\nsurfaceNormal: vec3f\n#if defined(NORMAL) && defined(USESPHERICALINVERTEX)\n,vEnvironmentIrradianceSH: vec3f\n#endif\n#if (defined(USESPHERICALFROMREFLECTIONMAP) && (!defined(NORMAL) || !defined(USESPHERICALINVERTEX))) || (defined(USEIRRADIANCEMAP) && defined(REFLECTIONMAP_3D))\n,iblMatrix: mat4x4f\n#endif\n#ifdef USEIRRADIANCEMAP\n#ifdef REFLECTIONMAP_3D\n,irradianceSampler: texture_cube<f32>\n,irradianceSamplerSampler: sampler\n#else\n,irradianceSampler: texture_2d<f32>\n,irradianceSamplerSampler: sampler\n#endif\n#ifdef USE_IRRADIANCE_DOMINANT_DIRECTION\n,reflectionDominantDirection: vec3f\n#endif\n#endif\n#ifdef REALTIME_FILTERING\n,reflectionFilteringInfo: vec2f\n#ifdef IBL_CDF_FILTERING\n,icdfSampler: texture_2d<f32>\n,icdfSamplerSampler: sampler\n#endif\n#endif\n,reflectionInfos: vec2f\n,viewDirectionW: vec3f\n,diffuseRoughness: f32\n,surfaceAlbedo: vec3f\n)->vec3f {var environmentIrradiance=vec3f(0.,0.,0.);\n#if (defined(USESPHERICALFROMREFLECTIONMAP) && (!defined(NORMAL) || !defined(USESPHERICALINVERTEX))) || (defined(USEIRRADIANCEMAP) && defined(REFLECTIONMAP_3D))\nvar irradianceVector=(iblMatrix*vec4f(surfaceNormal,0.0f)).xyz;let irradianceView=(iblMatrix*vec4f(viewDirectionW,0.0f)).xyz;\n#if !defined(USE_IRRADIANCE_DOMINANT_DIRECTION) && !defined(REALTIME_FILTERING)\n#if BASE_DIFFUSE_MODEL != BRDF_DIFFUSE_MODEL_LAMBERT && BASE_DIFFUSE_MODEL != BRDF_DIFFUSE_MODEL_LEGACY\n{let NdotV=max(dot(surfaceNormal,viewDirectionW),0.0f);irradianceVector=mix(irradianceVector,irradianceView,(0.5f*(1.0f-NdotV))*diffuseRoughness);}\n#endif\n#endif\n#ifdef REFLECTIONMAP_OPPOSITEZ\nirradianceVector.z*=-1.0f;\n#endif\n#ifdef INVERTCUBICMAP\nirradianceVector.y*=-1.0f;\n#endif\n#endif\n#ifdef USESPHERICALFROMREFLECTIONMAP\n#if defined(NORMAL) && defined(USESPHERICALINVERTEX)\nenvironmentIrradiance=vEnvironmentIrradianceSH;\n#else\n#if defined(REALTIME_FILTERING)\nenvironmentIrradiance=irradiance(reflectionSampler,reflectionSamplerSampler,irradianceVector,reflectionFilteringInfo,diffuseRoughness,surfaceAlbedo,irradianceView\n#ifdef IBL_CDF_FILTERING\n,icdfSampler\n,icdfSamplerSampler\n#endif\n);\n#else\nenvironmentIrradiance=computeEnvironmentIrradiance(irradianceVector);\n#endif\n#endif\n#elif defined(USEIRRADIANCEMAP)\n#ifdef REFLECTIONMAP_3D\nlet environmentIrradianceFromTexture: vec4f=textureSample(irradianceSampler,irradianceSamplerSampler,irradianceVector);\n#else\nlet environmentIrradianceFromTexture: vec4f=textureSample(irradianceSampler,irradianceSamplerSampler,reflectionCoords);\n#endif\nenvironmentIrradiance=environmentIrradianceFromTexture.rgb;\n#ifdef RGBDREFLECTION\nenvironmentIrradiance.rgb=fromRGBD(environmentIrradianceFromTexture);\n#endif\n#ifdef GAMMAREFLECTION\nenvironmentIrradiance.rgb=toLinearSpace(environmentIrradiance.rgb);\n#endif\n#ifdef USE_IRRADIANCE_DOMINANT_DIRECTION\nlet Ls: vec3f=normalize(reflectionDominantDirection);let NoL: f32=dot(irradianceVector,Ls);let NoV: f32=dot(irradianceVector,irradianceView);var diffuseRoughnessTerm=vec3f(1.0f);\n#if BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_EON\nlet LoV: f32=dot (Ls,irradianceView);let mag: f32=length(reflectionDominantDirection)*2.0f;let clampedAlbedo: vec3f=clamp(surfaceAlbedo,vec3f(0.1f),vec3f(1.0f));diffuseRoughnessTerm=diffuseBRDF_EON(clampedAlbedo,diffuseRoughness,NoL,NoV,LoV)*PI;diffuseRoughnessTerm=diffuseRoughnessTerm/clampedAlbedo;diffuseRoughnessTerm=mix(vec3f(1.0f),diffuseRoughnessTerm,sqrt(clamp(mag*NoV,0.0f,1.0f)));\n#elif BASE_DIFFUSE_MODEL==BRDF_DIFFUSE_MODEL_BURLEY\nlet H: vec3f=(irradianceView+Ls)*0.5f;let VoH: f32=dot(irradianceView,H);diffuseRoughnessTerm=vec3f(diffuseBRDF_Burley(NoL,NoV,VoH,diffuseRoughness)*PI);\n#endif\nenvironmentIrradiance=environmentIrradiance.rgb*diffuseRoughnessTerm;\n#endif\n#endif\nenvironmentIrradiance*=reflectionInfos.x;return environmentIrradiance;}\n#ifdef REFLECTIONMAP_3D\nfn createReflectionCoords(vPositionW: vec3f,normalW: vec3f)->vec3f\n#else\nfn createReflectionCoords(vPositionW: vec3f,normalW: vec3f)->vec2f\n#endif\n{var reflectionVector: vec3f=computeReflectionCoords(vec4f(vPositionW,1.0f),normalW);\n#ifdef REFLECTIONMAP_OPPOSITEZ\nreflectionVector.z*=-1.0;\n#endif\n#ifdef REFLECTIONMAP_3D\nvar reflectionCoords: vec3f=reflectionVector;\n#else\nvar reflectionCoords: vec2f=reflectionVector.xy;\n#ifdef REFLECTIONMAP_PROJECTION\nreflectionCoords/=reflectionVector.z;\n#endif\nreflectionCoords.y=1.0f-reflectionCoords.y;\n#endif\nreturn reflectionCoords;}\nfn sampleRadiance(\nalphaG: f32\n,reflectionMicrosurfaceInfos: vec3f\n,reflectionInfos: vec2f\n,geoInfo: geometryInfoOutParams\n#ifdef REFLECTIONMAP_3D\n,reflectionSampler: texture_cube<f32>\n,reflectionSamplerSampler: sampler\n,reflectionCoords: vec3f\n#else\n,reflectionSampler: texture_2d<f32>\n,reflectionSamplerSampler: sampler\n,reflectionCoords: vec2f\n#endif\n#ifdef REALTIME_FILTERING\n,reflectionFilteringInfo: vec2f\n#endif\n)->vec3f {var environmentRadiance: vec4f=vec4f(0.f,0.f,0.f,0.f);\n#if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)\nvar reflectionLOD: f32=getLodFromAlphaG(reflectionMicrosurfaceInfos.x,alphaG,geoInfo.NdotVUnclamped);\n#elif defined(LINEARSPECULARREFLECTION)\nvar reflectionLOD: f32=getLinearLodFromRoughness(reflectionMicrosurfaceInfos.x,roughness);\n#else\nvar reflectionLOD: f32=getLodFromAlphaG(reflectionMicrosurfaceInfos.x,alphaG);\n#endif\nreflectionLOD=reflectionLOD*reflectionMicrosurfaceInfos.y+reflectionMicrosurfaceInfos.z;\n#ifdef REALTIME_FILTERING\nenvironmentRadiance=vec4f(radiance(alphaG,reflectionSampler,reflectionSamplerSampler,reflectionCoords,reflectionFilteringInfo),1.0f);\n#else\nenvironmentRadiance=textureSampleLevel(reflectionSampler,reflectionSamplerSampler,reflectionCoords,reflectionLOD);\n#endif\n#ifdef RGBDREFLECTION\nenvironmentRadiance.rgb=fromRGBD(environmentRadiance);\n#endif\n#ifdef GAMMAREFLECTION\nenvironmentRadiance.rgb=toLinearSpace(environmentRadiance.rgb);\n#endif\nreturn environmentRadiance.rgb;}\n#if defined(ANISOTROPIC)\nfn sampleRadianceAnisotropic(\nalphaG: f32\n,reflectionMicrosurfaceInfos: vec3f\n,reflectionInfos: vec2f\n,geoInfo: geometryInfoAnisoOutParams\n,normalW: vec3f\n,viewDirectionW: vec3f\n,positionW: vec3f\n,noise: vec3f\n#ifdef REFLECTIONMAP_3D\n,reflectionSampler: texture_cube<f32>\n,reflectionSamplerSampler: sampler\n#else\n,reflectionSampler: texture_2d<f32>\n,reflectionSamplerSampler: sampler\n#endif\n#ifdef REALTIME_FILTERING\n,reflectionFilteringInfo: vec2f\n#endif\n)->vec3f {var environmentRadiance: vec4f=vec4f(0.f,0.f,0.f,0.f);let alphaT=alphaG*sqrt(2.0f/(1.0f+(1.0f-geoInfo.anisotropy)*(1.0f-geoInfo.anisotropy)));let alphaB=(1.0f-geoInfo.anisotropy)*alphaT;let modifiedAlphaG=alphaB;\n#if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)\nvar reflectionLOD: f32=getLodFromAlphaG(reflectionMicrosurfaceInfos.x,modifiedAlphaG,geoInfo.NdotVUnclamped);\n#elif defined(LINEARSPECULARREFLECTION)\nvar reflectionLOD: f32=getLinearLodFromRoughness(reflectionMicrosurfaceInfos.x,roughness);\n#else\nvar reflectionLOD: f32=getLodFromAlphaG(reflectionMicrosurfaceInfos.x,modifiedAlphaG);\n#endif\nreflectionLOD=reflectionLOD*reflectionMicrosurfaceInfos.y+reflectionMicrosurfaceInfos.z;\n#ifdef REALTIME_FILTERING\nvar view=(uniforms.reflectionMatrix*vec4f(viewDirectionW,0.0f)).xyz;var tangent=(uniforms.reflectionMatrix*vec4f(geoInfo.anisotropicTangent,0.0f)).xyz;var bitangent=(uniforms.reflectionMatrix*vec4f(geoInfo.anisotropicBitangent,0.0f)).xyz;var normal=(uniforms.reflectionMatrix*vec4f(normalW,0.0f)).xyz;\n#ifdef REFLECTIONMAP_OPPOSITEZ\nview.z*=-1.0f;tangent.z*=-1.0f;bitangent.z*=-1.0f;normal.z*=-1.0f;\n#endif\nenvironmentRadiance =\nvec4f(radianceAnisotropic(alphaT,alphaB,reflectionSampler,reflectionSamplerSampler,\nview,tangent,\nbitangent,normal,\nreflectionFilteringInfo,noise.xy),\n1.0f);\n#else\nconst samples: i32=16;var radianceSample=vec4f(0.0);var accumulatedRadiance=vec3f(0.0);var reflectionCoords=vec3f(0.0);var sample_weight=0.0f;var total_weight=0.0f;let step=1.0f/f32(max(samples-1,1));for (var i: i32=0; i<samples; i++) {var t: f32=mix(-1.0,1.0,f32(i)*step);t+=step*2.0*noise.x;sample_weight=max(1.0-abs(t),0.001);sample_weight*=sample_weight;t*=min(4.0*alphaT*geoInfo.anisotropy,1.0);var bentNormal: vec3f;if (t<0.0) {let blend: f32=t+1.0;bentNormal=normalize(mix(-geoInfo.anisotropicTangent,normalW,blend));} else if (t>0.0) {let blend: f32=t;bentNormal=normalize(mix(normalW,geoInfo.anisotropicTangent,blend));} else {bentNormal=normalW;}\nreflectionCoords=createReflectionCoords(positionW,bentNormal);radianceSample=textureSampleLevel(reflectionSampler,reflectionSamplerSampler,reflectionCoords,reflectionLOD);\n#ifdef RGBDREFLECTION\naccumulatedRadiance+=vec3f(sample_weight)*fromRGBD(radianceSample);\n#elif defined(GAMMAREFLECTION)\naccumulatedRadiance+=vec3f(sample_weight)*toLinearSpace(radianceSample.rgb);\n#else\naccumulatedRadiance+=vec3f(sample_weight)*radianceSample.rgb;\n#endif\ntotal_weight+=sample_weight;}\nenvironmentRadiance=vec4f(accumulatedRadiance/vec3f(total_weight),1.0f);\n#endif\nenvironmentRadiance=vec4f(environmentRadiance.rgb*reflectionInfos.xxx,environmentRadiance.a);return environmentRadiance.rgb;}\n#endif\nfn conductorIblFresnel(reflectance: ReflectanceParams,NdotV: f32,roughness: f32,environmentBrdf: vec3f)->vec3f\n{\n#if (CONDUCTOR_SPECULAR_MODEL==CONDUCTOR_SPECULAR_MODEL_OPENPBR)\nlet albedoF0: vec3f=mix(reflectance.coloredF0,pow(reflectance.coloredF0,vec3f(1.4f)),roughness);return getF82Specular(NdotV,albedoF0,reflectance.coloredF90,roughness);\n#else\nreturn getReflectanceFromBRDFLookup(reflectance.coloredF0,reflectance.coloredF90,environmentBrdf);\n#endif\n}\n#endif\n`;\n// Sideeffect\nif (!ShaderStore.IncludesShadersStoreWGSL[name]) {\n ShaderStore.IncludesShadersStoreWGSL[name] = shader;\n}\n/** @internal */\nexport const openpbrIblFunctionsWGSL = { name, shader };\n"]}
@@ -0,0 +1,5 @@
1
+ /** @internal */
2
+ export declare const openpbrNormalMapFragmentWGSL: {
3
+ name: string;
4
+ shader: string;
5
+ };
@@ -0,0 +1,64 @@
1
+ // Do not edit.
2
+ import { ShaderStore } from "../../Engines/shaderStore.js";
3
+ const name = "openpbrNormalMapFragment";
4
+ const shader = `var uvOffset: vec2f= vec2f(0.0,0.0);
5
+ #if defined(GEOMETRY_NORMAL) || defined(GEOMETRY_COAT_NORMAL) || defined(PARALLAX) || defined(DETAIL)
6
+ #ifdef NORMALXYSCALE
7
+ var normalScale: f32=1.0;
8
+ #elif defined(GEOMETRY_NORMAL)
9
+ var normalScale: f32=uniforms.vGeometryNormalInfos.y;
10
+ #else
11
+ var normalScale: f32=1.0;
12
+ #endif
13
+ #if defined(TANGENT) && defined(NORMAL)
14
+ var TBN: mat3x3f=mat3x3<f32>(input.vTBN0,input.vTBN1,input.vTBN2);
15
+ #elif defined(GEOMETRY_NORMAL)
16
+ var TBNUV: vec2f=select(-fragmentInputs.vGeometryNormalUV,fragmentInputs.vGeometryNormalUV,fragmentInputs.frontFacing);var TBN: mat3x3f=cotangent_frame(normalW*normalScale,input.vPositionW,TBNUV,uniforms.vTangentSpaceParams);
17
+ #else
18
+ var TBNUV: vec2f=select(-fragmentInputs.vDetailUV,fragmentInputs.vDetailUV,fragmentInputs.frontFacing);var TBN: mat3x3f=cotangent_frame(normalW*normalScale,input.vPositionW,TBNUV, vec2f(1.,1.));
19
+ #endif
20
+ #elif defined(ANISOTROPIC)
21
+ #if defined(TANGENT) && defined(NORMAL)
22
+ var TBN: mat3x3f=mat3x3<f32>(input.vTBN0,input.vTBN1,input.vTBN2);
23
+ #else
24
+ var TBNUV: vec2f=select( -fragmentInputs.vMainUV1,fragmentInputs.vMainUV1,fragmentInputs.frontFacing);var TBN: mat3x3f=cotangent_frame(normalW,input.vPositionW,TBNUV, vec2f(1.,1.));
25
+ #endif
26
+ #endif
27
+ #ifdef PARALLAX
28
+ var invTBN: mat3x3f=transposeMat3(TBN);
29
+ #ifdef PARALLAXOCCLUSION
30
+ #else
31
+ #endif
32
+ #endif
33
+ #ifdef DETAIL
34
+ var detailColor: vec4f=textureSample(detailSampler,detailSamplerSampler,fragmentInputs.vDetailUV+uvOffset);var detailNormalRG: vec2f=detailColor.wy*2.0-1.0;var detailNormalB: f32=sqrt(1.-saturate(dot(detailNormalRG,detailNormalRG)));var detailNormal: vec3f= vec3f(detailNormalRG,detailNormalB);
35
+ #endif
36
+ #ifdef GEOMETRY_COAT_NORMAL
37
+ coatNormalW=perturbNormal(TBN,textureSample(geometryCoatNormalSampler,geometryCoatNormalSamplerSampler,fragmentInputs.vGeometryCoatNormalUV+uvOffset).xyz,uniforms.vGeometryCoatNormalInfos.y);
38
+ #endif
39
+ #ifdef GEOMETRY_NORMAL
40
+ #ifdef OBJECTSPACE_NORMALMAP
41
+ #define CUSTOM_FRAGMENT_BUMP_FRAGMENT
42
+ normalW=normalize(textureSample(geometryNormalSampler,geometryNormalSamplerSampler,fragmentInputs.vGeometryNormalUV).xyz *2.0-1.0);normalW=normalize(mat3x3f(uniforms.normalMatrix[0].xyz,uniforms.normalMatrix[1].xyz,uniforms.normalMatrix[2].xyz)*normalW);
43
+ #elif !defined(DETAIL)
44
+ normalW=perturbNormal(TBN,textureSample(geometryNormalSampler,geometryNormalSamplerSampler,fragmentInputs.vGeometryNormalUV+uvOffset).xyz,uniforms.vGeometryNormalInfos.y);
45
+ #else
46
+ var sampledNormal: vec3f=textureSample(geometryNormalSampler,geometryNormalSamplerSampler,fragmentInputs.vGeometryNormalUV+uvOffset).xyz*2.0-1.0;
47
+ #if DETAIL_NORMALBLENDMETHOD==0
48
+ detailNormal=vec3f(detailNormal.xy*uniforms.vDetailInfos.z,detailNormal.z);var blendedNormal: vec3f=normalize( vec3f(sampledNormal.xy+detailNormal.xy,sampledNormal.z*detailNormal.z));
49
+ #elif DETAIL_NORMALBLENDMETHOD==1
50
+ detailNormal=vec3f(detailNormal.xy*uniforms.vDetailInfos.z,detailNormal.z);sampledNormal+= vec3f(0.0,0.0,1.0);detailNormal*= vec3f(-1.0,-1.0,1.0);var blendedNormal: vec3f=sampledNormal*dot(sampledNormal,detailNormal)/sampledNormal.z-detailNormal;
51
+ #endif
52
+ normalW=perturbNormalBase(TBN,blendedNormal,uniforms.vGeometryNormalInfos.y);
53
+ #endif
54
+ #elif defined(DETAIL)
55
+ detailNormal=vec3f(detailNormal.xy*uniforms.vDetailInfos.z,detailNormal.z);normalW=perturbNormalBase(TBN,detailNormal,uniforms.vDetailInfos.z);
56
+ #endif
57
+ `;
58
+ // Sideeffect
59
+ if (!ShaderStore.IncludesShadersStoreWGSL[name]) {
60
+ ShaderStore.IncludesShadersStoreWGSL[name] = shader;
61
+ }
62
+ /** @internal */
63
+ export const openpbrNormalMapFragmentWGSL = { name, shader };
64
+ //# sourceMappingURL=openpbrNormalMapFragment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openpbrNormalMapFragment.js","sourceRoot":"","sources":["../../../../../dev/core/src/ShadersWGSL/ShadersInclude/openpbrNormalMapFragment.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,IAAI,GAAG,0BAA0B,CAAC;AACxC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqDd,CAAC;AACF,aAAa;AACb,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC;IAC9C,WAAW,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACxD,CAAC;AACD,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 = \"openpbrNormalMapFragment\";\nconst shader = `var uvOffset: vec2f= vec2f(0.0,0.0);\n#if defined(GEOMETRY_NORMAL) || defined(GEOMETRY_COAT_NORMAL) || defined(PARALLAX) || defined(DETAIL)\n#ifdef NORMALXYSCALE\nvar normalScale: f32=1.0;\n#elif defined(GEOMETRY_NORMAL)\nvar normalScale: f32=uniforms.vGeometryNormalInfos.y;\n#else\nvar normalScale: f32=1.0;\n#endif\n#if defined(TANGENT) && defined(NORMAL)\nvar TBN: mat3x3f=mat3x3<f32>(input.vTBN0,input.vTBN1,input.vTBN2); \n#elif defined(GEOMETRY_NORMAL)\nvar TBNUV: vec2f=select(-fragmentInputs.vGeometryNormalUV,fragmentInputs.vGeometryNormalUV,fragmentInputs.frontFacing);var TBN: mat3x3f=cotangent_frame(normalW*normalScale,input.vPositionW,TBNUV,uniforms.vTangentSpaceParams);\n#else\nvar TBNUV: vec2f=select(-fragmentInputs.vDetailUV,fragmentInputs.vDetailUV,fragmentInputs.frontFacing);var TBN: mat3x3f=cotangent_frame(normalW*normalScale,input.vPositionW,TBNUV, vec2f(1.,1.));\n#endif\n#elif defined(ANISOTROPIC)\n#if defined(TANGENT) && defined(NORMAL)\nvar TBN: mat3x3f=mat3x3<f32>(input.vTBN0,input.vTBN1,input.vTBN2);\n#else\nvar TBNUV: vec2f=select( -fragmentInputs.vMainUV1,fragmentInputs.vMainUV1,fragmentInputs.frontFacing);var TBN: mat3x3f=cotangent_frame(normalW,input.vPositionW,TBNUV, vec2f(1.,1.));\n#endif\n#endif\n#ifdef PARALLAX\nvar invTBN: mat3x3f=transposeMat3(TBN);\n#ifdef PARALLAXOCCLUSION\n#else\n#endif\n#endif\n#ifdef DETAIL\nvar detailColor: vec4f=textureSample(detailSampler,detailSamplerSampler,fragmentInputs.vDetailUV+uvOffset);var detailNormalRG: vec2f=detailColor.wy*2.0-1.0;var detailNormalB: f32=sqrt(1.-saturate(dot(detailNormalRG,detailNormalRG)));var detailNormal: vec3f= vec3f(detailNormalRG,detailNormalB);\n#endif\n#ifdef GEOMETRY_COAT_NORMAL\ncoatNormalW=perturbNormal(TBN,textureSample(geometryCoatNormalSampler,geometryCoatNormalSamplerSampler,fragmentInputs.vGeometryCoatNormalUV+uvOffset).xyz,uniforms.vGeometryCoatNormalInfos.y);\n#endif\n#ifdef GEOMETRY_NORMAL\n#ifdef OBJECTSPACE_NORMALMAP\n#define CUSTOM_FRAGMENT_BUMP_FRAGMENT\nnormalW=normalize(textureSample(geometryNormalSampler,geometryNormalSamplerSampler,fragmentInputs.vGeometryNormalUV).xyz *2.0-1.0);normalW=normalize(mat3x3f(uniforms.normalMatrix[0].xyz,uniforms.normalMatrix[1].xyz,uniforms.normalMatrix[2].xyz)*normalW);\n#elif !defined(DETAIL)\nnormalW=perturbNormal(TBN,textureSample(geometryNormalSampler,geometryNormalSamplerSampler,fragmentInputs.vGeometryNormalUV+uvOffset).xyz,uniforms.vGeometryNormalInfos.y);\n#else\nvar sampledNormal: vec3f=textureSample(geometryNormalSampler,geometryNormalSamplerSampler,fragmentInputs.vGeometryNormalUV+uvOffset).xyz*2.0-1.0;\n#if DETAIL_NORMALBLENDMETHOD==0 \ndetailNormal=vec3f(detailNormal.xy*uniforms.vDetailInfos.z,detailNormal.z);var blendedNormal: vec3f=normalize( vec3f(sampledNormal.xy+detailNormal.xy,sampledNormal.z*detailNormal.z));\n#elif DETAIL_NORMALBLENDMETHOD==1 \ndetailNormal=vec3f(detailNormal.xy*uniforms.vDetailInfos.z,detailNormal.z);sampledNormal+= vec3f(0.0,0.0,1.0);detailNormal*= vec3f(-1.0,-1.0,1.0);var blendedNormal: vec3f=sampledNormal*dot(sampledNormal,detailNormal)/sampledNormal.z-detailNormal;\n#endif\nnormalW=perturbNormalBase(TBN,blendedNormal,uniforms.vGeometryNormalInfos.y);\n#endif\n#elif defined(DETAIL)\ndetailNormal=vec3f(detailNormal.xy*uniforms.vDetailInfos.z,detailNormal.z);normalW=perturbNormalBase(TBN,detailNormal,uniforms.vDetailInfos.z);\n#endif\n`;\n// Sideeffect\nif (!ShaderStore.IncludesShadersStoreWGSL[name]) {\n ShaderStore.IncludesShadersStoreWGSL[name] = shader;\n}\n/** @internal */\nexport const openpbrNormalMapFragmentWGSL = { name, shader };\n"]}
@@ -0,0 +1,6 @@
1
+ import "./samplerFragmentDeclaration.js";
2
+ /** @internal */
3
+ export declare const openpbrNormalMapFragmentFunctionsWGSL: {
4
+ name: string;
5
+ shader: string;
6
+ };
@@ -0,0 +1,45 @@
1
+ // Do not edit.
2
+ import { ShaderStore } from "../../Engines/shaderStore.js";
3
+ import "./samplerFragmentDeclaration.js";
4
+ const name = "openpbrNormalMapFragmentFunctions";
5
+ const shader = `#if defined(GEOMETRY_NORMAL)
6
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,GEOMETRY_NORMAL,_VARYINGNAME_,GeometryNormal,_SAMPLERNAME_,geometryNormal)
7
+ #endif
8
+ #if defined(GEOMETRY_COAT_NORMAL)
9
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,GEOMETRY_COAT_NORMAL,_VARYINGNAME_,GeometryCoatNormal,_SAMPLERNAME_,geometryCoatNormal)
10
+ #endif
11
+ #if defined(DETAIL)
12
+ #include<samplerFragmentDeclaration>(_DEFINENAME_,DETAIL,_VARYINGNAME_,Detail,_SAMPLERNAME_,detail)
13
+ #endif
14
+ #if defined(GEOMETRY_NORMAL) && defined(PARALLAX)
15
+ const minSamples: f32=4.;const maxSamples: f32=15.;const iMaxSamples: i32=15;fn parallaxOcclusion(vViewDirCoT: vec3f,vNormalCoT: vec3f,texCoord: vec2f,parallaxScale: f32)->vec2f {var parallaxLimit: f32=length(vViewDirCoT.xy)/vViewDirCoT.z;parallaxLimit*=parallaxScale;var vOffsetDir: vec2f=normalize(vViewDirCoT.xy);var vMaxOffset: vec2f=vOffsetDir*parallaxLimit;var numSamples: f32=maxSamples+(dot(vViewDirCoT,vNormalCoT)*(minSamples-maxSamples));var stepSize: f32=1.0/numSamples;var currRayHeight: f32=1.0;var vCurrOffset: vec2f= vec2f(0,0);var vLastOffset: vec2f= vec2f(0,0);var lastSampledHeight: f32=1.0;var currSampledHeight: f32=1.0;var keepWorking: bool=true;for (var i: i32=0; i<iMaxSamples; i++)
16
+ {currSampledHeight=textureSample(geometryNormalSampler,geometryNormalSamplerSampler,texCoord+vCurrOffset).w;if (!keepWorking)
17
+ {}
18
+ else if (currSampledHeight>currRayHeight)
19
+ {var delta1: f32=currSampledHeight-currRayHeight;var delta2: f32=(currRayHeight+stepSize)-lastSampledHeight;var ratio: f32=delta1/(delta1+delta2);vCurrOffset=(ratio)* vLastOffset+(1.0-ratio)*vCurrOffset;keepWorking=false;}
20
+ else
21
+ {currRayHeight-=stepSize;vLastOffset=vCurrOffset;
22
+ #ifdef PARALLAX_RHS
23
+ vCurrOffset-=stepSize*vMaxOffset;
24
+ #else
25
+ vCurrOffset+=stepSize*vMaxOffset;
26
+ #endif
27
+ lastSampledHeight=currSampledHeight;}}
28
+ return vCurrOffset;}
29
+ fn parallaxOffset(viewDir: vec3f,heightScale: f32)->vec2f
30
+ {var height: f32=textureSample(geometryNormalSampler,geometryNormalSamplerSampler,fragmentInputs.vGeometryNormalUV).w;var texCoordOffset: vec2f=heightScale*viewDir.xy*height;
31
+ #ifdef PARALLAX_RHS
32
+ return texCoordOffset;
33
+ #else
34
+ return -texCoordOffset;
35
+ #endif
36
+ }
37
+ #endif
38
+ `;
39
+ // Sideeffect
40
+ if (!ShaderStore.IncludesShadersStoreWGSL[name]) {
41
+ ShaderStore.IncludesShadersStoreWGSL[name] = shader;
42
+ }
43
+ /** @internal */
44
+ export const openpbrNormalMapFragmentFunctionsWGSL = { name, shader };
45
+ //# sourceMappingURL=openpbrNormalMapFragmentFunctions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openpbrNormalMapFragmentFunctions.js","sourceRoot":"","sources":["../../../../../dev/core/src/ShadersWGSL/ShadersInclude/openpbrNormalMapFragmentFunctions.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,8BAA8B,CAAC;AAEtC,MAAM,IAAI,GAAG,mCAAmC,CAAC;AACjD,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCd,CAAC;AACF,aAAa;AACb,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC;IAC9C,WAAW,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACxD,CAAC;AACD,gBAAgB;AAChB,MAAM,CAAC,MAAM,qCAAqC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../../Engines/shaderStore\";\nimport \"./samplerFragmentDeclaration\";\n\nconst name = \"openpbrNormalMapFragmentFunctions\";\nconst shader = `#if defined(GEOMETRY_NORMAL)\n#include<samplerFragmentDeclaration>(_DEFINENAME_,GEOMETRY_NORMAL,_VARYINGNAME_,GeometryNormal,_SAMPLERNAME_,geometryNormal)\n#endif\n#if defined(GEOMETRY_COAT_NORMAL)\n#include<samplerFragmentDeclaration>(_DEFINENAME_,GEOMETRY_COAT_NORMAL,_VARYINGNAME_,GeometryCoatNormal,_SAMPLERNAME_,geometryCoatNormal)\n#endif\n#if defined(DETAIL)\n#include<samplerFragmentDeclaration>(_DEFINENAME_,DETAIL,_VARYINGNAME_,Detail,_SAMPLERNAME_,detail)\n#endif\n#if defined(GEOMETRY_NORMAL) && defined(PARALLAX)\nconst minSamples: f32=4.;const maxSamples: f32=15.;const iMaxSamples: i32=15;fn parallaxOcclusion(vViewDirCoT: vec3f,vNormalCoT: vec3f,texCoord: vec2f,parallaxScale: f32)->vec2f {var parallaxLimit: f32=length(vViewDirCoT.xy)/vViewDirCoT.z;parallaxLimit*=parallaxScale;var vOffsetDir: vec2f=normalize(vViewDirCoT.xy);var vMaxOffset: vec2f=vOffsetDir*parallaxLimit;var numSamples: f32=maxSamples+(dot(vViewDirCoT,vNormalCoT)*(minSamples-maxSamples));var stepSize: f32=1.0/numSamples;var currRayHeight: f32=1.0;var vCurrOffset: vec2f= vec2f(0,0);var vLastOffset: vec2f= vec2f(0,0);var lastSampledHeight: f32=1.0;var currSampledHeight: f32=1.0;var keepWorking: bool=true;for (var i: i32=0; i<iMaxSamples; i++)\n{currSampledHeight=textureSample(geometryNormalSampler,geometryNormalSamplerSampler,texCoord+vCurrOffset).w;if (!keepWorking)\n{}\nelse if (currSampledHeight>currRayHeight)\n{var delta1: f32=currSampledHeight-currRayHeight;var delta2: f32=(currRayHeight+stepSize)-lastSampledHeight;var ratio: f32=delta1/(delta1+delta2);vCurrOffset=(ratio)* vLastOffset+(1.0-ratio)*vCurrOffset;keepWorking=false;}\nelse\n{currRayHeight-=stepSize;vLastOffset=vCurrOffset;\n#ifdef PARALLAX_RHS\nvCurrOffset-=stepSize*vMaxOffset;\n#else\nvCurrOffset+=stepSize*vMaxOffset;\n#endif\nlastSampledHeight=currSampledHeight;}}\nreturn vCurrOffset;}\nfn parallaxOffset(viewDir: vec3f,heightScale: f32)->vec2f\n{var height: f32=textureSample(geometryNormalSampler,geometryNormalSamplerSampler,fragmentInputs.vGeometryNormalUV).w;var texCoordOffset: vec2f=heightScale*viewDir.xy*height;\n#ifdef PARALLAX_RHS\nreturn texCoordOffset;\n#else\nreturn -texCoordOffset;\n#endif\n}\n#endif\n`;\n// Sideeffect\nif (!ShaderStore.IncludesShadersStoreWGSL[name]) {\n ShaderStore.IncludesShadersStoreWGSL[name] = shader;\n}\n/** @internal */\nexport const openpbrNormalMapFragmentFunctionsWGSL = { name, shader };\n"]}
@@ -0,0 +1,5 @@
1
+ /** @internal */
2
+ export declare const openpbrNormalMapFragmentMainFunctionsWGSL: {
3
+ name: string;
4
+ shader: string;
5
+ };
@@ -0,0 +1,51 @@
1
+ // Do not edit.
2
+ import { ShaderStore } from "../../Engines/shaderStore.js";
3
+ const name = "openpbrNormalMapFragmentMainFunctions";
4
+ const shader = `#if defined(GEOMETRY_NORMAL) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) || defined(DETAIL)
5
+ #if defined(TANGENT) && defined(NORMAL)
6
+ varying vTBN0: vec3f;varying vTBN1: vec3f;varying vTBN2: vec3f;
7
+ #endif
8
+ #ifdef OBJECTSPACE_NORMALMAP
9
+ uniform normalMatrix: mat4x4f;fn toNormalMatrix(m: mat4x4f)->mat4x4f
10
+ {var a00=m[0][0];var a01=m[0][1];var a02=m[0][2];var a03=m[0][3];var a10=m[1][0];var a11=m[1][1];var a12=m[1][2];var a13=m[1][3];var a20=m[2][0];
11
+ var a21=m[2][1];var a22=m[2][2];var a23=m[2][3];var a30=m[3][0];
12
+ var a31=m[3][1];var a32=m[3][2];var a33=m[3][3];var b00=a00*a11-a01*a10;var b01=a00*a12-a02*a10;var b02=a00*a13-a03*a10;var b03=a01*a12-a02*a11;var b04=a01*a13-a03*a11;var b05=a02*a13-a03*a12;var b06=a20*a31-a21*a30;var b07=a20*a32-a22*a30;var b08=a20*a33-a23*a30;var b09=a21*a32-a22*a31;var b10=a21*a33-a23*a31;var b11=a22*a33-a23*a32;var det=b00*b11-b01*b10+b02*b09+b03*b08-b04*b07+b05*b06;var mi=mat4x4<f32>(
13
+ (a11*b11-a12*b10+a13*b09)/det,
14
+ (a02*b10-a01*b11-a03*b09)/det,
15
+ (a31*b05-a32*b04+a33*b03)/det,
16
+ (a22*b04-a21*b05-a23*b03)/det,
17
+ (a12*b08-a10*b11-a13*b07)/det,
18
+ (a00*b11-a02*b08+a03*b07)/det,
19
+ (a32*b02-a30*b05-a33*b01)/det,
20
+ (a20*b05-a22*b02+a23*b01)/det,
21
+ (a10*b10-a11*b08+a13*b06)/det,
22
+ (a01*b08-a00*b10-a03*b06)/det,
23
+ (a30*b04-a31*b02+a33*b00)/det,
24
+ (a21*b02-a20*b04-a23*b00)/det,
25
+ (a11*b07-a10*b09-a12*b06)/det,
26
+ (a00*b09-a01*b07+a02*b06)/det,
27
+ (a31*b01-a30*b03-a32*b00)/det,
28
+ (a20*b03-a21*b01+a22*b00)/det);return mat4x4<f32>(mi[0][0],mi[1][0],mi[2][0],mi[3][0],
29
+ mi[0][1],mi[1][1],mi[2][1],mi[3][1],
30
+ mi[0][2],mi[1][2],mi[2][2],mi[3][2],
31
+ mi[0][3],mi[1][3],mi[2][3],mi[3][3]);}
32
+ #endif
33
+ fn perturbNormalBase(cotangentFrame: mat3x3f,normal: vec3f,scale: f32)->vec3f
34
+ {var output=normal;
35
+ #ifdef NORMALXYSCALE
36
+ output=normalize(output* vec3f(scale,scale,1.0));
37
+ #endif
38
+ return normalize(cotangentFrame*output);}
39
+ fn perturbNormal(cotangentFrame: mat3x3f,textureSample: vec3f,scale: f32)->vec3f
40
+ {return perturbNormalBase(cotangentFrame,textureSample*2.0-1.0,scale);}
41
+ fn cotangent_frame(normal: vec3f,p: vec3f,uv: vec2f,tangentSpaceParams: vec2f)->mat3x3f
42
+ {var dp1: vec3f=dpdx(p);var dp2: vec3f=dpdy(p);var duv1: vec2f=dpdx(uv);var duv2: vec2f=dpdy(uv);var dp2perp: vec3f=cross(dp2,normal);var dp1perp: vec3f=cross(normal,dp1);var tangent: vec3f=dp2perp*duv1.x+dp1perp*duv2.x;var bitangent: vec3f=dp2perp*duv1.y+dp1perp*duv2.y;tangent*=tangentSpaceParams.x;bitangent*=tangentSpaceParams.y;var det: f32=max(dot(tangent,tangent),dot(bitangent,bitangent));var invmax: f32=select(inverseSqrt(det),0.0,det==0.0);return mat3x3f(tangent*invmax,bitangent*invmax,normal);}
43
+ #endif
44
+ `;
45
+ // Sideeffect
46
+ if (!ShaderStore.IncludesShadersStoreWGSL[name]) {
47
+ ShaderStore.IncludesShadersStoreWGSL[name] = shader;
48
+ }
49
+ /** @internal */
50
+ export const openpbrNormalMapFragmentMainFunctionsWGSL = { name, shader };
51
+ //# sourceMappingURL=openpbrNormalMapFragmentMainFunctions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openpbrNormalMapFragmentMainFunctions.js","sourceRoot":"","sources":["../../../../../dev/core/src/ShadersWGSL/ShadersInclude/openpbrNormalMapFragmentMainFunctions.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,IAAI,GAAG,uCAAuC,CAAC;AACrD,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwCd,CAAC;AACF,aAAa;AACb,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC;IAC9C,WAAW,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACxD,CAAC;AACD,gBAAgB;AAChB,MAAM,CAAC,MAAM,yCAAyC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../../Engines/shaderStore\";\n\nconst name = \"openpbrNormalMapFragmentMainFunctions\";\nconst shader = `#if defined(GEOMETRY_NORMAL) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) || defined(DETAIL)\n#if defined(TANGENT) && defined(NORMAL) \nvarying vTBN0: vec3f;varying vTBN1: vec3f;varying vTBN2: vec3f;\n#endif\n#ifdef OBJECTSPACE_NORMALMAP\nuniform normalMatrix: mat4x4f;fn toNormalMatrix(m: mat4x4f)->mat4x4f\n{var a00=m[0][0];var a01=m[0][1];var a02=m[0][2];var a03=m[0][3];var a10=m[1][0];var a11=m[1][1];var a12=m[1][2];var a13=m[1][3];var a20=m[2][0]; \nvar a21=m[2][1];var a22=m[2][2];var a23=m[2][3];var a30=m[3][0]; \nvar a31=m[3][1];var a32=m[3][2];var a33=m[3][3];var b00=a00*a11-a01*a10;var b01=a00*a12-a02*a10;var b02=a00*a13-a03*a10;var b03=a01*a12-a02*a11;var b04=a01*a13-a03*a11;var b05=a02*a13-a03*a12;var b06=a20*a31-a21*a30;var b07=a20*a32-a22*a30;var b08=a20*a33-a23*a30;var b09=a21*a32-a22*a31;var b10=a21*a33-a23*a31;var b11=a22*a33-a23*a32;var det=b00*b11-b01*b10+b02*b09+b03*b08-b04*b07+b05*b06;var mi=mat4x4<f32>(\n(a11*b11-a12*b10+a13*b09)/det,\n(a02*b10-a01*b11-a03*b09)/det,\n(a31*b05-a32*b04+a33*b03)/det,\n(a22*b04-a21*b05-a23*b03)/det,\n(a12*b08-a10*b11-a13*b07)/det,\n(a00*b11-a02*b08+a03*b07)/det,\n(a32*b02-a30*b05-a33*b01)/det,\n(a20*b05-a22*b02+a23*b01)/det,\n(a10*b10-a11*b08+a13*b06)/det,\n(a01*b08-a00*b10-a03*b06)/det,\n(a30*b04-a31*b02+a33*b00)/det,\n(a21*b02-a20*b04-a23*b00)/det,\n(a11*b07-a10*b09-a12*b06)/det,\n(a00*b09-a01*b07+a02*b06)/det,\n(a31*b01-a30*b03-a32*b00)/det,\n(a20*b03-a21*b01+a22*b00)/det);return mat4x4<f32>(mi[0][0],mi[1][0],mi[2][0],mi[3][0],\nmi[0][1],mi[1][1],mi[2][1],mi[3][1],\nmi[0][2],mi[1][2],mi[2][2],mi[3][2],\nmi[0][3],mi[1][3],mi[2][3],mi[3][3]);}\n#endif\nfn perturbNormalBase(cotangentFrame: mat3x3f,normal: vec3f,scale: f32)->vec3f\n{var output=normal;\n#ifdef NORMALXYSCALE\noutput=normalize(output* vec3f(scale,scale,1.0));\n#endif\nreturn normalize(cotangentFrame*output);}\nfn perturbNormal(cotangentFrame: mat3x3f,textureSample: vec3f,scale: f32)->vec3f\n{return perturbNormalBase(cotangentFrame,textureSample*2.0-1.0,scale);}\nfn cotangent_frame(normal: vec3f,p: vec3f,uv: vec2f,tangentSpaceParams: vec2f)->mat3x3f\n{var dp1: vec3f=dpdx(p);var dp2: vec3f=dpdy(p);var duv1: vec2f=dpdx(uv);var duv2: vec2f=dpdy(uv);var dp2perp: vec3f=cross(dp2,normal);var dp1perp: vec3f=cross(normal,dp1);var tangent: vec3f=dp2perp*duv1.x+dp1perp*duv2.x;var bitangent: vec3f=dp2perp*duv1.y+dp1perp*duv2.y;tangent*=tangentSpaceParams.x;bitangent*=tangentSpaceParams.y;var det: f32=max(dot(tangent,tangent),dot(bitangent,bitangent));var invmax: f32=select(inverseSqrt(det),0.0,det==0.0);return mat3x3f(tangent*invmax,bitangent*invmax,normal);}\n#endif\n`;\n// Sideeffect\nif (!ShaderStore.IncludesShadersStoreWGSL[name]) {\n ShaderStore.IncludesShadersStoreWGSL[name] = shader;\n}\n/** @internal */\nexport const openpbrNormalMapFragmentMainFunctionsWGSL = { name, shader };\n"]}
@@ -0,0 +1,5 @@
1
+ /** @internal */
2
+ export declare const openpbrNormalMapVertexWGSL: {
3
+ name: string;
4
+ shader: string;
5
+ };