Просмотр исходного кода

Added effect.getVertexShaderSource and effect.getFragmentShaderSource

David Catuhe 8 лет назад
Родитель
Сommit
152ca77325

Разница между файлами не показана из-за своего большого размера
+ 19 - 19
dist/preview release/babylon.core.js


Разница между файлами не показана из-за своего большого размера
+ 1386 - 1382
dist/preview release/babylon.d.ts


Разница между файлами не показана из-за своего большого размера
+ 18 - 18
dist/preview release/babylon.js


+ 22 - 7
dist/preview release/babylon.max.js

@@ -8819,6 +8819,14 @@ var BABYLON;
         Engine.prototype.attachContextRestoredEvent = function (callback) {
             this._renderingCanvas.addEventListener("webglcontextrestored", callback, false);
         };
+        Engine.prototype.getVertexShaderSource = function (program) {
+            var shaders = this._gl.getAttachedShaders(program);
+            return this._gl.getShaderSource(shaders[0]);
+        };
+        Engine.prototype.getFragmentShaderSource = function (program) {
+            var shaders = this._gl.getAttachedShaders(program);
+            return this._gl.getShaderSource(shaders[1]);
+        };
         // FPS
         Engine.prototype.getFps = function () {
             return this.fps;
@@ -24807,6 +24815,12 @@ var BABYLON;
         Effect.prototype.getCompilationError = function () {
             return this._compilationError;
         };
+        Effect.prototype.getVertexShaderSource = function () {
+            return this._engine.getVertexShaderSource(this._program);
+        };
+        Effect.prototype.getFragmentShaderSource = function () {
+            return this._engine.getFragmentShaderSource(this._program);
+        };
         // Methods
         Effect.prototype._loadVertexShader = function (vertex, callback) {
             // DOM element ?
@@ -26114,6 +26128,14 @@ var BABYLON;
                 }
             }
             var scene = this.getScene();
+            var engine = scene.getEngine();
+            var needUVs = false;
+            var needNormals = false;
+            this._defines.reset();
+            // Lights
+            if (scene.lightsEnabled && !this.disableLighting) {
+                needNormals = BABYLON.MaterialHelper.PrepareDefinesForLights(scene, mesh, this._defines, this.maxSimultaneousLights);
+            }
             if (!this.checkReadyOnEveryCall) {
                 if (this._renderId === scene.getRenderId()) {
                     if (this._checkCache(scene, mesh, useInstances)) {
@@ -26121,10 +26143,6 @@ var BABYLON;
                     }
                 }
             }
-            var engine = scene.getEngine();
-            var needNormals = false;
-            var needUVs = false;
-            this._defines.reset();
             // Textures
             if (scene.texturesEnabled) {
                 if (this.diffuseTexture && StandardMaterial.DiffuseTextureEnabled) {
@@ -26302,9 +26320,6 @@ var BABYLON;
             if (scene.fogEnabled && mesh && mesh.applyFog && scene.fogMode !== BABYLON.Scene.FOGMODE_NONE && this.fogEnabled) {
                 this._defines.FOG = true;
             }
-            if (scene.lightsEnabled && !this.disableLighting) {
-                needNormals = BABYLON.MaterialHelper.PrepareDefinesForLights(scene, mesh, this._defines, this.maxSimultaneousLights);
-            }
             if (StandardMaterial.FresnelEnabled) {
                 // Fresnel
                 if (this.diffuseFresnelParameters && this.diffuseFresnelParameters.isEnabled ||

Разница между файлами не показана из-за своего большого размера
+ 18 - 18
dist/preview release/babylon.noworker.js


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

@@ -10,6 +10,7 @@
 - New BoneLookController [Demo](http://www.babylonjs-playground.com/#1B1PUZ#13) - ([abow](https://github.com/abow))
 
 ### Updates
+- Added `Effect.GetVertexShaderSource()` and `Effect.GetFragmentShaderSource()` ([deltakosh](https://github.com/deltakosh))
 - New `Texture.LoadFromDataString()` to help loading base64 encoded textures ([deltakosh](https://github.com/deltakosh))
 - You can now specify an array of string when loading a texture (they will be considered as fallbacks) ([deltakosh](https://github.com/deltakosh))
 - Added Bone.getAbsolutePosition and Bone.getAbsolutePositionToRef ([abow](https://github.com/abow))

+ 6 - 0
src/Materials/babylon.effect.js

@@ -125,6 +125,12 @@ var BABYLON;
         Effect.prototype.getCompilationError = function () {
             return this._compilationError;
         };
+        Effect.prototype.getVertexShaderSource = function () {
+            return this._engine.getVertexShaderSource(this._program);
+        };
+        Effect.prototype.getFragmentShaderSource = function () {
+            return this._engine.getFragmentShaderSource(this._program);
+        };
         // Methods
         Effect.prototype._loadVertexShader = function (vertex, callback) {
             // DOM element ?

+ 8 - 0
src/Materials/babylon.effect.ts

@@ -168,6 +168,14 @@
             return this._compilationError;
         }
 
+        public getVertexShaderSource(): string {
+            return this._engine.getVertexShaderSource(this._program);
+        }
+
+        public getFragmentShaderSource(): string {
+            return this._engine.getFragmentShaderSource(this._program);
+        }
+
         // Methods
         public _loadVertexShader(vertex: any, callback: (data: any) => void): void {
             // DOM element ?

+ 8 - 7
src/Materials/babylon.standardMaterial.js

@@ -181,6 +181,14 @@ var BABYLON;
                 }
             }
             var scene = this.getScene();
+            var engine = scene.getEngine();
+            var needUVs = false;
+            var needNormals = false;
+            this._defines.reset();
+            // Lights
+            if (scene.lightsEnabled && !this.disableLighting) {
+                needNormals = BABYLON.MaterialHelper.PrepareDefinesForLights(scene, mesh, this._defines, this.maxSimultaneousLights);
+            }
             if (!this.checkReadyOnEveryCall) {
                 if (this._renderId === scene.getRenderId()) {
                     if (this._checkCache(scene, mesh, useInstances)) {
@@ -188,10 +196,6 @@ var BABYLON;
                     }
                 }
             }
-            var engine = scene.getEngine();
-            var needNormals = false;
-            var needUVs = false;
-            this._defines.reset();
             // Textures
             if (scene.texturesEnabled) {
                 if (this.diffuseTexture && StandardMaterial.DiffuseTextureEnabled) {
@@ -369,9 +373,6 @@ var BABYLON;
             if (scene.fogEnabled && mesh && mesh.applyFog && scene.fogMode !== BABYLON.Scene.FOGMODE_NONE && this.fogEnabled) {
                 this._defines.FOG = true;
             }
-            if (scene.lightsEnabled && !this.disableLighting) {
-                needNormals = BABYLON.MaterialHelper.PrepareDefinesForLights(scene, mesh, this._defines, this.maxSimultaneousLights);
-            }
             if (StandardMaterial.FresnelEnabled) {
                 // Fresnel
                 if (this.diffuseFresnelParameters && this.diffuseFresnelParameters.isEnabled ||

+ 10 - 10
src/Materials/babylon.standardMaterial.ts

@@ -278,6 +278,16 @@
             }
 
             var scene = this.getScene();
+            var engine = scene.getEngine();
+            var needUVs = false;
+            var needNormals = false;
+
+            this._defines.reset();
+
+            // Lights
+            if (scene.lightsEnabled && !this.disableLighting) {
+                needNormals = MaterialHelper.PrepareDefinesForLights(scene, mesh, this._defines, this.maxSimultaneousLights);
+            }
 
             if (!this.checkReadyOnEveryCall) {
                 if (this._renderId === scene.getRenderId()) {
@@ -287,12 +297,6 @@
                 }
             }
 
-            var engine = scene.getEngine();
-            var needNormals = false;
-            var needUVs = false;
-
-            this._defines.reset();
-
             // Textures
             if (scene.texturesEnabled) {
                 if (this.diffuseTexture && StandardMaterial.DiffuseTextureEnabled) {
@@ -489,10 +493,6 @@
                 this._defines.FOG = true;
             }
 
-            if (scene.lightsEnabled && !this.disableLighting) {
-                needNormals = MaterialHelper.PrepareDefinesForLights(scene, mesh, this._defines, this.maxSimultaneousLights);
-            }
-
             if (StandardMaterial.FresnelEnabled) {
                 // Fresnel
                 if (this.diffuseFresnelParameters && this.diffuseFresnelParameters.isEnabled ||

+ 8 - 0
src/babylon.engine.js

@@ -2537,6 +2537,14 @@ var BABYLON;
         Engine.prototype.attachContextRestoredEvent = function (callback) {
             this._renderingCanvas.addEventListener("webglcontextrestored", callback, false);
         };
+        Engine.prototype.getVertexShaderSource = function (program) {
+            var shaders = this._gl.getAttachedShaders(program);
+            return this._gl.getShaderSource(shaders[0]);
+        };
+        Engine.prototype.getFragmentShaderSource = function (program) {
+            var shaders = this._gl.getAttachedShaders(program);
+            return this._gl.getShaderSource(shaders[1]);
+        };
         // FPS
         Engine.prototype.getFps = function () {
             return this.fps;

+ 12 - 0
src/babylon.engine.ts

@@ -3033,6 +3033,18 @@
             this._renderingCanvas.addEventListener("webglcontextrestored", callback, false);
         }
 
+        public getVertexShaderSource(program: WebGLProgram): string {
+            var shaders = this._gl.getAttachedShaders(program);
+
+            return this._gl.getShaderSource(shaders[0]);
+        }
+
+        public getFragmentShaderSource(program: WebGLProgram): string {
+            var shaders = this._gl.getAttachedShaders(program);
+
+            return this._gl.getShaderSource(shaders[1]);
+        }
+
         // FPS
         public getFps(): number {
             return this.fps;