Browse Source

-Fixed shader lang to not be able to get scalar from matrix (ie mat.x), to make it more GLSL compatible
-Fixed referencing of world_transform in fragment shader not working
-Fixed unsycn bug related to getting shader param list from the server
-Fixed getting all textures from shader properly, fixes #8353

Juan Linietsky 8 years ago
parent
commit
2da3f48e5a

+ 5 - 1
drivers/gles3/rasterizer_storage_gles3.cpp

@@ -1556,7 +1556,11 @@ void RasterizerStorageGLES3::shader_get_param_list(RID p_shader, List<PropertyIn
 
 
 	for (Map<StringName, ShaderLanguage::ShaderNode::Uniform>::Element *E = shader->uniforms.front(); E; E = E->next()) {
 	for (Map<StringName, ShaderLanguage::ShaderNode::Uniform>::Element *E = shader->uniforms.front(); E; E = E->next()) {
 
 
-		order[E->get().order] = E->key();
+		if (E->get().texture_order >= 0) {
+			order[E->get().texture_order + 100000] = E->key();
+		} else {
+			order[E->get().order] = E->key();
+		}
 	}
 	}
 
 
 	for (Map<int, StringName>::Element *E = order.front(); E; E = E->next()) {
 	for (Map<int, StringName>::Element *E = order.front(); E; E = E->next()) {

+ 2 - 0
drivers/gles3/shaders/scene.glsl

@@ -368,6 +368,8 @@ VERTEX_SHADER_CODE
 
 
 */
 */
 
 
+uniform highp mat4 world_transform;
+
 #define M_PI 3.14159265359
 #define M_PI 3.14159265359
 
 
 /* Varyings */
 /* Varyings */

+ 0 - 2
scene/resources/material.cpp

@@ -1370,8 +1370,6 @@ void SpatialMaterial::_bind_methods() {
 	BIND_CONSTANT(BILLBOARD_ENABLED);
 	BIND_CONSTANT(BILLBOARD_ENABLED);
 	BIND_CONSTANT(BILLBOARD_FIXED_Y);
 	BIND_CONSTANT(BILLBOARD_FIXED_Y);
 	BIND_CONSTANT(BILLBOARD_PARTICLES);
 	BIND_CONSTANT(BILLBOARD_PARTICLES);
-
-
 }
 }
 
 
 SpatialMaterial::SpatialMaterial()
 SpatialMaterial::SpatialMaterial()

+ 4 - 2
servers/visual/shader_language.cpp

@@ -2549,12 +2549,14 @@ ShaderLanguage::Node *ShaderLanguage::_parse_expression(BlockNode *p_block, cons
 
 
 					} break;
 					} break;
 
 
-					default: {}
+					default: {
+						ok = false;
+					}
 				}
 				}
 
 
 				if (!ok) {
 				if (!ok) {
 
 
-					_set_error("Invalid member for expression: ." + ident);
+					_set_error("Invalid member for " + get_datatype_name(dt) + " expression: ." + ident);
 					return NULL;
 					return NULL;
 				}
 				}
 
 

+ 1 - 1
servers/visual/visual_server_wrap_mt.h

@@ -113,7 +113,7 @@ public:
 	FUNC2(shader_set_code, RID, const String &)
 	FUNC2(shader_set_code, RID, const String &)
 	FUNC1RC(String, shader_get_code, RID)
 	FUNC1RC(String, shader_get_code, RID)
 
 
-	FUNC2C(shader_get_param_list, RID, List<PropertyInfo> *)
+	FUNC2SC(shader_get_param_list, RID, List<PropertyInfo> *)
 
 
 	FUNC3(shader_set_default_texture_param, RID, const StringName &, RID)
 	FUNC3(shader_set_default_texture_param, RID, const StringName &, RID)
 	FUNC2RC(RID, shader_get_default_texture_param, RID, const StringName &)
 	FUNC2RC(RID, shader_get_default_texture_param, RID, const StringName &)