فهرست منبع

Merge pull request #101941 from dsnopek/opengl-global-uniform-sampler2darray

Fix wrong default texture for global uniforms of type `sampler2DArray`
Thaddeus Crews 3 ماه پیش
والد
کامیت
7584546399
2فایلهای تغییر یافته به همراه10 افزوده شده و 2 حذف شده
  1. 5 1
      drivers/gles3/storage/material_storage.cpp
  2. 5 1
      servers/rendering/renderer_rd/storage_rd/material_storage.cpp

+ 5 - 1
drivers/gles3/storage/material_storage.cpp

@@ -872,7 +872,11 @@ void MaterialData::update_textures(const HashMap<StringName, Variant> &p_paramet
 						E->value = global_textures_pass;
 					}
 
-					textures.push_back(v->override.get_type() != Variant::NIL ? v->override : v->value);
+					if (v->override.get_type() == Variant::RID && ((RID)v->override).is_valid()) {
+						textures.push_back(v->override);
+					} else if (v->value.get_type() == Variant::RID && ((RID)v->value).is_valid()) {
+						textures.push_back(v->value);
+					}
 				}
 
 			} else {

+ 5 - 1
servers/rendering/renderer_rd/storage_rd/material_storage.cpp

@@ -906,7 +906,11 @@ void MaterialStorage::MaterialData::update_textures(const HashMap<StringName, Va
 						E->value = global_textures_pass;
 					}
 
-					textures.push_back(v->override.get_type() != Variant::NIL ? v->override : v->value);
+					if (v->override.get_type() == Variant::RID && ((RID)v->override).is_valid()) {
+						textures.push_back(v->override);
+					} else if (v->value.get_type() == Variant::RID && ((RID)v->value).is_valid()) {
+						textures.push_back(v->value);
+					}
 				}
 
 			} else {