[Bf-blender-cvs] [0c49eaaf3b2] cycles_texture_cache: Cycles: Better quality filtering for .tx mip maps

Stefan Werner noreply at git.blender.org
Mon Nov 27 20:40:13 CET 2017


Commit: 0c49eaaf3b2fdc1cb7adab3d47ca291716521641
Author: Stefan Werner
Date:   Mon May 8 15:09:51 2017 +0200
Branches: cycles_texture_cache
https://developer.blender.org/rB0c49eaaf3b2fdc1cb7adab3d47ca291716521641

Cycles: Better quality filtering for .tx mip maps

===================================================================

M	intern/cycles/render/image.cpp

===================================================================

diff --git a/intern/cycles/render/image.cpp b/intern/cycles/render/image.cpp
index 4eef11e7237..56cc33a7200 100644
--- a/intern/cycles/render/image.cpp
+++ b/intern/cycles/render/image.cpp
@@ -725,11 +725,14 @@ void ImageManager::device_load_image(Device *device,
 	if(!img) {
 		return;
 	}
-	
+
 	if(oiio_texture_system && !img->builtin_data) {
+		/* Generate a mip mapped tile image file */
 		if(scene->params.texture_auto_convert) {
 			make_tx(img, progress);
 		}
+		/* When using OIIO directly from SVM, store the TextureHandle
+		 * in an array for quicker lookup at shading time */
 		OIIOGlobals *oiio = (OIIOGlobals*)device->oiio_memory();
 		if(oiio) {
 			thread_scoped_lock lock(oiio->tex_paths_mutex);
@@ -739,7 +742,11 @@ void ImageManager::device_load_image(Device *device,
 			}
 			OIIO::TextureSystem *tex_sys = (OIIO::TextureSystem*)oiio_texture_system;
 			OIIO::TextureSystem::TextureHandle *handle = tex_sys->get_texture_handle(OIIO::ustring(img->filename.c_str()));
-			oiio->tex_paths[flat_slot] = handle;
+			if(tex_sys->good(handle)) {
+				oiio->tex_paths[flat_slot] = handle;
+			} else {
+				oiio->tex_paths[flat_slot] = NULL;
+			}
 		}
 		img->need_load = false;
 		return;
@@ -1031,21 +1038,13 @@ bool ImageManager::make_tx(Image *image, Progress *progress)
 	progress->set_status("Updating Images", "Converting " + image->filename);
 	
 	ImageSpec config;
-	config.tile_width = 64;
-	config.tile_height = 64;
-	
-	ImageCache *ic = ImageCache::create();
-	ic->attribute("forcefloat", 1);
-	ic->attribute("max_memory_MB", 1024.0f);
-	
+	config.attribute("maketx:filtername", "lanczos3");
+
 	bool ok = ImageBufAlgo::make_texture(ImageBufAlgo::MakeTxTexture, image->filename, tx_name, config);
 	if(ok) {
 		image->filename = tx_name;
-	} else {
-		std::cout << ic->geterror() << std::endl;
 	}
-	ic->reset_stats();
-	ImageCache::destroy(ic);
+
 	return true;
 }



More information about the Bf-blender-cvs mailing list