@babylonjs/materials 6.15.0 → 6.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/cell/cell.fragment.js +8 -5
  2. package/cell/cell.fragment.js.map +1 -1
  3. package/cell/cell.vertex.js +41 -19
  4. package/cell/cell.vertex.js.map +1 -1
  5. package/gradient/gradient.fragment.js +33 -16
  6. package/gradient/gradient.fragment.js.map +1 -1
  7. package/gradient/gradient.vertex.js +34 -17
  8. package/gradient/gradient.vertex.js.map +1 -1
  9. package/grid/grid.fragment.js +2 -3
  10. package/grid/grid.fragment.js.map +1 -1
  11. package/grid/grid.vertex.js +27 -12
  12. package/grid/grid.vertex.js.map +1 -1
  13. package/mix/mix.fragment.js +34 -19
  14. package/mix/mix.fragment.js.map +1 -1
  15. package/normal/normal.fragment.js +33 -16
  16. package/normal/normal.fragment.js.map +1 -1
  17. package/normal/normal.vertex.js +39 -18
  18. package/normal/normal.vertex.js.map +1 -1
  19. package/package.json +2 -2
  20. package/shadowOnly/shadowOnly.fragment.js +18 -9
  21. package/shadowOnly/shadowOnly.fragment.js.map +1 -1
  22. package/shadowOnly/shadowOnly.vertex.js +24 -12
  23. package/shadowOnly/shadowOnly.vertex.js.map +1 -1
  24. package/simple/simple.fragment.js +35 -17
  25. package/simple/simple.fragment.js.map +1 -1
  26. package/simple/simple.vertex.js +41 -19
  27. package/simple/simple.vertex.js.map +1 -1
  28. package/sky/sky.fragment.js +50 -12
  29. package/sky/sky.fragment.js.map +1 -1
  30. package/sky/sky.vertex.js +22 -11
  31. package/sky/sky.vertex.js.map +1 -1
  32. package/terrain/terrain.fragment.js +40 -19
  33. package/terrain/terrain.fragment.js.map +1 -1
  34. package/triPlanar/triplanar.fragment.js +69 -34
  35. package/triPlanar/triplanar.fragment.js.map +1 -1
  36. package/triPlanar/triplanar.vertex.js +45 -22
  37. package/triPlanar/triplanar.vertex.js.map +1 -1
  38. package/water/water.fragment.js +106 -51
  39. package/water/water.fragment.js.map +1 -1
  40. package/water/water.vertex.js +71 -33
  41. package/water/water.vertex.js.map +1 -1
@@ -18,12 +18,17 @@ const name = "waterPixelShader";
18
18
  const shader = `#ifdef LOGARITHMICDEPTH
19
19
  #extension GL_EXT_frag_depth : enable
20
20
  #endif
21
- precision highp float;
22
- uniform vec4 vSpecularColor;
23
- varying vec3 vPositionW;
24
- varying vec3 vNormalW;
21
+ precision highp float;uniform vec4 vEyePosition;uniform vec4 vDiffuseColor;
22
+ #ifdef SPECULARTERM
23
+ uniform vec4 vSpecularColor;
24
+ #endif
25
+ varying vec3 vPositionW;
26
+ #ifdef NORMAL
27
+ varying vec3 vNormalW;
28
+ #endif
25
29
  #if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES)
26
- varying vec4 vColor;
30
+ varying vec4 vColor;
31
+ #endif
27
32
  #include<helperFunctions>
28
33
  #include<imageProcessingDeclaration>
29
34
  #include<imageProcessingFunctions>
@@ -31,71 +36,121 @@ varying vec4 vColor;
31
36
  #include<lightsFragmentFunctions>
32
37
  #include<shadowsFragmentFunctions>
33
38
  #ifdef BUMP
34
- varying vec2 vNormalUV;
35
- varying vec2 vNormalUV2;
36
- uniform sampler2D normalSampler;
37
- uniform sampler2D refractionSampler;
39
+ varying vec2 vNormalUV;
40
+ #ifdef BUMPSUPERIMPOSE
41
+ varying vec2 vNormalUV2;
42
+ #endif
43
+ uniform sampler2D normalSampler;uniform vec2 vNormalInfos;
44
+ #endif
45
+ uniform sampler2D refractionSampler;uniform sampler2D reflectionSampler;const float LOG2=1.442695;uniform vec3 cameraPosition;uniform vec4 waterColor;uniform float colorBlendFactor;uniform vec4 waterColor2;uniform float colorBlendFactor2;uniform float bumpHeight;uniform float time;varying vec3 vRefractionMapTexCoord;varying vec3 vReflectionMapTexCoord;
46
+ #include<clipPlaneFragmentDeclaration>
38
47
  #include<logDepthDeclaration>
39
48
  #include<fogFragmentDeclaration>
40
49
  #define CUSTOM_FRAGMENT_DEFINITIONS
41
- void main(void) {
50
+ void main(void) {
51
+ #define CUSTOM_FRAGMENT_MAIN_BEGIN
42
52
  #include<clipPlaneFragment>
43
- vec3 viewDirectionW=normalize(vEyePosition.xyz-vPositionW);
53
+ vec3 viewDirectionW=normalize(vEyePosition.xyz-vPositionW);vec4 baseColor=vec4(1.,1.,1.,1.);vec3 diffuseColor=vDiffuseColor.rgb;float alpha=vDiffuseColor.a;
54
+ #ifdef BUMP
44
55
  #ifdef BUMPSUPERIMPOSE
45
- baseColor=0.6*texture2D(normalSampler,vNormalUV)+0.4*texture2D(normalSampler,vec2(vNormalUV2.x,vNormalUV2.y));
46
- baseColor=texture2D(normalSampler,vNormalUV);
47
- vec3 bumpColor=baseColor.rgb;
48
- if (baseColor.a<0.4)
49
- baseColor.rgb*=vNormalInfos.y;
50
- vec3 bumpColor=vec3(1.0);
56
+ baseColor=0.6*texture2D(normalSampler,vNormalUV)+0.4*texture2D(normalSampler,vec2(vNormalUV2.x,vNormalUV2.y));
57
+ #else
58
+ baseColor=texture2D(normalSampler,vNormalUV);
59
+ #endif
60
+ vec3 bumpColor=baseColor.rgb;
61
+ #ifdef ALPHATEST
62
+ if (baseColor.a<0.4)
63
+ discard;
64
+ #endif
65
+ baseColor.rgb*=vNormalInfos.y;
66
+ #else
67
+ vec3 bumpColor=vec3(1.0);
68
+ #endif
51
69
  #if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES)
52
- baseColor.rgb*=vColor.rgb;
70
+ baseColor.rgb*=vColor.rgb;
71
+ #endif
53
72
  #ifdef NORMAL
54
- vec2 perturbation=bumpHeight*(baseColor.rg-0.5);
55
- vec3 normalW=normalize(vNormalW+vec3(perturbation.x*8.0,0.0,perturbation.y*8.0));
56
- vec3 normalW=normalize(vNormalW);
73
+ vec2 perturbation=bumpHeight*(baseColor.rg-0.5);
74
+ #ifdef BUMPAFFECTSREFLECTION
75
+ vec3 normalW=normalize(vNormalW+vec3(perturbation.x*8.0,0.0,perturbation.y*8.0));if (normalW.y<0.0) {normalW.y=-normalW.y;}
57
76
  #else
58
- vec3 normalW=vec3(1.0,1.0,1.0);
77
+ vec3 normalW=normalize(vNormalW);
78
+ #endif
79
+ #else
80
+ vec3 normalW=vec3(1.0,1.0,1.0);vec2 perturbation=bumpHeight*(vec2(1.0,1.0)-0.5);
81
+ #endif
59
82
  #ifdef FRESNELSEPARATE
60
83
  #ifdef REFLECTION
61
- vec2 projectedRefractionTexCoords=clamp(vRefractionMapTexCoord.xy/vRefractionMapTexCoord.z+perturbation*0.5,0.0,1.0);
62
- refractiveColor.rgb=toGammaSpace(refractiveColor.rgb);
63
- vec2 projectedReflectionTexCoords=clamp(vec2(
64
- reflectiveColor.rgb=toGammaSpace(reflectiveColor.rgb);
65
- vec3 upVector=vec3(0.0,1.0,0.0);
66
- vec3 diffuseBase=vec3(0.,0.,0.);
67
- float glossiness=vSpecularColor.a;
68
- float glossiness=0.;
84
+ vec2 projectedRefractionTexCoords=clamp(vRefractionMapTexCoord.xy/vRefractionMapTexCoord.z+perturbation*0.5,0.0,1.0);vec4 refractiveColor=texture2D(refractionSampler,projectedRefractionTexCoords);
85
+ #ifdef IS_REFRACTION_LINEAR
86
+ refractiveColor.rgb=toGammaSpace(refractiveColor.rgb);
87
+ #endif
88
+ vec2 projectedReflectionTexCoords=clamp(vec2(
89
+ vReflectionMapTexCoord.x/vReflectionMapTexCoord.z+perturbation.x*0.3,
90
+ vReflectionMapTexCoord.y/vReflectionMapTexCoord.z+perturbation.y
91
+ ),0.0,1.0);vec4 reflectiveColor=texture2D(reflectionSampler,projectedReflectionTexCoords);
92
+ #ifdef IS_REFLECTION_LINEAR
93
+ reflectiveColor.rgb=toGammaSpace(reflectiveColor.rgb);
94
+ #endif
95
+ vec3 upVector=vec3(0.0,1.0,0.0);float fresnelTerm=clamp(abs(pow(dot(viewDirectionW,upVector),3.0)),0.05,0.65);float IfresnelTerm=1.0-fresnelTerm;refractiveColor=colorBlendFactor*waterColor+(1.0-colorBlendFactor)*refractiveColor;reflectiveColor=IfresnelTerm*colorBlendFactor2*waterColor+(1.0-colorBlendFactor2*IfresnelTerm)*reflectiveColor;vec4 combinedColor=refractiveColor*fresnelTerm+reflectiveColor*IfresnelTerm;baseColor=combinedColor;
96
+ #endif
97
+ vec3 diffuseBase=vec3(0.,0.,0.);lightingInfo info;float shadow=1.;
98
+ #ifdef SPECULARTERM
99
+ float glossiness=vSpecularColor.a;vec3 specularBase=vec3(0.,0.,0.);vec3 specularColor=vSpecularColor.rgb;
100
+ #else
101
+ float glossiness=0.;
102
+ #endif
69
103
  #include<lightFragment>[0..maxSimultaneousLights]
70
- vec3 finalDiffuse=clamp(baseColor.rgb,0.0,1.0);
71
- alpha*=vColor.a;
104
+ vec3 finalDiffuse=clamp(baseColor.rgb,0.0,1.0);
105
+ #if defined(VERTEXALPHA) || defined(INSTANCESCOLOR) && defined(INSTANCES)
106
+ alpha*=vColor.a;
107
+ #endif
72
108
  #ifdef SPECULARTERM
73
- vec3 finalSpecular=specularBase*specularColor;
74
- vec3 finalSpecular=vec3(0.0);
109
+ vec3 finalSpecular=specularBase*specularColor;
110
+ #else
111
+ vec3 finalSpecular=vec3(0.0);
112
+ #endif
75
113
  #else
76
114
  #ifdef REFLECTION
77
- vec2 projectedRefractionTexCoords=clamp(vRefractionMapTexCoord.xy/vRefractionMapTexCoord.z+perturbation,0.0,1.0);
78
- refractiveColor.rgb=toGammaSpace(refractiveColor.rgb);
79
- vec2 projectedReflectionTexCoords=clamp(vReflectionMapTexCoord.xy/vReflectionMapTexCoord.z+perturbation,0.0,1.0);
80
- reflectiveColor.rgb=toGammaSpace(reflectiveColor.rgb);
81
- vec3 upVector=vec3(0.0,1.0,0.0);
82
- vec3 diffuseBase=vec3(0.,0.,0.);
83
- float glossiness=vSpecularColor.a;
84
- float glossiness=0.;
115
+ vec2 projectedRefractionTexCoords=clamp(vRefractionMapTexCoord.xy/vRefractionMapTexCoord.z+perturbation,0.0,1.0);vec4 refractiveColor=texture2D(refractionSampler,projectedRefractionTexCoords);
116
+ #ifdef IS_REFRACTION_LINEAR
117
+ refractiveColor.rgb=toGammaSpace(refractiveColor.rgb);
118
+ #endif
119
+ vec2 projectedReflectionTexCoords=clamp(vReflectionMapTexCoord.xy/vReflectionMapTexCoord.z+perturbation,0.0,1.0);vec4 reflectiveColor=texture2D(reflectionSampler,projectedReflectionTexCoords);
120
+ #ifdef IS_REFLECTION_LINEAR
121
+ reflectiveColor.rgb=toGammaSpace(reflectiveColor.rgb);
122
+ #endif
123
+ vec3 upVector=vec3(0.0,1.0,0.0);float fresnelTerm=max(dot(viewDirectionW,upVector),0.0);vec4 combinedColor=refractiveColor*fresnelTerm+reflectiveColor*(1.0-fresnelTerm);baseColor=colorBlendFactor*waterColor+(1.0-colorBlendFactor)*combinedColor;
124
+ #endif
125
+ vec3 diffuseBase=vec3(0.,0.,0.);lightingInfo info;float shadow=1.;
126
+ #ifdef SPECULARTERM
127
+ float glossiness=vSpecularColor.a;vec3 specularBase=vec3(0.,0.,0.);vec3 specularColor=vSpecularColor.rgb;
128
+ #else
129
+ float glossiness=0.;
130
+ #endif
85
131
  #include<lightFragment>[0..maxSimultaneousLights]
86
- vec3 finalDiffuse=clamp(baseColor.rgb,0.0,1.0);
87
- alpha*=vColor.a;
132
+ vec3 finalDiffuse=clamp(baseColor.rgb,0.0,1.0);
133
+ #if defined(VERTEXALPHA) || defined(INSTANCESCOLOR) && defined(INSTANCES)
134
+ alpha*=vColor.a;
135
+ #endif
88
136
  #ifdef SPECULARTERM
89
- vec3 finalSpecular=specularBase*specularColor;
90
- vec3 finalSpecular=vec3(0.0);
137
+ vec3 finalSpecular=specularBase*specularColor;
138
+ #else
139
+ vec3 finalSpecular=vec3(0.0);
91
140
  #endif
92
- vec4 color=vec4(finalDiffuse+finalSpecular,alpha);
141
+ #endif
142
+ vec4 color=vec4(finalDiffuse+finalSpecular,alpha);
143
+ #include<logDepthFragment>
93
144
  #include<fogFragment>
94
145
  #ifdef IMAGEPROCESSINGPOSTPROCESS
95
- color.rgb=toLinearSpace(color.rgb);
96
- color.rgb=toLinearSpace(color.rgb);
97
- gl_FragColor=color;
98
- }
146
+ color.rgb=toLinearSpace(color.rgb);
147
+ #elif defined(IMAGEPROCESSING)
148
+ color.rgb=toLinearSpace(color.rgb);color=applyImageProcessing(color);
149
+ #endif
150
+ gl_FragColor=color;
151
+ #define CUSTOM_FRAGMENT_MAIN_END
152
+ }
153
+ `;
99
154
  // Sideeffect
100
155
  ShaderStore.ShadersStore[name] = shader;
101
156
  /** @internal */
@@ -1 +1 @@
1
- {"version":3,"file":"water.fragment.js","sourceRoot":"","sources":["../../../../dev/materials/src/water/water.fragment.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,+CAAiC;AACvD,mEAAqD;AACrD,8EAAgE;AAChE,4EAA8D;AAC9D,4EAA8D;AAC9D,uEAAyD;AACzD,2EAA6D;AAC7D,4EAA8D;AAC9D,gFAAkE;AAClE,uEAAyD;AACzD,0EAA4D;AAC5D,qEAAuD;AACvD,iEAAmD;AACnD,oEAAsD;AACtD,+DAAiD;AAEjD,MAAM,IAAI,GAAG,kBAAkB,CAAC;AAChC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkLd,CAAC;AACF,aAAa;AACb,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACxC,gBAAgB;AAChB,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"core/Engines/shaderStore\";\nimport \"core/Shaders/ShadersInclude/helperFunctions\";\nimport \"core/Shaders/ShadersInclude/imageProcessingDeclaration\";\nimport \"core/Shaders/ShadersInclude/imageProcessingFunctions\";\nimport \"core/Shaders/ShadersInclude/lightFragmentDeclaration\";\nimport \"core/Shaders/ShadersInclude/lightUboDeclaration\";\nimport \"core/Shaders/ShadersInclude/lightsFragmentFunctions\";\nimport \"core/Shaders/ShadersInclude/shadowsFragmentFunctions\";\nimport \"core/Shaders/ShadersInclude/clipPlaneFragmentDeclaration\";\nimport \"core/Shaders/ShadersInclude/logDepthDeclaration\";\nimport \"core/Shaders/ShadersInclude/fogFragmentDeclaration\";\nimport \"core/Shaders/ShadersInclude/clipPlaneFragment\";\nimport \"core/Shaders/ShadersInclude/lightFragment\";\nimport \"core/Shaders/ShadersInclude/logDepthFragment\";\nimport \"core/Shaders/ShadersInclude/fogFragment\";\n\nconst name = \"waterPixelShader\";\nconst shader = `#ifdef LOGARITHMICDEPTH\n#extension GL_EXT_frag_depth : enable\n#endif\nprecision highp float;\runiform vec4 vEyePosition;\runiform vec4 vDiffuseColor;\r#ifdef SPECULARTERM\nuniform vec4 vSpecularColor;\r#endif\nvarying vec3 vPositionW;\r#ifdef NORMAL\nvarying vec3 vNormalW;\r#endif\n#if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES)\nvarying vec4 vColor;\r#endif\n#include<helperFunctions>\n#include<imageProcessingDeclaration>\n#include<imageProcessingFunctions>\n#include<__decl__lightFragment>[0..maxSimultaneousLights]\n#include<lightsFragmentFunctions>\n#include<shadowsFragmentFunctions>\n#ifdef BUMP\nvarying vec2 vNormalUV;\r#ifdef BUMPSUPERIMPOSE\nvarying vec2 vNormalUV2;\r#endif\nuniform sampler2D normalSampler;\runiform vec2 vNormalInfos;\r#endif\nuniform sampler2D refractionSampler;\runiform sampler2D reflectionSampler;\rconst float LOG2=1.442695;\runiform vec3 cameraPosition;\runiform vec4 waterColor;\runiform float colorBlendFactor;\runiform vec4 waterColor2;\runiform float colorBlendFactor2;\runiform float bumpHeight;\runiform float time;\rvarying vec3 vRefractionMapTexCoord;\rvarying vec3 vReflectionMapTexCoord;\r#include<clipPlaneFragmentDeclaration>\n#include<logDepthDeclaration>\n#include<fogFragmentDeclaration>\n#define CUSTOM_FRAGMENT_DEFINITIONS\nvoid main(void) {\r#define CUSTOM_FRAGMENT_MAIN_BEGIN\n#include<clipPlaneFragment>\nvec3 viewDirectionW=normalize(vEyePosition.xyz-vPositionW);\rvec4 baseColor=vec4(1.,1.,1.,1.);\rvec3 diffuseColor=vDiffuseColor.rgb;\rfloat alpha=vDiffuseColor.a;\r#ifdef BUMP\n#ifdef BUMPSUPERIMPOSE\nbaseColor=0.6*texture2D(normalSampler,vNormalUV)+0.4*texture2D(normalSampler,vec2(vNormalUV2.x,vNormalUV2.y));\r#else\nbaseColor=texture2D(normalSampler,vNormalUV);\r#endif\nvec3 bumpColor=baseColor.rgb;\r#ifdef ALPHATEST\nif (baseColor.a<0.4)\rdiscard;\r#endif\nbaseColor.rgb*=vNormalInfos.y;\r#else\nvec3 bumpColor=vec3(1.0);\r#endif\n#if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES)\nbaseColor.rgb*=vColor.rgb;\r#endif\n#ifdef NORMAL\nvec2 perturbation=bumpHeight*(baseColor.rg-0.5);\r#ifdef BUMPAFFECTSREFLECTION\nvec3 normalW=normalize(vNormalW+vec3(perturbation.x*8.0,0.0,perturbation.y*8.0));\rif (normalW.y<0.0) {\rnormalW.y=-normalW.y;\r}\r#else\nvec3 normalW=normalize(vNormalW);\r#endif\n#else\nvec3 normalW=vec3(1.0,1.0,1.0);\rvec2 perturbation=bumpHeight*(vec2(1.0,1.0)-0.5);\r#endif\n#ifdef FRESNELSEPARATE\n#ifdef REFLECTION\nvec2 projectedRefractionTexCoords=clamp(vRefractionMapTexCoord.xy/vRefractionMapTexCoord.z+perturbation*0.5,0.0,1.0);\rvec4 refractiveColor=texture2D(refractionSampler,projectedRefractionTexCoords);\r#ifdef IS_REFRACTION_LINEAR\nrefractiveColor.rgb=toGammaSpace(refractiveColor.rgb);\r#endif\nvec2 projectedReflectionTexCoords=clamp(vec2(\rvReflectionMapTexCoord.x/vReflectionMapTexCoord.z+perturbation.x*0.3,\rvReflectionMapTexCoord.y/vReflectionMapTexCoord.z+perturbation.y\r),0.0,1.0);\rvec4 reflectiveColor=texture2D(reflectionSampler,projectedReflectionTexCoords);\r#ifdef IS_REFLECTION_LINEAR\nreflectiveColor.rgb=toGammaSpace(reflectiveColor.rgb);\r#endif\nvec3 upVector=vec3(0.0,1.0,0.0);\rfloat fresnelTerm=clamp(abs(pow(dot(viewDirectionW,upVector),3.0)),0.05,0.65);\rfloat IfresnelTerm=1.0-fresnelTerm;\rrefractiveColor=colorBlendFactor*waterColor+(1.0-colorBlendFactor)*refractiveColor;\rreflectiveColor=IfresnelTerm*colorBlendFactor2*waterColor+(1.0-colorBlendFactor2*IfresnelTerm)*reflectiveColor;\rvec4 combinedColor=refractiveColor*fresnelTerm+reflectiveColor*IfresnelTerm;\rbaseColor=combinedColor;\r#endif\nvec3 diffuseBase=vec3(0.,0.,0.);\rlightingInfo info;\rfloat shadow=1.;\r#ifdef SPECULARTERM\nfloat glossiness=vSpecularColor.a;\rvec3 specularBase=vec3(0.,0.,0.);\rvec3 specularColor=vSpecularColor.rgb;\r#else\nfloat glossiness=0.;\r#endif\n#include<lightFragment>[0..maxSimultaneousLights]\nvec3 finalDiffuse=clamp(baseColor.rgb,0.0,1.0);\r#if defined(VERTEXALPHA) || defined(INSTANCESCOLOR) && defined(INSTANCES)\nalpha*=vColor.a;\r#endif\n#ifdef SPECULARTERM\nvec3 finalSpecular=specularBase*specularColor;\r#else\nvec3 finalSpecular=vec3(0.0);\r#endif\n#else \n#ifdef REFLECTION\nvec2 projectedRefractionTexCoords=clamp(vRefractionMapTexCoord.xy/vRefractionMapTexCoord.z+perturbation,0.0,1.0);\rvec4 refractiveColor=texture2D(refractionSampler,projectedRefractionTexCoords);\r#ifdef IS_REFRACTION_LINEAR\nrefractiveColor.rgb=toGammaSpace(refractiveColor.rgb);\r#endif\nvec2 projectedReflectionTexCoords=clamp(vReflectionMapTexCoord.xy/vReflectionMapTexCoord.z+perturbation,0.0,1.0);\rvec4 reflectiveColor=texture2D(reflectionSampler,projectedReflectionTexCoords);\r#ifdef IS_REFLECTION_LINEAR\nreflectiveColor.rgb=toGammaSpace(reflectiveColor.rgb);\r#endif\nvec3 upVector=vec3(0.0,1.0,0.0);\rfloat fresnelTerm=max(dot(viewDirectionW,upVector),0.0);\rvec4 combinedColor=refractiveColor*fresnelTerm+reflectiveColor*(1.0-fresnelTerm);\rbaseColor=colorBlendFactor*waterColor+(1.0-colorBlendFactor)*combinedColor;\r#endif\nvec3 diffuseBase=vec3(0.,0.,0.);\rlightingInfo info;\rfloat shadow=1.;\r#ifdef SPECULARTERM\nfloat glossiness=vSpecularColor.a;\rvec3 specularBase=vec3(0.,0.,0.);\rvec3 specularColor=vSpecularColor.rgb;\r#else\nfloat glossiness=0.;\r#endif\n#include<lightFragment>[0..maxSimultaneousLights]\nvec3 finalDiffuse=clamp(baseColor.rgb,0.0,1.0);\r#if defined(VERTEXALPHA) || defined(INSTANCESCOLOR) && defined(INSTANCES)\nalpha*=vColor.a;\r#endif\n#ifdef SPECULARTERM\nvec3 finalSpecular=specularBase*specularColor;\r#else\nvec3 finalSpecular=vec3(0.0);\r#endif\n#endif\nvec4 color=vec4(finalDiffuse+finalSpecular,alpha);\r#include<logDepthFragment>\n#include<fogFragment>\n#ifdef IMAGEPROCESSINGPOSTPROCESS\ncolor.rgb=toLinearSpace(color.rgb);\r#elif defined(IMAGEPROCESSING)\ncolor.rgb=toLinearSpace(color.rgb);\rcolor=applyImageProcessing(color);\r#endif\ngl_FragColor=color;\r#define CUSTOM_FRAGMENT_MAIN_END\n}\r`;\n// Sideeffect\nShaderStore.ShadersStore[name] = shader;\n/** @internal */\nexport const waterPixelShader = { name, shader };\n"]}
1
+ {"version":3,"file":"water.fragment.js","sourceRoot":"","sources":["../../../../dev/materials/src/water/water.fragment.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,+CAAiC;AACvD,mEAAqD;AACrD,8EAAgE;AAChE,4EAA8D;AAC9D,4EAA8D;AAC9D,uEAAyD;AACzD,2EAA6D;AAC7D,4EAA8D;AAC9D,gFAAkE;AAClE,uEAAyD;AACzD,0EAA4D;AAC5D,qEAAuD;AACvD,iEAAmD;AACnD,oEAAsD;AACtD,+DAAiD;AAEjD,MAAM,IAAI,GAAG,kBAAkB,CAAC;AAChC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuId,CAAC;AACF,aAAa;AACb,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACxC,gBAAgB;AAChB,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"core/Engines/shaderStore\";\nimport \"core/Shaders/ShadersInclude/helperFunctions\";\nimport \"core/Shaders/ShadersInclude/imageProcessingDeclaration\";\nimport \"core/Shaders/ShadersInclude/imageProcessingFunctions\";\nimport \"core/Shaders/ShadersInclude/lightFragmentDeclaration\";\nimport \"core/Shaders/ShadersInclude/lightUboDeclaration\";\nimport \"core/Shaders/ShadersInclude/lightsFragmentFunctions\";\nimport \"core/Shaders/ShadersInclude/shadowsFragmentFunctions\";\nimport \"core/Shaders/ShadersInclude/clipPlaneFragmentDeclaration\";\nimport \"core/Shaders/ShadersInclude/logDepthDeclaration\";\nimport \"core/Shaders/ShadersInclude/fogFragmentDeclaration\";\nimport \"core/Shaders/ShadersInclude/clipPlaneFragment\";\nimport \"core/Shaders/ShadersInclude/lightFragment\";\nimport \"core/Shaders/ShadersInclude/logDepthFragment\";\nimport \"core/Shaders/ShadersInclude/fogFragment\";\n\nconst name = \"waterPixelShader\";\nconst shader = `#ifdef LOGARITHMICDEPTH\n#extension GL_EXT_frag_depth : enable\n#endif\nprecision highp float;uniform vec4 vEyePosition;uniform vec4 vDiffuseColor;\n#ifdef SPECULARTERM\nuniform vec4 vSpecularColor;\n#endif\nvarying vec3 vPositionW;\n#ifdef NORMAL\nvarying vec3 vNormalW;\n#endif\n#if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES)\nvarying vec4 vColor;\n#endif\n#include<helperFunctions>\n#include<imageProcessingDeclaration>\n#include<imageProcessingFunctions>\n#include<__decl__lightFragment>[0..maxSimultaneousLights]\n#include<lightsFragmentFunctions>\n#include<shadowsFragmentFunctions>\n#ifdef BUMP\nvarying vec2 vNormalUV;\n#ifdef BUMPSUPERIMPOSE\nvarying vec2 vNormalUV2;\n#endif\nuniform sampler2D normalSampler;uniform vec2 vNormalInfos;\n#endif\nuniform sampler2D refractionSampler;uniform sampler2D reflectionSampler;const float LOG2=1.442695;uniform vec3 cameraPosition;uniform vec4 waterColor;uniform float colorBlendFactor;uniform vec4 waterColor2;uniform float colorBlendFactor2;uniform float bumpHeight;uniform float time;varying vec3 vRefractionMapTexCoord;varying vec3 vReflectionMapTexCoord;\n#include<clipPlaneFragmentDeclaration>\n#include<logDepthDeclaration>\n#include<fogFragmentDeclaration>\n#define CUSTOM_FRAGMENT_DEFINITIONS\nvoid main(void) {\n#define CUSTOM_FRAGMENT_MAIN_BEGIN\n#include<clipPlaneFragment>\nvec3 viewDirectionW=normalize(vEyePosition.xyz-vPositionW);vec4 baseColor=vec4(1.,1.,1.,1.);vec3 diffuseColor=vDiffuseColor.rgb;float alpha=vDiffuseColor.a;\n#ifdef BUMP\n#ifdef BUMPSUPERIMPOSE\nbaseColor=0.6*texture2D(normalSampler,vNormalUV)+0.4*texture2D(normalSampler,vec2(vNormalUV2.x,vNormalUV2.y));\n#else\nbaseColor=texture2D(normalSampler,vNormalUV);\n#endif\nvec3 bumpColor=baseColor.rgb;\n#ifdef ALPHATEST\nif (baseColor.a<0.4)\ndiscard;\n#endif\nbaseColor.rgb*=vNormalInfos.y;\n#else\nvec3 bumpColor=vec3(1.0);\n#endif\n#if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES)\nbaseColor.rgb*=vColor.rgb;\n#endif\n#ifdef NORMAL\nvec2 perturbation=bumpHeight*(baseColor.rg-0.5);\n#ifdef BUMPAFFECTSREFLECTION\nvec3 normalW=normalize(vNormalW+vec3(perturbation.x*8.0,0.0,perturbation.y*8.0));if (normalW.y<0.0) {normalW.y=-normalW.y;}\n#else\nvec3 normalW=normalize(vNormalW);\n#endif\n#else\nvec3 normalW=vec3(1.0,1.0,1.0);vec2 perturbation=bumpHeight*(vec2(1.0,1.0)-0.5);\n#endif\n#ifdef FRESNELSEPARATE\n#ifdef REFLECTION\nvec2 projectedRefractionTexCoords=clamp(vRefractionMapTexCoord.xy/vRefractionMapTexCoord.z+perturbation*0.5,0.0,1.0);vec4 refractiveColor=texture2D(refractionSampler,projectedRefractionTexCoords);\n#ifdef IS_REFRACTION_LINEAR\nrefractiveColor.rgb=toGammaSpace(refractiveColor.rgb);\n#endif\nvec2 projectedReflectionTexCoords=clamp(vec2(\nvReflectionMapTexCoord.x/vReflectionMapTexCoord.z+perturbation.x*0.3,\nvReflectionMapTexCoord.y/vReflectionMapTexCoord.z+perturbation.y\n),0.0,1.0);vec4 reflectiveColor=texture2D(reflectionSampler,projectedReflectionTexCoords);\n#ifdef IS_REFLECTION_LINEAR\nreflectiveColor.rgb=toGammaSpace(reflectiveColor.rgb);\n#endif\nvec3 upVector=vec3(0.0,1.0,0.0);float fresnelTerm=clamp(abs(pow(dot(viewDirectionW,upVector),3.0)),0.05,0.65);float IfresnelTerm=1.0-fresnelTerm;refractiveColor=colorBlendFactor*waterColor+(1.0-colorBlendFactor)*refractiveColor;reflectiveColor=IfresnelTerm*colorBlendFactor2*waterColor+(1.0-colorBlendFactor2*IfresnelTerm)*reflectiveColor;vec4 combinedColor=refractiveColor*fresnelTerm+reflectiveColor*IfresnelTerm;baseColor=combinedColor;\n#endif\nvec3 diffuseBase=vec3(0.,0.,0.);lightingInfo info;float shadow=1.;\n#ifdef SPECULARTERM\nfloat glossiness=vSpecularColor.a;vec3 specularBase=vec3(0.,0.,0.);vec3 specularColor=vSpecularColor.rgb;\n#else\nfloat glossiness=0.;\n#endif\n#include<lightFragment>[0..maxSimultaneousLights]\nvec3 finalDiffuse=clamp(baseColor.rgb,0.0,1.0);\n#if defined(VERTEXALPHA) || defined(INSTANCESCOLOR) && defined(INSTANCES)\nalpha*=vColor.a;\n#endif\n#ifdef SPECULARTERM\nvec3 finalSpecular=specularBase*specularColor;\n#else\nvec3 finalSpecular=vec3(0.0);\n#endif\n#else \n#ifdef REFLECTION\nvec2 projectedRefractionTexCoords=clamp(vRefractionMapTexCoord.xy/vRefractionMapTexCoord.z+perturbation,0.0,1.0);vec4 refractiveColor=texture2D(refractionSampler,projectedRefractionTexCoords);\n#ifdef IS_REFRACTION_LINEAR\nrefractiveColor.rgb=toGammaSpace(refractiveColor.rgb);\n#endif\nvec2 projectedReflectionTexCoords=clamp(vReflectionMapTexCoord.xy/vReflectionMapTexCoord.z+perturbation,0.0,1.0);vec4 reflectiveColor=texture2D(reflectionSampler,projectedReflectionTexCoords);\n#ifdef IS_REFLECTION_LINEAR\nreflectiveColor.rgb=toGammaSpace(reflectiveColor.rgb);\n#endif\nvec3 upVector=vec3(0.0,1.0,0.0);float fresnelTerm=max(dot(viewDirectionW,upVector),0.0);vec4 combinedColor=refractiveColor*fresnelTerm+reflectiveColor*(1.0-fresnelTerm);baseColor=colorBlendFactor*waterColor+(1.0-colorBlendFactor)*combinedColor;\n#endif\nvec3 diffuseBase=vec3(0.,0.,0.);lightingInfo info;float shadow=1.;\n#ifdef SPECULARTERM\nfloat glossiness=vSpecularColor.a;vec3 specularBase=vec3(0.,0.,0.);vec3 specularColor=vSpecularColor.rgb;\n#else\nfloat glossiness=0.;\n#endif\n#include<lightFragment>[0..maxSimultaneousLights]\nvec3 finalDiffuse=clamp(baseColor.rgb,0.0,1.0);\n#if defined(VERTEXALPHA) || defined(INSTANCESCOLOR) && defined(INSTANCES)\nalpha*=vColor.a;\n#endif\n#ifdef SPECULARTERM\nvec3 finalSpecular=specularBase*specularColor;\n#else\nvec3 finalSpecular=vec3(0.0);\n#endif\n#endif\nvec4 color=vec4(finalDiffuse+finalSpecular,alpha);\n#include<logDepthFragment>\n#include<fogFragment>\n#ifdef IMAGEPROCESSINGPOSTPROCESS\ncolor.rgb=toLinearSpace(color.rgb);\n#elif defined(IMAGEPROCESSING)\ncolor.rgb=toLinearSpace(color.rgb);color=applyImageProcessing(color);\n#endif\ngl_FragColor=color;\n#define CUSTOM_FRAGMENT_MAIN_END\n}\n`;\n// Sideeffect\nShaderStore.ShadersStore[name] = shader;\n/** @internal */\nexport const waterPixelShader = { name, shader };\n"]}
@@ -17,65 +17,102 @@ import "@babylonjs/core/Shaders/ShadersInclude/shadowsVertex.js";
17
17
  import "@babylonjs/core/Shaders/ShadersInclude/vertexColorMixing.js";
18
18
  import "@babylonjs/core/Shaders/ShadersInclude/logDepthVertex.js";
19
19
  const name = "waterVertexShader";
20
- const shader = `precision highp float;
21
- attribute vec3 normal;
20
+ const shader = `precision highp float;attribute vec3 position;
21
+ #ifdef NORMAL
22
+ attribute vec3 normal;
23
+ #endif
22
24
  #ifdef UV1
23
- attribute vec2 uv;
25
+ attribute vec2 uv;
26
+ #endif
24
27
  #ifdef UV2
25
- attribute vec2 uv2;
28
+ attribute vec2 uv2;
29
+ #endif
26
30
  #ifdef VERTEXCOLOR
27
- attribute vec4 color;
31
+ attribute vec4 color;
32
+ #endif
28
33
  #include<bonesDeclaration>
29
34
  #include<bakedVertexAnimationDeclaration>
30
35
  #include<instancesDeclaration>
31
- uniform mat4 view;
32
- varying vec2 vNormalUV;
33
- varying vec2 vNormalUV2;
34
- uniform mat4 normalMatrix;
36
+ uniform mat4 view;uniform mat4 viewProjection;
37
+ #ifdef BUMP
38
+ varying vec2 vNormalUV;
39
+ #ifdef BUMPSUPERIMPOSE
40
+ varying vec2 vNormalUV2;
41
+ #endif
42
+ uniform mat4 normalMatrix;uniform vec2 vNormalInfos;
43
+ #endif
35
44
  #ifdef POINTSIZE
36
- uniform float pointSize;
37
- varying vec3 vPositionW;
38
- varying vec3 vNormalW;
45
+ uniform float pointSize;
46
+ #endif
47
+ varying vec3 vPositionW;
48
+ #ifdef NORMAL
49
+ varying vec3 vNormalW;
50
+ #endif
39
51
  #if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES)
40
- varying vec4 vColor;
52
+ varying vec4 vColor;
53
+ #endif
41
54
  #include<clipPlaneVertexDeclaration>
42
55
  #include<fogVertexDeclaration>
43
56
  #include<__decl__lightFragment>[0..maxSimultaneousLights]
44
57
  #include<logDepthDeclaration>
45
- uniform mat4 reflectionViewProjection;
46
- void main(void) {
58
+ uniform mat4 reflectionViewProjection;uniform vec2 windDirection;uniform float waveLength;uniform float time;uniform float windForce;uniform float waveHeight;uniform float waveSpeed;uniform float waveCount;varying vec3 vRefractionMapTexCoord;varying vec3 vReflectionMapTexCoord;
59
+ #define CUSTOM_VERTEX_DEFINITIONS
60
+ void main(void) {
61
+ #define CUSTOM_VERTEX_MAIN_BEGIN
47
62
  #include<instancesVertex>
48
63
  #include<bonesVertex>
49
64
  #include<bakedVertexAnimation>
50
- vec4 worldPos=finalWorld*vec4(position,1.0);
51
- vNormalW=normalize(vec3(finalWorld*vec4(normal,0.0)));
65
+ vec4 worldPos=finalWorld*vec4(position,1.0);vPositionW=vec3(worldPos);
66
+ #ifdef NORMAL
67
+ vNormalW=normalize(vec3(finalWorld*vec4(normal,0.0)));
68
+ #endif
52
69
  #ifndef UV1
53
- vec2 uv=vec2(0.,0.);
70
+ vec2 uv=vec2(0.,0.);
71
+ #endif
54
72
  #ifndef UV2
55
- vec2 uv2=vec2(0.,0.);
73
+ vec2 uv2=vec2(0.,0.);
74
+ #endif
56
75
  #ifdef BUMP
57
- if (vNormalInfos.x==0.)
58
- vNormalUV2=vec2(normalMatrix*vec4((uv*0.721)/waveLength+time*1.2*windForce*windDirection,1.0,0.0));
59
- }
60
- vNormalUV2=vec2(normalMatrix*vec4((uv2*0.721)/waveLength+time*1.2*windForce*windDirection ,1.0,0.0));
61
- }
76
+ if (vNormalInfos.x==0.)
77
+ {vNormalUV=vec2(normalMatrix*vec4((uv*1.0)/waveLength+time*windForce*windDirection,1.0,0.0));
78
+ #ifdef BUMPSUPERIMPOSE
79
+ vNormalUV2=vec2(normalMatrix*vec4((uv*0.721)/waveLength+time*1.2*windForce*windDirection,1.0,0.0));
80
+ #endif
81
+ }
82
+ else
83
+ {vNormalUV=vec2(normalMatrix*vec4((uv2*1.0)/waveLength+time*windForce*windDirection ,1.0,0.0));
84
+ #ifdef BUMPSUPERIMPOSE
85
+ vNormalUV2=vec2(normalMatrix*vec4((uv2*0.721)/waveLength+time*1.2*windForce*windDirection ,1.0,0.0));
86
+ #endif
87
+ }
88
+ #endif
62
89
  #include<clipPlaneVertex>
63
90
  #include<fogVertex>
64
91
  #include<shadowsVertex>[0..maxSimultaneousLights]
65
92
  #include<vertexColorMixing>
66
93
  #if defined(POINTSIZE) && !defined(WEBGPU)
67
- gl_PointSize=pointSize;
68
- float finalWaveCount=1.0/(waveCount*0.5);
69
- vec3 p=worldPos.xyz;
70
- vec3 p=position;
71
- float newY=(sin(((p.x/finalWaveCount)+time*waveSpeed))*waveHeight*windDirection.x*5.0)
94
+ (cos(((p.z/finalWaveCount)+ time*waveSpeed))*waveHeight*windDirection.y*5.0);
72
- gl_Position=viewProjection*vec4(p,1.0);
73
- gl_Position=viewProjection*finalWorld*vec4(p,1.0);
95
+ gl_PointSize=pointSize;
96
+ #endif
97
+ float finalWaveCount=1.0/(waveCount*0.5);
98
+ #ifdef USE_WORLD_COORDINATES
99
+ vec3 p=worldPos.xyz;
100
+ #else
101
+ vec3 p=position;
102
+ #endif
103
+ float newY=(sin(((p.x/finalWaveCount)+time*waveSpeed))*waveHeight*windDirection.x*5.0)
104
+ + (cos(((p.z/finalWaveCount)+ time*waveSpeed))*waveHeight*windDirection.y*5.0);p.y+=abs(newY);
105
+ #ifdef USE_WORLD_COORDINATES
106
+ gl_Position=viewProjection*vec4(p,1.0);
107
+ #else
108
+ gl_Position=viewProjection*finalWorld*vec4(p,1.0);
109
+ #endif
74
110
  #ifdef REFLECTION
75
- vRefractionMapTexCoord.x=0.5*(gl_Position.w+gl_Position.x);
111
+ vRefractionMapTexCoord.x=0.5*(gl_Position.w+gl_Position.x);vRefractionMapTexCoord.y=0.5*(gl_Position.w+gl_Position.y);vRefractionMapTexCoord.z=gl_Position.w;worldPos=reflectionViewProjection*finalWorld*vec4(position,1.0);vReflectionMapTexCoord.x=0.5*(worldPos.w+worldPos.x);vReflectionMapTexCoord.y=0.5*(worldPos.w+worldPos.y);vReflectionMapTexCoord.z=worldPos.w;
112
+ #endif
76
113
  #include<logDepthVertex>
77
114
  #define CUSTOM_VERTEX_MAIN_END
78
- }
115
+ }
116
+ `;
79
117
  // Sideeffect
80
118
  ShaderStore.ShadersStore[name] = shader;
81
119
  /** @internal */
@@ -1 +1 @@
1
- {"version":3,"file":"water.vertex.js","sourceRoot":"","sources":["../../../../dev/materials/src/water/water.vertex.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,+CAAiC;AACvD,oEAAsD;AACtD,mFAAqE;AACrE,wEAA0D;AAC1D,8EAAgE;AAChE,wEAA0D;AAC1D,4EAA8D;AAC9D,uEAAyD;AACzD,uEAAyD;AACzD,mEAAqD;AACrD,+DAAiD;AACjD,wEAA0D;AAC1D,mEAAqD;AACrD,6DAA+C;AAC/C,iEAAmD;AACnD,qEAAuD;AACvD,kEAAoD;AAEpD,MAAM,IAAI,GAAG,mBAAmB,CAAC;AACjC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqHd,CAAC;AACF,aAAa;AACb,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACxC,gBAAgB;AAChB,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"core/Engines/shaderStore\";\nimport \"core/Shaders/ShadersInclude/bonesDeclaration\";\nimport \"core/Shaders/ShadersInclude/bakedVertexAnimationDeclaration\";\nimport \"core/Shaders/ShadersInclude/instancesDeclaration\";\nimport \"core/Shaders/ShadersInclude/clipPlaneVertexDeclaration\";\nimport \"core/Shaders/ShadersInclude/fogVertexDeclaration\";\nimport \"core/Shaders/ShadersInclude/lightFragmentDeclaration\";\nimport \"core/Shaders/ShadersInclude/lightUboDeclaration\";\nimport \"core/Shaders/ShadersInclude/logDepthDeclaration\";\nimport \"core/Shaders/ShadersInclude/instancesVertex\";\nimport \"core/Shaders/ShadersInclude/bonesVertex\";\nimport \"core/Shaders/ShadersInclude/bakedVertexAnimation\";\nimport \"core/Shaders/ShadersInclude/clipPlaneVertex\";\nimport \"core/Shaders/ShadersInclude/fogVertex\";\nimport \"core/Shaders/ShadersInclude/shadowsVertex\";\nimport \"core/Shaders/ShadersInclude/vertexColorMixing\";\nimport \"core/Shaders/ShadersInclude/logDepthVertex\";\n\nconst name = \"waterVertexShader\";\nconst shader = `precision highp float;\rattribute vec3 position;\r#ifdef NORMAL\nattribute vec3 normal;\r#endif\n#ifdef UV1\nattribute vec2 uv;\r#endif\n#ifdef UV2\nattribute vec2 uv2;\r#endif\n#ifdef VERTEXCOLOR\nattribute vec4 color;\r#endif\n#include<bonesDeclaration>\n#include<bakedVertexAnimationDeclaration>\n#include<instancesDeclaration>\nuniform mat4 view;\runiform mat4 viewProjection;\r#ifdef BUMP\nvarying vec2 vNormalUV;\r#ifdef BUMPSUPERIMPOSE\nvarying vec2 vNormalUV2;\r#endif\nuniform mat4 normalMatrix;\runiform vec2 vNormalInfos;\r#endif\n#ifdef POINTSIZE\nuniform float pointSize;\r#endif\nvarying vec3 vPositionW;\r#ifdef NORMAL\nvarying vec3 vNormalW;\r#endif\n#if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES)\nvarying vec4 vColor;\r#endif\n#include<clipPlaneVertexDeclaration>\n#include<fogVertexDeclaration>\n#include<__decl__lightFragment>[0..maxSimultaneousLights]\n#include<logDepthDeclaration>\nuniform mat4 reflectionViewProjection;\runiform vec2 windDirection;\runiform float waveLength;\runiform float time;\runiform float windForce;\runiform float waveHeight;\runiform float waveSpeed;\runiform float waveCount;\rvarying vec3 vRefractionMapTexCoord;\rvarying vec3 vReflectionMapTexCoord;\r#define CUSTOM_VERTEX_DEFINITIONS\nvoid main(void) {\r#define CUSTOM_VERTEX_MAIN_BEGIN\n#include<instancesVertex>\n#include<bonesVertex>\n#include<bakedVertexAnimation>\nvec4 worldPos=finalWorld*vec4(position,1.0);\rvPositionW=vec3(worldPos);\r#ifdef NORMAL\nvNormalW=normalize(vec3(finalWorld*vec4(normal,0.0)));\r#endif\n#ifndef UV1\nvec2 uv=vec2(0.,0.);\r#endif\n#ifndef UV2\nvec2 uv2=vec2(0.,0.);\r#endif\n#ifdef BUMP\nif (vNormalInfos.x==0.)\r{\rvNormalUV=vec2(normalMatrix*vec4((uv*1.0)/waveLength+time*windForce*windDirection,1.0,0.0));\r#ifdef BUMPSUPERIMPOSE\nvNormalUV2=vec2(normalMatrix*vec4((uv*0.721)/waveLength+time*1.2*windForce*windDirection,1.0,0.0));\r#endif\n}\relse\r{\rvNormalUV=vec2(normalMatrix*vec4((uv2*1.0)/waveLength+time*windForce*windDirection ,1.0,0.0));\r#ifdef BUMPSUPERIMPOSE\nvNormalUV2=vec2(normalMatrix*vec4((uv2*0.721)/waveLength+time*1.2*windForce*windDirection ,1.0,0.0));\r#endif\n}\r#endif\n#include<clipPlaneVertex>\n#include<fogVertex>\n#include<shadowsVertex>[0..maxSimultaneousLights]\n#include<vertexColorMixing>\n#if defined(POINTSIZE) && !defined(WEBGPU)\ngl_PointSize=pointSize;\r#endif\nfloat finalWaveCount=1.0/(waveCount*0.5);\r#ifdef USE_WORLD_COORDINATES\nvec3 p=worldPos.xyz;\r#else\nvec3 p=position;\r#endif\nfloat newY=(sin(((p.x/finalWaveCount)+time*waveSpeed))*waveHeight*windDirection.x*5.0)\r+ (cos(((p.z/finalWaveCount)+ time*waveSpeed))*waveHeight*windDirection.y*5.0);\rp.y+=abs(newY);\r#ifdef USE_WORLD_COORDINATES\ngl_Position=viewProjection*vec4(p,1.0);\r#else\ngl_Position=viewProjection*finalWorld*vec4(p,1.0);\r#endif\n#ifdef REFLECTION\nvRefractionMapTexCoord.x=0.5*(gl_Position.w+gl_Position.x);\rvRefractionMapTexCoord.y=0.5*(gl_Position.w+gl_Position.y);\rvRefractionMapTexCoord.z=gl_Position.w;\rworldPos=reflectionViewProjection*finalWorld*vec4(position,1.0);\rvReflectionMapTexCoord.x=0.5*(worldPos.w+worldPos.x);\rvReflectionMapTexCoord.y=0.5*(worldPos.w+worldPos.y);\rvReflectionMapTexCoord.z=worldPos.w;\r#endif\n#include<logDepthVertex>\n#define CUSTOM_VERTEX_MAIN_END\n}\r`;\n// Sideeffect\nShaderStore.ShadersStore[name] = shader;\n/** @internal */\nexport const waterVertexShader = { name, shader };\n"]}
1
+ {"version":3,"file":"water.vertex.js","sourceRoot":"","sources":["../../../../dev/materials/src/water/water.vertex.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,+CAAiC;AACvD,oEAAsD;AACtD,mFAAqE;AACrE,wEAA0D;AAC1D,8EAAgE;AAChE,wEAA0D;AAC1D,4EAA8D;AAC9D,uEAAyD;AACzD,uEAAyD;AACzD,mEAAqD;AACrD,+DAAiD;AACjD,wEAA0D;AAC1D,mEAAqD;AACrD,6DAA+C;AAC/C,iEAAmD;AACnD,qEAAuD;AACvD,kEAAoD;AAEpD,MAAM,IAAI,GAAG,mBAAmB,CAAC;AACjC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+Fd,CAAC;AACF,aAAa;AACb,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACxC,gBAAgB;AAChB,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"core/Engines/shaderStore\";\nimport \"core/Shaders/ShadersInclude/bonesDeclaration\";\nimport \"core/Shaders/ShadersInclude/bakedVertexAnimationDeclaration\";\nimport \"core/Shaders/ShadersInclude/instancesDeclaration\";\nimport \"core/Shaders/ShadersInclude/clipPlaneVertexDeclaration\";\nimport \"core/Shaders/ShadersInclude/fogVertexDeclaration\";\nimport \"core/Shaders/ShadersInclude/lightFragmentDeclaration\";\nimport \"core/Shaders/ShadersInclude/lightUboDeclaration\";\nimport \"core/Shaders/ShadersInclude/logDepthDeclaration\";\nimport \"core/Shaders/ShadersInclude/instancesVertex\";\nimport \"core/Shaders/ShadersInclude/bonesVertex\";\nimport \"core/Shaders/ShadersInclude/bakedVertexAnimation\";\nimport \"core/Shaders/ShadersInclude/clipPlaneVertex\";\nimport \"core/Shaders/ShadersInclude/fogVertex\";\nimport \"core/Shaders/ShadersInclude/shadowsVertex\";\nimport \"core/Shaders/ShadersInclude/vertexColorMixing\";\nimport \"core/Shaders/ShadersInclude/logDepthVertex\";\n\nconst name = \"waterVertexShader\";\nconst shader = `precision highp float;attribute vec3 position;\n#ifdef NORMAL\nattribute vec3 normal;\n#endif\n#ifdef UV1\nattribute vec2 uv;\n#endif\n#ifdef UV2\nattribute vec2 uv2;\n#endif\n#ifdef VERTEXCOLOR\nattribute vec4 color;\n#endif\n#include<bonesDeclaration>\n#include<bakedVertexAnimationDeclaration>\n#include<instancesDeclaration>\nuniform mat4 view;uniform mat4 viewProjection;\n#ifdef BUMP\nvarying vec2 vNormalUV;\n#ifdef BUMPSUPERIMPOSE\nvarying vec2 vNormalUV2;\n#endif\nuniform mat4 normalMatrix;uniform vec2 vNormalInfos;\n#endif\n#ifdef POINTSIZE\nuniform float pointSize;\n#endif\nvarying vec3 vPositionW;\n#ifdef NORMAL\nvarying vec3 vNormalW;\n#endif\n#if defined(VERTEXCOLOR) || defined(INSTANCESCOLOR) && defined(INSTANCES)\nvarying vec4 vColor;\n#endif\n#include<clipPlaneVertexDeclaration>\n#include<fogVertexDeclaration>\n#include<__decl__lightFragment>[0..maxSimultaneousLights]\n#include<logDepthDeclaration>\nuniform mat4 reflectionViewProjection;uniform vec2 windDirection;uniform float waveLength;uniform float time;uniform float windForce;uniform float waveHeight;uniform float waveSpeed;uniform float waveCount;varying vec3 vRefractionMapTexCoord;varying vec3 vReflectionMapTexCoord;\n#define CUSTOM_VERTEX_DEFINITIONS\nvoid main(void) {\n#define CUSTOM_VERTEX_MAIN_BEGIN\n#include<instancesVertex>\n#include<bonesVertex>\n#include<bakedVertexAnimation>\nvec4 worldPos=finalWorld*vec4(position,1.0);vPositionW=vec3(worldPos);\n#ifdef NORMAL\nvNormalW=normalize(vec3(finalWorld*vec4(normal,0.0)));\n#endif\n#ifndef UV1\nvec2 uv=vec2(0.,0.);\n#endif\n#ifndef UV2\nvec2 uv2=vec2(0.,0.);\n#endif\n#ifdef BUMP\nif (vNormalInfos.x==0.)\n{vNormalUV=vec2(normalMatrix*vec4((uv*1.0)/waveLength+time*windForce*windDirection,1.0,0.0));\n#ifdef BUMPSUPERIMPOSE\nvNormalUV2=vec2(normalMatrix*vec4((uv*0.721)/waveLength+time*1.2*windForce*windDirection,1.0,0.0));\n#endif\n}\nelse\n{vNormalUV=vec2(normalMatrix*vec4((uv2*1.0)/waveLength+time*windForce*windDirection ,1.0,0.0));\n#ifdef BUMPSUPERIMPOSE\nvNormalUV2=vec2(normalMatrix*vec4((uv2*0.721)/waveLength+time*1.2*windForce*windDirection ,1.0,0.0));\n#endif\n}\n#endif\n#include<clipPlaneVertex>\n#include<fogVertex>\n#include<shadowsVertex>[0..maxSimultaneousLights]\n#include<vertexColorMixing>\n#if defined(POINTSIZE) && !defined(WEBGPU)\ngl_PointSize=pointSize;\n#endif\nfloat finalWaveCount=1.0/(waveCount*0.5);\n#ifdef USE_WORLD_COORDINATES\nvec3 p=worldPos.xyz;\n#else\nvec3 p=position;\n#endif\nfloat newY=(sin(((p.x/finalWaveCount)+time*waveSpeed))*waveHeight*windDirection.x*5.0)\n+ (cos(((p.z/finalWaveCount)+ time*waveSpeed))*waveHeight*windDirection.y*5.0);p.y+=abs(newY);\n#ifdef USE_WORLD_COORDINATES\ngl_Position=viewProjection*vec4(p,1.0);\n#else\ngl_Position=viewProjection*finalWorld*vec4(p,1.0);\n#endif\n#ifdef REFLECTION\nvRefractionMapTexCoord.x=0.5*(gl_Position.w+gl_Position.x);vRefractionMapTexCoord.y=0.5*(gl_Position.w+gl_Position.y);vRefractionMapTexCoord.z=gl_Position.w;worldPos=reflectionViewProjection*finalWorld*vec4(position,1.0);vReflectionMapTexCoord.x=0.5*(worldPos.w+worldPos.x);vReflectionMapTexCoord.y=0.5*(worldPos.w+worldPos.y);vReflectionMapTexCoord.z=worldPos.w;\n#endif\n#include<logDepthVertex>\n#define CUSTOM_VERTEX_MAIN_END\n}\n`;\n// Sideeffect\nShaderStore.ShadersStore[name] = shader;\n/** @internal */\nexport const waterVertexShader = { name, shader };\n"]}