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