2
0
Эх сурвалжийг харах

Fixed opaque unshaded materials, they go through the regular opaque render list, closes #9917

Juan Linietsky 8 жил өмнө
parent
commit
90445aae67

+ 1 - 1
drivers/gles3/rasterizer_scene_gles3.cpp

@@ -2194,7 +2194,7 @@ void RasterizerSceneGLES3::_add_geometry(RasterizerStorageGLES3::Geometry *p_geo
 
 void RasterizerSceneGLES3::_add_geometry_with_material(RasterizerStorageGLES3::Geometry *p_geometry, InstanceBase *p_instance, RasterizerStorageGLES3::GeometryOwner *p_owner, RasterizerStorageGLES3::Material *p_material, bool p_shadow) {
 
-	bool has_base_alpha = (p_material->shader->spatial.uses_alpha && !p_material->shader->spatial.uses_alpha_scissor) || p_material->shader->spatial.uses_screen_texture || p_material->shader->spatial.unshaded;
+	bool has_base_alpha = (p_material->shader->spatial.uses_alpha && !p_material->shader->spatial.uses_alpha_scissor) || p_material->shader->spatial.uses_screen_texture;
 	bool has_blend_alpha = p_material->shader->spatial.blend_mode != RasterizerStorageGLES3::Shader::Spatial::BLEND_MODE_MIX || p_material->shader->spatial.ontop;
 	bool has_alpha = has_base_alpha || has_blend_alpha;
 	bool shadow = false;

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

@@ -1969,6 +1969,14 @@ FRAGMENT_SHADER_CODE
 
 #ifdef USE_MULTIPLE_RENDER_TARGETS
 
+
+#ifdef SHADELESS
+	frag_color=vec4(albedo,alpha);
+	diffuse_buffer=vec4(albedo.rgb,0.0);
+	specular_buffer=vec4(0.0);
+
+#else
+
 #if defined(ENABLE_AO)
 
 	float ambient_scale=0.0; // AO is supplied by material
@@ -1984,6 +1992,7 @@ FRAGMENT_SHADER_CODE
 	diffuse_buffer=vec4(emission+diffuse_light+ambient_light,ambient_scale);
 	specular_buffer=vec4(specular_light,metallic);
 
+#endif //SHADELESS
 
 	normal_mr_buffer=vec4(normalize(normal)*0.5+0.5,roughness);
 
@@ -1991,6 +2000,7 @@ FRAGMENT_SHADER_CODE
 	sss_buffer = sss_strength;
 #endif
 
+
 #else //USE_MULTIPLE_RENDER_TARGETS