@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,425 @@
1
+ // Do not edit.
2
+ import { ShaderStore } from "../../Engines/shaderStore.js";
3
+ const name = "pbrBlockSubSurface";
4
+ const shader = `struct subSurfaceOutParams
5
+ {specularEnvironmentReflectance: vec3f,
6
+ #ifdef SS_REFRACTION
7
+ finalRefraction: vec3f,
8
+ surfaceAlbedo: vec3f,
9
+ #ifdef SS_LINKREFRACTIONTOTRANSPARENCY
10
+ alpha: f32,
11
+ #endif
12
+ #ifdef REFLECTION
13
+ refractionFactorForIrradiance: f32,
14
+ #endif
15
+ #endif
16
+ #ifdef SS_TRANSLUCENCY
17
+ transmittance: vec3f,
18
+ translucencyIntensity: f32,
19
+ #ifdef REFLECTION
20
+ refractionIrradiance: vec3f,
21
+ #endif
22
+ #endif
23
+ #if DEBUGMODE>0
24
+ #ifdef SS_THICKNESSANDMASK_TEXTURE
25
+ thicknessMap: vec4f,
26
+ #endif
27
+ #ifdef SS_REFRACTION
28
+ environmentRefraction: vec4f,
29
+ refractionTransmittance: vec3f
30
+ #endif
31
+ #endif
32
+ };
33
+ #ifdef SUBSURFACE
34
+ #ifdef SS_REFRACTION
35
+ #define pbr_inline
36
+ fn sampleEnvironmentRefraction(
37
+ ior: f32
38
+ ,thickness: f32
39
+ ,refractionLOD: f32
40
+ ,normalW: vec3f
41
+ ,vPositionW: vec3f
42
+ ,viewDirectionW: vec3f
43
+ ,view: mat4x4f
44
+ ,vRefractionInfos: vec4f
45
+ ,refractionMatrix: mat4x4f
46
+ ,vRefractionMicrosurfaceInfos: vec4f
47
+ ,alphaG: f32
48
+ #ifdef SS_REFRACTIONMAP_3D
49
+ ,refractionSampler: texture_cube<f32>
50
+ ,refractionSamplerSampler: sampler
51
+ #ifndef LODBASEDMICROSFURACE
52
+ ,refractionLowSampler: texture_cube<f32>
53
+ ,refractionLowSamplerSampler: sampler
54
+ ,refractionHighSampler: texture_cube<f32>
55
+ ,refractionHighSamplerSampler: sampler
56
+ #endif
57
+ #else
58
+ ,refractionSampler: texture_2d<f32>
59
+ ,refractionSamplerSampler: sampler
60
+ #ifndef LODBASEDMICROSFURACE
61
+ ,refractionLowSampler: texture_2d<f32>
62
+ ,refractionLowSamplerSampler: sampler
63
+ ,refractionHighSampler: texture_2d<f32>
64
+ ,refractionHighSamplerSampler: sampler
65
+ #endif
66
+ #endif
67
+ #ifdef ANISOTROPIC
68
+ ,anisotropicOut: anisotropicOutParams
69
+ #endif
70
+ #ifdef REALTIME_FILTERING
71
+ ,vRefractionFilteringInfo: vec2f
72
+ #endif
73
+ #ifdef SS_USE_LOCAL_REFRACTIONMAP_CUBIC
74
+ ,refractionPosition: vec3f
75
+ ,refractionSize: vec3f
76
+ #endif
77
+ )->vec4f {var environmentRefraction: vec4f= vec4f(0.,0.,0.,0.);
78
+ #ifdef ANISOTROPIC
79
+ var refractionVector: vec3f=refract(-viewDirectionW,anisotropicOut.anisotropicNormal,ior);
80
+ #else
81
+ var refractionVector: vec3f=refract(-viewDirectionW,normalW,ior);
82
+ #endif
83
+ #ifdef SS_REFRACTIONMAP_OPPOSITEZ
84
+ refractionVector.z*=-1.0;
85
+ #endif
86
+ #ifdef SS_REFRACTIONMAP_3D
87
+ #ifdef SS_USE_LOCAL_REFRACTIONMAP_CUBIC
88
+ refractionVector=parallaxCorrectNormal(vPositionW,refractionVector,refractionSize,refractionPosition);
89
+ #endif
90
+ refractionVector.y=refractionVector.y*vRefractionInfos.w;var refractionCoords: vec3f=refractionVector;refractionCoords= (refractionMatrix* vec4f(refractionCoords,0)).xyz;
91
+ #else
92
+ #ifdef SS_USE_THICKNESS_AS_DEPTH
93
+ var vRefractionUVW: vec3f= (refractionMatrix*(view* vec4f(vPositionW+refractionVector*thickness,1.0))).xyz;
94
+ #else
95
+ var vRefractionUVW: vec3f= (refractionMatrix*(view* vec4f(vPositionW+refractionVector*vRefractionInfos.z,1.0))).xyz;
96
+ #endif
97
+ var refractionCoords: vec2f=vRefractionUVW.xy/vRefractionUVW.z;refractionCoords.y=1.0-refractionCoords.y;
98
+ #endif
99
+ #ifdef LODBASEDMICROSFURACE
100
+ var lod=refractionLOD*vRefractionMicrosurfaceInfos.y+vRefractionMicrosurfaceInfos.z;
101
+ #ifdef SS_LODINREFRACTIONALPHA
102
+ var automaticRefractionLOD: f32=UNPACK_LOD(textureSample(refractionSampler,refractionSamplerSampler,refractionCoords).a);var requestedRefractionLOD: f32=max(automaticRefractionLOD,lod);
103
+ #else
104
+ var requestedRefractionLOD: f32=lod;
105
+ #endif
106
+ #if defined(REALTIME_FILTERING) && defined(SS_REFRACTIONMAP_3D)
107
+ environmentRefraction= vec4f(radiance(alphaG,refractionSampler,refractionSamplerSampler,refractionCoords,vRefractionFilteringInfo),1.0);
108
+ #else
109
+ environmentRefraction=textureSampleLevel(refractionSampler,refractionSamplerSampler,refractionCoords,requestedRefractionLOD);
110
+ #endif
111
+ #else
112
+ var lodRefractionNormalized: f32=saturate(refractionLOD/log2(vRefractionMicrosurfaceInfos.x));var lodRefractionNormalizedDoubled: f32=lodRefractionNormalized*2.0;var environmentRefractionMid: vec4f=textureSample(refractionSampler,refractionSamplerSampler,refractionCoords);if (lodRefractionNormalizedDoubled<1.0){environmentRefraction=mix(
113
+ textureSample(refractionHighSampler,refractionHighSamplerSampler,refractionCoords),
114
+ environmentRefractionMid,
115
+ lodRefractionNormalizedDoubled
116
+ );} else {environmentRefraction=mix(
117
+ environmentRefractionMid,
118
+ textureSample(refractionLowSampler,refractionLowSamplerSampler,refractionCoords),
119
+ lodRefractionNormalizedDoubled-1.0
120
+ );}
121
+ #endif
122
+ var refraction=environmentRefraction.rgb;
123
+ #ifdef SS_RGBDREFRACTION
124
+ refraction=fromRGBD(environmentRefraction);
125
+ #endif
126
+ #ifdef SS_GAMMAREFRACTION
127
+ refraction=toLinearSpaceVec3(environmentRefraction.rgb);
128
+ #endif
129
+ return vec4f(refraction,environmentRefraction.a);}
130
+ #endif
131
+ #define pbr_inline
132
+ fn subSurfaceBlock(
133
+ vSubSurfaceIntensity: vec3f
134
+ ,vThicknessParam: vec2f
135
+ ,vTintColor: vec4f
136
+ ,normalW: vec3f
137
+ ,specularEnvironmentReflectance: vec3f
138
+ #ifdef SS_THICKNESSANDMASK_TEXTURE
139
+ ,thicknessMap: vec4f
140
+ #endif
141
+ #ifdef SS_REFRACTIONINTENSITY_TEXTURE
142
+ ,refractionIntensityMap: vec4f
143
+ #endif
144
+ #ifdef SS_TRANSLUCENCYINTENSITY_TEXTURE
145
+ ,translucencyIntensityMap: vec4f
146
+ #endif
147
+ #ifdef REFLECTION
148
+ #ifdef SS_TRANSLUCENCY
149
+ ,reflectionMatrix: mat4x4f
150
+ #ifdef USESPHERICALFROMREFLECTIONMAP
151
+ #if !defined(NORMAL) || !defined(USESPHERICALINVERTEX)
152
+ ,irradianceVector_: vec3f
153
+ #endif
154
+ #if defined(REALTIME_FILTERING)
155
+ ,reflectionSampler: texture_cube<f32>
156
+ ,reflectionSamplerSampler: sampler
157
+ ,vReflectionFilteringInfo: vec2f
158
+ #endif
159
+ #endif
160
+ #ifdef USEIRRADIANCEMAP
161
+ #ifdef REFLECTIONMAP_3D
162
+ ,irradianceSampler: texture_cube<f32>
163
+ ,irradianceSamplerSampler: sampler
164
+ #else
165
+ ,irradianceSampler: texture_2d<f32>
166
+ ,irradianceSamplerSampler: sampler
167
+ #endif
168
+ #endif
169
+ #endif
170
+ #endif
171
+ #if defined(SS_REFRACTION) || defined(SS_TRANSLUCENCY)
172
+ ,surfaceAlbedo: vec3f
173
+ #endif
174
+ #ifdef SS_REFRACTION
175
+ ,vPositionW: vec3f
176
+ ,viewDirectionW: vec3f
177
+ ,view: mat4x4f
178
+ ,vRefractionInfos: vec4f
179
+ ,refractionMatrix: mat4x4f
180
+ ,vRefractionMicrosurfaceInfos: vec4f
181
+ ,vLightingIntensity: vec4f
182
+ #ifdef SS_LINKREFRACTIONTOTRANSPARENCY
183
+ ,alpha: f32
184
+ #endif
185
+ #ifdef SS_LODINREFRACTIONALPHA
186
+ ,NdotVUnclamped: f32
187
+ #endif
188
+ #ifdef SS_LINEARSPECULARREFRACTION
189
+ ,roughness: f32
190
+ #endif
191
+ ,alphaG: f32
192
+ #ifdef SS_REFRACTIONMAP_3D
193
+ ,refractionSampler: texture_cube<f32>
194
+ ,refractionSamplerSampler: sampler
195
+ #ifndef LODBASEDMICROSFURACE
196
+ ,refractionLowSampler: texture_cube<f32>
197
+ ,refractionLowSamplerSampler: sampler
198
+ ,refractionHighSampler: texture_cube<f32>
199
+ ,refractionHighSamplerSampler: sampler
200
+ #endif
201
+ #else
202
+ ,refractionSampler: texture_2d<f32>
203
+ ,refractionSamplerSampler: sampler
204
+ #ifndef LODBASEDMICROSFURACE
205
+ ,refractionLowSampler: texture_2d<f32>
206
+ ,refractionLowSamplerSampler: sampler
207
+ ,refractionHighSampler: texture_2d<f32>
208
+ ,refractionHighSamplerSampler: sampler
209
+ #endif
210
+ #endif
211
+ #ifdef ANISOTROPIC
212
+ ,anisotropicOut: anisotropicOutParams
213
+ #endif
214
+ #ifdef REALTIME_FILTERING
215
+ ,vRefractionFilteringInfo: vec2f
216
+ #endif
217
+ #ifdef SS_USE_LOCAL_REFRACTIONMAP_CUBIC
218
+ ,refractionPosition: vec3f
219
+ ,refractionSize: vec3f
220
+ #endif
221
+ #ifdef SS_DISPERSION
222
+ ,dispersion: f32
223
+ #endif
224
+ #endif
225
+ #ifdef SS_TRANSLUCENCY
226
+ ,vDiffusionDistance: vec3f
227
+ ,vTranslucencyColor: vec4f
228
+ #ifdef SS_TRANSLUCENCYCOLOR_TEXTURE
229
+ ,translucencyColorMap: vec4f
230
+ #endif
231
+ #endif
232
+ )->subSurfaceOutParams
233
+ {var outParams: subSurfaceOutParams;outParams.specularEnvironmentReflectance=specularEnvironmentReflectance;
234
+ #ifdef SS_REFRACTION
235
+ var refractionIntensity: f32=vSubSurfaceIntensity.x;
236
+ #ifdef SS_LINKREFRACTIONTOTRANSPARENCY
237
+ refractionIntensity*=(1.0-alpha);outParams.alpha=1.0;
238
+ #endif
239
+ #endif
240
+ #ifdef SS_TRANSLUCENCY
241
+ var translucencyIntensity: f32=vSubSurfaceIntensity.y;
242
+ #endif
243
+ #ifdef SS_THICKNESSANDMASK_TEXTURE
244
+ #ifdef SS_USE_GLTF_TEXTURES
245
+ var thickness: f32=thicknessMap.g*vThicknessParam.y+vThicknessParam.x;
246
+ #else
247
+ var thickness: f32=thicknessMap.r*vThicknessParam.y+vThicknessParam.x;
248
+ #endif
249
+ #if DEBUGMODE>0
250
+ outParams.thicknessMap=thicknessMap;
251
+ #endif
252
+ #if defined(SS_REFRACTION) && defined(SS_REFRACTION_USE_INTENSITY_FROM_THICKNESS)
253
+ #ifdef SS_USE_GLTF_TEXTURES
254
+ refractionIntensity*=thicknessMap.r;
255
+ #else
256
+ refractionIntensity*=thicknessMap.g;
257
+ #endif
258
+ #endif
259
+ #if defined(SS_TRANSLUCENCY) && defined(SS_TRANSLUCENCY_USE_INTENSITY_FROM_THICKNESS)
260
+ #ifdef SS_USE_GLTF_TEXTURES
261
+ translucencyIntensity*=thicknessMap.a;
262
+ #else
263
+ translucencyIntensity*=thicknessMap.b;
264
+ #endif
265
+ #endif
266
+ #else
267
+ var thickness: f32=vThicknessParam.y;
268
+ #endif
269
+ #if defined(SS_REFRACTION) && defined(SS_REFRACTIONINTENSITY_TEXTURE)
270
+ #ifdef SS_USE_GLTF_TEXTURES
271
+ refractionIntensity*=refractionIntensityMap.r;
272
+ #else
273
+ refractionIntensity*=refractionIntensityMap.g;
274
+ #endif
275
+ #endif
276
+ #if defined(SS_TRANSLUCENCY) && defined(SS_TRANSLUCENCYINTENSITY_TEXTURE)
277
+ #ifdef SS_USE_GLTF_TEXTURES
278
+ translucencyIntensity*=translucencyIntensityMap.a;
279
+ #else
280
+ translucencyIntensity*=translucencyIntensityMap.b;
281
+ #endif
282
+ #endif
283
+ #ifdef SS_TRANSLUCENCY
284
+ thickness=maxEps(thickness);var translucencyColor: vec4f=vTranslucencyColor;
285
+ #ifdef SS_TRANSLUCENCYCOLOR_TEXTURE
286
+ translucencyColor*=translucencyColorMap;
287
+ #endif
288
+ var transmittance: vec3f=transmittanceBRDF_Burley(translucencyColor.rgb,vDiffusionDistance,thickness);transmittance*=translucencyIntensity;outParams.transmittance=transmittance;outParams.translucencyIntensity=translucencyIntensity;
289
+ #endif
290
+ #ifdef SS_REFRACTION
291
+ var environmentRefraction: vec4f= vec4f(0.,0.,0.,0.);
292
+ #ifdef SS_HAS_THICKNESS
293
+ var ior: f32=vRefractionInfos.y;
294
+ #else
295
+ var ior: f32=vRefractionMicrosurfaceInfos.w;
296
+ #endif
297
+ #ifdef SS_LODINREFRACTIONALPHA
298
+ var refractionAlphaG: f32=alphaG;refractionAlphaG=mix(alphaG,0.0,clamp(ior*3.0-2.0,0.0,1.0));var refractionLOD: f32=getLodFromAlphaG(vRefractionMicrosurfaceInfos.x,refractionAlphaG,NdotVUnclamped);
299
+ #elif defined(SS_LINEARSPECULARREFRACTION)
300
+ var refractionRoughness: f32=alphaG;refractionRoughness=mix(alphaG,0.0,clamp(ior*3.0-2.0,0.0,1.0));var refractionLOD: f32=getLinearLodFromRoughness(vRefractionMicrosurfaceInfos.x,refractionRoughness);
301
+ #else
302
+ var refractionAlphaG: f32=alphaG;refractionAlphaG=mix(alphaG,0.0,clamp(ior*3.0-2.0,0.0,1.0));var refractionLOD: f32=getLodFromAlphaG(vRefractionMicrosurfaceInfos.x,refractionAlphaG);
303
+ #endif
304
+ var refraction_ior: f32=vRefractionInfos.y;
305
+ #ifdef SS_DISPERSION
306
+ var realIOR: f32=1.0/refraction_ior;var iorDispersionSpread: f32=0.04*dispersion*(realIOR-1.0);var iors: vec3f= vec3f(1.0/(realIOR-iorDispersionSpread),refraction_ior,1.0/(realIOR+iorDispersionSpread));for (var i: i32=0; i<3; i++) {refraction_ior=iors[i];
307
+ #endif
308
+ var envSample: vec4f=sampleEnvironmentRefraction(refraction_ior,thickness,refractionLOD,normalW,vPositionW,viewDirectionW,view,vRefractionInfos,refractionMatrix,vRefractionMicrosurfaceInfos,alphaG
309
+ #ifdef SS_REFRACTIONMAP_3D
310
+ ,refractionSampler
311
+ ,refractionSamplerSampler
312
+ #ifndef LODBASEDMICROSFURACE
313
+ ,refractionLowSampler
314
+ ,refractionLowSamplerSampler
315
+ ,refractionHighSampler
316
+ ,refractionHighSamplerSampler
317
+ #endif
318
+ #else
319
+ ,refractionSampler
320
+ ,refractionSamplerSampler
321
+ #ifndef LODBASEDMICROSFURACE
322
+ ,refractionLowSampler
323
+ ,refractionLowSamplerSampler
324
+ ,refractionHighSampler
325
+ ,refractionHighSamplerSampler
326
+ #endif
327
+ #endif
328
+ #ifdef ANISOTROPIC
329
+ ,anisotropicOut
330
+ #endif
331
+ #ifdef REALTIME_FILTERING
332
+ ,vRefractionFilteringInfo
333
+ #endif
334
+ #ifdef SS_USE_LOCAL_REFRACTIONMAP_CUBIC
335
+ ,refractionPosition
336
+ ,refractionSize
337
+ #endif
338
+ );
339
+ #ifdef SS_DISPERSION
340
+ environmentRefraction[i]=envSample[i];}
341
+ #else
342
+ environmentRefraction=envSample;
343
+ #endif
344
+ environmentRefraction=vec4f(environmentRefraction.rgb*vRefractionInfos.x,environmentRefraction.a);
345
+ #endif
346
+ #ifdef SS_REFRACTION
347
+ var refractionTransmittance: vec3f= vec3f(refractionIntensity);
348
+ #ifdef SS_THICKNESSANDMASK_TEXTURE
349
+ var volumeAlbedo: vec3f=computeColorAtDistanceInMedia(vTintColor.rgb,vTintColor.w);refractionTransmittance*=cocaLambertVec3(volumeAlbedo,thickness);
350
+ #elif defined(SS_LINKREFRACTIONTOTRANSPARENCY)
351
+ var maxChannel: f32=max(max(surfaceAlbedo.r,surfaceAlbedo.g),surfaceAlbedo.b);var volumeAlbedo: vec3f=saturate(maxChannel*surfaceAlbedo);environmentRefraction.rgb*=volumeAlbedo;
352
+ #else
353
+ var volumeAlbedo: vec3f=computeColorAtDistanceInMedia(vTintColor.rgb,vTintColor.w);refractionTransmittance*=cocaLambertVec3(volumeAlbedo,vThicknessParam.y);
354
+ #endif
355
+ #ifdef SS_ALBEDOFORREFRACTIONTINT
356
+ environmentRefraction.rgb*=surfaceAlbedo.rgb;
357
+ #endif
358
+ outParams.surfaceAlbedo=surfaceAlbedo*(1.-refractionIntensity);
359
+ #ifdef REFLECTION
360
+ outParams.refractionFactorForIrradiance=(1.-refractionIntensity);
361
+ #endif
362
+ #ifdef UNUSED_MULTIPLEBOUNCES
363
+ var bounceSpecularEnvironmentReflectance: vec3f=(2.0*specularEnvironmentReflectance)/(1.0+specularEnvironmentReflectance);outParams.specularEnvironmentReflectance=mix(bounceSpecularEnvironmentReflectance,specularEnvironmentReflectance,refractionIntensity);
364
+ #endif
365
+ refractionTransmittance*=1.0-outParams.specularEnvironmentReflectance;
366
+ #if DEBUGMODE>0
367
+ outParams.refractionTransmittance=refractionTransmittance;
368
+ #endif
369
+ outParams.finalRefraction=environmentRefraction.rgb*refractionTransmittance*vLightingIntensity.z;
370
+ #if DEBUGMODE>0
371
+ outParams.environmentRefraction=environmentRefraction;
372
+ #endif
373
+ #endif
374
+ #if defined(REFLECTION) && defined(SS_TRANSLUCENCY)
375
+ #if defined(NORMAL) && defined(USESPHERICALINVERTEX) || !defined(USESPHERICALFROMREFLECTIONMAP)
376
+ var irradianceVector: vec3f= (reflectionMatrix* vec4f(normalW,0)).xyz;
377
+ #ifdef REFLECTIONMAP_OPPOSITEZ
378
+ irradianceVector.z*=-1.0;
379
+ #endif
380
+ #ifdef INVERTCUBICMAP
381
+ irradianceVector.y*=-1.0;
382
+ #endif
383
+ #else
384
+ var irradianceVector: vec3f=irradianceVector_;
385
+ #endif
386
+ #if defined(USESPHERICALFROMREFLECTIONMAP)
387
+ #if defined(REALTIME_FILTERING)
388
+ var refractionIrradiance: vec3f=irradiance(reflectionSampler,reflectionSamplerSampler,-irradianceVector,vReflectionFilteringInfo);
389
+ #else
390
+ var refractionIrradiance: vec3f=computeEnvironmentIrradiance(-irradianceVector);
391
+ #endif
392
+ #elif defined(USEIRRADIANCEMAP)
393
+ #ifdef REFLECTIONMAP_3D
394
+ var irradianceCoords: vec3f=irradianceVector;
395
+ #else
396
+ var irradianceCoords: vec2f=irradianceVector.xy;
397
+ #ifdef REFLECTIONMAP_PROJECTION
398
+ irradianceCoords/=irradianceVector.z;
399
+ #endif
400
+ irradianceCoords.y=1.0-irradianceCoords.y;
401
+ #endif
402
+ var temp: vec4f=textureSample(irradianceSampler,irradianceSamplerSampler,-irradianceCoords);var refractionIrradiance=temp.rgb;
403
+ #ifdef RGBDREFLECTION
404
+ refractionIrradiance=fromRGBD(temp).rgb;
405
+ #endif
406
+ #ifdef GAMMAREFLECTION
407
+ refractionIrradiance=toLinearSpaceVec3(refractionIrradiance);
408
+ #endif
409
+ #else
410
+ var refractionIrradiance: vec3f= vec3f(0.);
411
+ #endif
412
+ refractionIrradiance*=transmittance;
413
+ #ifdef SS_ALBEDOFORTRANSLUCENCYTINT
414
+ refractionIrradiance*=surfaceAlbedo.rgb;
415
+ #endif
416
+ outParams.refractionIrradiance=refractionIrradiance;
417
+ #endif
418
+ return outParams;}
419
+ #endif
420
+ `;
421
+ // Sideeffect
422
+ ShaderStore.IncludesShadersStoreWGSL[name] = shader;
423
+ /** @internal */
424
+ export const pbrBlockSubSurface = { name, shader };
425
+ //# sourceMappingURL=pbrBlockSubSurface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pbrBlockSubSurface.js","sourceRoot":"","sources":["../../../../../dev/core/src/ShadersWGSL/ShadersInclude/pbrBlockSubSurface.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,IAAI,GAAG,oBAAoB,CAAC;AAClC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgad,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 = \"pbrBlockSubSurface\";\nconst shader = `struct subSurfaceOutParams\n{specularEnvironmentReflectance: vec3f,\n#ifdef SS_REFRACTION\nfinalRefraction: vec3f,\nsurfaceAlbedo: vec3f,\n#ifdef SS_LINKREFRACTIONTOTRANSPARENCY\nalpha: f32,\n#endif\n#ifdef REFLECTION\nrefractionFactorForIrradiance: f32,\n#endif\n#endif\n#ifdef SS_TRANSLUCENCY\ntransmittance: vec3f,\ntranslucencyIntensity: f32,\n#ifdef REFLECTION\nrefractionIrradiance: vec3f,\n#endif\n#endif\n#if DEBUGMODE>0\n#ifdef SS_THICKNESSANDMASK_TEXTURE\nthicknessMap: vec4f,\n#endif\n#ifdef SS_REFRACTION\nenvironmentRefraction: vec4f,\nrefractionTransmittance: vec3f\n#endif\n#endif\n};\n#ifdef SUBSURFACE\n#ifdef SS_REFRACTION\n#define pbr_inline\nfn sampleEnvironmentRefraction(\nior: f32\n,thickness: f32\n,refractionLOD: f32\n,normalW: vec3f\n,vPositionW: vec3f\n,viewDirectionW: vec3f\n,view: mat4x4f\n,vRefractionInfos: vec4f\n,refractionMatrix: mat4x4f\n,vRefractionMicrosurfaceInfos: vec4f\n,alphaG: f32\n#ifdef SS_REFRACTIONMAP_3D\n,refractionSampler: texture_cube<f32>\n,refractionSamplerSampler: sampler\n#ifndef LODBASEDMICROSFURACE\n,refractionLowSampler: texture_cube<f32>\n,refractionLowSamplerSampler: sampler\n,refractionHighSampler: texture_cube<f32>\n,refractionHighSamplerSampler: sampler \n#endif\n#else\n,refractionSampler: texture_2d<f32>\n,refractionSamplerSampler: sampler\n#ifndef LODBASEDMICROSFURACE\n,refractionLowSampler: texture_2d<f32>\n,refractionLowSamplerSampler: sampler\n,refractionHighSampler: texture_2d<f32>\n,refractionHighSamplerSampler: sampler \n#endif\n#endif\n#ifdef ANISOTROPIC\n,anisotropicOut: anisotropicOutParams\n#endif\n#ifdef REALTIME_FILTERING\n,vRefractionFilteringInfo: vec2f\n#endif\n#ifdef SS_USE_LOCAL_REFRACTIONMAP_CUBIC\n,refractionPosition: vec3f\n,refractionSize: vec3f\n#endif\n)->vec4f {var environmentRefraction: vec4f= vec4f(0.,0.,0.,0.);\n#ifdef ANISOTROPIC\nvar refractionVector: vec3f=refract(-viewDirectionW,anisotropicOut.anisotropicNormal,ior);\n#else\nvar refractionVector: vec3f=refract(-viewDirectionW,normalW,ior);\n#endif\n#ifdef SS_REFRACTIONMAP_OPPOSITEZ\nrefractionVector.z*=-1.0;\n#endif\n#ifdef SS_REFRACTIONMAP_3D\n#ifdef SS_USE_LOCAL_REFRACTIONMAP_CUBIC\nrefractionVector=parallaxCorrectNormal(vPositionW,refractionVector,refractionSize,refractionPosition);\n#endif\nrefractionVector.y=refractionVector.y*vRefractionInfos.w;var refractionCoords: vec3f=refractionVector;refractionCoords= (refractionMatrix* vec4f(refractionCoords,0)).xyz;\n#else\n#ifdef SS_USE_THICKNESS_AS_DEPTH\nvar vRefractionUVW: vec3f= (refractionMatrix*(view* vec4f(vPositionW+refractionVector*thickness,1.0))).xyz;\n#else\nvar vRefractionUVW: vec3f= (refractionMatrix*(view* vec4f(vPositionW+refractionVector*vRefractionInfos.z,1.0))).xyz;\n#endif\nvar refractionCoords: vec2f=vRefractionUVW.xy/vRefractionUVW.z;refractionCoords.y=1.0-refractionCoords.y;\n#endif\n#ifdef LODBASEDMICROSFURACE\nvar lod=refractionLOD*vRefractionMicrosurfaceInfos.y+vRefractionMicrosurfaceInfos.z;\n#ifdef SS_LODINREFRACTIONALPHA\nvar automaticRefractionLOD: f32=UNPACK_LOD(textureSample(refractionSampler,refractionSamplerSampler,refractionCoords).a);var requestedRefractionLOD: f32=max(automaticRefractionLOD,lod);\n#else\nvar requestedRefractionLOD: f32=lod;\n#endif\n#if defined(REALTIME_FILTERING) && defined(SS_REFRACTIONMAP_3D)\nenvironmentRefraction= vec4f(radiance(alphaG,refractionSampler,refractionSamplerSampler,refractionCoords,vRefractionFilteringInfo),1.0);\n#else\nenvironmentRefraction=textureSampleLevel(refractionSampler,refractionSamplerSampler,refractionCoords,requestedRefractionLOD);\n#endif\n#else\nvar lodRefractionNormalized: f32=saturate(refractionLOD/log2(vRefractionMicrosurfaceInfos.x));var lodRefractionNormalizedDoubled: f32=lodRefractionNormalized*2.0;var environmentRefractionMid: vec4f=textureSample(refractionSampler,refractionSamplerSampler,refractionCoords);if (lodRefractionNormalizedDoubled<1.0){environmentRefraction=mix(\ntextureSample(refractionHighSampler,refractionHighSamplerSampler,refractionCoords),\nenvironmentRefractionMid,\nlodRefractionNormalizedDoubled\n);} else {environmentRefraction=mix(\nenvironmentRefractionMid,\ntextureSample(refractionLowSampler,refractionLowSamplerSampler,refractionCoords),\nlodRefractionNormalizedDoubled-1.0\n);}\n#endif\nvar refraction=environmentRefraction.rgb;\n#ifdef SS_RGBDREFRACTION\nrefraction=fromRGBD(environmentRefraction);\n#endif\n#ifdef SS_GAMMAREFRACTION\nrefraction=toLinearSpaceVec3(environmentRefraction.rgb);\n#endif\nreturn vec4f(refraction,environmentRefraction.a);}\n#endif\n#define pbr_inline\nfn subSurfaceBlock(\nvSubSurfaceIntensity: vec3f\n,vThicknessParam: vec2f\n,vTintColor: vec4f\n,normalW: vec3f\n,specularEnvironmentReflectance: vec3f\n#ifdef SS_THICKNESSANDMASK_TEXTURE\n,thicknessMap: vec4f\n#endif\n#ifdef SS_REFRACTIONINTENSITY_TEXTURE\n,refractionIntensityMap: vec4f\n#endif\n#ifdef SS_TRANSLUCENCYINTENSITY_TEXTURE\n,translucencyIntensityMap: vec4f\n#endif\n#ifdef REFLECTION\n#ifdef SS_TRANSLUCENCY\n,reflectionMatrix: mat4x4f\n#ifdef USESPHERICALFROMREFLECTIONMAP\n#if !defined(NORMAL) || !defined(USESPHERICALINVERTEX)\n,irradianceVector_: vec3f\n#endif\n#if defined(REALTIME_FILTERING)\n,reflectionSampler: texture_cube<f32>\n,reflectionSamplerSampler: sampler\n,vReflectionFilteringInfo: vec2f\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#endif\n#endif\n#if defined(SS_REFRACTION) || defined(SS_TRANSLUCENCY)\n,surfaceAlbedo: vec3f\n#endif\n#ifdef SS_REFRACTION\n,vPositionW: vec3f\n,viewDirectionW: vec3f\n,view: mat4x4f\n,vRefractionInfos: vec4f\n,refractionMatrix: mat4x4f\n,vRefractionMicrosurfaceInfos: vec4f\n,vLightingIntensity: vec4f\n#ifdef SS_LINKREFRACTIONTOTRANSPARENCY\n,alpha: f32\n#endif\n#ifdef SS_LODINREFRACTIONALPHA\n,NdotVUnclamped: f32\n#endif\n#ifdef SS_LINEARSPECULARREFRACTION\n,roughness: f32\n#endif\n,alphaG: f32\n#ifdef SS_REFRACTIONMAP_3D\n,refractionSampler: texture_cube<f32>\n,refractionSamplerSampler: sampler\n#ifndef LODBASEDMICROSFURACE\n,refractionLowSampler: texture_cube<f32>\n,refractionLowSamplerSampler: sampler\n,refractionHighSampler: texture_cube<f32>\n,refractionHighSamplerSampler: sampler \n#endif\n#else\n,refractionSampler: texture_2d<f32>\n,refractionSamplerSampler: sampler\n#ifndef LODBASEDMICROSFURACE\n,refractionLowSampler: texture_2d<f32>\n,refractionLowSamplerSampler: sampler\n,refractionHighSampler: texture_2d<f32>\n,refractionHighSamplerSampler: sampler \n#endif\n#endif\n#ifdef ANISOTROPIC\n,anisotropicOut: anisotropicOutParams\n#endif\n#ifdef REALTIME_FILTERING\n,vRefractionFilteringInfo: vec2f\n#endif\n#ifdef SS_USE_LOCAL_REFRACTIONMAP_CUBIC\n,refractionPosition: vec3f\n,refractionSize: vec3f\n#endif\n#ifdef SS_DISPERSION\n,dispersion: f32\n#endif\n#endif\n#ifdef SS_TRANSLUCENCY\n,vDiffusionDistance: vec3f\n,vTranslucencyColor: vec4f\n#ifdef SS_TRANSLUCENCYCOLOR_TEXTURE\n,translucencyColorMap: vec4f\n#endif\n#endif\n)->subSurfaceOutParams\n{var outParams: subSurfaceOutParams;outParams.specularEnvironmentReflectance=specularEnvironmentReflectance;\n#ifdef SS_REFRACTION\nvar refractionIntensity: f32=vSubSurfaceIntensity.x;\n#ifdef SS_LINKREFRACTIONTOTRANSPARENCY\nrefractionIntensity*=(1.0-alpha);outParams.alpha=1.0;\n#endif\n#endif\n#ifdef SS_TRANSLUCENCY\nvar translucencyIntensity: f32=vSubSurfaceIntensity.y;\n#endif\n#ifdef SS_THICKNESSANDMASK_TEXTURE\n#ifdef SS_USE_GLTF_TEXTURES\nvar thickness: f32=thicknessMap.g*vThicknessParam.y+vThicknessParam.x;\n#else\nvar thickness: f32=thicknessMap.r*vThicknessParam.y+vThicknessParam.x;\n#endif\n#if DEBUGMODE>0\noutParams.thicknessMap=thicknessMap;\n#endif\n#if defined(SS_REFRACTION) && defined(SS_REFRACTION_USE_INTENSITY_FROM_THICKNESS)\n#ifdef SS_USE_GLTF_TEXTURES\nrefractionIntensity*=thicknessMap.r;\n#else\nrefractionIntensity*=thicknessMap.g;\n#endif\n#endif\n#if defined(SS_TRANSLUCENCY) && defined(SS_TRANSLUCENCY_USE_INTENSITY_FROM_THICKNESS)\n#ifdef SS_USE_GLTF_TEXTURES\ntranslucencyIntensity*=thicknessMap.a;\n#else\ntranslucencyIntensity*=thicknessMap.b;\n#endif\n#endif\n#else\nvar thickness: f32=vThicknessParam.y;\n#endif\n#if defined(SS_REFRACTION) && defined(SS_REFRACTIONINTENSITY_TEXTURE)\n#ifdef SS_USE_GLTF_TEXTURES\nrefractionIntensity*=refractionIntensityMap.r;\n#else\nrefractionIntensity*=refractionIntensityMap.g;\n#endif\n#endif\n#if defined(SS_TRANSLUCENCY) && defined(SS_TRANSLUCENCYINTENSITY_TEXTURE)\n#ifdef SS_USE_GLTF_TEXTURES\ntranslucencyIntensity*=translucencyIntensityMap.a;\n#else\ntranslucencyIntensity*=translucencyIntensityMap.b;\n#endif\n#endif\n#ifdef SS_TRANSLUCENCY\nthickness=maxEps(thickness);var translucencyColor: vec4f=vTranslucencyColor;\n#ifdef SS_TRANSLUCENCYCOLOR_TEXTURE\ntranslucencyColor*=translucencyColorMap;\n#endif\nvar transmittance: vec3f=transmittanceBRDF_Burley(translucencyColor.rgb,vDiffusionDistance,thickness);transmittance*=translucencyIntensity;outParams.transmittance=transmittance;outParams.translucencyIntensity=translucencyIntensity;\n#endif\n#ifdef SS_REFRACTION\nvar environmentRefraction: vec4f= vec4f(0.,0.,0.,0.);\n#ifdef SS_HAS_THICKNESS\nvar ior: f32=vRefractionInfos.y;\n#else\nvar ior: f32=vRefractionMicrosurfaceInfos.w;\n#endif\n#ifdef SS_LODINREFRACTIONALPHA\nvar refractionAlphaG: f32=alphaG;refractionAlphaG=mix(alphaG,0.0,clamp(ior*3.0-2.0,0.0,1.0));var refractionLOD: f32=getLodFromAlphaG(vRefractionMicrosurfaceInfos.x,refractionAlphaG,NdotVUnclamped);\n#elif defined(SS_LINEARSPECULARREFRACTION)\nvar refractionRoughness: f32=alphaG;refractionRoughness=mix(alphaG,0.0,clamp(ior*3.0-2.0,0.0,1.0));var refractionLOD: f32=getLinearLodFromRoughness(vRefractionMicrosurfaceInfos.x,refractionRoughness);\n#else\nvar refractionAlphaG: f32=alphaG;refractionAlphaG=mix(alphaG,0.0,clamp(ior*3.0-2.0,0.0,1.0));var refractionLOD: f32=getLodFromAlphaG(vRefractionMicrosurfaceInfos.x,refractionAlphaG);\n#endif\nvar refraction_ior: f32=vRefractionInfos.y;\n#ifdef SS_DISPERSION\nvar realIOR: f32=1.0/refraction_ior;var iorDispersionSpread: f32=0.04*dispersion*(realIOR-1.0);var iors: vec3f= vec3f(1.0/(realIOR-iorDispersionSpread),refraction_ior,1.0/(realIOR+iorDispersionSpread));for (var i: i32=0; i<3; i++) {refraction_ior=iors[i];\n#endif\nvar envSample: vec4f=sampleEnvironmentRefraction(refraction_ior,thickness,refractionLOD,normalW,vPositionW,viewDirectionW,view,vRefractionInfos,refractionMatrix,vRefractionMicrosurfaceInfos,alphaG\n#ifdef SS_REFRACTIONMAP_3D\n,refractionSampler\n,refractionSamplerSampler\n#ifndef LODBASEDMICROSFURACE\n,refractionLowSampler\n,refractionLowSamplerSampler\n,refractionHighSampler\n,refractionHighSamplerSampler\n#endif\n#else\n,refractionSampler\n,refractionSamplerSampler\n#ifndef LODBASEDMICROSFURACE\n,refractionLowSampler\n,refractionLowSamplerSampler\n,refractionHighSampler\n,refractionHighSamplerSampler\n#endif\n#endif\n#ifdef ANISOTROPIC\n,anisotropicOut\n#endif\n#ifdef REALTIME_FILTERING\n,vRefractionFilteringInfo\n#endif\n#ifdef SS_USE_LOCAL_REFRACTIONMAP_CUBIC\n,refractionPosition\n,refractionSize\n#endif\n);\n#ifdef SS_DISPERSION\nenvironmentRefraction[i]=envSample[i];}\n#else\nenvironmentRefraction=envSample;\n#endif\nenvironmentRefraction=vec4f(environmentRefraction.rgb*vRefractionInfos.x,environmentRefraction.a);\n#endif\n#ifdef SS_REFRACTION\nvar refractionTransmittance: vec3f= vec3f(refractionIntensity);\n#ifdef SS_THICKNESSANDMASK_TEXTURE\nvar volumeAlbedo: vec3f=computeColorAtDistanceInMedia(vTintColor.rgb,vTintColor.w);refractionTransmittance*=cocaLambertVec3(volumeAlbedo,thickness);\n#elif defined(SS_LINKREFRACTIONTOTRANSPARENCY)\nvar maxChannel: f32=max(max(surfaceAlbedo.r,surfaceAlbedo.g),surfaceAlbedo.b);var volumeAlbedo: vec3f=saturate(maxChannel*surfaceAlbedo);environmentRefraction.rgb*=volumeAlbedo;\n#else\nvar volumeAlbedo: vec3f=computeColorAtDistanceInMedia(vTintColor.rgb,vTintColor.w);refractionTransmittance*=cocaLambertVec3(volumeAlbedo,vThicknessParam.y);\n#endif\n#ifdef SS_ALBEDOFORREFRACTIONTINT\nenvironmentRefraction.rgb*=surfaceAlbedo.rgb;\n#endif\noutParams.surfaceAlbedo=surfaceAlbedo*(1.-refractionIntensity);\n#ifdef REFLECTION\noutParams.refractionFactorForIrradiance=(1.-refractionIntensity);\n#endif\n#ifdef UNUSED_MULTIPLEBOUNCES\nvar bounceSpecularEnvironmentReflectance: vec3f=(2.0*specularEnvironmentReflectance)/(1.0+specularEnvironmentReflectance);outParams.specularEnvironmentReflectance=mix(bounceSpecularEnvironmentReflectance,specularEnvironmentReflectance,refractionIntensity);\n#endif\nrefractionTransmittance*=1.0-outParams.specularEnvironmentReflectance;\n#if DEBUGMODE>0\noutParams.refractionTransmittance=refractionTransmittance;\n#endif\noutParams.finalRefraction=environmentRefraction.rgb*refractionTransmittance*vLightingIntensity.z;\n#if DEBUGMODE>0\noutParams.environmentRefraction=environmentRefraction;\n#endif\n#endif\n#if defined(REFLECTION) && defined(SS_TRANSLUCENCY)\n#if defined(NORMAL) && defined(USESPHERICALINVERTEX) || !defined(USESPHERICALFROMREFLECTIONMAP)\nvar irradianceVector: vec3f= (reflectionMatrix* vec4f(normalW,0)).xyz;\n#ifdef REFLECTIONMAP_OPPOSITEZ\nirradianceVector.z*=-1.0;\n#endif\n#ifdef INVERTCUBICMAP\nirradianceVector.y*=-1.0;\n#endif\n#else\nvar irradianceVector: vec3f=irradianceVector_;\n#endif\n#if defined(USESPHERICALFROMREFLECTIONMAP)\n#if defined(REALTIME_FILTERING)\nvar refractionIrradiance: vec3f=irradiance(reflectionSampler,reflectionSamplerSampler,-irradianceVector,vReflectionFilteringInfo);\n#else\nvar refractionIrradiance: vec3f=computeEnvironmentIrradiance(-irradianceVector);\n#endif\n#elif defined(USEIRRADIANCEMAP)\n#ifdef REFLECTIONMAP_3D\nvar irradianceCoords: vec3f=irradianceVector;\n#else\nvar irradianceCoords: vec2f=irradianceVector.xy;\n#ifdef REFLECTIONMAP_PROJECTION\nirradianceCoords/=irradianceVector.z;\n#endif\nirradianceCoords.y=1.0-irradianceCoords.y;\n#endif\nvar temp: vec4f=textureSample(irradianceSampler,irradianceSamplerSampler,-irradianceCoords);var refractionIrradiance=temp.rgb;\n#ifdef RGBDREFLECTION\nrefractionIrradiance=fromRGBD(temp).rgb;\n#endif\n#ifdef GAMMAREFLECTION\nrefractionIrradiance=toLinearSpaceVec3(refractionIrradiance);\n#endif\n#else\nvar refractionIrradiance: vec3f= vec3f(0.);\n#endif\nrefractionIrradiance*=transmittance;\n#ifdef SS_ALBEDOFORTRANSLUCENCYTINT\nrefractionIrradiance*=surfaceAlbedo.rgb;\n#endif\noutParams.refractionIrradiance=refractionIrradiance;\n#endif\nreturn outParams;}\n#endif\n`;\n// Sideeffect\nShaderStore.IncludesShadersStoreWGSL[name] = shader;\n/** @internal */\nexport const pbrBlockSubSurface = { name, shader };\n"]}
@@ -0,0 +1,5 @@
1
+ /** @internal */
2
+ export declare const pbrDebug: {
3
+ name: string;
4
+ shader: string;
5
+ };
@@ -0,0 +1,193 @@
1
+ // Do not edit.
2
+ import { ShaderStore } from "../../Engines/shaderStore.js";
3
+ const name = "pbrDebug";
4
+ const shader = `#if DEBUGMODE>0
5
+ if (input.vClipSpacePosition.x/input.vClipSpacePosition.w>=uniforms.vDebugMode.x) {var color: vec3f;
6
+ #if DEBUGMODE==1
7
+ color=vPositionW.rgb;
8
+ #define DEBUGMODE_NORMALIZE
9
+ #elif DEBUGMODE==2 && defined(NORMAL)
10
+ color=vNormalW.rgb;
11
+ #define DEBUGMODE_NORMALIZE
12
+ #elif DEBUGMODE==3 && defined(BUMP) || DEBUGMODE==3 && defined(PARALLAX) || DEBUGMODE==3 && defined(ANISOTROPIC)
13
+ color=TBN[0];
14
+ #define DEBUGMODE_NORMALIZE
15
+ #elif DEBUGMODE==4 && defined(BUMP) || DEBUGMODE==4 && defined(PARALLAX) || DEBUGMODE==4 && defined(ANISOTROPIC)
16
+ color=TBN[1];
17
+ #define DEBUGMODE_NORMALIZE
18
+ #elif DEBUGMODE==5
19
+ color=normalW;
20
+ #define DEBUGMODE_NORMALIZE
21
+ #elif DEBUGMODE==6 && defined(MAINUV1)
22
+ color= vec3f(vMainUV1,0.0);
23
+ #elif DEBUGMODE==7 && defined(MAINUV2)
24
+ color= vec3f(vMainUV2,0.0);
25
+ #elif DEBUGMODE==8 && defined(CLEARCOAT) && defined(CLEARCOAT_BUMP)
26
+ color=clearcoatOut.TBNClearCoat[0];
27
+ #define DEBUGMODE_NORMALIZE
28
+ #elif DEBUGMODE==9 && defined(CLEARCOAT) && defined(CLEARCOAT_BUMP)
29
+ color=clearcoatOut.TBNClearCoat[1];
30
+ #define DEBUGMODE_NORMALIZE
31
+ #elif DEBUGMODE==10 && defined(CLEARCOAT)
32
+ color=clearcoatOut.clearCoatNormalW;
33
+ #define DEBUGMODE_NORMALIZE
34
+ #elif DEBUGMODE==11 && defined(ANISOTROPIC)
35
+ color=anisotropicOut.anisotropicNormal;
36
+ #define DEBUGMODE_NORMALIZE
37
+ #elif DEBUGMODE==12 && defined(ANISOTROPIC)
38
+ color=anisotropicOut.anisotropicTangent;
39
+ #define DEBUGMODE_NORMALIZE
40
+ #elif DEBUGMODE==13 && defined(ANISOTROPIC)
41
+ color=anisotropicOut.anisotropicBitangent;
42
+ #define DEBUGMODE_NORMALIZE
43
+ #elif DEBUGMODE==20 && defined(ALBEDO)
44
+ color=albedoTexture.rgb;
45
+ #ifndef GAMMAALBEDO
46
+ #define DEBUGMODE_GAMMA
47
+ #endif
48
+ #elif DEBUGMODE==21 && defined(AMBIENT)
49
+ color=aoOut.ambientOcclusionColorMap.rgb;
50
+ #elif DEBUGMODE==22 && defined(OPACITY)
51
+ color=opacityMap.rgb;
52
+ #elif DEBUGMODE==23 && defined(EMISSIVE)
53
+ color=emissiveColorTex.rgb;
54
+ #ifndef GAMMAEMISSIVE
55
+ #define DEBUGMODE_GAMMA
56
+ #endif
57
+ #elif DEBUGMODE==24 && defined(LIGHTMAP)
58
+ color=lightmapColor;
59
+ #ifndef GAMMALIGHTMAP
60
+ #define DEBUGMODE_GAMMA
61
+ #endif
62
+ #elif DEBUGMODE==25 && defined(REFLECTIVITY) && defined(METALLICWORKFLOW)
63
+ color=reflectivityOut.surfaceMetallicColorMap.rgb;
64
+ #elif DEBUGMODE==26 && defined(REFLECTIVITY) && !defined(METALLICWORKFLOW)
65
+ color=reflectivityOut.surfaceReflectivityColorMap.rgb;
66
+ #define DEBUGMODE_GAMMA
67
+ #elif DEBUGMODE==27 && defined(CLEARCOAT) && defined(CLEARCOAT_TEXTURE)
68
+ color= vec3f(clearcoatOut.clearCoatMapData.rg,0.0);
69
+ #elif DEBUGMODE==28 && defined(CLEARCOAT) && defined(CLEARCOAT_TINT) && defined(CLEARCOAT_TINT_TEXTURE)
70
+ color=clearcoatOut.clearCoatTintMapData.rgb;
71
+ #elif DEBUGMODE==29 && defined(SHEEN) && defined(SHEEN_TEXTURE)
72
+ color=sheenOut.sheenMapData.rgb;
73
+ #elif DEBUGMODE==30 && defined(ANISOTROPIC) && defined(ANISOTROPIC_TEXTURE)
74
+ color=anisotropicOut.anisotropyMapData.rgb;
75
+ #elif DEBUGMODE==31 && defined(SUBSURFACE) && defined(SS_THICKNESSANDMASK_TEXTURE)
76
+ color=subSurfaceOut.thicknessMap.rgb;
77
+ #elif DEBUGMODE==32 && defined(BUMP)
78
+ color=texture2D(bumpSampler,vBumpUV).rgb;
79
+ #elif DEBUGMODE==40 && defined(SS_REFRACTION)
80
+ color=subSurfaceOut.environmentRefraction.rgb;
81
+ #define DEBUGMODE_GAMMA
82
+ #elif DEBUGMODE==41 && defined(REFLECTION)
83
+ color=reflectionOut.environmentRadiance.rgb;
84
+ #ifndef GAMMAREFLECTION
85
+ #define DEBUGMODE_GAMMA
86
+ #endif
87
+ #elif DEBUGMODE==42 && defined(CLEARCOAT) && defined(REFLECTION)
88
+ color=clearcoatOut.environmentClearCoatRadiance.rgb;
89
+ #define DEBUGMODE_GAMMA
90
+ #elif DEBUGMODE==50
91
+ color=diffuseBase.rgb;
92
+ #define DEBUGMODE_GAMMA
93
+ #elif DEBUGMODE==51 && defined(SPECULARTERM)
94
+ color=specularBase.rgb;
95
+ #define DEBUGMODE_GAMMA
96
+ #elif DEBUGMODE==52 && defined(CLEARCOAT)
97
+ color=clearCoatBase.rgb;
98
+ #define DEBUGMODE_GAMMA
99
+ #elif DEBUGMODE==53 && defined(SHEEN)
100
+ color=sheenBase.rgb;
101
+ #define DEBUGMODE_GAMMA
102
+ #elif DEBUGMODE==54 && defined(REFLECTION)
103
+ color=reflectionOut.environmentIrradiance.rgb;
104
+ #ifndef GAMMAREFLECTION
105
+ #define DEBUGMODE_GAMMA
106
+ #endif
107
+ #elif DEBUGMODE==60
108
+ color=surfaceAlbedo.rgb;
109
+ #define DEBUGMODE_GAMMA
110
+ #elif DEBUGMODE==61
111
+ color=clearcoatOut.specularEnvironmentR0;
112
+ #define DEBUGMODE_GAMMA
113
+ #elif DEBUGMODE==62 && defined(METALLICWORKFLOW)
114
+ color= vec3f(reflectivityOut.metallicRoughness.r);
115
+ #elif DEBUGMODE==71 && defined(METALLICWORKFLOW)
116
+ color=reflectivityOut.metallicF0;
117
+ #elif DEBUGMODE==63
118
+ color= vec3f(roughness);
119
+ #elif DEBUGMODE==64
120
+ color= vec3f(alphaG);
121
+ #elif DEBUGMODE==65
122
+ color= vec3f(NdotV);
123
+ #elif DEBUGMODE==66 && defined(CLEARCOAT) && defined(CLEARCOAT_TINT)
124
+ color=clearcoatOut.clearCoatColor;
125
+ #define DEBUGMODE_GAMMA
126
+ #elif DEBUGMODE==67 && defined(CLEARCOAT)
127
+ color= vec3f(clearcoatOut.clearCoatRoughness);
128
+ #elif DEBUGMODE==68 && defined(CLEARCOAT)
129
+ color= vec3f(clearcoatOut.clearCoatNdotV);
130
+ #elif DEBUGMODE==69 && defined(SUBSURFACE) && defined(SS_TRANSLUCENCY)
131
+ color=subSurfaceOut.transmittance;
132
+ #elif DEBUGMODE==70 && defined(SUBSURFACE) && defined(SS_REFRACTION)
133
+ color=subSurfaceOut.refractionTransmittance;
134
+ #elif DEBUGMODE==72
135
+ color= vec3f(microSurface);
136
+ #elif DEBUGMODE==73
137
+ color=vAlbedoColor;
138
+ #define DEBUGMODE_GAMMA
139
+ #elif DEBUGMODE==74 && !defined(METALLICWORKFLOW)
140
+ color=vReflectivityColor;
141
+ #define DEBUGMODE_GAMMA
142
+ #elif DEBUGMODE==75
143
+ color=vEmissiveColor;
144
+ #define DEBUGMODE_GAMMA
145
+ #elif DEBUGMODE==80 && defined(RADIANCEOCCLUSION)
146
+ color= vec3f(seo);
147
+ #elif DEBUGMODE==81 && defined(HORIZONOCCLUSION) && defined(BUMP) && defined(REFLECTIONMAP_3D)
148
+ color= vec3f(eho);
149
+ #elif DEBUGMODE==82 && defined(MS_BRDF_ENERGY_CONSERVATION)
150
+ color= vec3f(energyConservationFactor);
151
+ #elif DEBUGMODE==83 && defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX)
152
+ color=specularEnvironmentReflectance;
153
+ #define DEBUGMODE_GAMMA
154
+ #elif DEBUGMODE==84 && defined(CLEARCOAT) && defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX)
155
+ color=clearcoatOut.clearCoatEnvironmentReflectance;
156
+ #define DEBUGMODE_GAMMA
157
+ #elif DEBUGMODE==85 && defined(SHEEN) && defined(REFLECTION)
158
+ color=sheenOut.sheenEnvironmentReflectance;
159
+ #define DEBUGMODE_GAMMA
160
+ #elif DEBUGMODE==86 && defined(ALPHABLEND)
161
+ color= vec3f(luminanceOverAlpha);
162
+ #elif DEBUGMODE==87
163
+ color= vec3f(alpha);
164
+ #elif DEBUGMODE==88 && defined(ALBEDO)
165
+ color= vec3f(albedoTexture.a);
166
+ #elif DEBUGMODE==89
167
+ color=aoOut.ambientOcclusionColor;
168
+ #else
169
+ var stripeWidth: f32=30.;var stripePos: f32=floor((input.position.x+input.position.y)/stripeWidth);var whichColor: f32=((stripePos)%(2.));var color1: vec3f= vec3f(.6,.2,.2);var color2: vec3f= vec3f(.3,.1,.1);color=mix(color1,color2,whichColor);
170
+ #endif
171
+ color*=uniforms.vDebugMode.y;
172
+ #ifdef DEBUGMODE_NORMALIZE
173
+ color=normalize(color)*0.5+0.5;
174
+ #endif
175
+ #ifdef DEBUGMODE_GAMMA
176
+ color=toGammaSpaceVec3(color);
177
+ #endif
178
+ fragmentOutputs.color=vec4f(color,1.0);
179
+ #ifdef PREPASS
180
+ fragmentOutputs.fragData0=toLinearSpace(color);
181
+ fragmentOutputs.fragData1=vec4f(0.,0.,0.,0.);
182
+ #endif
183
+ #ifdef DEBUGMODE_FORCERETURN
184
+ return fragmentOutputs;
185
+ #endif
186
+ }
187
+ #endif
188
+ `;
189
+ // Sideeffect
190
+ ShaderStore.IncludesShadersStoreWGSL[name] = shader;
191
+ /** @internal */
192
+ export const pbrDebug = { name, shader };
193
+ //# sourceMappingURL=pbrDebug.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pbrDebug.js","sourceRoot":"","sources":["../../../../../dev/core/src/ShadersWGSL/ShadersInclude/pbrDebug.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,IAAI,GAAG,UAAU,CAAC;AACxB,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwLd,CAAC;AACF,aAAa;AACb,WAAW,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACpD,gBAAgB;AAChB,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../../Engines/shaderStore\";\n\nconst name = \"pbrDebug\";\nconst shader = `#if DEBUGMODE>0\nif (input.vClipSpacePosition.x/input.vClipSpacePosition.w>=uniforms.vDebugMode.x) {var color: vec3f;\n#if DEBUGMODE==1\ncolor=vPositionW.rgb;\n#define DEBUGMODE_NORMALIZE\n#elif DEBUGMODE==2 && defined(NORMAL)\ncolor=vNormalW.rgb;\n#define DEBUGMODE_NORMALIZE\n#elif DEBUGMODE==3 && defined(BUMP) || DEBUGMODE==3 && defined(PARALLAX) || DEBUGMODE==3 && defined(ANISOTROPIC)\ncolor=TBN[0];\n#define DEBUGMODE_NORMALIZE\n#elif DEBUGMODE==4 && defined(BUMP) || DEBUGMODE==4 && defined(PARALLAX) || DEBUGMODE==4 && defined(ANISOTROPIC)\ncolor=TBN[1];\n#define DEBUGMODE_NORMALIZE\n#elif DEBUGMODE==5\ncolor=normalW;\n#define DEBUGMODE_NORMALIZE\n#elif DEBUGMODE==6 && defined(MAINUV1)\ncolor= vec3f(vMainUV1,0.0);\n#elif DEBUGMODE==7 && defined(MAINUV2)\ncolor= vec3f(vMainUV2,0.0);\n#elif DEBUGMODE==8 && defined(CLEARCOAT) && defined(CLEARCOAT_BUMP)\ncolor=clearcoatOut.TBNClearCoat[0];\n#define DEBUGMODE_NORMALIZE\n#elif DEBUGMODE==9 && defined(CLEARCOAT) && defined(CLEARCOAT_BUMP)\ncolor=clearcoatOut.TBNClearCoat[1];\n#define DEBUGMODE_NORMALIZE\n#elif DEBUGMODE==10 && defined(CLEARCOAT)\ncolor=clearcoatOut.clearCoatNormalW;\n#define DEBUGMODE_NORMALIZE\n#elif DEBUGMODE==11 && defined(ANISOTROPIC)\ncolor=anisotropicOut.anisotropicNormal;\n#define DEBUGMODE_NORMALIZE\n#elif DEBUGMODE==12 && defined(ANISOTROPIC)\ncolor=anisotropicOut.anisotropicTangent;\n#define DEBUGMODE_NORMALIZE\n#elif DEBUGMODE==13 && defined(ANISOTROPIC)\ncolor=anisotropicOut.anisotropicBitangent;\n#define DEBUGMODE_NORMALIZE\n#elif DEBUGMODE==20 && defined(ALBEDO)\ncolor=albedoTexture.rgb;\n#ifndef GAMMAALBEDO\n#define DEBUGMODE_GAMMA\n#endif\n#elif DEBUGMODE==21 && defined(AMBIENT)\ncolor=aoOut.ambientOcclusionColorMap.rgb;\n#elif DEBUGMODE==22 && defined(OPACITY)\ncolor=opacityMap.rgb;\n#elif DEBUGMODE==23 && defined(EMISSIVE)\ncolor=emissiveColorTex.rgb;\n#ifndef GAMMAEMISSIVE\n#define DEBUGMODE_GAMMA\n#endif\n#elif DEBUGMODE==24 && defined(LIGHTMAP)\ncolor=lightmapColor;\n#ifndef GAMMALIGHTMAP\n#define DEBUGMODE_GAMMA\n#endif\n#elif DEBUGMODE==25 && defined(REFLECTIVITY) && defined(METALLICWORKFLOW)\ncolor=reflectivityOut.surfaceMetallicColorMap.rgb;\n#elif DEBUGMODE==26 && defined(REFLECTIVITY) && !defined(METALLICWORKFLOW)\ncolor=reflectivityOut.surfaceReflectivityColorMap.rgb;\n#define DEBUGMODE_GAMMA\n#elif DEBUGMODE==27 && defined(CLEARCOAT) && defined(CLEARCOAT_TEXTURE)\ncolor= vec3f(clearcoatOut.clearCoatMapData.rg,0.0);\n#elif DEBUGMODE==28 && defined(CLEARCOAT) && defined(CLEARCOAT_TINT) && defined(CLEARCOAT_TINT_TEXTURE)\ncolor=clearcoatOut.clearCoatTintMapData.rgb;\n#elif DEBUGMODE==29 && defined(SHEEN) && defined(SHEEN_TEXTURE)\ncolor=sheenOut.sheenMapData.rgb;\n#elif DEBUGMODE==30 && defined(ANISOTROPIC) && defined(ANISOTROPIC_TEXTURE)\ncolor=anisotropicOut.anisotropyMapData.rgb;\n#elif DEBUGMODE==31 && defined(SUBSURFACE) && defined(SS_THICKNESSANDMASK_TEXTURE)\ncolor=subSurfaceOut.thicknessMap.rgb;\n#elif DEBUGMODE==32 && defined(BUMP)\ncolor=texture2D(bumpSampler,vBumpUV).rgb;\n#elif DEBUGMODE==40 && defined(SS_REFRACTION)\ncolor=subSurfaceOut.environmentRefraction.rgb;\n#define DEBUGMODE_GAMMA\n#elif DEBUGMODE==41 && defined(REFLECTION)\ncolor=reflectionOut.environmentRadiance.rgb;\n#ifndef GAMMAREFLECTION\n#define DEBUGMODE_GAMMA\n#endif\n#elif DEBUGMODE==42 && defined(CLEARCOAT) && defined(REFLECTION)\ncolor=clearcoatOut.environmentClearCoatRadiance.rgb;\n#define DEBUGMODE_GAMMA\n#elif DEBUGMODE==50\ncolor=diffuseBase.rgb;\n#define DEBUGMODE_GAMMA\n#elif DEBUGMODE==51 && defined(SPECULARTERM)\ncolor=specularBase.rgb;\n#define DEBUGMODE_GAMMA\n#elif DEBUGMODE==52 && defined(CLEARCOAT)\ncolor=clearCoatBase.rgb;\n#define DEBUGMODE_GAMMA\n#elif DEBUGMODE==53 && defined(SHEEN)\ncolor=sheenBase.rgb;\n#define DEBUGMODE_GAMMA\n#elif DEBUGMODE==54 && defined(REFLECTION)\ncolor=reflectionOut.environmentIrradiance.rgb;\n#ifndef GAMMAREFLECTION\n#define DEBUGMODE_GAMMA\n#endif\n#elif DEBUGMODE==60\ncolor=surfaceAlbedo.rgb;\n#define DEBUGMODE_GAMMA\n#elif DEBUGMODE==61\ncolor=clearcoatOut.specularEnvironmentR0;\n#define DEBUGMODE_GAMMA\n#elif DEBUGMODE==62 && defined(METALLICWORKFLOW)\ncolor= vec3f(reflectivityOut.metallicRoughness.r);\n#elif DEBUGMODE==71 && defined(METALLICWORKFLOW)\ncolor=reflectivityOut.metallicF0;\n#elif DEBUGMODE==63\ncolor= vec3f(roughness);\n#elif DEBUGMODE==64\ncolor= vec3f(alphaG);\n#elif DEBUGMODE==65\ncolor= vec3f(NdotV);\n#elif DEBUGMODE==66 && defined(CLEARCOAT) && defined(CLEARCOAT_TINT)\ncolor=clearcoatOut.clearCoatColor;\n#define DEBUGMODE_GAMMA\n#elif DEBUGMODE==67 && defined(CLEARCOAT)\ncolor= vec3f(clearcoatOut.clearCoatRoughness);\n#elif DEBUGMODE==68 && defined(CLEARCOAT)\ncolor= vec3f(clearcoatOut.clearCoatNdotV);\n#elif DEBUGMODE==69 && defined(SUBSURFACE) && defined(SS_TRANSLUCENCY)\ncolor=subSurfaceOut.transmittance;\n#elif DEBUGMODE==70 && defined(SUBSURFACE) && defined(SS_REFRACTION)\ncolor=subSurfaceOut.refractionTransmittance;\n#elif DEBUGMODE==72\ncolor= vec3f(microSurface);\n#elif DEBUGMODE==73\ncolor=vAlbedoColor;\n#define DEBUGMODE_GAMMA\n#elif DEBUGMODE==74 && !defined(METALLICWORKFLOW)\ncolor=vReflectivityColor;\n#define DEBUGMODE_GAMMA\n#elif DEBUGMODE==75\ncolor=vEmissiveColor;\n#define DEBUGMODE_GAMMA\n#elif DEBUGMODE==80 && defined(RADIANCEOCCLUSION)\ncolor= vec3f(seo);\n#elif DEBUGMODE==81 && defined(HORIZONOCCLUSION) && defined(BUMP) && defined(REFLECTIONMAP_3D)\ncolor= vec3f(eho);\n#elif DEBUGMODE==82 && defined(MS_BRDF_ENERGY_CONSERVATION)\ncolor= vec3f(energyConservationFactor);\n#elif DEBUGMODE==83 && defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX)\ncolor=specularEnvironmentReflectance;\n#define DEBUGMODE_GAMMA\n#elif DEBUGMODE==84 && defined(CLEARCOAT) && defined(ENVIRONMENTBRDF) && !defined(REFLECTIONMAP_SKYBOX)\ncolor=clearcoatOut.clearCoatEnvironmentReflectance;\n#define DEBUGMODE_GAMMA\n#elif DEBUGMODE==85 && defined(SHEEN) && defined(REFLECTION)\ncolor=sheenOut.sheenEnvironmentReflectance;\n#define DEBUGMODE_GAMMA\n#elif DEBUGMODE==86 && defined(ALPHABLEND)\ncolor= vec3f(luminanceOverAlpha);\n#elif DEBUGMODE==87\ncolor= vec3f(alpha);\n#elif DEBUGMODE==88 && defined(ALBEDO)\ncolor= vec3f(albedoTexture.a);\n#elif DEBUGMODE==89\ncolor=aoOut.ambientOcclusionColor;\n#else\nvar stripeWidth: f32=30.;var stripePos: f32=floor((input.position.x+input.position.y)/stripeWidth);var whichColor: f32=((stripePos)%(2.));var color1: vec3f= vec3f(.6,.2,.2);var color2: vec3f= vec3f(.3,.1,.1);color=mix(color1,color2,whichColor);\n#endif\ncolor*=uniforms.vDebugMode.y;\n#ifdef DEBUGMODE_NORMALIZE\ncolor=normalize(color)*0.5+0.5;\n#endif\n#ifdef DEBUGMODE_GAMMA\ncolor=toGammaSpaceVec3(color);\n#endif\nfragmentOutputs.color=vec4f(color,1.0);\n#ifdef PREPASS\nfragmentOutputs.fragData0=toLinearSpace(color); \nfragmentOutputs.fragData1=vec4f(0.,0.,0.,0.); \n#endif\n#ifdef DEBUGMODE_FORCERETURN\nreturn fragmentOutputs;\n#endif\n}\n#endif\n`;\n// Sideeffect\nShaderStore.IncludesShadersStoreWGSL[name] = shader;\n/** @internal */\nexport const pbrDebug = { name, shader };\n"]}
@@ -0,0 +1,5 @@
1
+ /** @internal */
2
+ export declare const pbrDirectLightingFalloffFunctions: {
3
+ name: string;
4
+ shader: string;
5
+ };