Procházet zdrojové kódy

Merge pull request #69001 from dzil123/fix_rendering_checks

Fix various missing rendering parameter checks
Rémi Verschelde před 2 roky
rodič
revize
0668e0f5a9

+ 2 - 0
drivers/gles3/storage/mesh_storage.cpp

@@ -1686,6 +1686,8 @@ void MeshStorage::multimesh_set_buffer(RID p_multimesh, const Vector<float> &p_b
 		uint32_t old_stride = multimesh->xform_format == RS::MULTIMESH_TRANSFORM_2D ? 8 : 12;
 		old_stride += multimesh->uses_colors ? 4 : 0;
 		old_stride += multimesh->uses_custom_data ? 4 : 0;
+		ERR_FAIL_COND(p_buffer.size() != (multimesh->instances * (int)old_stride));
+
 		for (int i = 0; i < multimesh->instances; i++) {
 			{
 				float *dataptr = w + i * old_stride;

+ 1 - 0
drivers/gles3/storage/texture_storage.cpp

@@ -806,6 +806,7 @@ void TextureStorage::texture_2d_update(RID p_texture, const Ref<Image> &p_image,
 	texture_set_data(p_texture, p_image, p_layer);
 #ifdef TOOLS_ENABLED
 	Texture *tex = texture_owner.get_or_null(p_texture);
+	ERR_FAIL_COND(!tex);
 
 	tex->image_cache_2d.unref();
 #endif

+ 2 - 0
servers/rendering/renderer_rd/renderer_scene_render_rd.cpp

@@ -1110,6 +1110,8 @@ float RendererSceneRenderRD::screen_space_roughness_limiter_get_limit() const {
 }
 
 TypedArray<Image> RendererSceneRenderRD::bake_render_uv2(RID p_base, const TypedArray<RID> &p_material_overrides, const Size2i &p_image_size) {
+	ERR_FAIL_COND_V_MSG(p_image_size.width <= 0, TypedArray<Image>(), "Image width must be greater than 0.");
+	ERR_FAIL_COND_V_MSG(p_image_size.height <= 0, TypedArray<Image>(), "Image height must be greater than 0.");
 	RD::TextureFormat tf;
 	tf.format = RD::DATA_FORMAT_R8G8B8A8_UNORM;
 	tf.width = p_image_size.width; // Always 64x64