@babylonjs/core 6.4.1 → 6.5.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/animation.d.ts +4 -0
- package/Animations/animation.js +13 -1
- package/Animations/animation.js.map +1 -1
- package/Animations/runtimeAnimation.js +9 -1
- package/Animations/runtimeAnimation.js.map +1 -1
- package/Audio/sound.js +3 -1
- package/Audio/sound.js.map +1 -1
- package/Bones/boneLookController.d.ts +5 -0
- package/Bones/boneLookController.js +17 -3
- package/Bones/boneLookController.js.map +1 -1
- package/Engines/Processors/iShaderProcessor.d.ts +1 -0
- package/Engines/Processors/iShaderProcessor.js.map +1 -1
- package/Engines/Processors/shaderCodeNode.js +3 -2
- package/Engines/Processors/shaderCodeNode.js.map +1 -1
- package/Engines/Processors/shaderProcessor.d.ts +1 -0
- package/Engines/Processors/shaderProcessor.js +45 -44
- package/Engines/Processors/shaderProcessor.js.map +1 -1
- package/Engines/WebGL/webGL2ShaderProcessors.d.ts +1 -0
- package/Engines/WebGL/webGL2ShaderProcessors.js +4 -0
- package/Engines/WebGL/webGL2ShaderProcessors.js.map +1 -1
- package/Engines/WebGPU/webgpuDrawContext.js +1 -1
- package/Engines/WebGPU/webgpuDrawContext.js.map +1 -1
- package/Engines/WebGPU/webgpuShaderProcessorsGLSL.d.ts +1 -0
- package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js +16 -7
- package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js.map +1 -1
- package/Engines/engine.js +4 -4
- package/Engines/engine.js.map +1 -1
- package/Engines/thinEngine.js +2 -2
- package/Engines/thinEngine.js.map +1 -1
- package/Layers/layer.d.ts +5 -0
- package/Layers/layer.js +16 -6
- package/Layers/layer.js.map +1 -1
- package/Lights/Shadows/cascadedShadowGenerator.js +14 -2
- package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
- package/Lights/Shadows/shadowGenerator.js +1 -0
- package/Lights/Shadows/shadowGenerator.js.map +1 -1
- package/Materials/Node/Blocks/PBR/anisotropyBlock.d.ts +4 -0
- package/Materials/Node/Blocks/PBR/anisotropyBlock.js +10 -0
- package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
- package/Materials/Node/Blocks/curveBlock.d.ts +97 -0
- package/Materials/Node/Blocks/curveBlock.js +287 -0
- package/Materials/Node/Blocks/curveBlock.js.map +1 -0
- package/Materials/Node/Blocks/index.d.ts +1 -0
- package/Materials/Node/Blocks/index.js +1 -0
- package/Materials/Node/Blocks/index.js.map +1 -1
- package/Materials/PBR/pbrAnisotropicConfiguration.d.ts +26 -0
- package/Materials/PBR/pbrAnisotropicConfiguration.js +47 -0
- package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
- package/Materials/Textures/multiRenderTarget.js +1 -2
- package/Materials/Textures/multiRenderTarget.js.map +1 -1
- package/Materials/Textures/renderTargetTexture.d.ts +6 -1
- package/Materials/Textures/renderTargetTexture.js +5 -3
- package/Materials/Textures/renderTargetTexture.js.map +1 -1
- package/Materials/materialDefines.js +1 -0
- package/Materials/materialDefines.js.map +1 -1
- package/Meshes/Builders/textBuilder.d.ts +2 -1
- package/Meshes/Builders/textBuilder.js +14 -2
- package/Meshes/Builders/textBuilder.js.map +1 -1
- package/Meshes/WebGPU/webgpuDataBuffer.d.ts +1 -1
- package/Meshes/WebGPU/webgpuDataBuffer.js +2 -1
- package/Meshes/WebGPU/webgpuDataBuffer.js.map +1 -1
- package/Meshes/mesh.js +10 -8
- package/Meshes/mesh.js.map +1 -1
- package/Meshes/transformNode.js +4 -0
- package/Meshes/transformNode.js.map +1 -1
- package/Misc/assetsManager.d.ts +78 -0
- package/Misc/assetsManager.js +60 -1
- package/Misc/assetsManager.js.map +1 -1
- package/Misc/filesInput.d.ts +1 -1
- package/Misc/filesInput.js +5 -5
- package/Misc/filesInput.js.map +1 -1
- package/Physics/v2/Plugins/havokPlugin.js +2 -2
- package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
- package/Physics/v2/physicsAggregate.d.ts +1 -0
- package/Physics/v2/physicsAggregate.js +6 -5
- package/Physics/v2/physicsAggregate.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.d.ts +10 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.js +77 -10
- package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.js.map +1 -1
- package/Rendering/depthRenderer.js +1 -0
- package/Rendering/depthRenderer.js.map +1 -1
- package/Rendering/prePassRenderer.d.ts +4 -0
- package/Rendering/prePassRenderer.js +14 -1
- package/Rendering/prePassRenderer.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockAnisotropic.js +6 -3
- package/Shaders/ShadersInclude/pbrBlockAnisotropic.js.map +1 -1
- package/Shaders/ShadersInclude/pbrHelperFunctions.js +4 -1
- package/Shaders/ShadersInclude/pbrHelperFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/screenSpaceRayTrace.js +4 -1
- package/Shaders/ShadersInclude/screenSpaceRayTrace.js.map +1 -1
- package/Shaders/glowMapGeneration.fragment.js +1 -1
- package/Shaders/glowMapGeneration.fragment.js.map +1 -1
- package/Shaders/pbr.fragment.js +1 -1
- package/Shaders/pbr.fragment.js.map +1 -1
- package/Shaders/screenSpaceReflection2.fragment.d.ts +1 -0
- package/Shaders/screenSpaceReflection2.fragment.js +16 -10
- package/Shaders/screenSpaceReflection2.fragment.js.map +1 -1
- package/Shaders/screenSpaceReflection2BlurCombiner.fragment.d.ts +2 -0
- package/Shaders/screenSpaceReflection2BlurCombiner.fragment.js +13 -2
- package/Shaders/screenSpaceReflection2BlurCombiner.fragment.js.map +1 -1
- package/package.json +1 -1
- package/scene.js +24 -13
- package/scene.js.map +1 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// Do not edit.
|
|
2
2
|
import { ShaderStore } from "../Engines/shaderStore.js";
|
|
3
3
|
import "./ShadersInclude/helperFunctions.js";
|
|
4
|
+
import "./ShadersInclude/pbrBRDFFunctions.js";
|
|
4
5
|
import "./ShadersInclude/screenSpaceRayTrace.js";
|
|
5
6
|
const name = "screenSpaceReflection2PixelShader";
|
|
6
7
|
const shader = `#if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)
|
|
@@ -18,11 +19,9 @@ uniform samplerCube envCubeSampler;
|
|
|
18
19
|
uniform vec3 vReflectionPosition;
|
|
19
20
|
#endif
|
|
20
21
|
uniform mat4 view;
|
|
22
|
+
#include<pbrBRDFFunctions>
|
|
21
23
|
#include<screenSpaceRayTrace>
|
|
22
|
-
vec3
|
|
23
|
-
ndc.z=-projection[2].z-projection[3].z/depth;
|
|
24
|
-
ndc.z=projection[2].z+projection[3].z/depth;
|
|
25
|
-
ndc.w=1.0;
|
|
24
|
+
vec3 hash(vec3 a)
|
|
26
25
|
vec2 dCoords=smoothstep(0.2,0.6,abs(vec2(0.5,0.5)-hitUV.xy));
|
|
27
26
|
#ifdef SSR_ATTENUATE_INTERSECTION_DISTANCE
|
|
28
27
|
attenuation*=1.0-clamp(distance(vsRayOrigin,vsHitPoint)/maxRayDistance,0.0,1.0);
|
|
@@ -32,12 +31,14 @@ attenuation*=1.0-(numIterations/maxSteps);
|
|
|
32
31
|
vec3 reflectionNormal=texelFetch(normalSampler,hitPixel,0).xyz;
|
|
33
32
|
return attenuation;
|
|
34
33
|
void main()
|
|
35
|
-
vec4 colorFull=TEXTUREFUNC(textureSampler,vUV,0.0);
|
|
34
|
+
vec4 colorFull=TEXTUREFUNC(textureSampler,vUV,0.0);
|
|
35
|
+
if (max(reflectivity.r,max(reflectivity.g,reflectivity.b))<=reflectivityThreshold) {
|
|
36
36
|
gl_FragColor=vec4(0.);
|
|
37
37
|
gl_FragColor=colorFull;
|
|
38
|
-
return;
|
|
38
|
+
return;
|
|
39
|
+
#ifdef SSR_INPUT_IS_GAMMA_SPACE
|
|
39
40
|
color=toLinearSpace(color);
|
|
40
|
-
vec2 texSize=vec2(textureSize(depthSampler,0));
|
|
41
|
+
vec2 texSize=vec2(textureSize(depthSampler,0));
|
|
41
42
|
vec3 wReflectedVector=vec3(invView*vec4(csReflectedVector,0.0));
|
|
42
43
|
vec4 worldPos=invView*vec4(csPosition,1.0);
|
|
43
44
|
#ifdef SSR_INVERTCUBICMAP
|
|
@@ -61,11 +62,16 @@ thickness,
|
|
|
61
62
|
,debugColor
|
|
62
63
|
);
|
|
63
64
|
gl_FragColor=vec4(debugColor,1.);
|
|
64
|
-
vec3 F0=reflectivity.rgb;
|
|
65
|
+
vec3 F0=reflectivity.rgb;
|
|
65
66
|
reflectedColor=toLinearSpace(reflectedColor);
|
|
66
|
-
reflectionAttenuation*=computeAttenuationForIntersection(ivec2(hitPixel),hitPixel/texSize,csPosition,hitPoint,csReflectedVector,maxDistance,numIterations);
|
|
67
|
+
reflectionAttenuation*=computeAttenuationForIntersection(ivec2(hitPixel),hitPixel/texSize,csPosition,hitPoint,csReflectedVector,maxDistance,numIterations);
|
|
68
|
+
SSR*=fresnel;
|
|
69
|
+
#ifdef SSR_USE_BLUR
|
|
67
70
|
float blur_radius=0.0;
|
|
68
|
-
|
|
71
|
+
#ifdef SSR_BLEND_WITH_FRESNEL
|
|
72
|
+
vec3 reflectionMultiplier=clamp(pow(fresnel*strength,vec3(reflectionSpecularFalloffExponent)),0.0,1.0);
|
|
73
|
+
vec3 reflectionMultiplier=clamp(pow(reflectivity.rgb*strength,vec3(reflectionSpecularFalloffExponent)),0.0,1.0);
|
|
74
|
+
vec3 colorMultiplier=1.0-reflectionMultiplier;
|
|
69
75
|
finalColor=toGammaSpace(finalColor);
|
|
70
76
|
gl_FragColor=vec4(finalColor,colorFull.a);
|
|
71
77
|
#else
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screenSpaceReflection2.fragment.js","sourceRoot":"","sources":["../../../../lts/core/generated/Shaders/screenSpaceReflection2.fragment.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,kCAAkC,CAAC;AAC1C,OAAO,sCAAsC,CAAC;AAE9C,MAAM,IAAI,GAAG,mCAAmC,CAAC;AACjD,MAAM,MAAM,GAAG
|
|
1
|
+
{"version":3,"file":"screenSpaceReflection2.fragment.js","sourceRoot":"","sources":["../../../../lts/core/generated/Shaders/screenSpaceReflection2.fragment.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,kCAAkC,CAAC;AAC1C,OAAO,mCAAmC,CAAC;AAC3C,OAAO,sCAAsC,CAAC;AAE9C,MAAM,IAAI,GAAG,mCAAmC,CAAC;AACjD,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiNd,CAAC;AACF,aAAa;AACb,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACxC,gBAAgB;AAChB,MAAM,CAAC,MAAM,iCAAiC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../Engines/shaderStore\";\nimport \"./ShadersInclude/helperFunctions\";\nimport \"./ShadersInclude/pbrBRDFFunctions\";\nimport \"./ShadersInclude/screenSpaceRayTrace\";\n\nconst name = \"screenSpaceReflection2PixelShader\";\nconst shader = `#if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)\n#define TEXTUREFUNC(s,c,lod) texture2DLodEXT(s,c,lod)\n#define TEXTURECUBEFUNC(s,c,lod) textureLod(s,c,lod)\n#else\n#define TEXTUREFUNC(s,c,bias) texture2D(s,c,bias)\n#define TEXTURECUBEFUNC(s,c,bias) textureCube(s,c,bias)\n#endif\nuniform sampler2D textureSampler;\rvarying vec2 vUV;\r#ifdef SSR_SUPPORTED\nuniform sampler2D reflectivitySampler;\runiform sampler2D normalSampler;\runiform sampler2D depthSampler;\r#ifdef SSRAYTRACE_USE_BACK_DEPTHBUFFER\nuniform sampler2D backDepthSampler;\runiform float backSizeFactor;\r#endif\n#ifdef SSR_USE_ENVIRONMENT_CUBE\nuniform samplerCube envCubeSampler;\r#ifdef SSR_USE_LOCAL_REFLECTIONMAP_CUBIC\nuniform vec3 vReflectionPosition;\runiform vec3 vReflectionSize;\r#endif\n#endif\nuniform mat4 view;\runiform mat4 invView;\runiform mat4 projection;\runiform mat4 invProjectionMatrix;\runiform mat4 projectionPixel;\runiform float nearPlaneZ;\runiform float stepSize;\runiform float maxSteps;\runiform float strength;\runiform float thickness;\runiform float roughnessFactor;\runiform float reflectionSpecularFalloffExponent;\runiform float maxDistance;\runiform float selfCollisionNumSkip;\runiform float reflectivityThreshold;\r#include<helperFunctions>\n#include<pbrBRDFFunctions>\n#include<screenSpaceRayTrace>\nvec3 hash(vec3 a)\r{\ra=fract(a*0.8);\ra+=dot(a,a.yxz+19.19);\rreturn fract((a.xxy+a.yxx)*a.zyx);\r}\rfloat computeAttenuationForIntersection(ivec2 hitPixel,vec2 hitUV,vec3 vsRayOrigin,vec3 vsHitPoint,vec3 reflectionVector,float maxRayDistance,float numIterations) {\rfloat attenuation=1.0;\r#ifdef SSR_ATTENUATE_SCREEN_BORDERS\nvec2 dCoords=smoothstep(0.2,0.6,abs(vec2(0.5,0.5)-hitUV.xy));\rattenuation*=clamp(1.0-(dCoords.x+dCoords.y),0.0,1.0);\r#endif\n#ifdef SSR_ATTENUATE_INTERSECTION_DISTANCE\nattenuation*=1.0-clamp(distance(vsRayOrigin,vsHitPoint)/maxRayDistance,0.0,1.0);\r#endif\n#ifdef SSR_ATTENUATE_INTERSECTION_NUMITERATIONS\nattenuation*=1.0-(numIterations/maxSteps);\r#endif\n#ifdef SSR_ATTENUATE_BACKFACE_REFLECTION\nvec3 reflectionNormal=texelFetch(normalSampler,hitPixel,0).xyz;\rfloat directionBasedAttenuation=smoothstep(-0.17,0.0,dot(reflectionNormal,-reflectionVector));\rattenuation*=directionBasedAttenuation;\r#endif\nreturn attenuation;\r}\r#endif\nvoid main()\r{\r#ifdef SSR_SUPPORTED\nvec4 colorFull=TEXTUREFUNC(textureSampler,vUV,0.0);\rvec3 color=colorFull.rgb;\rvec4 reflectivity=TEXTUREFUNC(reflectivitySampler,vUV,0.0);\r#ifndef SSR_DISABLE_REFLECTIVITY_TEST\nif (max(reflectivity.r,max(reflectivity.g,reflectivity.b))<=reflectivityThreshold) {\r#ifdef SSR_USE_BLUR\ngl_FragColor=vec4(0.);\r#else\ngl_FragColor=colorFull;\r#endif\nreturn;\r}\r#endif\n#ifdef SSR_INPUT_IS_GAMMA_SPACE\ncolor=toLinearSpace(color);\r#endif\nvec2 texSize=vec2(textureSize(depthSampler,0));\rvec3 csNormal=texelFetch(normalSampler,ivec2(vUV*texSize),0).xyz; \rfloat depth=texelFetch(depthSampler,ivec2(vUV*texSize),0).r;\rvec3 csPosition=computeViewPosFromUVDepth(vUV,depth,projection,invProjectionMatrix);\rvec3 csViewDirection=normalize(csPosition);\rvec3 csReflectedVector=reflect(csViewDirection,csNormal);\r#ifdef SSR_USE_ENVIRONMENT_CUBE\nvec3 wReflectedVector=vec3(invView*vec4(csReflectedVector,0.0));\r#ifdef SSR_USE_LOCAL_REFLECTIONMAP_CUBIC\nvec4 worldPos=invView*vec4(csPosition,1.0);\rwReflectedVector=parallaxCorrectNormal(worldPos.xyz,normalize(wReflectedVector),vReflectionSize,vReflectionPosition);\r#endif\n#ifdef SSR_INVERTCUBICMAP\nwReflectedVector.y*=-1.0;\r#endif\n#ifdef SSRAYTRACE_RIGHT_HANDED_SCENE\nwReflectedVector.z*=-1.0;\r#endif\nvec3 envColor=TEXTURECUBEFUNC(envCubeSampler,wReflectedVector,0.0).xyz;\r#ifdef SSR_ENVIRONMENT_CUBE_IS_GAMMASPACE\nenvColor=toLinearSpace(envColor);\r#endif\n#else\nvec3 envColor=color;\r#endif\nfloat reflectionAttenuation=1.0;\rbool rayHasHit=false;\rvec2 startPixel;\rvec2 hitPixel;\rvec3 hitPoint;\rfloat numIterations;\r#ifdef SSRAYTRACE_DEBUG\nvec3 debugColor;\r#endif\n#ifdef SSR_ATTENUATE_FACING_CAMERA\nreflectionAttenuation*=1.0-smoothstep(0.25,0.5,dot(-csViewDirection,csReflectedVector));\r#endif\nif (reflectionAttenuation>0.0) {\r#ifdef SSR_USE_BLUR\nvec3 jitt=vec3(0.);\r#else\nfloat roughness=1.0-reflectivity.a;\rvec3 jitt=mix(vec3(0.0),hash(csPosition)-vec3(0.5),roughness)*roughnessFactor; \r#endif\nvec2 uv2=vUV*texSize;\rfloat c=(uv2.x+uv2.y)*0.25;\rfloat jitter=mod(c,1.0); \rrayHasHit=traceScreenSpaceRay1(\rcsPosition,\rnormalize(csReflectedVector+jitt),\rprojectionPixel,\rdepthSampler,\rtexSize,\r#ifdef SSRAYTRACE_USE_BACK_DEPTHBUFFER\nbackDepthSampler,\rbackSizeFactor,\r#endif\nthickness,\rnearPlaneZ,\rstepSize,\rjitter,\rmaxSteps,\rmaxDistance,\rselfCollisionNumSkip,\rstartPixel,\rhitPixel,\rhitPoint,\rnumIterations\r#ifdef SSRAYTRACE_DEBUG\n,debugColor\r#endif\n);\r}\r#ifdef SSRAYTRACE_DEBUG\ngl_FragColor=vec4(debugColor,1.);\rreturn;\r#endif\nvec3 F0=reflectivity.rgb;\rvec3 fresnel=fresnelSchlickGGX(max(dot(csNormal,-csViewDirection),0.0),F0,vec3(1.));\rvec3 SSR=envColor;\rif (rayHasHit) {\rvec3 reflectedColor=texelFetch(textureSampler,ivec2(hitPixel),0).rgb;\r#ifdef SSR_INPUT_IS_GAMMA_SPACE\nreflectedColor=toLinearSpace(reflectedColor);\r#endif\nreflectionAttenuation*=computeAttenuationForIntersection(ivec2(hitPixel),hitPixel/texSize,csPosition,hitPoint,csReflectedVector,maxDistance,numIterations);\rSSR=reflectedColor*reflectionAttenuation+(1.0-reflectionAttenuation)*envColor;\r}\r#ifndef SSR_BLEND_WITH_FRESNEL\nSSR*=fresnel;\r#endif\n#ifdef SSR_USE_BLUR\nfloat blur_radius=0.0;\rfloat roughness=1.0-reflectivity.a*(1.0-roughnessFactor);\rif (roughness>0.001) {\rfloat cone_angle=min(roughness,0.999)*3.14159265*0.5;\rfloat cone_len=distance(startPixel,hitPixel);\rfloat op_len=2.0*tan(cone_angle)*cone_len; \rfloat a=op_len;\rfloat h=cone_len;\rfloat a2=a*a;\rfloat fh2=4.0f*h*h;\rblur_radius=(a*(sqrt(a2+fh2)-a))/(4.0f*h);\r}\rgl_FragColor=vec4(SSR,blur_radius/255.0); \r#else\n#ifdef SSR_BLEND_WITH_FRESNEL\nvec3 reflectionMultiplier=clamp(pow(fresnel*strength,vec3(reflectionSpecularFalloffExponent)),0.0,1.0);\r#else\nvec3 reflectionMultiplier=clamp(pow(reflectivity.rgb*strength,vec3(reflectionSpecularFalloffExponent)),0.0,1.0);\r#endif\nvec3 colorMultiplier=1.0-reflectionMultiplier;\rvec3 finalColor=(color*colorMultiplier)+(SSR*reflectionMultiplier);\r#ifdef SSR_OUTPUT_IS_GAMMA_SPACE\nfinalColor=toGammaSpace(finalColor);\r#endif\ngl_FragColor=vec4(finalColor,colorFull.a);\r#endif\n#else\ngl_FragColor=TEXTUREFUNC(textureSampler,vUV,0.0);\r#endif\n}\r`;\n// Sideeffect\nShaderStore.ShadersStore[name] = shader;\n/** @internal */\nexport const screenSpaceReflection2PixelShader = { name, shader };\n"]}
|
|
@@ -1,13 +1,24 @@
|
|
|
1
1
|
// Do not edit.
|
|
2
2
|
import { ShaderStore } from "../Engines/shaderStore.js";
|
|
3
3
|
import "./ShadersInclude/helperFunctions.js";
|
|
4
|
+
import "./ShadersInclude/pbrBRDFFunctions.js";
|
|
5
|
+
import "./ShadersInclude/screenSpaceRayTrace.js";
|
|
4
6
|
const name = "screenSpaceReflection2BlurCombinerPixelShader";
|
|
5
7
|
const shader = `uniform sampler2D textureSampler;
|
|
8
|
+
#ifdef SSR_BLEND_WITH_FRESNEL
|
|
9
|
+
#include<pbrBRDFFunctions>
|
|
10
|
+
#include<screenSpaceRayTrace>
|
|
11
|
+
uniform mat4 projection;
|
|
6
12
|
void main()
|
|
7
13
|
gl_FragColor=texture2D(textureSampler,vUV);
|
|
8
|
-
vec3 SSR=texture2D(textureSampler,vUV).rgb;
|
|
14
|
+
vec3 SSR=texture2D(textureSampler,vUV).rgb;
|
|
15
|
+
if (max(reflectivity.r,max(reflectivity.g,reflectivity.b))<=reflectivityThreshold) {
|
|
16
|
+
#ifdef SSR_INPUT_IS_GAMMA_SPACE
|
|
9
17
|
color=toLinearSpace(color);
|
|
10
|
-
|
|
18
|
+
#ifdef SSR_BLEND_WITH_FRESNEL
|
|
19
|
+
vec2 texSize=vec2(textureSize(depthSampler,0));
|
|
20
|
+
vec3 reflectionMultiplier=clamp(pow(reflectivity.rgb*strength,vec3(reflectionSpecularFalloffExponent)),0.0,1.0);
|
|
21
|
+
vec3 colorMultiplier=1.0-reflectionMultiplier;
|
|
11
22
|
finalColor=toGammaSpace(finalColor);
|
|
12
23
|
gl_FragColor=vec4(finalColor,color.a);
|
|
13
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screenSpaceReflection2BlurCombiner.fragment.js","sourceRoot":"","sources":["../../../../lts/core/generated/Shaders/screenSpaceReflection2BlurCombiner.fragment.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"screenSpaceReflection2BlurCombiner.fragment.js","sourceRoot":"","sources":["../../../../lts/core/generated/Shaders/screenSpaceReflection2BlurCombiner.fragment.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,kCAAkC,CAAC;AAC1C,OAAO,mCAAmC,CAAC;AAC3C,OAAO,sCAAsC,CAAC;AAE9C,MAAM,IAAI,GAAG,+CAA+C,CAAC;AAC7D,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqDd,CAAC;AACF,aAAa;AACb,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACxC,gBAAgB;AAChB,MAAM,CAAC,MAAM,6CAA6C,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../Engines/shaderStore\";\nimport \"./ShadersInclude/helperFunctions\";\nimport \"./ShadersInclude/pbrBRDFFunctions\";\nimport \"./ShadersInclude/screenSpaceRayTrace\";\n\nconst name = \"screenSpaceReflection2BlurCombinerPixelShader\";\nconst shader = `uniform sampler2D textureSampler; \runiform sampler2D mainSampler;\runiform sampler2D reflectivitySampler;\runiform float strength;\runiform float reflectionSpecularFalloffExponent;\runiform float reflectivityThreshold;\rvarying vec2 vUV;\r#include<helperFunctions>\n#ifdef SSR_BLEND_WITH_FRESNEL\n#include<pbrBRDFFunctions>\n#include<screenSpaceRayTrace>\nuniform mat4 projection;\runiform mat4 invProjectionMatrix;\runiform sampler2D normalSampler;\runiform sampler2D depthSampler;\r#endif\nvoid main()\r{\r#ifdef SSRAYTRACE_DEBUG\ngl_FragColor=texture2D(textureSampler,vUV);\r#else\nvec3 SSR=texture2D(textureSampler,vUV).rgb;\rvec4 color=texture2D(mainSampler,vUV);\rvec4 reflectivity=texture2D(reflectivitySampler,vUV);\r#ifndef SSR_DISABLE_REFLECTIVITY_TEST\nif (max(reflectivity.r,max(reflectivity.g,reflectivity.b))<=reflectivityThreshold) {\rgl_FragColor=color;\rreturn;\r}\r#endif\n#ifdef SSR_INPUT_IS_GAMMA_SPACE\ncolor=toLinearSpace(color);\r#endif\n#ifdef SSR_BLEND_WITH_FRESNEL\nvec2 texSize=vec2(textureSize(depthSampler,0));\rvec3 csNormal=texelFetch(normalSampler,ivec2(vUV*texSize),0).xyz;\rfloat depth=texelFetch(depthSampler,ivec2(vUV*texSize),0).r;\rvec3 csPosition=computeViewPosFromUVDepth(vUV,depth,projection,invProjectionMatrix);\rvec3 csViewDirection=normalize(csPosition);\rvec3 F0=reflectivity.rgb;\rvec3 fresnel=fresnelSchlickGGX(max(dot(csNormal,-csViewDirection),0.0),F0,vec3(1.));\rvec3 reflectionMultiplier=clamp(pow(fresnel*strength,vec3(reflectionSpecularFalloffExponent)),0.0,1.0);\r#else\nvec3 reflectionMultiplier=clamp(pow(reflectivity.rgb*strength,vec3(reflectionSpecularFalloffExponent)),0.0,1.0);\r#endif\nvec3 colorMultiplier=1.0-reflectionMultiplier;\rvec3 finalColor=(color.rgb*colorMultiplier)+(SSR*reflectionMultiplier);\r#ifdef SSR_OUTPUT_IS_GAMMA_SPACE\nfinalColor=toGammaSpace(finalColor);\r#endif\ngl_FragColor=vec4(finalColor,color.a);\r#endif\n}\r`;\n// Sideeffect\nShaderStore.ShadersStore[name] = shader;\n/** @internal */\nexport const screenSpaceReflection2BlurCombinerPixelShader = { name, shader };\n"]}
|
package/package.json
CHANGED
package/scene.js
CHANGED
|
@@ -1450,16 +1450,21 @@ export class Scene extends AbstractScene {
|
|
|
1450
1450
|
* @returns true if all required resources are ready
|
|
1451
1451
|
*/
|
|
1452
1452
|
isReady(checkRenderTargets = true) {
|
|
1453
|
+
var _a, _b, _c;
|
|
1453
1454
|
if (this._isDisposed) {
|
|
1454
1455
|
return false;
|
|
1455
1456
|
}
|
|
1456
1457
|
let index;
|
|
1457
1458
|
const engine = this.getEngine();
|
|
1459
|
+
const currentRenderPassId = engine.currentRenderPassId;
|
|
1460
|
+
engine.currentRenderPassId = (_b = (_a = this.activeCamera) === null || _a === void 0 ? void 0 : _a.renderPassId) !== null && _b !== void 0 ? _b : currentRenderPassId;
|
|
1458
1461
|
let isReady = true;
|
|
1459
1462
|
// Pending data
|
|
1460
1463
|
if (this._pendingData.length > 0) {
|
|
1461
1464
|
isReady = false;
|
|
1462
1465
|
}
|
|
1466
|
+
// Ensures that the pre-pass renderer is enabled if it is to be enabled.
|
|
1467
|
+
(_c = this.prePassRenderer) === null || _c === void 0 ? void 0 : _c.update();
|
|
1463
1468
|
// Meshes
|
|
1464
1469
|
if (checkRenderTargets) {
|
|
1465
1470
|
this._processedMaterials.reset();
|
|
@@ -1512,19 +1517,12 @@ export class Scene extends AbstractScene {
|
|
|
1512
1517
|
}
|
|
1513
1518
|
}
|
|
1514
1519
|
}
|
|
1515
|
-
if (!isReady) {
|
|
1516
|
-
return false;
|
|
1517
|
-
}
|
|
1518
|
-
// Effects
|
|
1519
|
-
if (!engine.areAllEffectsReady()) {
|
|
1520
|
-
return false;
|
|
1521
|
-
}
|
|
1522
1520
|
// Render targets
|
|
1523
1521
|
if (checkRenderTargets) {
|
|
1524
1522
|
for (index = 0; index < this._materialsRenderTargets.length; ++index) {
|
|
1525
1523
|
const rtt = this._materialsRenderTargets.data[index];
|
|
1526
1524
|
if (!rtt.isReadyForRendering()) {
|
|
1527
|
-
|
|
1525
|
+
isReady = false;
|
|
1528
1526
|
}
|
|
1529
1527
|
}
|
|
1530
1528
|
}
|
|
@@ -1532,29 +1530,42 @@ export class Scene extends AbstractScene {
|
|
|
1532
1530
|
for (index = 0; index < this.geometries.length; index++) {
|
|
1533
1531
|
const geometry = this.geometries[index];
|
|
1534
1532
|
if (geometry.delayLoadState === 2) {
|
|
1535
|
-
|
|
1533
|
+
isReady = false;
|
|
1536
1534
|
}
|
|
1537
1535
|
}
|
|
1538
1536
|
// Post-processes
|
|
1539
1537
|
if (this.activeCameras && this.activeCameras.length > 0) {
|
|
1540
1538
|
for (const camera of this.activeCameras) {
|
|
1541
1539
|
if (!camera.isReady(true)) {
|
|
1542
|
-
|
|
1540
|
+
isReady = false;
|
|
1543
1541
|
}
|
|
1544
1542
|
}
|
|
1545
1543
|
}
|
|
1546
1544
|
else if (this.activeCamera) {
|
|
1547
1545
|
if (!this.activeCamera.isReady(true)) {
|
|
1548
|
-
|
|
1546
|
+
isReady = false;
|
|
1549
1547
|
}
|
|
1550
1548
|
}
|
|
1551
1549
|
// Particles
|
|
1552
1550
|
for (const particleSystem of this.particleSystems) {
|
|
1553
1551
|
if (!particleSystem.isReady()) {
|
|
1554
|
-
|
|
1552
|
+
isReady = false;
|
|
1555
1553
|
}
|
|
1556
1554
|
}
|
|
1557
|
-
|
|
1555
|
+
// Layers
|
|
1556
|
+
if (this.layers) {
|
|
1557
|
+
for (const layer of this.layers) {
|
|
1558
|
+
if (!layer.isReady()) {
|
|
1559
|
+
isReady = false;
|
|
1560
|
+
}
|
|
1561
|
+
}
|
|
1562
|
+
}
|
|
1563
|
+
// Effects
|
|
1564
|
+
if (!engine.areAllEffectsReady()) {
|
|
1565
|
+
isReady = false;
|
|
1566
|
+
}
|
|
1567
|
+
engine.currentRenderPassId = currentRenderPassId;
|
|
1568
|
+
return isReady;
|
|
1558
1569
|
}
|
|
1559
1570
|
/** Resets all cached information relative to material (including effect and visibility) */
|
|
1560
1571
|
resetCachedMaterial() {
|