[Bf-blender-cvs] [ef65e1c8232] cycles_texture_cache: Cycles: Let OIIO do the sharing of the texture cache, add wider differentials for velvet BSDF

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


Commit: ef65e1c8232b4bd76fbce702248c2e9230320caa
Author: Stefan Werner
Date:   Thu May 11 19:04:35 2017 +0200
Branches: cycles_texture_cache
https://developer.blender.org/rBef65e1c8232b4bd76fbce702248c2e9230320caa

Cycles: Let OIIO do the sharing of the texture cache, add wider differentials for velvet BSDF

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

M	intern/cycles/kernel/closure/bsdf_ashikhmin_velvet.h
M	intern/cycles/render/shader.cpp

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

diff --git a/intern/cycles/kernel/closure/bsdf_ashikhmin_velvet.h b/intern/cycles/kernel/closure/bsdf_ashikhmin_velvet.h
index a5ba2cb2972..0ae6b2e3e1f 100644
--- a/intern/cycles/kernel/closure/bsdf_ashikhmin_velvet.h
+++ b/intern/cycles/kernel/closure/bsdf_ashikhmin_velvet.h
@@ -143,8 +143,10 @@ ccl_device int bsdf_ashikhmin_velvet_sample(const ShaderClosure *sc, float3 Ng,
 
 #ifdef __RAY_DIFFERENTIALS__
 			// TODO: find a better approximation for the retroreflective bounce
-			*domega_in_dx = (2 * dot(N, dIdx)) * N - dIdx;
-			*domega_in_dy = (2 * dot(N, dIdy)) * N - dIdy;
+			*domega_in_dx = (2.0f * dot(N, dIdx)) * N - dIdx;
+			*domega_in_dy = (2.0f * dot(N, dIdy)) * N - dIdy;
+			*domega_in_dx *= 125.0f;
+			*domega_in_dy *= 125.0f;
 #endif
 		}
 		else
diff --git a/intern/cycles/render/shader.cpp b/intern/cycles/render/shader.cpp
index ce645c1ffe0..49e070afe79 100644
--- a/intern/cycles/render/shader.cpp
+++ b/intern/cycles/render/shader.cpp
@@ -432,11 +432,11 @@ void ShaderManager::device_update_common(Device *device,
 		OIIOGlobals *oiio_globals = (OIIOGlobals*)device->oiio_memory();
 		if(oiio_globals) {
 			/* update attributes from scene parms */
-			ts_shared->attribute("autotile", scene->params.texture_auto_tile ? scene->params.texture_tile_size : 0);
-			ts_shared->attribute("automip", scene->params.texture_auto_mip ? 1 : 0);
-			ts_shared->attribute("accept_unmipped", scene->params.texture_accept_unmipped ? 1 : 0);
-			ts_shared->attribute("accept_untiled", scene->params.texture_accept_untiled ? 1 : 0);
-			ts_shared->attribute("max_memory_MB", scene->params.texture_cache_size > 0 ? (float)scene->params.texture_cache_size : 16384.0f);
+			ts->attribute("autotile", scene->params.texture_auto_tile ? scene->params.texture_tile_size : 0);
+			ts->attribute("automip", scene->params.texture_auto_mip ? 1 : 0);
+			ts->attribute("accept_unmipped", scene->params.texture_accept_unmipped ? 1 : 0);
+			ts->attribute("accept_untiled", scene->params.texture_accept_untiled ? 1 : 0);
+			ts->attribute("max_memory_MB", scene->params.texture_cache_size > 0 ? (float)scene->params.texture_cache_size : 16384.0f);
 			oiio_globals->tex_sys = ts;
 		}
 	}
@@ -651,38 +651,17 @@ void ShaderManager::free_memory()
 
 void ShaderManager::texture_system_init()
 {
-	/* create texture system, shared between different renders to reduce memory usage */
-	thread_scoped_lock lock(ts_shared_mutex);
-	
-	if(ts_shared_users == 0) {
-		ts_shared = TextureSystem::create(true);
-		
-		ts_shared->attribute("automip",  1);
-		ts_shared->attribute("autotile", 64);
-		ts_shared->attribute("gray_to_rgb", 1);
-		
-		/* effectively unlimited for now, until we support proper mipmap lookups */
-		ts_shared->attribute("max_memory_MB", 16384);
-	}
-	
-	ts = ts_shared;
-	ts_shared_users++;
+	ts = TextureSystem::create(true);
+	ts->attribute("gray_to_rgb", 1);
 }
 
 void ShaderManager::texture_system_free()
 {
-	/* shared texture system decrease users and destroy if no longer used */
-	thread_scoped_lock lock(ts_shared_mutex);
-	ts_shared_users--;
-	
-	if(ts_shared_users == 0) {
-		ts_shared->invalidate_all(true);
-		std::cout << ts_shared->getstats() << std::endl;
-		ts_shared->reset_stats();
-		TextureSystem::destroy(ts_shared);
-		ts_shared = NULL;
-	}
-	
+	std::cout << ts->getstats(2) << std::endl;
+	ts->reset_stats();
+	ts->invalidate_all(true);
+	ts->clear();
+	TextureSystem::destroy(ts);
 	ts = NULL;
 }



More information about the Bf-blender-cvs mailing list