@babylonjs/core 7.16.0 → 7.17.0
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.
- package/Animations/animationGroup.d.ts +1 -0
- package/Animations/animationGroup.js +4 -1
- package/Animations/animationGroup.js.map +1 -1
- package/Collisions/gpuPicker.js +1 -1
- package/Collisions/gpuPicker.js.map +1 -1
- package/Compute/computeEffect.js +1 -1
- package/Compute/computeEffect.js.map +1 -1
- package/Engines/WebGPU/webgpuShaderProcessorsWGSL.d.ts +32 -0
- package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +32 -0
- package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
- package/Engines/abstractEngine.js +2 -2
- package/Engines/abstractEngine.js.map +1 -1
- package/Engines/engine.d.ts +1993 -1993
- package/Engines/nativeEngine.d.ts +7 -0
- package/Engines/nativeEngine.js +24 -1
- package/Engines/nativeEngine.js.map +1 -1
- package/Engines/thinEngine.js +2 -2
- package/Engines/thinEngine.js.map +1 -1
- package/Engines/webgpuEngine.js +5 -3
- package/Engines/webgpuEngine.js.map +1 -1
- package/Materials/Node/Blocks/Dual/clipPlanesBlock.js +6 -6
- package/Materials/Node/Blocks/Dual/clipPlanesBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +4 -7
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/textureBlock.js +1 -1
- package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
- package/Materials/Node/Blocks/Input/inputBlock.js +8 -11
- package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/anisotropyBlock.js +4 -4
- package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/clearCoatBlock.js +46 -40
- package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/iridescenceBlock.d.ts +2 -1
- package/Materials/Node/Blocks/PBR/iridescenceBlock.js +10 -9
- package/Materials/Node/Blocks/PBR/iridescenceBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.d.ts +1 -0
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +85 -69
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/reflectionBlock.js +54 -38
- package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/refractionBlock.js +8 -5
- package/Materials/Node/Blocks/PBR/refractionBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/sheenBlock.d.ts +2 -1
- package/Materials/Node/Blocks/PBR/sheenBlock.js +40 -32
- package/Materials/Node/Blocks/PBR/sheenBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/subSurfaceBlock.js +53 -45
- package/Materials/Node/Blocks/PBR/subSurfaceBlock.js.map +1 -1
- package/Materials/Node/nodeMaterial.d.ts +2 -1
- package/Materials/Node/nodeMaterial.js +4 -1
- package/Materials/Node/nodeMaterial.js.map +1 -1
- package/Materials/Node/nodeMaterialBuildState.d.ts +1 -0
- package/Materials/Node/nodeMaterialBuildState.js +12 -3
- package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
- package/Materials/effect.js +2 -2
- package/Materials/effect.js.map +1 -1
- package/Meshes/Builders/decalBuilder.js +14 -20
- package/Meshes/Builders/decalBuilder.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.d.ts +10 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.js +50 -11
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
- package/Meshes/Node/nodeGeometry.d.ts +6 -0
- package/Meshes/Node/nodeGeometry.js +7 -0
- package/Meshes/Node/nodeGeometry.js.map +1 -1
- package/Meshes/mesh.d.ts +1 -0
- package/Meshes/mesh.js +138 -134
- package/Meshes/mesh.js.map +1 -1
- package/Meshes/subMesh.js +1 -1
- package/Meshes/subMesh.js.map +1 -1
- package/Misc/khronosTextureContainer2.js +1 -1
- package/Misc/khronosTextureContainer2.js.map +1 -1
- package/Rendering/GlobalIllumination/giRSMManager.js +1 -1
- package/Rendering/GlobalIllumination/giRSMManager.js.map +1 -1
- package/Rendering/edgesRenderer.js +1 -1
- package/Rendering/edgesRenderer.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js +1 -1
- package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js.map +1 -1
- package/Shaders/ShadersInclude/lightFragment.js +3 -3
- package/Shaders/ShadersInclude/lightFragment.js.map +1 -1
- package/Shaders/ShadersInclude/lightsFragmentFunctions.js +1 -1
- package/Shaders/ShadersInclude/lightsFragmentFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockAlbedoOpacity.js +13 -14
- package/Shaders/ShadersInclude/pbrBlockAlbedoOpacity.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockAlphaFresnel.js +4 -5
- package/Shaders/ShadersInclude/pbrBlockAlphaFresnel.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockAmbientOcclusion.js +4 -5
- package/Shaders/ShadersInclude/pbrBlockAmbientOcclusion.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockAnisotropic.js +4 -5
- package/Shaders/ShadersInclude/pbrBlockAnisotropic.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockClearcoat.js +34 -35
- package/Shaders/ShadersInclude/pbrBlockClearcoat.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockIridescence.js +10 -11
- package/Shaders/ShadersInclude/pbrBlockIridescence.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockReflection.js +23 -24
- package/Shaders/ShadersInclude/pbrBlockReflection.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockReflectivity.js +12 -13
- package/Shaders/ShadersInclude/pbrBlockReflectivity.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockSheen.js +31 -32
- package/Shaders/ShadersInclude/pbrBlockSheen.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockSubSurface.js +43 -44
- package/Shaders/ShadersInclude/pbrBlockSubSurface.js.map +1 -1
- package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js +1 -1
- package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/pbrDirectLightingSetupFunctions.js +1 -1
- package/Shaders/ShadersInclude/pbrDirectLightingSetupFunctions.js.map +1 -1
- package/Shaders/pbr.fragment.js +143 -153
- package/Shaders/pbr.fragment.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/bumpFragmentMainFunctions.js +3 -3
- package/ShadersWGSL/ShadersInclude/bumpFragmentMainFunctions.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/decalFragment.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/decalFragment.js +18 -0
- package/ShadersWGSL/ShadersInclude/decalFragment.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/depthPrePass.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/depthPrePass.js +12 -0
- package/ShadersWGSL/ShadersInclude/depthPrePass.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/harmonicsFunctions.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/harmonicsFunctions.js +24 -0
- package/ShadersWGSL/ShadersInclude/harmonicsFunctions.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/hdrFilteringFunctions.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/hdrFilteringFunctions.js +39 -0
- package/ShadersWGSL/ShadersInclude/hdrFilteringFunctions.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/helperFunctions.js +6 -2
- package/ShadersWGSL/ShadersInclude/helperFunctions.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/imageProcessingFunctions.js +2 -2
- package/ShadersWGSL/ShadersInclude/imageProcessingFunctions.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/importanceSampling.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/importanceSampling.js +12 -0
- package/ShadersWGSL/ShadersInclude/importanceSampling.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/lightFragment.js +3 -3
- package/ShadersWGSL/ShadersInclude/lightFragment.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/lightsFragmentFunctions.js +1 -1
- package/ShadersWGSL/ShadersInclude/lightsFragmentFunctions.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/pbrBRDFFunctions.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/pbrBRDFFunctions.js +139 -0
- package/ShadersWGSL/ShadersInclude/pbrBRDFFunctions.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockAlbedoOpacity.d.ts +6 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockAlbedoOpacity.js +81 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockAlbedoOpacity.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockAlphaFresnel.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockAlphaFresnel.js +37 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockAlphaFresnel.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockAmbientOcclusion.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockAmbientOcclusion.js +35 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockAmbientOcclusion.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockAnisotropic.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockAnisotropic.js +46 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockAnisotropic.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockClearcoat.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockClearcoat.js +267 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockClearcoat.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockDirectLighting.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockDirectLighting.js +24 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockDirectLighting.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockFinalColorComposition.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockFinalColorComposition.js +51 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockFinalColorComposition.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockFinalLitComponents.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockFinalLitComponents.js +96 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockFinalLitComponents.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockFinalUnlitComponents.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockFinalUnlitComponents.js +26 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockFinalUnlitComponents.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockGeometryInfo.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockGeometryInfo.js +33 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockGeometryInfo.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockImageProcessing.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockImageProcessing.js +20 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockImageProcessing.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockIridescence.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockIridescence.js +51 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockIridescence.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockLightmapInit.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockLightmapInit.js +19 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockLightmapInit.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockNormalFinal.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockNormalFinal.js +19 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockNormalFinal.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockReflectance.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockReflectance.js +30 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockReflectance.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockReflectance0.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockReflectance0.js +18 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockReflectance0.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockReflection.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockReflection.js +277 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockReflection.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockReflectivity.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockReflectivity.js +120 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockReflectivity.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockSheen.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockSheen.js +195 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockSheen.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockSubSurface.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockSubSurface.js +425 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockSubSurface.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/pbrDebug.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/pbrDebug.js +193 -0
- package/ShadersWGSL/ShadersInclude/pbrDebug.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/pbrDirectLightingFalloffFunctions.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/pbrDirectLightingFalloffFunctions.js +43 -0
- package/ShadersWGSL/ShadersInclude/pbrDirectLightingFalloffFunctions.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js +68 -0
- package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/pbrDirectLightingSetupFunctions.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/pbrDirectLightingSetupFunctions.js +30 -0
- package/ShadersWGSL/ShadersInclude/pbrDirectLightingSetupFunctions.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/pbrHelperFunctions.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/pbrHelperFunctions.js +41 -0
- package/ShadersWGSL/ShadersInclude/pbrHelperFunctions.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/pbrIBLFunctions.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/pbrIBLFunctions.js +23 -0
- package/ShadersWGSL/ShadersInclude/pbrIBLFunctions.js.map +1 -0
- 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,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"]}
|