Browse Source

Added defaultRenderingPipeline

David Catuhe 8 years ago
parent
commit
040a4516d6

+ 17 - 6
Tools/Gulp/config.json

@@ -16,7 +16,8 @@
                 "pointLight", "directionalLight", "spotLight", "animations", "actions", "sprites", "picking", "collisions",
                 "particles", "solidParticles", "additionalMeshes", "meshBuilder", "audio", "additionalTextures", "shadows",
                 "loader", "userData", "offline", "fresnel", "multiMaterial", "touchCamera", "procedural", "gamepad",
-                "additionalCameras", "postProcesses", "renderingPipeline", "additionalRenderingPipeline", "depthRenderer", "geometryBufferRenderer", "additionalPostProcesses",
+                "additionalCameras", "postProcesses", "renderingPipeline", "additionalRenderingPipeline", "defaultRenderingPipeline",
+                "depthRenderer", "geometryBufferRenderer", "additionalPostProcesses",
                 "additionalPostProcess_blur", "additionalPostProcess_fxaa", "additionalPostProcess_imageProcessing",
                 "bones", "hdr", "polygonMesh", "csg", "lensFlares", "physics", "textureFormats", "debug", "morphTargets",
                 "colorCurves", "octrees", "simd", "vr", "virtualJoystick", "optimizations", "highlights", "assetsManager",
@@ -27,7 +28,7 @@
         "minimalViewer": [
                 "meshBuilder", "animations", "arcRotateCamera", "additionalTextures", "textureFormats", "debug",
                 "multiMaterial", "pbrMaterial", "pointLight", "directionalLight", "spotLight", "additionalPostProcess_blur", "additionalPostProcess_fxaa", "additionalPostProcess_highlights", "additionalPostProcess_imageProcessing",
-                "colorCurves"
+                "colorCurves", "defaultRenderingPipeline"
         ],
         "distributed": ["minimalViewer"]
     },
@@ -676,10 +677,10 @@
         "additionalRenderingPipeline" : 
         {
             "files": [
-                "../../src/PostProcess/babylon.ssaoRenderingPipeline.js",
-                "../../src/PostProcess/babylon.ssao2RenderingPipeline.js",
-                "../../src/PostProcess/babylon.lensRenderingPipeline.js",
-                "../../src/PostProcess/babylon.standardRenderingPipeline.js"
+                "../../src/PostProcess/RenderPipeline/Pipelines/babylon.ssaoRenderingPipeline.js",
+                "../../src/PostProcess/RenderPipeline/Pipelines/babylon.ssao2RenderingPipeline.js",
+                "../../src/PostProcess/RenderPipeline/Pipelines/babylon.lensRenderingPipeline.js",
+                "../../src/PostProcess/RenderPipeline/Pipelines/babylon.standardRenderingPipeline.js"
             ],
             "dependUpon" : [
                 "renderingPipeline", 
@@ -694,6 +695,16 @@
                 "depthOfField.fragment",
                 "standard.fragment"
             ]
+        },                       
+        "defaultRenderingPipeline" : 
+        {
+            "files": [
+                "../../src/PostProcess/RenderPipeline/Pipelines/babylon.defaultRenderingPipeline.js"
+            ],
+            "dependUpon" : [
+                "renderingPipeline", 
+                "additionalPostProcess_fxaa"
+            ]
         },
         "bones" : 
         {

File diff suppressed because it is too large
+ 1303 - 1274
dist/preview release/babylon.d.ts


File diff suppressed because it is too large
+ 26 - 26
dist/preview release/babylon.js


File diff suppressed because it is too large
+ 126 - 22
dist/preview release/babylon.max.js


File diff suppressed because it is too large
+ 1303 - 1274
dist/preview release/babylon.module.d.ts


File diff suppressed because it is too large
+ 13 - 13
dist/preview release/babylon.worker.js


+ 102 - 0
src/PostProcess/RenderPipeline/Pipelines/babylon.defaultRenderingPipeline.ts

@@ -0,0 +1,102 @@
+module BABYLON {
+    export class DefaultRenderingPipeline extends PostProcessRenderPipeline implements IDisposable, IAnimatable {
+        private _scene: Scene;     
+
+        /**
+        * The FxaaPostProcess Id
+        * @type {string}
+        */
+        readonly FxaaPostProcessId: string = "FxaaPostProcessEffect";           
+
+        // Post-processes
+        public fxaa: FxaaPostProcess;
+        public imageProcessing: ImageProcessingPostProcess;
+
+        // IAnimatable
+        public animations: Animation[] = [];        
+
+        // Values       
+        private _fxaaEnabled: boolean = false;
+        private _imageProcessingEnabled: boolean = false;
+
+        @serialize()
+        private _hdr: boolean;
+
+        public set FxaaEnabled(enabled: boolean) {
+            if (this._fxaaEnabled === enabled) {
+                return;
+            }
+            this._fxaaEnabled = enabled;
+
+            if (enabled) {
+                this._scene.postProcessRenderPipelineManager.enableEffectInPipeline(this._name, this.FxaaPostProcessId, this._scene.cameras);
+            }
+            else {
+                this._scene.postProcessRenderPipelineManager.disableEffectInPipeline(this._name, this.FxaaPostProcessId, this._scene.cameras);
+            }
+        }
+
+        @serialize()
+        public get FxaaEnabled(): boolean {
+            return this._fxaaEnabled;
+        }
+
+        /**
+         * @constructor
+         * @param {string} name - The rendering pipeline name
+         * @param {BABYLON.Scene} scene - The scene linked to this pipeline
+         * @param {any} ratio - The size of the postprocesses (0.5 means that your postprocess will have a width = canvas.width 0.5 and a height = canvas.height 0.5)
+         * @param {BABYLON.Camera[]} cameras - The array of cameras that the rendering pipeline will be attached to
+         */
+        constructor(name: string, hdr: boolean, scene: Scene, cameras?: Camera[]) {
+            super(scene.getEngine(), name);
+            this._cameras = cameras || [];
+
+            // Initialize
+            this._hdr = hdr;
+            this._scene = scene;
+
+            // Misc
+            var floatTextureType = scene.getEngine().getCaps().textureFloatRender ? Engine.TEXTURETYPE_FLOAT : Engine.TEXTURETYPE_HALF_FLOAT;
+
+            // fxaa
+            this.fxaa = new FxaaPostProcess("fxaa", 1.0, null, Texture.BILINEAR_SAMPLINGMODE, scene.getEngine(), false, floatTextureType);
+            this.addEffect(new PostProcessRenderEffect(scene.getEngine(), this.FxaaPostProcessId, () => { return this.fxaa; }, true));
+
+            // Finish
+            scene.postProcessRenderPipelineManager.addPipeline(this);
+
+            if (cameras !== null) {
+                scene.postProcessRenderPipelineManager.attachCamerasToRenderPipeline(name, cameras);
+            }
+
+            // Deactivate
+            this.FxaaEnabled = false;
+        }
+        // Dispose
+        public dispose(): void {
+            for (var i = 0; i < this._cameras.length; i++) {
+                var camera = this._cameras[i];
+
+                this.fxaa.dispose(camera);
+            }
+
+            this._scene.postProcessRenderPipelineManager.detachCamerasFromRenderPipeline(this._name, this._cameras);
+
+            super.dispose();
+        }
+
+        // Serialize rendering pipeline
+        public serialize(): any {
+            var serializationObject = SerializationHelper.Serialize(this);   
+            serializationObject.customType = "DefaultRenderingPipeline";
+
+            return serializationObject;
+        }
+
+        // Parse serialized pipeline
+        public static Parse(source: any, scene: Scene, rootUrl: string): DefaultRenderingPipeline {
+            return SerializationHelper.Parse(() => new DefaultRenderingPipeline(source._name, source._name._hdr, scene), source, scene, rootUrl);
+        }
+    }
+}

src/PostProcess/babylon.lensRenderingPipeline.ts → src/PostProcess/RenderPipeline/Pipelines/babylon.lensRenderingPipeline.ts


src/PostProcess/babylon.ssao2RenderingPipeline.ts → src/PostProcess/RenderPipeline/Pipelines/babylon.ssao2RenderingPipeline.ts


src/PostProcess/babylon.ssaoRenderingPipeline.ts → src/PostProcess/RenderPipeline/Pipelines/babylon.ssaoRenderingPipeline.ts


src/PostProcess/babylon.standardRenderingPipeline.ts → src/PostProcess/RenderPipeline/Pipelines/babylon.standardRenderingPipeline.ts


+ 1 - 0
src/PostProcess/RenderPipeline/babylon.postProcessRenderPipeline.ts

@@ -8,6 +8,7 @@ module BABYLON {
         protected _cameras: Camera[];
 
         // private
+        @serialize()
         public _name: string;
 
         private static PASS_EFFECT_NAME: string = "passEffect";