@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.
Files changed (103) hide show
  1. package/Animations/animation.d.ts +4 -0
  2. package/Animations/animation.js +13 -1
  3. package/Animations/animation.js.map +1 -1
  4. package/Animations/runtimeAnimation.js +9 -1
  5. package/Animations/runtimeAnimation.js.map +1 -1
  6. package/Audio/sound.js +3 -1
  7. package/Audio/sound.js.map +1 -1
  8. package/Bones/boneLookController.d.ts +5 -0
  9. package/Bones/boneLookController.js +17 -3
  10. package/Bones/boneLookController.js.map +1 -1
  11. package/Engines/Processors/iShaderProcessor.d.ts +1 -0
  12. package/Engines/Processors/iShaderProcessor.js.map +1 -1
  13. package/Engines/Processors/shaderCodeNode.js +3 -2
  14. package/Engines/Processors/shaderCodeNode.js.map +1 -1
  15. package/Engines/Processors/shaderProcessor.d.ts +1 -0
  16. package/Engines/Processors/shaderProcessor.js +45 -44
  17. package/Engines/Processors/shaderProcessor.js.map +1 -1
  18. package/Engines/WebGL/webGL2ShaderProcessors.d.ts +1 -0
  19. package/Engines/WebGL/webGL2ShaderProcessors.js +4 -0
  20. package/Engines/WebGL/webGL2ShaderProcessors.js.map +1 -1
  21. package/Engines/WebGPU/webgpuDrawContext.js +1 -1
  22. package/Engines/WebGPU/webgpuDrawContext.js.map +1 -1
  23. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.d.ts +1 -0
  24. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js +16 -7
  25. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js.map +1 -1
  26. package/Engines/engine.js +4 -4
  27. package/Engines/engine.js.map +1 -1
  28. package/Engines/thinEngine.js +2 -2
  29. package/Engines/thinEngine.js.map +1 -1
  30. package/Layers/layer.d.ts +5 -0
  31. package/Layers/layer.js +16 -6
  32. package/Layers/layer.js.map +1 -1
  33. package/Lights/Shadows/cascadedShadowGenerator.js +14 -2
  34. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  35. package/Lights/Shadows/shadowGenerator.js +1 -0
  36. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  37. package/Materials/Node/Blocks/PBR/anisotropyBlock.d.ts +4 -0
  38. package/Materials/Node/Blocks/PBR/anisotropyBlock.js +10 -0
  39. package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
  40. package/Materials/Node/Blocks/curveBlock.d.ts +97 -0
  41. package/Materials/Node/Blocks/curveBlock.js +287 -0
  42. package/Materials/Node/Blocks/curveBlock.js.map +1 -0
  43. package/Materials/Node/Blocks/index.d.ts +1 -0
  44. package/Materials/Node/Blocks/index.js +1 -0
  45. package/Materials/Node/Blocks/index.js.map +1 -1
  46. package/Materials/PBR/pbrAnisotropicConfiguration.d.ts +26 -0
  47. package/Materials/PBR/pbrAnisotropicConfiguration.js +47 -0
  48. package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
  49. package/Materials/Textures/multiRenderTarget.js +1 -2
  50. package/Materials/Textures/multiRenderTarget.js.map +1 -1
  51. package/Materials/Textures/renderTargetTexture.d.ts +6 -1
  52. package/Materials/Textures/renderTargetTexture.js +5 -3
  53. package/Materials/Textures/renderTargetTexture.js.map +1 -1
  54. package/Materials/materialDefines.js +1 -0
  55. package/Materials/materialDefines.js.map +1 -1
  56. package/Meshes/Builders/textBuilder.d.ts +2 -1
  57. package/Meshes/Builders/textBuilder.js +14 -2
  58. package/Meshes/Builders/textBuilder.js.map +1 -1
  59. package/Meshes/WebGPU/webgpuDataBuffer.d.ts +1 -1
  60. package/Meshes/WebGPU/webgpuDataBuffer.js +2 -1
  61. package/Meshes/WebGPU/webgpuDataBuffer.js.map +1 -1
  62. package/Meshes/mesh.js +10 -8
  63. package/Meshes/mesh.js.map +1 -1
  64. package/Meshes/transformNode.js +4 -0
  65. package/Meshes/transformNode.js.map +1 -1
  66. package/Misc/assetsManager.d.ts +78 -0
  67. package/Misc/assetsManager.js +60 -1
  68. package/Misc/assetsManager.js.map +1 -1
  69. package/Misc/filesInput.d.ts +1 -1
  70. package/Misc/filesInput.js +5 -5
  71. package/Misc/filesInput.js.map +1 -1
  72. package/Physics/v2/Plugins/havokPlugin.js +2 -2
  73. package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
  74. package/Physics/v2/physicsAggregate.d.ts +1 -0
  75. package/Physics/v2/physicsAggregate.js +6 -5
  76. package/Physics/v2/physicsAggregate.js.map +1 -1
  77. package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.d.ts +10 -1
  78. package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.js +77 -10
  79. package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.js.map +1 -1
  80. package/Rendering/depthRenderer.js +1 -0
  81. package/Rendering/depthRenderer.js.map +1 -1
  82. package/Rendering/prePassRenderer.d.ts +4 -0
  83. package/Rendering/prePassRenderer.js +14 -1
  84. package/Rendering/prePassRenderer.js.map +1 -1
  85. package/Shaders/ShadersInclude/pbrBlockAnisotropic.js +6 -3
  86. package/Shaders/ShadersInclude/pbrBlockAnisotropic.js.map +1 -1
  87. package/Shaders/ShadersInclude/pbrHelperFunctions.js +4 -1
  88. package/Shaders/ShadersInclude/pbrHelperFunctions.js.map +1 -1
  89. package/Shaders/ShadersInclude/screenSpaceRayTrace.js +4 -1
  90. package/Shaders/ShadersInclude/screenSpaceRayTrace.js.map +1 -1
  91. package/Shaders/glowMapGeneration.fragment.js +1 -1
  92. package/Shaders/glowMapGeneration.fragment.js.map +1 -1
  93. package/Shaders/pbr.fragment.js +1 -1
  94. package/Shaders/pbr.fragment.js.map +1 -1
  95. package/Shaders/screenSpaceReflection2.fragment.d.ts +1 -0
  96. package/Shaders/screenSpaceReflection2.fragment.js +16 -10
  97. package/Shaders/screenSpaceReflection2.fragment.js.map +1 -1
  98. package/Shaders/screenSpaceReflection2BlurCombiner.fragment.d.ts +2 -0
  99. package/Shaders/screenSpaceReflection2BlurCombiner.fragment.js +13 -2
  100. package/Shaders/screenSpaceReflection2BlurCombiner.fragment.js.map +1 -1
  101. package/package.json +1 -1
  102. package/scene.js +24 -13
  103. 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 fresnelSchlick(float cosTheta,vec3 F0)
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
- vec3 reflectionMultiplier=clamp(pow(reflectivity.rgb*strength,vec3(reflectionSpecularFalloffExponent)),0.0,1.0);
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyNd,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/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<screenSpaceRayTrace>\nvec3 fresnelSchlick(float cosTheta,vec3 F0)\r{\rreturn F0+(1.0-F0)*pow(1.0-cosTheta,5.0);\r}\rvec3 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}\rvec3 computeViewPosFromUVDepth(vec2 texCoord,float depth) {\rvec4 ndc;\rndc.xy=texCoord*2.0-1.0;\r#ifdef SSRAYTRACE_RIGHT_HANDED_SCENE\nndc.z=-projection[2].z-projection[3].z/depth;\r#else\nndc.z=projection[2].z+projection[3].z/depth;\r#endif\nndc.w=1.0;\rvec4 eyePos=invProjectionMatrix*ndc;\reyePos.xyz/=eyePos.w;\rreturn eyePos.xyz;\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);\rif (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#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);\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=fresnelSchlick(max(dot(csNormal,-csViewDirection),0.0),F0);\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}\rSSR*=fresnel;\r#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\nvec3 reflectionMultiplier=clamp(pow(reflectivity.rgb*strength,vec3(reflectionSpecularFalloffExponent)),0.0,1.0);\rvec3 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
+ {"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,4 +1,6 @@
1
1
  import "./ShadersInclude/helperFunctions";
2
+ import "./ShadersInclude/pbrBRDFFunctions";
3
+ import "./ShadersInclude/screenSpaceRayTrace";
2
4
  /** @internal */
3
5
  export declare const screenSpaceReflection2BlurCombinerPixelShader: {
4
6
  name: string;
@@ -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
- vec3 reflectionMultiplier=clamp(pow(reflectivity.rgb*strength,vec3(reflectionSpecularFalloffExponent)),0.0,1.0);
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;AAE1C,MAAM,IAAI,GAAG,+CAA+C,CAAC;AAC7D,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCd,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\";\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>\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);\rif (max(reflectivity.r,max(reflectivity.g,reflectivity.b))<=reflectivityThreshold) {\rgl_FragColor=color;\rreturn;\r}\r#ifdef SSR_INPUT_IS_GAMMA_SPACE\ncolor=toLinearSpace(color);\r#endif\nvec3 reflectionMultiplier=clamp(pow(reflectivity.rgb*strength,vec3(reflectionSpecularFalloffExponent)),0.0,1.0);\rvec3 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"]}
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@babylonjs/core",
3
- "version": "6.4.1",
3
+ "version": "6.5.1",
4
4
  "main": "index.js",
5
5
  "module": "index.js",
6
6
  "types": "index.d.ts",
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
- return false;
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
- return false;
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
- return false;
1540
+ isReady = false;
1543
1541
  }
1544
1542
  }
1545
1543
  }
1546
1544
  else if (this.activeCamera) {
1547
1545
  if (!this.activeCamera.isReady(true)) {
1548
- return false;
1546
+ isReady = false;
1549
1547
  }
1550
1548
  }
1551
1549
  // Particles
1552
1550
  for (const particleSystem of this.particleSystems) {
1553
1551
  if (!particleSystem.isReady()) {
1554
- return false;
1552
+ isReady = false;
1555
1553
  }
1556
1554
  }
1557
- return true;
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() {