@babylonjs/core 7.16.0 → 7.16.1

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 (211) hide show
  1. package/Animations/animationGroup.d.ts +1 -0
  2. package/Animations/animationGroup.js +4 -1
  3. package/Animations/animationGroup.js.map +1 -1
  4. package/Collisions/gpuPicker.js +1 -1
  5. package/Collisions/gpuPicker.js.map +1 -1
  6. package/Compute/computeEffect.js +1 -1
  7. package/Compute/computeEffect.js.map +1 -1
  8. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.d.ts +32 -0
  9. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +32 -0
  10. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
  11. package/Engines/abstractEngine.js +2 -2
  12. package/Engines/abstractEngine.js.map +1 -1
  13. package/Engines/engine.d.ts +1993 -1993
  14. package/Engines/nativeEngine.d.ts +7 -0
  15. package/Engines/nativeEngine.js +24 -1
  16. package/Engines/nativeEngine.js.map +1 -1
  17. package/Engines/thinEngine.js +2 -2
  18. package/Engines/thinEngine.js.map +1 -1
  19. package/Engines/webgpuEngine.js +3 -3
  20. package/Engines/webgpuEngine.js.map +1 -1
  21. package/Materials/Node/Blocks/Dual/clipPlanesBlock.js +6 -6
  22. package/Materials/Node/Blocks/Dual/clipPlanesBlock.js.map +1 -1
  23. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +4 -7
  24. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
  25. package/Materials/Node/Blocks/Dual/textureBlock.js +1 -1
  26. package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
  27. package/Materials/Node/Blocks/PBR/anisotropyBlock.js +4 -4
  28. package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
  29. package/Materials/Node/Blocks/PBR/clearCoatBlock.js +46 -40
  30. package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
  31. package/Materials/Node/Blocks/PBR/iridescenceBlock.d.ts +2 -1
  32. package/Materials/Node/Blocks/PBR/iridescenceBlock.js +10 -9
  33. package/Materials/Node/Blocks/PBR/iridescenceBlock.js.map +1 -1
  34. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.d.ts +1 -0
  35. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +85 -69
  36. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  37. package/Materials/Node/Blocks/PBR/reflectionBlock.js +54 -38
  38. package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
  39. package/Materials/Node/Blocks/PBR/refractionBlock.js +2 -2
  40. package/Materials/Node/Blocks/PBR/refractionBlock.js.map +1 -1
  41. package/Materials/Node/Blocks/PBR/sheenBlock.d.ts +2 -1
  42. package/Materials/Node/Blocks/PBR/sheenBlock.js +40 -32
  43. package/Materials/Node/Blocks/PBR/sheenBlock.js.map +1 -1
  44. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js +53 -45
  45. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js.map +1 -1
  46. package/Materials/Node/nodeMaterial.d.ts +2 -1
  47. package/Materials/Node/nodeMaterial.js +4 -1
  48. package/Materials/Node/nodeMaterial.js.map +1 -1
  49. package/Materials/Node/nodeMaterialBuildState.d.ts +1 -0
  50. package/Materials/Node/nodeMaterialBuildState.js +12 -3
  51. package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
  52. package/Materials/effect.js +2 -2
  53. package/Materials/effect.js.map +1 -1
  54. package/Meshes/Builders/decalBuilder.js +12 -12
  55. package/Meshes/Builders/decalBuilder.js.map +1 -1
  56. package/Meshes/GaussianSplatting/gaussianSplattingMesh.d.ts +10 -1
  57. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js +50 -11
  58. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
  59. package/Meshes/Node/nodeGeometry.d.ts +6 -0
  60. package/Meshes/Node/nodeGeometry.js +7 -0
  61. package/Meshes/Node/nodeGeometry.js.map +1 -1
  62. package/Meshes/mesh.d.ts +1 -0
  63. package/Meshes/mesh.js +138 -134
  64. package/Meshes/mesh.js.map +1 -1
  65. package/Meshes/subMesh.js +1 -1
  66. package/Meshes/subMesh.js.map +1 -1
  67. package/Misc/khronosTextureContainer2.js +1 -1
  68. package/Misc/khronosTextureContainer2.js.map +1 -1
  69. package/Rendering/GlobalIllumination/giRSMManager.js +1 -1
  70. package/Rendering/GlobalIllumination/giRSMManager.js.map +1 -1
  71. package/Rendering/edgesRenderer.js +1 -1
  72. package/Rendering/edgesRenderer.js.map +1 -1
  73. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js +1 -1
  74. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js.map +1 -1
  75. package/Shaders/ShadersInclude/lightFragment.js +3 -3
  76. package/Shaders/ShadersInclude/lightFragment.js.map +1 -1
  77. package/Shaders/ShadersInclude/lightsFragmentFunctions.js +1 -1
  78. package/Shaders/ShadersInclude/lightsFragmentFunctions.js.map +1 -1
  79. package/Shaders/ShadersInclude/pbrBlockAlbedoOpacity.js +13 -14
  80. package/Shaders/ShadersInclude/pbrBlockAlbedoOpacity.js.map +1 -1
  81. package/Shaders/ShadersInclude/pbrBlockAlphaFresnel.js +4 -5
  82. package/Shaders/ShadersInclude/pbrBlockAlphaFresnel.js.map +1 -1
  83. package/Shaders/ShadersInclude/pbrBlockAmbientOcclusion.js +4 -5
  84. package/Shaders/ShadersInclude/pbrBlockAmbientOcclusion.js.map +1 -1
  85. package/Shaders/ShadersInclude/pbrBlockAnisotropic.js +4 -5
  86. package/Shaders/ShadersInclude/pbrBlockAnisotropic.js.map +1 -1
  87. package/Shaders/ShadersInclude/pbrBlockClearcoat.js +34 -35
  88. package/Shaders/ShadersInclude/pbrBlockClearcoat.js.map +1 -1
  89. package/Shaders/ShadersInclude/pbrBlockIridescence.js +10 -11
  90. package/Shaders/ShadersInclude/pbrBlockIridescence.js.map +1 -1
  91. package/Shaders/ShadersInclude/pbrBlockReflection.js +23 -24
  92. package/Shaders/ShadersInclude/pbrBlockReflection.js.map +1 -1
  93. package/Shaders/ShadersInclude/pbrBlockReflectivity.js +12 -13
  94. package/Shaders/ShadersInclude/pbrBlockReflectivity.js.map +1 -1
  95. package/Shaders/ShadersInclude/pbrBlockSheen.js +31 -32
  96. package/Shaders/ShadersInclude/pbrBlockSheen.js.map +1 -1
  97. package/Shaders/ShadersInclude/pbrBlockSubSurface.js +43 -44
  98. package/Shaders/ShadersInclude/pbrBlockSubSurface.js.map +1 -1
  99. package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js +1 -1
  100. package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
  101. package/Shaders/ShadersInclude/pbrDirectLightingSetupFunctions.js +1 -1
  102. package/Shaders/ShadersInclude/pbrDirectLightingSetupFunctions.js.map +1 -1
  103. package/Shaders/pbr.fragment.js +143 -153
  104. package/Shaders/pbr.fragment.js.map +1 -1
  105. package/ShadersWGSL/ShadersInclude/bumpFragmentMainFunctions.js +3 -3
  106. package/ShadersWGSL/ShadersInclude/bumpFragmentMainFunctions.js.map +1 -1
  107. package/ShadersWGSL/ShadersInclude/decalFragment.d.ts +5 -0
  108. package/ShadersWGSL/ShadersInclude/decalFragment.js +18 -0
  109. package/ShadersWGSL/ShadersInclude/decalFragment.js.map +1 -0
  110. package/ShadersWGSL/ShadersInclude/depthPrePass.d.ts +5 -0
  111. package/ShadersWGSL/ShadersInclude/depthPrePass.js +12 -0
  112. package/ShadersWGSL/ShadersInclude/depthPrePass.js.map +1 -0
  113. package/ShadersWGSL/ShadersInclude/harmonicsFunctions.d.ts +5 -0
  114. package/ShadersWGSL/ShadersInclude/harmonicsFunctions.js +24 -0
  115. package/ShadersWGSL/ShadersInclude/harmonicsFunctions.js.map +1 -0
  116. package/ShadersWGSL/ShadersInclude/hdrFilteringFunctions.d.ts +5 -0
  117. package/ShadersWGSL/ShadersInclude/hdrFilteringFunctions.js +39 -0
  118. package/ShadersWGSL/ShadersInclude/hdrFilteringFunctions.js.map +1 -0
  119. package/ShadersWGSL/ShadersInclude/helperFunctions.js +6 -2
  120. package/ShadersWGSL/ShadersInclude/helperFunctions.js.map +1 -1
  121. package/ShadersWGSL/ShadersInclude/imageProcessingFunctions.js +2 -2
  122. package/ShadersWGSL/ShadersInclude/imageProcessingFunctions.js.map +1 -1
  123. package/ShadersWGSL/ShadersInclude/importanceSampling.d.ts +5 -0
  124. package/ShadersWGSL/ShadersInclude/importanceSampling.js +12 -0
  125. package/ShadersWGSL/ShadersInclude/importanceSampling.js.map +1 -0
  126. package/ShadersWGSL/ShadersInclude/lightFragment.js +3 -3
  127. package/ShadersWGSL/ShadersInclude/lightFragment.js.map +1 -1
  128. package/ShadersWGSL/ShadersInclude/lightsFragmentFunctions.js +1 -1
  129. package/ShadersWGSL/ShadersInclude/lightsFragmentFunctions.js.map +1 -1
  130. package/ShadersWGSL/ShadersInclude/pbrBRDFFunctions.d.ts +5 -0
  131. package/ShadersWGSL/ShadersInclude/pbrBRDFFunctions.js +139 -0
  132. package/ShadersWGSL/ShadersInclude/pbrBRDFFunctions.js.map +1 -0
  133. package/ShadersWGSL/ShadersInclude/pbrBlockAlbedoOpacity.d.ts +6 -0
  134. package/ShadersWGSL/ShadersInclude/pbrBlockAlbedoOpacity.js +81 -0
  135. package/ShadersWGSL/ShadersInclude/pbrBlockAlbedoOpacity.js.map +1 -0
  136. package/ShadersWGSL/ShadersInclude/pbrBlockAlphaFresnel.d.ts +5 -0
  137. package/ShadersWGSL/ShadersInclude/pbrBlockAlphaFresnel.js +37 -0
  138. package/ShadersWGSL/ShadersInclude/pbrBlockAlphaFresnel.js.map +1 -0
  139. package/ShadersWGSL/ShadersInclude/pbrBlockAmbientOcclusion.d.ts +5 -0
  140. package/ShadersWGSL/ShadersInclude/pbrBlockAmbientOcclusion.js +35 -0
  141. package/ShadersWGSL/ShadersInclude/pbrBlockAmbientOcclusion.js.map +1 -0
  142. package/ShadersWGSL/ShadersInclude/pbrBlockAnisotropic.d.ts +5 -0
  143. package/ShadersWGSL/ShadersInclude/pbrBlockAnisotropic.js +46 -0
  144. package/ShadersWGSL/ShadersInclude/pbrBlockAnisotropic.js.map +1 -0
  145. package/ShadersWGSL/ShadersInclude/pbrBlockClearcoat.d.ts +5 -0
  146. package/ShadersWGSL/ShadersInclude/pbrBlockClearcoat.js +267 -0
  147. package/ShadersWGSL/ShadersInclude/pbrBlockClearcoat.js.map +1 -0
  148. package/ShadersWGSL/ShadersInclude/pbrBlockDirectLighting.d.ts +5 -0
  149. package/ShadersWGSL/ShadersInclude/pbrBlockDirectLighting.js +24 -0
  150. package/ShadersWGSL/ShadersInclude/pbrBlockDirectLighting.js.map +1 -0
  151. package/ShadersWGSL/ShadersInclude/pbrBlockFinalColorComposition.d.ts +5 -0
  152. package/ShadersWGSL/ShadersInclude/pbrBlockFinalColorComposition.js +51 -0
  153. package/ShadersWGSL/ShadersInclude/pbrBlockFinalColorComposition.js.map +1 -0
  154. package/ShadersWGSL/ShadersInclude/pbrBlockFinalLitComponents.d.ts +5 -0
  155. package/ShadersWGSL/ShadersInclude/pbrBlockFinalLitComponents.js +96 -0
  156. package/ShadersWGSL/ShadersInclude/pbrBlockFinalLitComponents.js.map +1 -0
  157. package/ShadersWGSL/ShadersInclude/pbrBlockFinalUnlitComponents.d.ts +5 -0
  158. package/ShadersWGSL/ShadersInclude/pbrBlockFinalUnlitComponents.js +26 -0
  159. package/ShadersWGSL/ShadersInclude/pbrBlockFinalUnlitComponents.js.map +1 -0
  160. package/ShadersWGSL/ShadersInclude/pbrBlockGeometryInfo.d.ts +5 -0
  161. package/ShadersWGSL/ShadersInclude/pbrBlockGeometryInfo.js +33 -0
  162. package/ShadersWGSL/ShadersInclude/pbrBlockGeometryInfo.js.map +1 -0
  163. package/ShadersWGSL/ShadersInclude/pbrBlockImageProcessing.d.ts +5 -0
  164. package/ShadersWGSL/ShadersInclude/pbrBlockImageProcessing.js +20 -0
  165. package/ShadersWGSL/ShadersInclude/pbrBlockImageProcessing.js.map +1 -0
  166. package/ShadersWGSL/ShadersInclude/pbrBlockIridescence.d.ts +5 -0
  167. package/ShadersWGSL/ShadersInclude/pbrBlockIridescence.js +51 -0
  168. package/ShadersWGSL/ShadersInclude/pbrBlockIridescence.js.map +1 -0
  169. package/ShadersWGSL/ShadersInclude/pbrBlockLightmapInit.d.ts +5 -0
  170. package/ShadersWGSL/ShadersInclude/pbrBlockLightmapInit.js +19 -0
  171. package/ShadersWGSL/ShadersInclude/pbrBlockLightmapInit.js.map +1 -0
  172. package/ShadersWGSL/ShadersInclude/pbrBlockNormalFinal.d.ts +5 -0
  173. package/ShadersWGSL/ShadersInclude/pbrBlockNormalFinal.js +19 -0
  174. package/ShadersWGSL/ShadersInclude/pbrBlockNormalFinal.js.map +1 -0
  175. package/ShadersWGSL/ShadersInclude/pbrBlockReflectance.d.ts +5 -0
  176. package/ShadersWGSL/ShadersInclude/pbrBlockReflectance.js +30 -0
  177. package/ShadersWGSL/ShadersInclude/pbrBlockReflectance.js.map +1 -0
  178. package/ShadersWGSL/ShadersInclude/pbrBlockReflectance0.d.ts +5 -0
  179. package/ShadersWGSL/ShadersInclude/pbrBlockReflectance0.js +18 -0
  180. package/ShadersWGSL/ShadersInclude/pbrBlockReflectance0.js.map +1 -0
  181. package/ShadersWGSL/ShadersInclude/pbrBlockReflection.d.ts +5 -0
  182. package/ShadersWGSL/ShadersInclude/pbrBlockReflection.js +277 -0
  183. package/ShadersWGSL/ShadersInclude/pbrBlockReflection.js.map +1 -0
  184. package/ShadersWGSL/ShadersInclude/pbrBlockReflectivity.d.ts +5 -0
  185. package/ShadersWGSL/ShadersInclude/pbrBlockReflectivity.js +120 -0
  186. package/ShadersWGSL/ShadersInclude/pbrBlockReflectivity.js.map +1 -0
  187. package/ShadersWGSL/ShadersInclude/pbrBlockSheen.d.ts +5 -0
  188. package/ShadersWGSL/ShadersInclude/pbrBlockSheen.js +195 -0
  189. package/ShadersWGSL/ShadersInclude/pbrBlockSheen.js.map +1 -0
  190. package/ShadersWGSL/ShadersInclude/pbrBlockSubSurface.d.ts +5 -0
  191. package/ShadersWGSL/ShadersInclude/pbrBlockSubSurface.js +425 -0
  192. package/ShadersWGSL/ShadersInclude/pbrBlockSubSurface.js.map +1 -0
  193. package/ShadersWGSL/ShadersInclude/pbrDebug.d.ts +5 -0
  194. package/ShadersWGSL/ShadersInclude/pbrDebug.js +193 -0
  195. package/ShadersWGSL/ShadersInclude/pbrDebug.js.map +1 -0
  196. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFalloffFunctions.d.ts +5 -0
  197. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFalloffFunctions.js +43 -0
  198. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFalloffFunctions.js.map +1 -0
  199. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.d.ts +5 -0
  200. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js +68 -0
  201. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -0
  202. package/ShadersWGSL/ShadersInclude/pbrDirectLightingSetupFunctions.d.ts +5 -0
  203. package/ShadersWGSL/ShadersInclude/pbrDirectLightingSetupFunctions.js +30 -0
  204. package/ShadersWGSL/ShadersInclude/pbrDirectLightingSetupFunctions.js.map +1 -0
  205. package/ShadersWGSL/ShadersInclude/pbrHelperFunctions.d.ts +5 -0
  206. package/ShadersWGSL/ShadersInclude/pbrHelperFunctions.js +41 -0
  207. package/ShadersWGSL/ShadersInclude/pbrHelperFunctions.js.map +1 -0
  208. package/ShadersWGSL/ShadersInclude/pbrIBLFunctions.d.ts +5 -0
  209. package/ShadersWGSL/ShadersInclude/pbrIBLFunctions.js +23 -0
  210. package/ShadersWGSL/ShadersInclude/pbrIBLFunctions.js.map +1 -0
  211. package/package.json +1 -1
@@ -0,0 +1,277 @@
1
+ // Do not edit.
2
+ import { ShaderStore } from "../../Engines/shaderStore.js";
3
+ const name = "pbrBlockReflection";
4
+ const shader = `#ifdef REFLECTION
5
+ struct reflectionOutParams
6
+ {environmentRadiance: vec4f
7
+ ,environmentIrradiance: vec3f
8
+ #ifdef REFLECTIONMAP_3D
9
+ ,reflectionCoords: vec3f
10
+ #else
11
+ ,reflectionCoords: vec2f
12
+ #endif
13
+ #ifdef SS_TRANSLUCENCY
14
+ #ifdef USESPHERICALFROMREFLECTIONMAP
15
+ #if !defined(NORMAL) || !defined(USESPHERICALINVERTEX)
16
+ ,irradianceVector: vec3f
17
+ #endif
18
+ #endif
19
+ #endif
20
+ };
21
+ #define pbr_inline
22
+ #ifdef REFLECTIONMAP_3D
23
+ fn createReflectionCoords(
24
+ vPositionW: vec3f,
25
+ normalW: vec3f,
26
+ #ifdef ANISOTROPIC
27
+ anisotropicOut: anisotropicOutParams,
28
+ #endif
29
+ )->vec3f
30
+ {var reflectionCoords: vec3f;
31
+ #else
32
+ fn createReflectionCoords(
33
+ vPositionW: vec3f,
34
+ normalW: vec3f,
35
+ #ifdef ANISOTROPIC
36
+ anisotropicOut: anisotropicOutParams,
37
+ #endif
38
+ )->vec2f
39
+ {
40
+ var reflectionCoords: vec2f;
41
+ #endif
42
+ #ifdef ANISOTROPIC
43
+ var reflectionVector: vec3f=computeReflectionCoords( vec4f(vPositionW,1.0),anisotropicOut.anisotropicNormal);
44
+ #else
45
+ var reflectionVector: vec3f=computeReflectionCoords( vec4f(vPositionW,1.0),normalW);
46
+ #endif
47
+ #ifdef REFLECTIONMAP_OPPOSITEZ
48
+ reflectionVector.z*=-1.0;
49
+ #endif
50
+ #ifdef REFLECTIONMAP_3D
51
+ reflectionCoords=reflectionVector;
52
+ #else
53
+ reflectionCoords=reflectionVector.xy;
54
+ #ifdef REFLECTIONMAP_PROJECTION
55
+ reflectionCoords/=reflectionVector.z;
56
+ #endif
57
+ reflectionCoords.y=1.0-reflectionCoords.y;
58
+ #endif
59
+ return reflectionCoords;}
60
+ #define pbr_inline
61
+ fn sampleReflectionTexture(
62
+ alphaG: f32
63
+ ,vReflectionMicrosurfaceInfos: vec3f
64
+ ,vReflectionInfos: vec2f
65
+ ,vReflectionColor: vec3f
66
+ #if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
67
+ ,NdotVUnclamped: f32
68
+ #endif
69
+ #ifdef LINEARSPECULARREFLECTION
70
+ ,roughness: f32
71
+ #endif
72
+ #ifdef REFLECTIONMAP_3D
73
+ ,reflectionSampler: texture_cube<f32>
74
+ ,reflectionSamplerSampler: sampler
75
+ ,reflectionCoords: vec3f
76
+ #else
77
+ ,reflectionSampler: texture_2d<f32>
78
+ ,reflectionSamplerSampler: sampler
79
+ ,reflectionCoords: vec2f
80
+ #endif
81
+ #ifndef LODBASEDMICROSFURACE
82
+ #ifdef REFLECTIONMAP_3D
83
+ ,reflectionLowSampler: texture_cube<f32>
84
+ ,reflectionLowSamplerSampler: sampler
85
+ ,reflectionHighSampler: texture_cube<f32>
86
+ ,reflectionHighSamplerSampler: sampler
87
+ #else
88
+ ,reflectionLowSampler: texture_2d<f32>
89
+ ,reflectionLowSamplerSampler: sampler
90
+ ,reflectionHighSampler: texture_2d<f32>
91
+ ,reflectionHighSamplerSampler: sampler
92
+ #endif
93
+ #endif
94
+ #ifdef REALTIME_FILTERING
95
+ ,vReflectionFilteringInfo: vec2f
96
+ #endif
97
+ )->vec4f
98
+ {var environmentRadiance: vec4f;
99
+ #if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
100
+ var reflectionLOD: f32=getLodFromAlphaG(vReflectionMicrosurfaceInfos.x,alphaG,NdotVUnclamped);
101
+ #elif defined(LINEARSPECULARREFLECTION)
102
+ var reflectionLOD: f32=getLinearLodFromRoughness(vReflectionMicrosurfaceInfos.x,roughness);
103
+ #else
104
+ var reflectionLOD: f32=getLodFromAlphaG(vReflectionMicrosurfaceInfos.x,alphaG);
105
+ #endif
106
+ #ifdef LODBASEDMICROSFURACE
107
+ reflectionLOD=reflectionLOD*vReflectionMicrosurfaceInfos.y+vReflectionMicrosurfaceInfos.z;
108
+ #ifdef LODINREFLECTIONALPHA
109
+ var automaticReflectionLOD: f32=UNPACK_LOD(textureSample(reflectionSampler,reflectionSamplerSampler,reflectionCoords).a);var requestedReflectionLOD: f32=max(automaticReflectionLOD,reflectionLOD);
110
+ #else
111
+ var requestedReflectionLOD: f32=reflectionLOD;
112
+ #endif
113
+ #ifdef REALTIME_FILTERING
114
+ environmentRadiance= vec4f(radiance(alphaG,reflectionSampler,reflectionSamplerSampler,reflectionCoords,vReflectionFilteringInfo),1.0);
115
+ #else
116
+ environmentRadiance=textureSampleLevel(reflectionSampler,reflectionSamplerSampler,reflectionCoords,reflectionLOD);
117
+ #endif
118
+ #else
119
+ var lodReflectionNormalized: f32=saturate(reflectionLOD/log2(vReflectionMicrosurfaceInfos.x));var lodReflectionNormalizedDoubled: f32=lodReflectionNormalized*2.0;var environmentMid: vec4f=textureSample(reflectionSampler,reflectionSamplerSampler,reflectionCoords);if (lodReflectionNormalizedDoubled<1.0){environmentRadiance=mix(
120
+ textureSample(reflectionHighSampler,reflectionHighSamplerSampler,reflectionCoords),
121
+ environmentMid,
122
+ lodReflectionNormalizedDoubled
123
+ );} else {environmentRadiance=mix(
124
+ environmentMid,
125
+ textureSample(reflectionLowSampler,reflectionLowSamplerSampler,reflectionCoords),
126
+ lodReflectionNormalizedDoubled-1.0
127
+ );}
128
+ #endif
129
+ var envRadiance=environmentRadiance.rgb;
130
+ #ifdef RGBDREFLECTION
131
+ envRadiance=fromRGBD(environmentRadiance);
132
+ #endif
133
+ #ifdef GAMMAREFLECTION
134
+ envRadiance=toLinearSpaceVec3(environmentRadiance.rgb);
135
+ #endif
136
+ envRadiance*=vReflectionInfos.x;envRadiance*=vReflectionColor.rgb;return vec4f(envRadiance,environmentRadiance.a);}
137
+ #define pbr_inline
138
+ fn reflectionBlock(
139
+ vPositionW: vec3f
140
+ ,normalW: vec3f
141
+ ,alphaG: f32
142
+ ,vReflectionMicrosurfaceInfos: vec3f
143
+ ,vReflectionInfos: vec2f
144
+ ,vReflectionColor: vec3f
145
+ #ifdef ANISOTROPIC
146
+ ,anisotropicOut: anisotropicOutParams
147
+ #endif
148
+ #if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
149
+ ,NdotVUnclamped: f32
150
+ #endif
151
+ #ifdef LINEARSPECULARREFLECTION
152
+ ,roughness: f32
153
+ #endif
154
+ #ifdef REFLECTIONMAP_3D
155
+ ,reflectionSampler: texture_cube<f32>
156
+ ,reflectionSamplerSampler: sampler
157
+ #else
158
+ ,reflectionSampler: texture_2d<f32>
159
+ ,reflectionSamplerSampler: sampler
160
+ #endif
161
+ #if defined(NORMAL) && defined(USESPHERICALINVERTEX)
162
+ ,vEnvironmentIrradiance: vec3f
163
+ #endif
164
+ #ifdef USESPHERICALFROMREFLECTIONMAP
165
+ #if !defined(NORMAL) || !defined(USESPHERICALINVERTEX)
166
+ ,reflectionMatrix: mat4x4f
167
+ #endif
168
+ #endif
169
+ #ifdef USEIRRADIANCEMAP
170
+ #ifdef REFLECTIONMAP_3D
171
+ ,irradianceSampler: texture_cube<f32>
172
+ ,irradianceSamplerSampler: sampler
173
+ #else
174
+ ,irradianceSampler: texture_2d<f32>
175
+ ,irradianceSamplerSampler: sampler
176
+ #endif
177
+ #endif
178
+ #ifndef LODBASEDMICROSFURACE
179
+ #ifdef REFLECTIONMAP_3D
180
+ ,reflectionLowSampler: texture_cube<f32>
181
+ ,reflectionLowSamplerSampler: sampler
182
+ ,reflectionHighSampler: texture_cube<f32>
183
+ ,reflectionHighSamplerSampler: sampler
184
+ #else
185
+ ,reflectionLowSampler: texture_2d<f32>
186
+ ,reflectionLowSamplerSampler: sampler
187
+ ,reflectionHighSampler: texture_2d<f32>
188
+ ,reflectionHighSamplerSampler: sampler
189
+ #endif
190
+ #endif
191
+ #ifdef REALTIME_FILTERING
192
+ ,vReflectionFilteringInfo: vec2f
193
+ #endif
194
+ )->reflectionOutParams
195
+ {var outParams: reflectionOutParams;var environmentRadiance: vec4f= vec4f(0.,0.,0.,0.);
196
+ #ifdef REFLECTIONMAP_3D
197
+ var reflectionCoords: vec3f= vec3f(0.);
198
+ #else
199
+ var reflectionCoords: vec2f= vec2f(0.);
200
+ #endif
201
+ reflectionCoords=createReflectionCoords(
202
+ vPositionW,
203
+ normalW,
204
+ #ifdef ANISOTROPIC
205
+ anisotropicOut,
206
+ #endif
207
+ );environmentRadiance=sampleReflectionTexture(
208
+ alphaG
209
+ ,vReflectionMicrosurfaceInfos
210
+ ,vReflectionInfos
211
+ ,vReflectionColor
212
+ #if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
213
+ ,NdotVUnclamped
214
+ #endif
215
+ #ifdef LINEARSPECULARREFLECTION
216
+ ,roughness
217
+ #endif
218
+ #ifdef REFLECTIONMAP_3D
219
+ ,reflectionSampler
220
+ ,reflectionSamplerSampler
221
+ ,reflectionCoords
222
+ #else
223
+ ,reflectionSampler
224
+ ,reflectionSamplerSampler
225
+ ,reflectionCoords
226
+ #endif
227
+ #ifndef LODBASEDMICROSFURACE
228
+ ,reflectionLowSampler
229
+ ,reflectionLowSamplerSampler
230
+ ,reflectionHighSampler
231
+ ,reflectionHighSamplerSampler
232
+ #endif
233
+ #ifdef REALTIME_FILTERING
234
+ ,vReflectionFilteringInfo
235
+ #endif
236
+ );var environmentIrradiance: vec3f= vec3f(0.,0.,0.);
237
+ #ifdef USESPHERICALFROMREFLECTIONMAP
238
+ #if defined(NORMAL) && defined(USESPHERICALINVERTEX)
239
+ environmentIrradiance=vEnvironmentIrradiance;
240
+ #else
241
+ #ifdef ANISOTROPIC
242
+ var irradianceVector: vec3f= vec3f(reflectionMatrix* vec4f(anisotropicOut.anisotropicNormal,0)).xyz;
243
+ #else
244
+ var irradianceVector: vec3f= vec3f(reflectionMatrix* vec4f(normalW,0)).xyz;
245
+ #endif
246
+ #ifdef REFLECTIONMAP_OPPOSITEZ
247
+ irradianceVector.z*=-1.0;
248
+ #endif
249
+ #ifdef INVERTCUBICMAP
250
+ irradianceVector.y*=-1.0;
251
+ #endif
252
+ #if defined(REALTIME_FILTERING)
253
+ environmentIrradiance=irradiance(reflectionSampler,reflectionSamplerSampler,irradianceVector,vReflectionFilteringInfo);
254
+ #else
255
+ environmentIrradiance=computeEnvironmentIrradiance(irradianceVector);
256
+ #endif
257
+ #ifdef SS_TRANSLUCENCY
258
+ outParams.irradianceVector=irradianceVector;
259
+ #endif
260
+ #endif
261
+ #elif defined(USEIRRADIANCEMAP)
262
+ var environmentIrradiance4: vec4f=textureSample(irradianceSampler,irradianceSamplerSampler,reflectionCoords);environmentIrradiance=environmentIrradiance4.rgb;
263
+ #ifdef RGBDREFLECTION
264
+ environmentIrradiance.rgb=fromRGBD(environmentIrradiance4);
265
+ #endif
266
+ #ifdef GAMMAREFLECTION
267
+ environmentIrradiance.rgb=toLinearSpace(environmentIrradiance.rgb);
268
+ #endif
269
+ #endif
270
+ environmentIrradiance*=vReflectionColor.rgb;outParams.environmentRadiance=environmentRadiance;outParams.environmentIrradiance=environmentIrradiance;outParams.reflectionCoords=reflectionCoords;return outParams;}
271
+ #endif
272
+ `;
273
+ // Sideeffect
274
+ ShaderStore.IncludesShadersStoreWGSL[name] = shader;
275
+ /** @internal */
276
+ export const pbrBlockReflection = { name, shader };
277
+ //# sourceMappingURL=pbrBlockReflection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pbrBlockReflection.js","sourceRoot":"","sources":["../../../../../dev/core/src/ShadersWGSL/ShadersInclude/pbrBlockReflection.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,IAAI,GAAG,oBAAoB,CAAC;AAClC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4Qd,CAAC;AACF,aAAa;AACb,WAAW,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACpD,gBAAgB;AAChB,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../../Engines/shaderStore\";\n\nconst name = \"pbrBlockReflection\";\nconst shader = `#ifdef REFLECTION\nstruct reflectionOutParams\n{environmentRadiance: vec4f\n,environmentIrradiance: vec3f\n#ifdef REFLECTIONMAP_3D\n,reflectionCoords: vec3f\n#else\n,reflectionCoords: vec2f\n#endif\n#ifdef SS_TRANSLUCENCY\n#ifdef USESPHERICALFROMREFLECTIONMAP\n#if !defined(NORMAL) || !defined(USESPHERICALINVERTEX)\n,irradianceVector: vec3f\n#endif\n#endif\n#endif\n};\n#define pbr_inline\n#ifdef REFLECTIONMAP_3D\nfn createReflectionCoords(\nvPositionW: vec3f,\nnormalW: vec3f,\n#ifdef ANISOTROPIC\nanisotropicOut: anisotropicOutParams,\n#endif\n)->vec3f\n{var reflectionCoords: vec3f;\n#else\nfn createReflectionCoords(\nvPositionW: vec3f,\nnormalW: vec3f,\n#ifdef ANISOTROPIC\nanisotropicOut: anisotropicOutParams,\n#endif\n)->vec2f\n{ \nvar reflectionCoords: vec2f;\n#endif\n#ifdef ANISOTROPIC\nvar reflectionVector: vec3f=computeReflectionCoords( vec4f(vPositionW,1.0),anisotropicOut.anisotropicNormal);\n#else\nvar reflectionVector: vec3f=computeReflectionCoords( vec4f(vPositionW,1.0),normalW);\n#endif\n#ifdef REFLECTIONMAP_OPPOSITEZ\nreflectionVector.z*=-1.0;\n#endif\n#ifdef REFLECTIONMAP_3D\nreflectionCoords=reflectionVector;\n#else\nreflectionCoords=reflectionVector.xy;\n#ifdef REFLECTIONMAP_PROJECTION\nreflectionCoords/=reflectionVector.z;\n#endif\nreflectionCoords.y=1.0-reflectionCoords.y;\n#endif\nreturn reflectionCoords;}\n#define pbr_inline\nfn sampleReflectionTexture(\nalphaG: f32\n,vReflectionMicrosurfaceInfos: vec3f\n,vReflectionInfos: vec2f\n,vReflectionColor: vec3f\n#if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)\n,NdotVUnclamped: f32\n#endif\n#ifdef LINEARSPECULARREFLECTION\n,roughness: f32\n#endif\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#ifndef LODBASEDMICROSFURACE\n#ifdef REFLECTIONMAP_3D\n,reflectionLowSampler: texture_cube<f32>\n,reflectionLowSamplerSampler: sampler\n,reflectionHighSampler: texture_cube<f32>\n,reflectionHighSamplerSampler: sampler\n#else\n,reflectionLowSampler: texture_2d<f32>\n,reflectionLowSamplerSampler: sampler\n,reflectionHighSampler: texture_2d<f32>\n,reflectionHighSamplerSampler: sampler\n#endif\n#endif\n#ifdef REALTIME_FILTERING\n,vReflectionFilteringInfo: vec2f\n#endif \n)->vec4f\n{var environmentRadiance: vec4f;\n#if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)\nvar reflectionLOD: f32=getLodFromAlphaG(vReflectionMicrosurfaceInfos.x,alphaG,NdotVUnclamped);\n#elif defined(LINEARSPECULARREFLECTION)\nvar reflectionLOD: f32=getLinearLodFromRoughness(vReflectionMicrosurfaceInfos.x,roughness);\n#else\nvar reflectionLOD: f32=getLodFromAlphaG(vReflectionMicrosurfaceInfos.x,alphaG);\n#endif\n#ifdef LODBASEDMICROSFURACE\nreflectionLOD=reflectionLOD*vReflectionMicrosurfaceInfos.y+vReflectionMicrosurfaceInfos.z;\n#ifdef LODINREFLECTIONALPHA\nvar automaticReflectionLOD: f32=UNPACK_LOD(textureSample(reflectionSampler,reflectionSamplerSampler,reflectionCoords).a);var requestedReflectionLOD: f32=max(automaticReflectionLOD,reflectionLOD);\n#else\nvar requestedReflectionLOD: f32=reflectionLOD;\n#endif\n#ifdef REALTIME_FILTERING\nenvironmentRadiance= vec4f(radiance(alphaG,reflectionSampler,reflectionSamplerSampler,reflectionCoords,vReflectionFilteringInfo),1.0);\n#else\nenvironmentRadiance=textureSampleLevel(reflectionSampler,reflectionSamplerSampler,reflectionCoords,reflectionLOD);\n#endif\n#else\nvar lodReflectionNormalized: f32=saturate(reflectionLOD/log2(vReflectionMicrosurfaceInfos.x));var lodReflectionNormalizedDoubled: f32=lodReflectionNormalized*2.0;var environmentMid: vec4f=textureSample(reflectionSampler,reflectionSamplerSampler,reflectionCoords);if (lodReflectionNormalizedDoubled<1.0){environmentRadiance=mix(\ntextureSample(reflectionHighSampler,reflectionHighSamplerSampler,reflectionCoords),\nenvironmentMid,\nlodReflectionNormalizedDoubled\n);} else {environmentRadiance=mix(\nenvironmentMid,\ntextureSample(reflectionLowSampler,reflectionLowSamplerSampler,reflectionCoords),\nlodReflectionNormalizedDoubled-1.0\n);}\n#endif\nvar envRadiance=environmentRadiance.rgb;\n#ifdef RGBDREFLECTION\nenvRadiance=fromRGBD(environmentRadiance);\n#endif\n#ifdef GAMMAREFLECTION\nenvRadiance=toLinearSpaceVec3(environmentRadiance.rgb);\n#endif\nenvRadiance*=vReflectionInfos.x;envRadiance*=vReflectionColor.rgb;return vec4f(envRadiance,environmentRadiance.a);}\n#define pbr_inline\nfn reflectionBlock(\nvPositionW: vec3f\n,normalW: vec3f\n,alphaG: f32\n,vReflectionMicrosurfaceInfos: vec3f\n,vReflectionInfos: vec2f\n,vReflectionColor: vec3f\n#ifdef ANISOTROPIC\n,anisotropicOut: anisotropicOutParams\n#endif\n#if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)\n,NdotVUnclamped: f32\n#endif\n#ifdef LINEARSPECULARREFLECTION\n,roughness: f32\n#endif\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#if defined(NORMAL) && defined(USESPHERICALINVERTEX)\n,vEnvironmentIrradiance: vec3f\n#endif\n#ifdef USESPHERICALFROMREFLECTIONMAP\n#if !defined(NORMAL) || !defined(USESPHERICALINVERTEX)\n,reflectionMatrix: mat4x4f\n#endif\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#endif\n#ifndef LODBASEDMICROSFURACE\n#ifdef REFLECTIONMAP_3D\n,reflectionLowSampler: texture_cube<f32>\n,reflectionLowSamplerSampler: sampler \n,reflectionHighSampler: texture_cube<f32>\n,reflectionHighSamplerSampler: sampler \n#else\n,reflectionLowSampler: texture_2d<f32>\n,reflectionLowSamplerSampler: sampler \n,reflectionHighSampler: texture_2d<f32>\n,reflectionHighSamplerSampler: sampler \n#endif\n#endif\n#ifdef REALTIME_FILTERING\n,vReflectionFilteringInfo: vec2f\n#endif\n)->reflectionOutParams\n{var outParams: reflectionOutParams;var environmentRadiance: vec4f= vec4f(0.,0.,0.,0.);\n#ifdef REFLECTIONMAP_3D\nvar reflectionCoords: vec3f= vec3f(0.);\n#else\nvar reflectionCoords: vec2f= vec2f(0.);\n#endif\nreflectionCoords=createReflectionCoords(\nvPositionW,\nnormalW,\n#ifdef ANISOTROPIC\nanisotropicOut,\n#endif \n);environmentRadiance=sampleReflectionTexture(\nalphaG\n,vReflectionMicrosurfaceInfos\n,vReflectionInfos\n,vReflectionColor\n#if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)\n,NdotVUnclamped\n#endif\n#ifdef LINEARSPECULARREFLECTION\n,roughness\n#endif\n#ifdef REFLECTIONMAP_3D\n,reflectionSampler\n,reflectionSamplerSampler\n,reflectionCoords\n#else\n,reflectionSampler\n,reflectionSamplerSampler\n,reflectionCoords\n#endif\n#ifndef LODBASEDMICROSFURACE\n,reflectionLowSampler\n,reflectionLowSamplerSampler\n,reflectionHighSampler\n,reflectionHighSamplerSampler\n#endif\n#ifdef REALTIME_FILTERING\n,vReflectionFilteringInfo\n#endif \n);var environmentIrradiance: vec3f= vec3f(0.,0.,0.);\n#ifdef USESPHERICALFROMREFLECTIONMAP\n#if defined(NORMAL) && defined(USESPHERICALINVERTEX)\nenvironmentIrradiance=vEnvironmentIrradiance;\n#else\n#ifdef ANISOTROPIC\nvar irradianceVector: vec3f= vec3f(reflectionMatrix* vec4f(anisotropicOut.anisotropicNormal,0)).xyz;\n#else\nvar irradianceVector: vec3f= vec3f(reflectionMatrix* vec4f(normalW,0)).xyz;\n#endif\n#ifdef REFLECTIONMAP_OPPOSITEZ\nirradianceVector.z*=-1.0;\n#endif\n#ifdef INVERTCUBICMAP\nirradianceVector.y*=-1.0;\n#endif\n#if defined(REALTIME_FILTERING)\nenvironmentIrradiance=irradiance(reflectionSampler,reflectionSamplerSampler,irradianceVector,vReflectionFilteringInfo);\n#else\nenvironmentIrradiance=computeEnvironmentIrradiance(irradianceVector);\n#endif\n#ifdef SS_TRANSLUCENCY\noutParams.irradianceVector=irradianceVector;\n#endif\n#endif\n#elif defined(USEIRRADIANCEMAP)\nvar environmentIrradiance4: vec4f=textureSample(irradianceSampler,irradianceSamplerSampler,reflectionCoords);environmentIrradiance=environmentIrradiance4.rgb;\n#ifdef RGBDREFLECTION\nenvironmentIrradiance.rgb=fromRGBD(environmentIrradiance4);\n#endif\n#ifdef GAMMAREFLECTION\nenvironmentIrradiance.rgb=toLinearSpace(environmentIrradiance.rgb);\n#endif\n#endif\nenvironmentIrradiance*=vReflectionColor.rgb;outParams.environmentRadiance=environmentRadiance;outParams.environmentIrradiance=environmentIrradiance;outParams.reflectionCoords=reflectionCoords;return outParams;}\n#endif\n`;\n// Sideeffect\nShaderStore.IncludesShadersStoreWGSL[name] = shader;\n/** @internal */\nexport const pbrBlockReflection = { name, shader };\n"]}
@@ -0,0 +1,5 @@
1
+ /** @internal */
2
+ export declare const pbrBlockReflectivity: {
3
+ name: string;
4
+ shader: string;
5
+ };
@@ -0,0 +1,120 @@
1
+ // Do not edit.
2
+ import { ShaderStore } from "../../Engines/shaderStore.js";
3
+ const name = "pbrBlockReflectivity";
4
+ const shader = `struct reflectivityOutParams
5
+ {microSurface: f32,
6
+ roughness: f32,
7
+ surfaceReflectivityColor: vec3f,
8
+ #ifdef METALLICWORKFLOW
9
+ surfaceAlbedo: vec3f,
10
+ #endif
11
+ #if defined(METALLICWORKFLOW) && defined(REFLECTIVITY) && defined(AOSTOREINMETALMAPRED)
12
+ ambientOcclusionColor: vec3f,
13
+ #endif
14
+ #if DEBUGMODE>0
15
+ #ifdef METALLICWORKFLOW
16
+ metallicRoughness: vec2f,
17
+ #ifdef REFLECTIVITY
18
+ surfaceMetallicColorMap: vec4f,
19
+ #endif
20
+ #ifndef FROSTBITE_REFLECTANCE
21
+ metallicF0: vec3f,
22
+ #endif
23
+ #else
24
+ #ifdef REFLECTIVITY
25
+ surfaceReflectivityColorMap: vec4f,
26
+ #endif
27
+ #endif
28
+ #endif
29
+ };
30
+ #define pbr_inline
31
+ fn reflectivityBlock(
32
+ vReflectivityColor: vec4f
33
+ #ifdef METALLICWORKFLOW
34
+ ,surfaceAlbedo: vec3f
35
+ ,metallicReflectanceFactors: vec4f
36
+ #endif
37
+ #ifdef REFLECTIVITY
38
+ ,reflectivityInfos: vec3f
39
+ ,surfaceMetallicOrReflectivityColorMap: vec4f
40
+ #endif
41
+ #if defined(METALLICWORKFLOW) && defined(REFLECTIVITY) && defined(AOSTOREINMETALMAPRED)
42
+ ,ambientOcclusionColorIn: vec3f
43
+ #endif
44
+ #ifdef MICROSURFACEMAP
45
+ ,microSurfaceTexel: vec4f
46
+ #endif
47
+ #ifdef DETAIL
48
+ ,detailColor: vec4f
49
+ ,vDetailInfos: vec4f
50
+ #endif
51
+ )->reflectivityOutParams
52
+ {var outParams: reflectivityOutParams;var microSurface: f32=vReflectivityColor.a;var surfaceReflectivityColor: vec3f=vReflectivityColor.rgb;
53
+ #ifdef METALLICWORKFLOW
54
+ var metallicRoughness: vec2f=surfaceReflectivityColor.rg;
55
+ #ifdef REFLECTIVITY
56
+ #if DEBUGMODE>0
57
+ outParams.surfaceMetallicColorMap=surfaceMetallicOrReflectivityColorMap;
58
+ #endif
59
+ #ifdef AOSTOREINMETALMAPRED
60
+ var aoStoreInMetalMap: vec3f= vec3f(surfaceMetallicOrReflectivityColorMap.r,surfaceMetallicOrReflectivityColorMap.r,surfaceMetallicOrReflectivityColorMap.r);outParams.ambientOcclusionColor=mix(ambientOcclusionColorIn,aoStoreInMetalMap,reflectivityInfos.z);
61
+ #endif
62
+ #ifdef METALLNESSSTOREINMETALMAPBLUE
63
+ metallicRoughness.r*=surfaceMetallicOrReflectivityColorMap.b;
64
+ #else
65
+ metallicRoughness.r*=surfaceMetallicOrReflectivityColorMap.r;
66
+ #endif
67
+ #ifdef ROUGHNESSSTOREINMETALMAPALPHA
68
+ metallicRoughness.g*=surfaceMetallicOrReflectivityColorMap.a;
69
+ #else
70
+ #ifdef ROUGHNESSSTOREINMETALMAPGREEN
71
+ metallicRoughness.g*=surfaceMetallicOrReflectivityColorMap.g;
72
+ #endif
73
+ #endif
74
+ #endif
75
+ #ifdef DETAIL
76
+ var detailRoughness: f32=mix(0.5,detailColor.b,vDetailInfos.w);var loLerp: f32=mix(0.,metallicRoughness.g,detailRoughness*2.);var hiLerp: f32=mix(metallicRoughness.g,1.,(detailRoughness-0.5)*2.);metallicRoughness.g=mix(loLerp,hiLerp,step(detailRoughness,0.5));
77
+ #endif
78
+ #ifdef MICROSURFACEMAP
79
+ metallicRoughness.g*=microSurfaceTexel.r;
80
+ #endif
81
+ #if DEBUGMODE>0
82
+ outParams.metallicRoughness=metallicRoughness;
83
+ #endif
84
+ #define CUSTOM_FRAGMENT_UPDATE_METALLICROUGHNESS
85
+ microSurface=1.0-metallicRoughness.g;var baseColor: vec3f=surfaceAlbedo;
86
+ #ifdef FROSTBITE_REFLECTANCE
87
+ outParams.surfaceAlbedo=baseColor.rgb*(1.0-metallicRoughness.r);surfaceReflectivityColor=mix(0.16*reflectance*reflectance,baseColor,metallicRoughness.r);
88
+ #else
89
+ var metallicF0: vec3f=metallicReflectanceFactors.rgb;
90
+ #if DEBUGMODE>0
91
+ outParams.metallicF0=metallicF0;
92
+ #endif
93
+ outParams.surfaceAlbedo=mix(baseColor.rgb*(1.0-metallicF0), vec3f(0.,0.,0.),metallicRoughness.r);surfaceReflectivityColor=mix(metallicF0,baseColor,metallicRoughness.r);
94
+ #endif
95
+ #else
96
+ #ifdef REFLECTIVITY
97
+ surfaceReflectivityColor*=surfaceMetallicOrReflectivityColorMap.rgb;
98
+ #if DEBUGMODE>0
99
+ outParams.surfaceReflectivityColorMap=surfaceMetallicOrReflectivityColorMap;
100
+ #endif
101
+ #ifdef MICROSURFACEFROMREFLECTIVITYMAP
102
+ microSurface*=surfaceMetallicOrReflectivityColorMap.a;microSurface*=reflectivityInfos.z;
103
+ #else
104
+ #ifdef MICROSURFACEAUTOMATIC
105
+ microSurface*=computeDefaultMicroSurface(microSurface,surfaceReflectivityColor);
106
+ #endif
107
+ #ifdef MICROSURFACEMAP
108
+ microSurface*=microSurfaceTexel.r;
109
+ #endif
110
+ #define CUSTOM_FRAGMENT_UPDATE_MICROSURFACE
111
+ #endif
112
+ #endif
113
+ #endif
114
+ microSurface=saturate(microSurface);var roughness: f32=1.-microSurface;outParams.microSurface=microSurface;outParams.roughness=roughness;outParams.surfaceReflectivityColor=surfaceReflectivityColor;return outParams;}
115
+ `;
116
+ // Sideeffect
117
+ ShaderStore.IncludesShadersStoreWGSL[name] = shader;
118
+ /** @internal */
119
+ export const pbrBlockReflectivity = { name, shader };
120
+ //# sourceMappingURL=pbrBlockReflectivity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pbrBlockReflectivity.js","sourceRoot":"","sources":["../../../../../dev/core/src/ShadersWGSL/ShadersInclude/pbrBlockReflectivity.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,IAAI,GAAG,sBAAsB,CAAC;AACpC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+Gd,CAAC;AACF,aAAa;AACb,WAAW,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACpD,gBAAgB;AAChB,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../../Engines/shaderStore\";\n\nconst name = \"pbrBlockReflectivity\";\nconst shader = `struct reflectivityOutParams\n{microSurface: f32,\nroughness: f32,\nsurfaceReflectivityColor: vec3f,\n#ifdef METALLICWORKFLOW\nsurfaceAlbedo: vec3f,\n#endif\n#if defined(METALLICWORKFLOW) && defined(REFLECTIVITY) && defined(AOSTOREINMETALMAPRED)\nambientOcclusionColor: vec3f,\n#endif\n#if DEBUGMODE>0\n#ifdef METALLICWORKFLOW\nmetallicRoughness: vec2f,\n#ifdef REFLECTIVITY\nsurfaceMetallicColorMap: vec4f,\n#endif\n#ifndef FROSTBITE_REFLECTANCE\nmetallicF0: vec3f,\n#endif\n#else\n#ifdef REFLECTIVITY\nsurfaceReflectivityColorMap: vec4f,\n#endif\n#endif\n#endif\n};\n#define pbr_inline\nfn reflectivityBlock(\nvReflectivityColor: vec4f\n#ifdef METALLICWORKFLOW\n,surfaceAlbedo: vec3f\n,metallicReflectanceFactors: vec4f\n#endif\n#ifdef REFLECTIVITY\n,reflectivityInfos: vec3f\n,surfaceMetallicOrReflectivityColorMap: vec4f\n#endif\n#if defined(METALLICWORKFLOW) && defined(REFLECTIVITY) && defined(AOSTOREINMETALMAPRED)\n,ambientOcclusionColorIn: vec3f\n#endif\n#ifdef MICROSURFACEMAP\n,microSurfaceTexel: vec4f\n#endif\n#ifdef DETAIL\n,detailColor: vec4f\n,vDetailInfos: vec4f\n#endif\n)->reflectivityOutParams\n{var outParams: reflectivityOutParams;var microSurface: f32=vReflectivityColor.a;var surfaceReflectivityColor: vec3f=vReflectivityColor.rgb;\n#ifdef METALLICWORKFLOW\nvar metallicRoughness: vec2f=surfaceReflectivityColor.rg;\n#ifdef REFLECTIVITY\n#if DEBUGMODE>0\noutParams.surfaceMetallicColorMap=surfaceMetallicOrReflectivityColorMap;\n#endif\n#ifdef AOSTOREINMETALMAPRED\nvar aoStoreInMetalMap: vec3f= vec3f(surfaceMetallicOrReflectivityColorMap.r,surfaceMetallicOrReflectivityColorMap.r,surfaceMetallicOrReflectivityColorMap.r);outParams.ambientOcclusionColor=mix(ambientOcclusionColorIn,aoStoreInMetalMap,reflectivityInfos.z);\n#endif\n#ifdef METALLNESSSTOREINMETALMAPBLUE\nmetallicRoughness.r*=surfaceMetallicOrReflectivityColorMap.b;\n#else\nmetallicRoughness.r*=surfaceMetallicOrReflectivityColorMap.r;\n#endif\n#ifdef ROUGHNESSSTOREINMETALMAPALPHA\nmetallicRoughness.g*=surfaceMetallicOrReflectivityColorMap.a;\n#else\n#ifdef ROUGHNESSSTOREINMETALMAPGREEN\nmetallicRoughness.g*=surfaceMetallicOrReflectivityColorMap.g;\n#endif\n#endif\n#endif\n#ifdef DETAIL\nvar detailRoughness: f32=mix(0.5,detailColor.b,vDetailInfos.w);var loLerp: f32=mix(0.,metallicRoughness.g,detailRoughness*2.);var hiLerp: f32=mix(metallicRoughness.g,1.,(detailRoughness-0.5)*2.);metallicRoughness.g=mix(loLerp,hiLerp,step(detailRoughness,0.5));\n#endif\n#ifdef MICROSURFACEMAP\nmetallicRoughness.g*=microSurfaceTexel.r;\n#endif\n#if DEBUGMODE>0\noutParams.metallicRoughness=metallicRoughness;\n#endif\n#define CUSTOM_FRAGMENT_UPDATE_METALLICROUGHNESS\nmicroSurface=1.0-metallicRoughness.g;var baseColor: vec3f=surfaceAlbedo;\n#ifdef FROSTBITE_REFLECTANCE\noutParams.surfaceAlbedo=baseColor.rgb*(1.0-metallicRoughness.r);surfaceReflectivityColor=mix(0.16*reflectance*reflectance,baseColor,metallicRoughness.r);\n#else\nvar metallicF0: vec3f=metallicReflectanceFactors.rgb;\n#if DEBUGMODE>0\noutParams.metallicF0=metallicF0;\n#endif\noutParams.surfaceAlbedo=mix(baseColor.rgb*(1.0-metallicF0), vec3f(0.,0.,0.),metallicRoughness.r);surfaceReflectivityColor=mix(metallicF0,baseColor,metallicRoughness.r);\n#endif\n#else\n#ifdef REFLECTIVITY\nsurfaceReflectivityColor*=surfaceMetallicOrReflectivityColorMap.rgb;\n#if DEBUGMODE>0\noutParams.surfaceReflectivityColorMap=surfaceMetallicOrReflectivityColorMap;\n#endif\n#ifdef MICROSURFACEFROMREFLECTIVITYMAP\nmicroSurface*=surfaceMetallicOrReflectivityColorMap.a;microSurface*=reflectivityInfos.z;\n#else\n#ifdef MICROSURFACEAUTOMATIC\nmicroSurface*=computeDefaultMicroSurface(microSurface,surfaceReflectivityColor);\n#endif\n#ifdef MICROSURFACEMAP\nmicroSurface*=microSurfaceTexel.r;\n#endif\n#define CUSTOM_FRAGMENT_UPDATE_MICROSURFACE\n#endif\n#endif\n#endif\nmicroSurface=saturate(microSurface);var roughness: f32=1.-microSurface;outParams.microSurface=microSurface;outParams.roughness=roughness;outParams.surfaceReflectivityColor=surfaceReflectivityColor;return outParams;}\n`;\n// Sideeffect\nShaderStore.IncludesShadersStoreWGSL[name] = shader;\n/** @internal */\nexport const pbrBlockReflectivity = { name, shader };\n"]}
@@ -0,0 +1,5 @@
1
+ /** @internal */
2
+ export declare const pbrBlockSheen: {
3
+ name: string;
4
+ shader: string;
5
+ };
@@ -0,0 +1,195 @@
1
+ // Do not edit.
2
+ import { ShaderStore } from "../../Engines/shaderStore.js";
3
+ const name = "pbrBlockSheen";
4
+ const shader = `#ifdef SHEEN
5
+ struct sheenOutParams
6
+ {sheenIntensity: f32
7
+ ,sheenColor: vec3f
8
+ ,sheenRoughness: f32
9
+ #ifdef SHEEN_LINKWITHALBEDO
10
+ ,surfaceAlbedo: vec3f
11
+ #endif
12
+ #if defined(ENVIRONMENTBRDF) && defined(SHEEN_ALBEDOSCALING)
13
+ ,sheenAlbedoScaling: f32
14
+ #endif
15
+ #if defined(REFLECTION) && defined(ENVIRONMENTBRDF)
16
+ ,finalSheenRadianceScaled: vec3f
17
+ #endif
18
+ #if DEBUGMODE>0
19
+ #ifdef SHEEN_TEXTURE
20
+ ,sheenMapData: vec4f
21
+ #endif
22
+ #if defined(REFLECTION) && defined(ENVIRONMENTBRDF)
23
+ ,sheenEnvironmentReflectance: vec3f
24
+ #endif
25
+ #endif
26
+ };
27
+ #define pbr_inline
28
+ fn sheenBlock(
29
+ vSheenColor: vec4f
30
+ #ifdef SHEEN_ROUGHNESS
31
+ ,vSheenRoughness: f32
32
+ #if defined(SHEEN_TEXTURE_ROUGHNESS) && !defined(SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE)
33
+ ,sheenMapRoughnessData: vec4f
34
+ #endif
35
+ #endif
36
+ ,roughness: f32
37
+ #ifdef SHEEN_TEXTURE
38
+ ,sheenMapData: vec4f
39
+ ,sheenMapLevel: f32
40
+ #endif
41
+ ,reflectance: f32
42
+ #ifdef SHEEN_LINKWITHALBEDO
43
+ ,baseColor: vec3f
44
+ ,surfaceAlbedo: vec3f
45
+ #endif
46
+ #ifdef ENVIRONMENTBRDF
47
+ ,NdotV: f32
48
+ ,environmentBrdf: vec3f
49
+ #endif
50
+ #if defined(REFLECTION) && defined(ENVIRONMENTBRDF)
51
+ ,AARoughnessFactors: vec2f
52
+ ,vReflectionMicrosurfaceInfos: vec3f
53
+ ,vReflectionInfos: vec2f
54
+ ,vReflectionColor: vec3f
55
+ ,vLightingIntensity: vec4f
56
+ #ifdef REFLECTIONMAP_3D
57
+ ,reflectionSampler: texture_cube<f32>
58
+ ,reflectionSamplerSampler: sampler
59
+ ,reflectionCoords: vec3f
60
+ #else
61
+ ,reflectionSampler: texture_2d<f32>
62
+ ,reflectionSamplerSampler: sampler
63
+ ,reflectionCoords: vec2f
64
+ #endif
65
+ ,NdotVUnclamped: f32
66
+ #ifndef LODBASEDMICROSFURACE
67
+ #ifdef REFLECTIONMAP_3D
68
+ ,reflectionLowSampler: texture_cube<f32>
69
+ ,reflectionLowSamplerSampler: sampler
70
+ ,reflectionHighSampler: texture_cube<f32>
71
+ ,reflectionHighSamplerSampler: sampler
72
+ #else
73
+ ,reflectionLowSampler: texture_2d<f32>
74
+ ,reflectionLowSamplerSampler: sampler
75
+ ,reflectionHighSampler: texture_2d<f32>
76
+ ,reflectionHighSamplerSampler: sampler
77
+ #endif
78
+ #endif
79
+ #ifdef REALTIME_FILTERING
80
+ ,vReflectionFilteringInfo: vec2f
81
+ #endif
82
+ #if !defined(REFLECTIONMAP_SKYBOX) && defined(RADIANCEOCCLUSION)
83
+ ,seo: f32
84
+ #endif
85
+ #if !defined(REFLECTIONMAP_SKYBOX) && defined(HORIZONOCCLUSION) && defined(BUMP) && defined(REFLECTIONMAP_3D)
86
+ ,eho: f32
87
+ #endif
88
+ #endif
89
+ )->sheenOutParams
90
+ {var outParams: sheenOutParams;var sheenIntensity: f32=vSheenColor.a;
91
+ #ifdef SHEEN_TEXTURE
92
+ #if DEBUGMODE>0
93
+ outParams.sheenMapData=sheenMapData;
94
+ #endif
95
+ #endif
96
+ #ifdef SHEEN_LINKWITHALBEDO
97
+ var sheenFactor: f32=pow5(1.0-sheenIntensity);var sheenColor: vec3f=baseColor.rgb*(1.0-sheenFactor);var sheenRoughness: f32=sheenIntensity;outParams.surfaceAlbedo=surfaceAlbedo*sheenFactor;
98
+ #ifdef SHEEN_TEXTURE
99
+ sheenIntensity*=sheenMapData.a;
100
+ #endif
101
+ #else
102
+ var sheenColor: vec3f=vSheenColor.rgb;
103
+ #ifdef SHEEN_TEXTURE
104
+ #ifdef SHEEN_GAMMATEXTURE
105
+ sheenColor.rgb*=toLinearSpace(sheenMapData.rgb);
106
+ #else
107
+ sheenColor.rgb*=sheenMapData.rgb;
108
+ #endif
109
+ sheenColor.rgb*=sheenMapLevel;
110
+ #endif
111
+ #ifdef SHEEN_ROUGHNESS
112
+ var sheenRoughness: f32=vSheenRoughness;
113
+ #ifdef SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE
114
+ #if defined(SHEEN_TEXTURE)
115
+ sheenRoughness*=sheenMapData.a;
116
+ #endif
117
+ #elif defined(SHEEN_TEXTURE_ROUGHNESS)
118
+ sheenRoughness*=sheenMapRoughnessData.a;
119
+ #endif
120
+ #else
121
+ var sheenRoughness: f32=roughness;
122
+ #ifdef SHEEN_TEXTURE
123
+ sheenIntensity*=sheenMapData.a;
124
+ #endif
125
+ #endif
126
+ #if !defined(SHEEN_ALBEDOSCALING)
127
+ sheenIntensity*=(1.-reflectance);
128
+ #endif
129
+ sheenColor*=sheenIntensity;
130
+ #endif
131
+ #ifdef ENVIRONMENTBRDF
132
+ /*#ifdef SHEEN_SOFTER
133
+ var environmentSheenBrdf: vec3f= vec3f(0.,0.,getBRDFLookupCharlieSheen(NdotV,sheenRoughness));
134
+ #else*/
135
+ #ifdef SHEEN_ROUGHNESS
136
+ var environmentSheenBrdf: vec3f=getBRDFLookup(NdotV,sheenRoughness);
137
+ #else
138
+ var environmentSheenBrdf: vec3f=environmentBrdf;
139
+ #endif
140
+ /*#endif*/
141
+ #endif
142
+ #if defined(REFLECTION) && defined(ENVIRONMENTBRDF)
143
+ var sheenAlphaG: f32=convertRoughnessToAverageSlope(sheenRoughness);
144
+ #ifdef SPECULARAA
145
+ sheenAlphaG+=AARoughnessFactors.y;
146
+ #endif
147
+ var environmentSheenRadiance: vec4f= vec4f(0.,0.,0.,0.);environmentSheenRadiance=sampleReflectionTexture(
148
+ sheenAlphaG
149
+ ,vReflectionMicrosurfaceInfos
150
+ ,vReflectionInfos
151
+ ,vReflectionColor
152
+ #if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)
153
+ ,NdotVUnclamped
154
+ #endif
155
+ #ifdef LINEARSPECULARREFLECTION
156
+ ,sheenRoughness
157
+ #endif
158
+ ,reflectionSampler
159
+ ,reflectionSamplerSampler
160
+ ,reflectionCoords
161
+ #ifndef LODBASEDMICROSFURACE
162
+ ,reflectionLowSampler
163
+ ,reflectionLowSamplerSampler
164
+ ,reflectionHighSampler
165
+ ,reflectionHighSamplerSampler
166
+ #endif
167
+ #ifdef REALTIME_FILTERING
168
+ ,vReflectionFilteringInfo
169
+ #endif
170
+ );var sheenEnvironmentReflectance: vec3f=getSheenReflectanceFromBRDFLookup(sheenColor,environmentSheenBrdf);
171
+ #if !defined(REFLECTIONMAP_SKYBOX) && defined(RADIANCEOCCLUSION)
172
+ sheenEnvironmentReflectance*=seo;
173
+ #endif
174
+ #if !defined(REFLECTIONMAP_SKYBOX) && defined(HORIZONOCCLUSION) && defined(BUMP) && defined(REFLECTIONMAP_3D)
175
+ sheenEnvironmentReflectance*=eho;
176
+ #endif
177
+ #if DEBUGMODE>0
178
+ outParams.sheenEnvironmentReflectance=sheenEnvironmentReflectance;
179
+ #endif
180
+ outParams.finalSheenRadianceScaled=
181
+ environmentSheenRadiance.rgb *
182
+ sheenEnvironmentReflectance *
183
+ vLightingIntensity.z;
184
+ #endif
185
+ #if defined(ENVIRONMENTBRDF) && defined(SHEEN_ALBEDOSCALING)
186
+ outParams.sheenAlbedoScaling=1.0-sheenIntensity*max(max(sheenColor.r,sheenColor.g),sheenColor.b)*environmentSheenBrdf.b;
187
+ #endif
188
+ outParams.sheenIntensity=sheenIntensity;outParams.sheenColor=sheenColor;outParams.sheenRoughness=sheenRoughness;return outParams;}
189
+ #endif
190
+ `;
191
+ // Sideeffect
192
+ ShaderStore.IncludesShadersStoreWGSL[name] = shader;
193
+ /** @internal */
194
+ export const pbrBlockSheen = { name, shader };
195
+ //# sourceMappingURL=pbrBlockSheen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pbrBlockSheen.js","sourceRoot":"","sources":["../../../../../dev/core/src/ShadersWGSL/ShadersInclude/pbrBlockSheen.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,IAAI,GAAG,eAAe,CAAC;AAC7B,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0Ld,CAAC;AACF,aAAa;AACb,WAAW,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACpD,gBAAgB;AAChB,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../../Engines/shaderStore\";\n\nconst name = \"pbrBlockSheen\";\nconst shader = `#ifdef SHEEN\nstruct sheenOutParams\n{sheenIntensity: f32\n,sheenColor: vec3f\n,sheenRoughness: f32\n#ifdef SHEEN_LINKWITHALBEDO\n,surfaceAlbedo: vec3f\n#endif\n#if defined(ENVIRONMENTBRDF) && defined(SHEEN_ALBEDOSCALING)\n,sheenAlbedoScaling: f32\n#endif\n#if defined(REFLECTION) && defined(ENVIRONMENTBRDF)\n,finalSheenRadianceScaled: vec3f\n#endif\n#if DEBUGMODE>0\n#ifdef SHEEN_TEXTURE\n,sheenMapData: vec4f\n#endif\n#if defined(REFLECTION) && defined(ENVIRONMENTBRDF)\n,sheenEnvironmentReflectance: vec3f\n#endif\n#endif\n};\n#define pbr_inline\nfn sheenBlock(\nvSheenColor: vec4f\n#ifdef SHEEN_ROUGHNESS\n,vSheenRoughness: f32\n#if defined(SHEEN_TEXTURE_ROUGHNESS) && !defined(SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE)\n,sheenMapRoughnessData: vec4f\n#endif\n#endif\n,roughness: f32\n#ifdef SHEEN_TEXTURE\n,sheenMapData: vec4f\n,sheenMapLevel: f32\n#endif\n,reflectance: f32\n#ifdef SHEEN_LINKWITHALBEDO\n,baseColor: vec3f\n,surfaceAlbedo: vec3f\n#endif\n#ifdef ENVIRONMENTBRDF\n,NdotV: f32\n,environmentBrdf: vec3f\n#endif\n#if defined(REFLECTION) && defined(ENVIRONMENTBRDF)\n,AARoughnessFactors: vec2f\n,vReflectionMicrosurfaceInfos: vec3f\n,vReflectionInfos: vec2f\n,vReflectionColor: vec3f\n,vLightingIntensity: vec4f\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,NdotVUnclamped: f32\n#ifndef LODBASEDMICROSFURACE\n#ifdef REFLECTIONMAP_3D\n,reflectionLowSampler: texture_cube<f32>\n,reflectionLowSamplerSampler: sampler \n,reflectionHighSampler: texture_cube<f32>\n,reflectionHighSamplerSampler: sampler \n#else\n,reflectionLowSampler: texture_2d<f32>\n,reflectionLowSamplerSampler: sampler \n,reflectionHighSampler: texture_2d<f32>\n,reflectionHighSamplerSampler: sampler \n#endif\n#endif\n#ifdef REALTIME_FILTERING\n,vReflectionFilteringInfo: vec2f\n#endif\n#if !defined(REFLECTIONMAP_SKYBOX) && defined(RADIANCEOCCLUSION)\n,seo: f32\n#endif\n#if !defined(REFLECTIONMAP_SKYBOX) && defined(HORIZONOCCLUSION) && defined(BUMP) && defined(REFLECTIONMAP_3D)\n,eho: f32\n#endif\n#endif\n)->sheenOutParams\n{var outParams: sheenOutParams;var sheenIntensity: f32=vSheenColor.a;\n#ifdef SHEEN_TEXTURE\n#if DEBUGMODE>0\noutParams.sheenMapData=sheenMapData;\n#endif\n#endif\n#ifdef SHEEN_LINKWITHALBEDO\nvar sheenFactor: f32=pow5(1.0-sheenIntensity);var sheenColor: vec3f=baseColor.rgb*(1.0-sheenFactor);var sheenRoughness: f32=sheenIntensity;outParams.surfaceAlbedo=surfaceAlbedo*sheenFactor;\n#ifdef SHEEN_TEXTURE\nsheenIntensity*=sheenMapData.a;\n#endif\n#else\nvar sheenColor: vec3f=vSheenColor.rgb;\n#ifdef SHEEN_TEXTURE\n#ifdef SHEEN_GAMMATEXTURE\nsheenColor.rgb*=toLinearSpace(sheenMapData.rgb);\n#else\nsheenColor.rgb*=sheenMapData.rgb;\n#endif\nsheenColor.rgb*=sheenMapLevel;\n#endif\n#ifdef SHEEN_ROUGHNESS\nvar sheenRoughness: f32=vSheenRoughness;\n#ifdef SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE\n#if defined(SHEEN_TEXTURE)\nsheenRoughness*=sheenMapData.a;\n#endif\n#elif defined(SHEEN_TEXTURE_ROUGHNESS)\nsheenRoughness*=sheenMapRoughnessData.a;\n#endif\n#else\nvar sheenRoughness: f32=roughness;\n#ifdef SHEEN_TEXTURE\nsheenIntensity*=sheenMapData.a;\n#endif\n#endif\n#if !defined(SHEEN_ALBEDOSCALING)\nsheenIntensity*=(1.-reflectance);\n#endif\nsheenColor*=sheenIntensity;\n#endif\n#ifdef ENVIRONMENTBRDF\n/*#ifdef SHEEN_SOFTER\nvar environmentSheenBrdf: vec3f= vec3f(0.,0.,getBRDFLookupCharlieSheen(NdotV,sheenRoughness));\n#else*/\n#ifdef SHEEN_ROUGHNESS\nvar environmentSheenBrdf: vec3f=getBRDFLookup(NdotV,sheenRoughness);\n#else\nvar environmentSheenBrdf: vec3f=environmentBrdf;\n#endif\n/*#endif*/\n#endif\n#if defined(REFLECTION) && defined(ENVIRONMENTBRDF)\nvar sheenAlphaG: f32=convertRoughnessToAverageSlope(sheenRoughness);\n#ifdef SPECULARAA\nsheenAlphaG+=AARoughnessFactors.y;\n#endif\nvar environmentSheenRadiance: vec4f= vec4f(0.,0.,0.,0.);environmentSheenRadiance=sampleReflectionTexture(\nsheenAlphaG\n,vReflectionMicrosurfaceInfos\n,vReflectionInfos\n,vReflectionColor\n#if defined(LODINREFLECTIONALPHA) && !defined(REFLECTIONMAP_SKYBOX)\n,NdotVUnclamped\n#endif\n#ifdef LINEARSPECULARREFLECTION\n,sheenRoughness\n#endif\n,reflectionSampler\n,reflectionSamplerSampler\n,reflectionCoords\n#ifndef LODBASEDMICROSFURACE\n,reflectionLowSampler\n,reflectionLowSamplerSampler\n,reflectionHighSampler\n,reflectionHighSamplerSampler\n#endif\n#ifdef REALTIME_FILTERING\n,vReflectionFilteringInfo\n#endif\n);var sheenEnvironmentReflectance: vec3f=getSheenReflectanceFromBRDFLookup(sheenColor,environmentSheenBrdf);\n#if !defined(REFLECTIONMAP_SKYBOX) && defined(RADIANCEOCCLUSION)\nsheenEnvironmentReflectance*=seo;\n#endif\n#if !defined(REFLECTIONMAP_SKYBOX) && defined(HORIZONOCCLUSION) && defined(BUMP) && defined(REFLECTIONMAP_3D)\nsheenEnvironmentReflectance*=eho;\n#endif\n#if DEBUGMODE>0\noutParams.sheenEnvironmentReflectance=sheenEnvironmentReflectance;\n#endif\noutParams.finalSheenRadianceScaled=\nenvironmentSheenRadiance.rgb *\nsheenEnvironmentReflectance *\nvLightingIntensity.z;\n#endif\n#if defined(ENVIRONMENTBRDF) && defined(SHEEN_ALBEDOSCALING)\noutParams.sheenAlbedoScaling=1.0-sheenIntensity*max(max(sheenColor.r,sheenColor.g),sheenColor.b)*environmentSheenBrdf.b;\n#endif\noutParams.sheenIntensity=sheenIntensity;outParams.sheenColor=sheenColor;outParams.sheenRoughness=sheenRoughness;return outParams;}\n#endif\n`;\n// Sideeffect\nShaderStore.IncludesShadersStoreWGSL[name] = shader;\n/** @internal */\nexport const pbrBlockSheen = { name, shader };\n"]}
@@ -0,0 +1,5 @@
1
+ /** @internal */
2
+ export declare const pbrBlockSubSurface: {
3
+ name: string;
4
+ shader: string;
5
+ };