Переглянути джерело

shaders are now backwards compatible

Benjamin Guignabert 8 роки тому
батько
коміт
628c2df647

Різницю між файлами не показано, бо вона завелика
+ 1130 - 1130
dist/preview release/babylon.d.ts


Різницю між файлами не показано, бо вона завелика
+ 1130 - 1130
dist/preview release/babylon.module.d.ts


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

@@ -289,6 +289,7 @@
                 Tools.Error("Fragment shader:" + this.name);
             }
         }
+
         private _processShaderConversion(sourceCode: string, isFragment: boolean, callback: (data: any) => void): void {
 
             var preparedSourceCode = this._processPrecision(sourceCode);
@@ -338,6 +339,16 @@
             while (match != null) {
                 var includeFile = match[1];
 
+                // Uniform declaration
+                if (includeFile.indexOf("__decl__") !== -1) {
+                    includeFile = includeFile.replace(/__decl__/, "");
+                    if (this._engine.webGLVersion != 1) {
+                        includeFile = includeFile.replace(/Vertex/, "Ubo");
+                        includeFile = includeFile.replace(/Fragment/, "Ubo");
+                    }
+                    includeFile = includeFile + "Declaration";
+                }
+
                 if (Effect.IncludesShadersStore[includeFile]) {
                     // Substitution
                     var includeContent = Effect.IncludesShadersStore[includeFile];

+ 18 - 21
src/Shaders/ShadersInclude/lightFragmentDeclaration.fx

@@ -1,25 +1,22 @@
 #ifdef LIGHT{X}
-	uniform Light{X}
-	{
-		vec4 vLightData;
-		vec4 vLightDiffuse;
-		vec3 vLightSpecular;
-		#ifdef SPOTLIGHT{X}
-			vec4 vLightDirection;
-		#endif
-		#ifdef HEMILIGHT{X}
-			vec3 vLightGround;
+	uniform vec4 vLightData{X};
+	uniform vec4 vLightDiffuse{X};
+	#ifdef SPECULARTERM
+		uniform vec3 vLightSpecular{X};
+	#endif
+	#ifdef SHADOW{X}
+		#if defined(SPOTLIGHT{X}) || defined(DIRLIGHT{X})
+			varying vec4 vPositionFromLight{X};
+			uniform sampler2D shadowSampler{X};
+		#else
+			uniform samplerCube shadowSampler{X};
 		#endif
-		vec3 shadowsInfo;
-	} light{X};
-
-#ifdef SHADOW{X}
-	#if defined(SPOTLIGHT{X}) || defined(DIRLIGHT{X})
-		varying vec4 vPositionFromLight{X};
-		uniform sampler2D shadowSampler{X};
-	#else
-		uniform samplerCube shadowSampler{X};
+		uniform vec3 shadowsInfo{X};
+	#endif
+	#ifdef SPOTLIGHT{X}
+		uniform vec4 vLightDirection{X};
+	#endif
+	#ifdef HEMILIGHT{X}
+		uniform vec3 vLightGround{X};
 	#endif
-#endif
-
 #endif

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

@@ -1,40 +1,4 @@
-layout(std140, column_major) uniform;
-
-uniform Material
-{
-	vec4 diffuseLeftColor;
-	vec4 diffuseRightColor;
-	vec4 opacityParts;
-	vec4 reflectionLeftColor;
-	vec4 reflectionRightColor;
-	vec4 refractionLeftColor;
-	vec4 refractionRightColor;
-	vec4 emissiveLeftColor;
-	vec4 emissiveRightColor;
-	vec2 vDiffuseInfos;
-	vec2 vAmbientInfos;
-	vec2 vOpacityInfos;
-	vec2 vReflectionInfos;
-	vec2 vEmissiveInfos;
-	vec2 vLightmapInfos;
-	vec2 vSpecularInfos;
-	vec3 vBumpInfos;
-	mat4 diffuseMatrix;
-	mat4 ambientMatrix;
-	mat4 opacityMatrix;
-	mat4 reflectionMatrix;
-	mat4 emissiveMatrix;
-	mat4 lightmapMatrix;
-	mat4 specularMatrix;
-	mat4 bumpMatrix;
-	mat4 refractionMatrix;
-	vec4 vRefractionInfos;
-	vec4 vSpecularColor;
-	vec3 vEmissiveColor;
-	vec4 vDiffuseColor;
-	float pointSize;
-};
-
+#include<__decl__defaultFragment>
 
 #ifdef BUMP
 #extension GL_OES_standard_derivatives : enable
@@ -65,7 +29,7 @@ varying vec4 vColor;
 #include<helperFunctions>
 
 // Lights
-#include<lightFragmentDeclaration>[0..maxSimultaneousLights]
+#include<__decl__lightFragment>[0..maxSimultaneousLights]
 
 #include<lightsFragmentFunctions>
 #include<shadowsFragmentFunctions>

+ 1 - 40
src/Shaders/default.vertex.fx

@@ -1,43 +1,4 @@
-layout(std140, column_major) uniform;
-
-uniform Material
-{
-	vec4 diffuseLeftColor;
-	vec4 diffuseRightColor;
-	vec4 opacityParts;
-	vec4 reflectionLeftColor;
-	vec4 reflectionRightColor;
-	vec4 refractionLeftColor;
-	vec4 refractionRightColor;
-	vec4 emissiveLeftColor;
-	vec4 emissiveRightColor;
-	vec2 vDiffuseInfos;
-	vec2 vAmbientInfos;
-	vec2 vOpacityInfos;
-	vec2 vReflectionInfos;
-	vec2 vEmissiveInfos;
-	vec2 vLightmapInfos;
-	vec2 vSpecularInfos;
-	vec3 vBumpInfos;
-	mat4 diffuseMatrix;
-	mat4 ambientMatrix;
-	mat4 opacityMatrix;
-	mat4 reflectionMatrix;
-	mat4 emissiveMatrix;
-	mat4 lightmapMatrix;
-	mat4 specularMatrix;
-	mat4 bumpMatrix;
-	mat4 refractionMatrix;
-	vec4 vRefractionInfos;
-	vec4 vSpecularColor;
-	vec3 vEmissiveColor;
-	vec4 vDiffuseColor;
-	float pointSize;
-};
-
-uniform Scene {
-	mat4 viewProjection;
-};
+#include<__decl__defaultVertex>
 
 // Attributes
 attribute vec3 position;