Benjamin Guignabert преди 8 години
родител
ревизия
a1a94b4c6f

Файловите разлики са ограничени, защото са твърде много
+ 916 - 916
dist/preview release/babylon.d.ts


Файловите разлики са ограничени, защото са твърде много
+ 916 - 916
dist/preview release/babylon.module.d.ts


+ 1 - 1
src/Shaders/ShadersInclude/bumpFragmentFunctions.fx

@@ -1,6 +1,6 @@
 #ifdef BUMP
 	varying vec2 vBumpUV;
-	uniform vec3 vBumpInfos;
+	vec3 vBumpInfos = uMaterial.vBumpInfos;
 	uniform sampler2D bumpSampler;
 #if defined(TANGENT) && defined(NORMAL) 
 	varying mat3 vTBN;

+ 1 - 1
src/Shaders/ShadersInclude/pointCloudVertex.fx

@@ -1,3 +1,3 @@
 #ifdef POINTSIZE
-	gl_PointSize = pointSize;
+	gl_PointSize = uMaterial.pointSize;
 #endif

+ 1 - 3
src/Shaders/ShadersInclude/pointCloudVertexDeclaration.fx

@@ -1,3 +1 @@
-#ifdef POINTSIZE
-	uniform float pointSize;
-#endif
+

+ 3 - 3
src/Shaders/ShadersInclude/reflectionFunction.fx

@@ -39,7 +39,7 @@
 	vec3 viewDir = worldPos.xyz - vEyePosition;
 	vec3 coords = normalize(reflect(viewDir, worldNormal));
 
-	return vec3(reflectionMatrix * vec4(coords, 1));
+	return vec3(uMaterial.reflectionMatrix * vec4(coords, 1));
 #endif
 
 #ifdef REFLECTIONMAP_CUBIC
@@ -48,11 +48,11 @@
 #ifdef INVERTCUBICMAP
 	coords.y = 1.0 - coords.y;
 #endif
-	return vec3(reflectionMatrix * vec4(coords, 0));
+	return vec3(uMaterial.reflectionMatrix * vec4(coords, 0));
 #endif
 
 #ifdef REFLECTIONMAP_PROJECTION
-	return vec3(reflectionMatrix * (view * worldPos));
+	return vec3(uMaterial.reflectionMatrix * (view * worldPos));
 #endif
 
 #ifdef REFLECTIONMAP_SKYBOX

+ 8 - 15
src/Shaders/default.fragment.fx

@@ -1,5 +1,4 @@
 layout(std140, column_major) uniform;
-
 uniform Material
 {
 	vec4 diffuseLeftColor;
@@ -18,7 +17,6 @@ uniform Material
 	vec2 vEmissiveInfos;
 	vec2 vLightmapInfos;
 	vec2 vSpecularInfos;
-	
 	vec3 vBumpInfos;
 	mat4 diffuseMatrix;
 	mat4 ambientMatrix;
@@ -100,13 +98,11 @@ uniform mat4 view;
 #endif
 
 #ifdef REFRACTION
-uniform vec4 vRefractionInfos;
 
 #ifdef REFRACTIONMAP_3D
 uniform samplerCube refractionCubeSampler;
 #else
 uniform sampler2D refraction2DSampler;
-uniform mat4 refractionMatrix;
 #endif
 
 #endif
@@ -134,9 +130,6 @@ varying vec3 vPositionUVW;
 varying vec3 vDirectionW;
 #endif
 
-#if defined(REFLECTIONMAP_PLANAR) || defined(REFLECTIONMAP_CUBIC) || defined(REFLECTIONMAP_PROJECTION)
-uniform mat4 reflectionMatrix;
-#endif
 #endif
 
 #include<reflectionFunction>
@@ -243,23 +236,23 @@ void main(void) {
 	vec3 refractionColor = vec3(0., 0., 0.);
 
 #ifdef REFRACTION
-	vec3 refractionVector = normalize(refract(-viewDirectionW, normalW, vRefractionInfos.y));
+	vec3 refractionVector = normalize(refract(-viewDirectionW, normalW, uMaterial.vRefractionInfos.y));
 #ifdef REFRACTIONMAP_3D
 
-	refractionVector.y = refractionVector.y * vRefractionInfos.w;
+	refractionVector.y = refractionVector.y * uMaterial.vRefractionInfos.w;
 
 	if (dot(refractionVector, viewDirectionW) < 1.0)
 	{
-		refractionColor = textureCube(refractionCubeSampler, refractionVector).rgb * vRefractionInfos.x;
+		refractionColor = textureCube(refractionCubeSampler, refractionVector).rgb * uMaterial.vRefractionInfos.x;
 	}
 #else
-	vec3 vRefractionUVW = vec3(refractionMatrix * (view * vec4(vPositionW + refractionVector * vRefractionInfos.z, 1.0)));
+	vec3 vRefractionUVW = vec3(uMaterial.refractionMatrix * (view * vec4(vPositionW + refractionVector * uMaterial.vRefractionInfos.z, 1.0)));
 
 	vec2 refractionCoords = vRefractionUVW.xy / vRefractionUVW.z;
 
 	refractionCoords.y = 1.0 - refractionCoords.y;
 
-	refractionColor = texture2D(refraction2DSampler, refractionCoords).rgb * vRefractionInfos.x;
+	refractionColor = texture2D(refraction2DSampler, refractionCoords).rgb * uMaterial.vRefractionInfos.x;
 #endif
 #endif
 
@@ -362,12 +355,12 @@ void main(void) {
 
 	// Composition
 #ifdef EMISSIVEASILLUMINATION
-	vec3 finalDiffuse = clamp(diffuseBase * diffuseColor + uMaterial.vAmbientColor, 0.0, 1.0) * baseColor.rgb;
+	vec3 finalDiffuse = clamp(diffuseBase * diffuseColor + vAmbientColor, 0.0, 1.0) * baseColor.rgb;
 #else
 #ifdef LINKEMISSIVEWITHDIFFUSE
-	vec3 finalDiffuse = clamp((diffuseBase + emissiveColor) * diffuseColor + uMaterial.vAmbientColor, 0.0, 1.0) * baseColor.rgb;
+	vec3 finalDiffuse = clamp((diffuseBase + emissiveColor) * diffuseColor + vAmbientColor, 0.0, 1.0) * baseColor.rgb;
 #else
-	vec3 finalDiffuse = clamp(diffuseBase * diffuseColor + emissiveColor + uMaterial.vAmbientColor, 0.0, 1.0) * baseColor.rgb;
+	vec3 finalDiffuse = clamp(diffuseBase * diffuseColor + emissiveColor + vAmbientColor, 0.0, 1.0) * baseColor.rgb;
 #endif
 #endif
 

+ 48 - 36
src/Shaders/default.vertex.fx

@@ -2,13 +2,37 @@
 
 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;
+	float pointSize;
+	vec3 vSpecularColor;
+	vec3 vEmissiveColor;
 	vec4 vDiffuseColor;
-  	vec2 vDiffuseInfos;
-  	mat4 diffuseMatrix;
-  	vec3 vAmbientColor;
-  	vec4 vSpecularColor;  	
-  	vec3 vEmissiveColor;
-
 } uMaterial;
 
 // Attributes
@@ -43,38 +67,26 @@ varying vec2 vDiffuseUV;
 
 #ifdef AMBIENT
 varying vec2 vAmbientUV;
-uniform mat4 ambientMatrix;
-uniform vec2 vAmbientInfos;
 #endif
 
 #ifdef OPACITY
 varying vec2 vOpacityUV;
-uniform mat4 opacityMatrix;
-uniform vec2 vOpacityInfos;
 #endif
 
 #ifdef EMISSIVE
 varying vec2 vEmissiveUV;
-uniform vec2 vEmissiveInfos;
-uniform mat4 emissiveMatrix;
 #endif
 
 #ifdef LIGHTMAP
 varying vec2 vLightmapUV;
-uniform vec2 vLightmapInfos;
-uniform mat4 lightmapMatrix;
 #endif
 
 #if defined(SPECULAR) && defined(SPECULARTERM)
 varying vec2 vSpecularUV;
-uniform vec2 vSpecularInfos;
-uniform mat4 specularMatrix;
 #endif
 
 #ifdef BUMP
 varying vec2 vBumpUV;
-uniform vec3 vBumpInfos;
-uniform mat4 bumpMatrix;
 #endif
 
 #include<pointCloudVertexDeclaration>
@@ -147,68 +159,68 @@ void main(void) {
 #endif
 
 #ifdef AMBIENT
-	if (vAmbientInfos.x == 0.)
+	if (uMaterial.vAmbientInfos.x == 0.)
 	{
-		vAmbientUV = vec2(ambientMatrix * vec4(uv, 1.0, 0.0));
+		vAmbientUV = vec2(uMaterial.ambientMatrix * vec4(uv, 1.0, 0.0));
 	}
 	else
 	{
-		vAmbientUV = vec2(ambientMatrix * vec4(uv2, 1.0, 0.0));
+		vAmbientUV = vec2(uMaterial.ambientMatrix * vec4(uv2, 1.0, 0.0));
 	}
 #endif
 
 #ifdef OPACITY
-	if (vOpacityInfos.x == 0.)
+	if (uMaterial.vOpacityInfos.x == 0.)
 	{
-		vOpacityUV = vec2(opacityMatrix * vec4(uv, 1.0, 0.0));
+		vOpacityUV = vec2(uMaterial.opacityMatrix * vec4(uv, 1.0, 0.0));
 	}
 	else
 	{
-		vOpacityUV = vec2(opacityMatrix * vec4(uv2, 1.0, 0.0));
+		vOpacityUV = vec2(uMaterial.opacityMatrix * vec4(uv2, 1.0, 0.0));
 	}
 #endif
 
 #ifdef EMISSIVE
-	if (vEmissiveInfos.x == 0.)
+	if (uMaterial.vEmissiveInfos.x == 0.)
 	{
-		vEmissiveUV = vec2(emissiveMatrix * vec4(uv, 1.0, 0.0));
+		vEmissiveUV = vec2(uMaterial.emissiveMatrix * vec4(uv, 1.0, 0.0));
 	}
 	else
 	{
-		vEmissiveUV = vec2(emissiveMatrix * vec4(uv2, 1.0, 0.0));
+		vEmissiveUV = vec2(uMaterial.emissiveMatrix * vec4(uv2, 1.0, 0.0));
 	}
 #endif
 
 #ifdef LIGHTMAP
-	if (vLightmapInfos.x == 0.)
+	if (uMaterial.vLightmapInfos.x == 0.)
 	{
-		vLightmapUV = vec2(lightmapMatrix * vec4(uv, 1.0, 0.0));
+		vLightmapUV = vec2(uMaterial.lightmapMatrix * vec4(uv, 1.0, 0.0));
 	}
 	else
 	{
-		vLightmapUV = vec2(lightmapMatrix * vec4(uv2, 1.0, 0.0));
+		vLightmapUV = vec2(uMaterial.lightmapMatrix * vec4(uv2, 1.0, 0.0));
 	}
 #endif
 
 #if defined(SPECULAR) && defined(SPECULARTERM)
-	if (vSpecularInfos.x == 0.)
+	if (uMaterial.vSpecularInfos.x == 0.)
 	{
-		vSpecularUV = vec2(specularMatrix * vec4(uv, 1.0, 0.0));
+		vSpecularUV = vec2(uMaterial.specularMatrix * vec4(uv, 1.0, 0.0));
 	}
 	else
 	{
-		vSpecularUV = vec2(specularMatrix * vec4(uv2, 1.0, 0.0));
+		vSpecularUV = vec2(uMaterial.specularMatrix * vec4(uv2, 1.0, 0.0));
 	}
 #endif
 
 #ifdef BUMP
-	if (vBumpInfos.x == 0.)
+	if (uMaterial.vBumpInfos.x == 0.)
 	{
-		vBumpUV = vec2(bumpMatrix * vec4(uv, 1.0, 0.0));
+		vBumpUV = vec2(uMaterial.bumpMatrix * vec4(uv, 1.0, 0.0));
 	}
 	else
 	{
-		vBumpUV = vec2(bumpMatrix * vec4(uv2, 1.0, 0.0));
+		vBumpUV = vec2(uMaterial.bumpMatrix * vec4(uv2, 1.0, 0.0));
 	}
 #endif