Parcourir la source

Improved depth pre pass

David Catuhe il y a 8 ans
Parent
commit
cfdf6aa20d
56 fichiers modifiés avec 23884 ajouts et 23790 suppressions
  1. 8860 8857
      dist/preview release/babylon.d.ts
  2. 41 41
      dist/preview release/babylon.js
  3. 12 1
      dist/preview release/babylon.max.js
  4. 8860 8857
      dist/preview release/babylon.module.d.ts
  5. 41 41
      dist/preview release/babylon.worker.js
  6. 2969 2966
      dist/preview release/customConfigurations/minimalGLTFViewer/babylon.d.ts
  7. 41 41
      dist/preview release/customConfigurations/minimalGLTFViewer/babylon.js
  8. 12 1
      dist/preview release/customConfigurations/minimalGLTFViewer/babylon.max.js
  9. 2969 2966
      dist/preview release/customConfigurations/minimalGLTFViewer/babylon.module.d.ts
  10. 2 1
      dist/preview release/materialsLibrary/babylon.cellMaterial.js
  11. 1 1
      dist/preview release/materialsLibrary/babylon.cellMaterial.min.js
  12. 2 1
      dist/preview release/materialsLibrary/babylon.fireMaterial.js
  13. 1 1
      dist/preview release/materialsLibrary/babylon.fireMaterial.min.js
  14. 2 1
      dist/preview release/materialsLibrary/babylon.furMaterial.js
  15. 1 1
      dist/preview release/materialsLibrary/babylon.furMaterial.min.js
  16. 2 1
      dist/preview release/materialsLibrary/babylon.gradientMaterial.js
  17. 1 1
      dist/preview release/materialsLibrary/babylon.gradientMaterial.min.js
  18. 2 1
      dist/preview release/materialsLibrary/babylon.lavaMaterial.js
  19. 1 1
      dist/preview release/materialsLibrary/babylon.lavaMaterial.min.js
  20. 2 1
      dist/preview release/materialsLibrary/babylon.normalMaterial.js
  21. 1 1
      dist/preview release/materialsLibrary/babylon.normalMaterial.min.js
  22. 2 1
      dist/preview release/materialsLibrary/babylon.simpleMaterial.js
  23. 1 1
      dist/preview release/materialsLibrary/babylon.simpleMaterial.min.js
  24. 2 1
      dist/preview release/materialsLibrary/babylon.terrainMaterial.js
  25. 1 1
      dist/preview release/materialsLibrary/babylon.terrainMaterial.min.js
  26. 2 1
      dist/preview release/materialsLibrary/babylon.triPlanarMaterial.js
  27. 1 1
      dist/preview release/materialsLibrary/babylon.triPlanarMaterial.min.js
  28. 1 0
      dist/preview release/materialsLibrary/babylon.waterMaterial.js
  29. 1 1
      dist/preview release/materialsLibrary/babylon.waterMaterial.min.js
  30. 1 0
      dist/preview release/what's new.md
  31. 1 0
      materialsLibrary/src/cell/babylon.cellMaterial.ts
  32. 2 0
      materialsLibrary/src/cell/cell.fragment.fx
  33. 1 0
      materialsLibrary/src/fire/babylon.fireMaterial.ts
  34. 2 0
      materialsLibrary/src/fire/fire.fragment.fx
  35. 1 0
      materialsLibrary/src/fur/babylon.furMaterial.ts
  36. 2 0
      materialsLibrary/src/fur/fur.fragment.fx
  37. 1 0
      materialsLibrary/src/gradient/babylon.gradientMaterial.ts
  38. 2 0
      materialsLibrary/src/gradient/gradient.fragment.fx
  39. 1 0
      materialsLibrary/src/lava/babylon.lavaMaterial.ts
  40. 2 0
      materialsLibrary/src/lava/lava.fragment.fx
  41. 1 0
      materialsLibrary/src/normal/babylon.normalMaterial.ts
  42. 2 0
      materialsLibrary/src/normal/normal.fragment.fx
  43. 1 0
      materialsLibrary/src/simple/babylon.simpleMaterial.ts
  44. 2 0
      materialsLibrary/src/simple/simple.fragment.fx
  45. 1 0
      materialsLibrary/src/terrain/babylon.terrainMaterial.ts
  46. 2 0
      materialsLibrary/src/terrain/terrain.fragment.fx
  47. 1 0
      materialsLibrary/src/triPlanar/babylon.triPlanarMaterial.ts
  48. 2 0
      materialsLibrary/src/triPlanar/triplanar.fragment.fx
  49. 1 0
      materialsLibrary/src/water/babylon.waterMaterial.ts
  50. 1 0
      src/Materials/PBR/babylon.pbrBaseMaterial.ts
  51. 5 0
      src/Materials/babylon.materialHelper.ts
  52. 1 0
      src/Materials/babylon.standardMaterial.ts
  53. 4 0
      src/Shaders/ShadersInclude/depthPrePass.fx
  54. 2 0
      src/Shaders/default.fragment.fx
  55. 2 0
      src/Shaders/pbr.fragment.fx
  56. 6 0
      src/babylon.engine.ts

Fichier diff supprimé car celui-ci est trop grand
+ 8860 - 8857
dist/preview release/babylon.d.ts


Fichier diff supprimé car celui-ci est trop grand
+ 41 - 41
dist/preview release/babylon.js


Fichier diff supprimé car celui-ci est trop grand
+ 12 - 1
dist/preview release/babylon.max.js


Fichier diff supprimé car celui-ci est trop grand
+ 8860 - 8857
dist/preview release/babylon.module.d.ts


Fichier diff supprimé car celui-ci est trop grand
+ 41 - 41
dist/preview release/babylon.worker.js


Fichier diff supprimé car celui-ci est trop grand
+ 2969 - 2966
dist/preview release/customConfigurations/minimalGLTFViewer/babylon.d.ts


Fichier diff supprimé car celui-ci est trop grand
+ 41 - 41
dist/preview release/customConfigurations/minimalGLTFViewer/babylon.js


Fichier diff supprimé car celui-ci est trop grand
+ 12 - 1
dist/preview release/customConfigurations/minimalGLTFViewer/babylon.max.js


Fichier diff supprimé car celui-ci est trop grand
+ 2969 - 2966
dist/preview release/customConfigurations/minimalGLTFViewer/babylon.module.d.ts


Fichier diff supprimé car celui-ci est trop grand
+ 2 - 1
dist/preview release/materialsLibrary/babylon.cellMaterial.js


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
dist/preview release/materialsLibrary/babylon.cellMaterial.min.js


Fichier diff supprimé car celui-ci est trop grand
+ 2 - 1
dist/preview release/materialsLibrary/babylon.fireMaterial.js


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
dist/preview release/materialsLibrary/babylon.fireMaterial.min.js


Fichier diff supprimé car celui-ci est trop grand
+ 2 - 1
dist/preview release/materialsLibrary/babylon.furMaterial.js


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
dist/preview release/materialsLibrary/babylon.furMaterial.min.js


Fichier diff supprimé car celui-ci est trop grand
+ 2 - 1
dist/preview release/materialsLibrary/babylon.gradientMaterial.js


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
dist/preview release/materialsLibrary/babylon.gradientMaterial.min.js


Fichier diff supprimé car celui-ci est trop grand
+ 2 - 1
dist/preview release/materialsLibrary/babylon.lavaMaterial.js


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
dist/preview release/materialsLibrary/babylon.lavaMaterial.min.js


Fichier diff supprimé car celui-ci est trop grand
+ 2 - 1
dist/preview release/materialsLibrary/babylon.normalMaterial.js


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
dist/preview release/materialsLibrary/babylon.normalMaterial.min.js


Fichier diff supprimé car celui-ci est trop grand
+ 2 - 1
dist/preview release/materialsLibrary/babylon.simpleMaterial.js


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
dist/preview release/materialsLibrary/babylon.simpleMaterial.min.js


Fichier diff supprimé car celui-ci est trop grand
+ 2 - 1
dist/preview release/materialsLibrary/babylon.terrainMaterial.js


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
dist/preview release/materialsLibrary/babylon.terrainMaterial.min.js


Fichier diff supprimé car celui-ci est trop grand
+ 2 - 1
dist/preview release/materialsLibrary/babylon.triPlanarMaterial.js


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
dist/preview release/materialsLibrary/babylon.triPlanarMaterial.min.js


+ 1 - 0
dist/preview release/materialsLibrary/babylon.waterMaterial.js

@@ -25,6 +25,7 @@ var BABYLON;
             _this.REFLECTION = false;
             _this.CLIPPLANE = false;
             _this.ALPHATEST = false;
+            _this.DEPTHPREPASS = false;
             _this.POINTSIZE = false;
             _this.FOG = false;
             _this.NORMAL = false;

Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
dist/preview release/materialsLibrary/babylon.waterMaterial.min.js


+ 1 - 0
dist/preview release/what's new.md

@@ -11,6 +11,7 @@
  - Framing ([deltakosh](https://github.com/deltakosh))
  - Bouncing ([deltakosh](https://github.com/deltakosh))
 - New InputText for Babylon.GUI. [Doc here](http://doc.babylonjs.com/overviews/gui#inputtext) ([deltakosh](https://github.com/deltakosh))
+- Added support for depth pre-pass rendering. [Doc here](http://doc.babylonjs.com/tutorials/transparency_and_how_meshes_are_rendered#depth-pre-pass-meshes) ([deltakosh](https://github.com/deltakosh))
 
 ## Updates
 - New `camera.storeState()` and `camera.restoreState()` functions to store / restore cameras position / rotation / fov. (Doc here)[http://doc.babylonjs.com/tutorials/cameras#state] ([deltakosh](https://github.com/deltakosh))

+ 1 - 0
materialsLibrary/src/cell/babylon.cellMaterial.ts

@@ -18,6 +18,7 @@ module BABYLON {
         public NDOTL = true;
         public CUSTOMUSERLIGHTING = true;
         public CELLBASIC = true;
+        public DEPTHPREPASS = false;
         public USERIGHTHANDEDSYSTEM = false;
 
         constructor() {

+ 2 - 0
materialsLibrary/src/cell/cell.fragment.fx

@@ -107,6 +107,8 @@ void main(void)
 		discard;
 #endif
 
+#include<depthPrePass>
+
 	baseColor.rgb *= vDiffuseInfos.y;
 #endif
 

+ 1 - 0
materialsLibrary/src/fire/babylon.fireMaterial.ts

@@ -6,6 +6,7 @@ module BABYLON {
         public DIFFUSE = false;
         public CLIPPLANE = false;
         public ALPHATEST = false;
+        public DEPTHPREPASS = false;
         public POINTSIZE = false;
         public FOG = false;
         public UV1 = false;

+ 2 - 0
materialsLibrary/src/fire/fire.fragment.fx

@@ -71,6 +71,8 @@ void main(void) {
 	if (opacityColor.r < 0.1)
 		discard;
 #endif
+
+#include<depthPrePass>
 	
 	baseColor = texture2D(diffuseSampler, perturbedBaseCoords.xy) * 2.0;
 	baseColor *= opacityColor;

+ 1 - 0
materialsLibrary/src/fur/babylon.furMaterial.ts

@@ -6,6 +6,7 @@ module BABYLON {
         public HEIGHTMAP = false;
         public CLIPPLANE = false;
         public ALPHATEST = false;
+        public DEPTHPREPASS = false;
         public POINTSIZE = false;
         public FOG = false;
         public NORMAL = false;

+ 2 - 0
materialsLibrary/src/fur/fur.fragment.fx

@@ -70,6 +70,8 @@ void main(void) {
 		discard;
 #endif
 
+#include<depthPrePass>
+
 	baseColor.rgb *= vDiffuseInfos.y;
 #endif
 

+ 1 - 0
materialsLibrary/src/gradient/babylon.gradientMaterial.ts

@@ -5,6 +5,7 @@ module BABYLON {
         public DIFFUSE = false;
         public CLIPPLANE = false;
         public ALPHATEST = false;
+        public DEPTHPREPASS = false;
         public POINTSIZE = false;
         public FOG = false;
         public LIGHT0 = false;

+ 2 - 0
materialsLibrary/src/gradient/gradient.fragment.fx

@@ -68,6 +68,8 @@ void main(void) {
 		discard;
 #endif
 
+#include<depthPrePass>
+
 #ifdef VERTEXCOLOR
 	baseColor.rgb *= vColor.rgb;
 #endif

+ 1 - 0
materialsLibrary/src/lava/babylon.lavaMaterial.ts

@@ -5,6 +5,7 @@ module BABYLON {
         public DIFFUSE = false;
         public CLIPPLANE = false;
         public ALPHATEST = false;
+        public DEPTHPREPASS = false;
         public POINTSIZE = false;
         public FOG = false;
         public LIGHT0 = false;

+ 2 - 0
materialsLibrary/src/lava/lava.fragment.fx

@@ -108,6 +108,8 @@ void main(void) {
 		discard;
 #endif
 
+#include<depthPrePass>
+
 	baseColor.rgb *= vDiffuseInfos.y;
 #endif
 

+ 1 - 0
materialsLibrary/src/normal/babylon.normalMaterial.ts

@@ -5,6 +5,7 @@ module BABYLON {
         public DIFFUSE = false;
         public CLIPPLANE = false;
         public ALPHATEST = false;
+        public DEPTHPREPASS = false;
         public POINTSIZE = false;
         public FOG = false;
         public LIGHT0 = false;

+ 2 - 0
materialsLibrary/src/normal/normal.fragment.fx

@@ -60,6 +60,8 @@ void main(void) {
 		discard;
 #endif
 
+#include<depthPrePass>
+
 	baseColor.rgb *= vDiffuseInfos.y;
 #endif
 

+ 1 - 0
materialsLibrary/src/simple/babylon.simpleMaterial.ts

@@ -5,6 +5,7 @@ module BABYLON {
         public DIFFUSE = false;
         public CLIPPLANE = false;
         public ALPHATEST = false;
+        public DEPTHPREPASS = false;
         public POINTSIZE = false;
         public FOG = false;
         public NORMAL = false;

+ 2 - 0
materialsLibrary/src/simple/simple.fragment.fx

@@ -56,6 +56,8 @@ void main(void) {
 		discard;
 #endif
 
+#include<depthPrePass>
+
 	baseColor.rgb *= vDiffuseInfos.y;
 #endif
 

+ 1 - 0
materialsLibrary/src/terrain/babylon.terrainMaterial.ts

@@ -7,6 +7,7 @@ module BABYLON {
         public BUMP = false;
         public CLIPPLANE = false;
         public ALPHATEST = false;
+        public DEPTHPREPASS = false;
         public POINTSIZE = false;
         public FOG = false;
         public SPECULARTERM = false;

+ 2 - 0
materialsLibrary/src/terrain/terrain.fragment.fx

@@ -137,6 +137,8 @@ void main(void) {
 		discard;
 #endif
 
+#include<depthPrePass>
+
 	baseColor.rgb *= vTextureInfos.y;
 	
 	vec4 diffuse1Color = texture2D(diffuse1Sampler, vTextureUV * diffuse1Infos);

+ 1 - 0
materialsLibrary/src/triPlanar/babylon.triPlanarMaterial.ts

@@ -12,6 +12,7 @@ module BABYLON {
         
         public CLIPPLANE = false;
         public ALPHATEST = false;
+        public DEPTHPREPASS = false;
         public POINTSIZE = false;
         public FOG = false;
         public SPECULARTERM = false;

+ 2 - 0
materialsLibrary/src/triPlanar/triplanar.fragment.fx

@@ -108,6 +108,8 @@ void main(void) {
 		discard;
 #endif
 
+#include<depthPrePass>
+
 #ifdef VERTEXCOLOR
 	baseColor.rgb *= vColor.rgb;
 #endif

+ 1 - 0
materialsLibrary/src/water/babylon.waterMaterial.ts

@@ -6,6 +6,7 @@ module BABYLON {
         public REFLECTION = false;
         public CLIPPLANE = false;
         public ALPHATEST = false;
+        public DEPTHPREPASS = false;
         public POINTSIZE = false;
         public FOG = false;
         public NORMAL = false;

+ 1 - 0
src/Materials/PBR/babylon.pbrBaseMaterial.ts

@@ -20,6 +20,7 @@
         public OPACITYDIRECTUV = 0;
         public OPACITYRGB = false;
         public ALPHATEST = false;
+        public DEPTHPREPASS = false;
         public ALPHABLEND = false;
         public ALPHAFROMALBEDO = false;
         public ALPHATESTVALUE = 0.5;

+ 5 - 0
src/Materials/babylon.materialHelper.ts

@@ -46,6 +46,11 @@
                 changed = true;
             }
 
+            if (defines["DEPTHPREPASS"] !== !engine.getColorWrite()) {
+                defines["DEPTHPREPASS"] = !defines["DEPTHPREPASS"];
+                changed = true;
+            }            
+
             if (defines["INSTANCES"] !== useInstances) {
                 defines["INSTANCES"] = useInstances;
                 changed = true;

+ 1 - 0
src/Materials/babylon.standardMaterial.ts

@@ -21,6 +21,7 @@ module BABYLON {
         public SPECULAROVERALPHA = false;
         public CLIPPLANE = false;
         public ALPHATEST = false;
+        public DEPTHPREPASS = false;
         public ALPHAFROMDIFFUSE = false;
         public POINTSIZE = false;
         public FOG = false;

+ 4 - 0
src/Shaders/ShadersInclude/depthPrePass.fx

@@ -0,0 +1,4 @@
+#ifdef DEPTHPREPASS
+	gl_FragColor = vec4(0., 0., 0., 1.0);
+	return;
+#endif

+ 2 - 0
src/Shaders/default.fragment.fx

@@ -185,6 +185,8 @@ void main(void) {
 		discard;
 #endif
 
+#include<depthPrePass>
+
 #ifdef ALPHAFROMDIFFUSE
 	alpha *= baseColor.a;
 #endif

+ 2 - 0
src/Shaders/pbr.fragment.fx

@@ -288,6 +288,8 @@ void main(void) {
 	#endif
 #endif
 
+#include<depthPrePass>
+
 #ifdef VERTEXCOLOR
 	surfaceAlbedo *= vColor.rgb;
 #endif

+ 6 - 0
src/babylon.engine.ts

@@ -613,6 +613,7 @@
         private _pointerLockRequested: boolean;
         private _alphaTest: boolean;
         private _isStencilEnable: boolean;
+        private _colorWrite = true;
 
         private _loadingScreen: ILoadingScreen;
 
@@ -2553,6 +2554,11 @@
 
         public setColorWrite(enable: boolean): void {
             this._gl.colorMask(enable, enable, enable, enable);
+            this._colorWrite = enable;
+        }
+
+        public getColorWrite(): boolean {
+            return this._colorWrite;
         }
 
         public setAlphaConstants(r: number, g: number, b: number, a: number) {