Benjamin Guignabert 8 年之前
父節點
當前提交
2944f8f021

文件差異過大導致無法顯示
+ 5576 - 5576
dist/preview release/babylon.d.ts


文件差異過大導致無法顯示
+ 5576 - 5576
dist/preview release/babylon.module.d.ts


+ 2 - 0
src/Materials/Textures/babylon.multiRenderTarget.ts

@@ -45,6 +45,7 @@ module BABYLON {
             options = options || {};
 
             var generateMipMaps = options.generateMipMaps ? options.generateMipMaps[0] : false;
+            var generateDepthTexture = options.generateDepthTexture ? options.generateDepthTexture : false;
             var doNotChangeAspectRatio = options.doNotChangeAspectRatio === undefined ? true : options.doNotChangeAspectRatio;
             var type = options.types ? options.types[0] : Engine.TEXTURETYPE_FLOAT;
             var samplingMode = options.samplingModes ? options.samplingModes[0] : Texture.TRILINEAR_SAMPLINGMODE;
@@ -60,6 +61,7 @@ module BABYLON {
                 generateMipMaps: generateMipMaps,
                 generateDepthBuffer: generateDepthBuffer,
                 generateStencilBuffer: generateStencilBuffer,
+                generateDepthTexture: generateDepthTexture,
                 type: type,
                 textureCount: count
             });

+ 3 - 10
src/PostProcess/babylon.ssaoRenderingPipeline.ts

@@ -107,7 +107,7 @@
             var ssaoRatio = ratio.ssaoRatio || ratio;
             var combineRatio = ratio.combineRatio || ratio;
             this._ratio = {
-                ssaoRatio: 1.0, //ssaoRatio,
+                ssaoRatio: ssaoRatio,
                 combineRatio: combineRatio
             };
 
@@ -119,8 +119,8 @@
             // Set up pipeline
             this.addEffect(new PostProcessRenderEffect(scene.getEngine(), this.SSAOOriginalSceneColorEffect, () => { return this._originalColorPostProcess; }, true));
             this.addEffect(new PostProcessRenderEffect(scene.getEngine(), this.SSAORenderEffect, () => { return this._ssaoPostProcess; }, true));
-            this.addEffect(new PostProcessRenderEffect(scene.getEngine(), this.SSAOBlurHRenderEffect, () => { return this._blurHPostProcess; }, true));
-            this.addEffect(new PostProcessRenderEffect(scene.getEngine(), this.SSAOBlurVRenderEffect, () => { return this._blurVPostProcess; }, true));
+            // this.addEffect(new PostProcessRenderEffect(scene.getEngine(), this.SSAOBlurHRenderEffect, () => { return this._blurHPostProcess; }, true));
+            // this.addEffect(new PostProcessRenderEffect(scene.getEngine(), this.SSAOBlurVRenderEffect, () => { return this._blurVPostProcess; }, true));
             this.addEffect(new PostProcessRenderEffect(scene.getEngine(), this.SSAOCombineRenderEffect, () => { return this._ssaoCombinePostProcess; }, true));
 
             // Finish
@@ -157,13 +157,6 @@
 
         // Private Methods
         private _createBlurPostProcess(ratio: number): void {
-            /*
-            var samplerOffsets = [
-                -8.0, -6.0, -4.0, -2.0,
-                0.0,
-                2.0, 4.0, 6.0, 8.0
-            ];
-            */
             var samples = 16;
             var samplerOffsets = [];
 

+ 1 - 1
src/Rendering/babylon.geometryRenderer.ts

@@ -16,7 +16,7 @@ module BABYLON {
             var engine = scene.getEngine();
 
             // Render target
-            this._multiRenderTarget = new MultiRenderTarget("gBuffer", { width: engine.getRenderWidth(), height: engine.getRenderHeight() }, 2, this._scene, {generateMipMaps : [true]});
+            this._multiRenderTarget = new MultiRenderTarget("gBuffer", { width: engine.getRenderWidth(), height: engine.getRenderHeight() }, 2, this._scene, { generateMipMaps : [true], generateDepthTexture: true });
             // set default depth value to 1.0 (far away)
             this._multiRenderTarget.onClearObservable.add((engine: Engine) => {
                 engine.clear(new Color4(1.0, 1.0, 1.0, 1.0), true, true, true);

+ 2 - 2
src/Shaders/ssao.fragment.fx

@@ -101,8 +101,8 @@ void main()
 	   float rangeCheck = abs(linearDepth - linearSampleDepth) < radiusDepth ? 1.0 : 0.0;
 	   // occlusion += (sampleDepth <= samplePosition.z ? 1.0 : 0.0) * rangeCheck;
 	  	difference = samplePosition.z - linearSampleDepth;
-	  	occlusion += step(fallOff, difference) * (1.0 - smoothstep(fallOff, area, difference)) * rangeCheck;
-	  	//occlusion += (difference > 0.0 ? 1.0 : 0.0) * rangeCheck;
+	  	//occlusion += step(fallOff, difference) * (1.0 - smoothstep(fallOff, area, difference)) * rangeCheck;
+	  	occlusion += (difference > 0.00000005 ? 1.0 : 0.0) * rangeCheck;
 
 	}
 

+ 16 - 24
src/babylon.engine.ts

@@ -2615,17 +2615,6 @@
             gl.bindRenderbuffer(gl.RENDERBUFFER, null);
             this.bindUnboundFramebuffer(null);
 
-            // Debug
-            // texture._MSAAFramebuffer = gl.createFramebuffer();
-            // this.bindUnboundFramebuffer(texture._MSAAFramebuffer);
-            // var colorRenderbuffer = gl.createRenderbuffer();
-            // gl.bindRenderbuffer(gl.RENDERBUFFER, colorRenderbuffer);
-            // gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, colorRenderbuffer);
-            // gl.renderbufferStorageMultisample(gl.RENDERBUFFER, 8, gl.RGBA8, texture._width, texture._height);
-            // gl.bindRenderbuffer(gl.RENDERBUFFER, null);
-            // this.bindUnboundFramebuffer(null);
-            // texture._MSAARenderBuffer = colorRenderbuffer;
-
             texture._framebuffer = framebuffer;
             texture._baseWidth = width;
             texture._baseHeight = height;
@@ -2651,6 +2640,7 @@
             var generateMipMaps = false;
             var generateDepthBuffer = true;
             var generateStencilBuffer = false;
+            var generateDepthTexture = false;
             var textureCount = 1;
 
             var type = Engine.TEXTURETYPE_UNSIGNED_INT;
@@ -2659,6 +2649,7 @@
                 generateMipMaps = options.generateMipMaps;
                 generateDepthBuffer = options.generateDepthBuffer === undefined ? true : options.generateDepthBuffer;
                 generateStencilBuffer = options.generateStencilBuffer;
+                generateDepthTexture = options.generateDepthTexture;
                 textureCount = options.textureCount || 1;
 
                 type = options.type === undefined ? type : options.type;
@@ -2679,13 +2670,13 @@
             var framebuffer = gl.createFramebuffer();
             this.bindUnboundFramebuffer(framebuffer);
 
-            var colorRenderbuffer = gl.createRenderbuffer();
-            gl.bindRenderbuffer(gl.RENDERBUFFER, colorRenderbuffer);
-            gl.renderbufferStorageMultisample(gl.RENDERBUFFER, 16, gl.RGBA8, width, height);
-            gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
-            gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, colorRenderbuffer);
-            gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT1, gl.RENDERBUFFER, colorRenderbuffer);
-            gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, colorRenderbuffer);
+            // var colorRenderbuffer = gl.createRenderbuffer();
+            // gl.bindRenderbuffer(gl.RENDERBUFFER, colorRenderbuffer);
+            // gl.renderbufferStorageMultisample(gl.RENDERBUFFER, 16, gl.RGBA8, width, height);
+            // gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
+            // gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, colorRenderbuffer);
+            // gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT1, gl.RENDERBUFFER, colorRenderbuffer);
+            // gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, colorRenderbuffer);
 
             var width = size.width || size;
             var height = size.height || size;
@@ -2698,6 +2689,8 @@
                 Tools.Warn("Float textures are not supported. Render target forced to TEXTURETYPE_UNSIGNED_BYTE type");
             }
 
+            var depthStencilBuffer = this._setupFramebufferDepthAttachments(generateStencilBuffer, generateDepthBuffer, width, height);
+
             for (var i = 0; i < textureCount; i++) {
                 var texture = gl.createTexture();
                 var attachment = gl["COLOR_ATTACHMENT" + i];
@@ -2716,7 +2709,6 @@
             
                 gl.framebufferTexture2D(gl.DRAW_FRAMEBUFFER, attachment, gl.TEXTURE_2D, texture, 0);
 
-                // texture._depthStencilBuffer = this._setupFramebufferDepthAttachments(generateStencilBuffer, generateDepthBuffer, width, height);
 
                 if (generateMipMaps) {
                     this._gl.generateMipmap(this._gl.TEXTURE_2D);
@@ -2726,6 +2718,7 @@
                 this._bindTextureDirectly(gl.TEXTURE_2D, null);
 
                 texture._framebuffer = framebuffer;
+                texture._depthStencilBuffer = depthStencilBuffer;
                 texture._baseWidth = width;
                 texture._baseHeight = height;
                 texture._width = width;
@@ -2738,9 +2731,11 @@
                 texture.type = type;
                 texture._generateDepthBuffer = generateDepthBuffer;
                 texture._generateStencilBuffer = generateStencilBuffer;
+
+                this._loadedTexturesCache.push(texture);
             }
 
-            if (generateDepthBuffer) {
+            if (generateDepthTexture) {
                 // Depth texture
                 var depthTexture = gl.createTexture();
 
@@ -2780,11 +2775,11 @@
                 depthTexture.generateMipMaps = generateMipMaps;
                 depthTexture.references = 1;
                 depthTexture.samplingMode = gl.NEAREST;
-                // depthTexture.type = Engine.TEXTURETYPE_UNSIGNED_INT;
                 depthTexture._generateDepthBuffer = generateDepthBuffer;
                 depthTexture._generateStencilBuffer = generateStencilBuffer;
 
                 textures.push(depthTexture)
+                this._loadedTexturesCache.push(depthTexture);
             }
 
             gl.drawBuffers(attachments);
@@ -2793,9 +2788,6 @@
 
             this.resetTextureCache();
 
-            // To keep ?
-            //this._loadedTexturesCache.push(texture);
-
             return textures;
         }