[Bf-blender-cvs] [dda14aa] bake-cycles: Cycles-Bake: [review] small changes in Cycles as suggested by Brecht van Lommel

Dalai Felinto noreply at git.blender.org
Wed Apr 23 02:47:54 CEST 2014


Commit: dda14aa58cf15bf96b264d3f540ad8ba58509ee3
Author: Dalai Felinto
Date:   Tue Apr 1 19:39:17 2014 -0300
https://developer.blender.org/rBdda14aa58cf15bf96b264d3f540ad8ba58509ee3

Cycles-Bake: [review] small changes in Cycles as suggested by Brecht van Lommel

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

M	intern/cycles/blender/blender_python.cpp
M	intern/cycles/blender/blender_session.cpp
M	intern/cycles/kernel/kernel_displace.h
M	intern/cycles/render/bake.cpp
M	intern/cycles/render/bake.h
M	intern/cycles/render/scene.cpp
M	intern/cycles/render/scene.h

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

diff --git a/intern/cycles/blender/blender_python.cpp b/intern/cycles/blender/blender_python.cpp
index d6d3ac4..658fcca 100644
--- a/intern/cycles/blender/blender_python.cpp
+++ b/intern/cycles/blender/blender_python.cpp
@@ -166,7 +166,7 @@ static PyObject *bake_func(PyObject *self, PyObject *args)
 	RNA_id_pointer_create((ID*)PyLong_AsVoidPtr(pyobject), &objectptr);
 	BL::Object b_object(objectptr);
 
-	void *b_result(PyLong_AsVoidPtr(pyresult));
+	void *b_result = PyLong_AsVoidPtr(pyresult);
 
 	PointerRNA bakepixelptr;
 	RNA_id_pointer_create((ID*)PyLong_AsVoidPtr(pypixel_array), &bakepixelptr);
diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp
index 63f90ba..14b0c38 100644
--- a/intern/cycles/blender/blender_session.cpp
+++ b/intern/cycles/blender/blender_session.cpp
@@ -557,11 +557,11 @@ void BlenderSession::bake(BL::Object b_object, const string& pass_type, BL::Bake
 	/* when used, non-instanced convention: object = ~object */
 	int object = ~object_index;
 
-	BakeData *bake_data = scene->bake_init(object, tri_offset, num_pixels);
+	BakeData *bake_data = scene->bake_manager->init(object, tri_offset, num_pixels);
 
 	populate_bake_data(bake_data, pixel_array, num_pixels);
 
-	scene->bake(shader_type, bake_data, result);
+	scene->bake_manager->bake(scene->device, &scene->dscene, scene, shader_type, bake_data, result);
 
 	/* free all memory used (host and device), so we wouldn't leave render
 	 * engine with extra memory allocated
diff --git a/intern/cycles/kernel/kernel_displace.h b/intern/cycles/kernel/kernel_displace.h
index 338e17f..1456a73 100644
--- a/intern/cycles/kernel/kernel_displace.h
+++ b/intern/cycles/kernel/kernel_displace.h
@@ -14,9 +14,6 @@
  * limitations under the License
  */
 
-#include "util_hash.h"
-#include "kernel_primitive.h"
-
 CCL_NAMESPACE_BEGIN
 
 ccl_device void compute_light_pass(KernelGlobals *kg, ShaderData *sd, PathRadiance *L, RNG rng, bool is_ao)
@@ -24,7 +21,7 @@ ccl_device void compute_light_pass(KernelGlobals *kg, ShaderData *sd, PathRadian
 	int samples = kernel_data.integrator.aa_samples;
 
 	/* initialize master radiance accumulator */
-	assert(kernel_data.film.use_light_pass);
+	kernel_assert(kernel_data.film.use_light_pass);
 	path_radiance_init(L, kernel_data.film.use_light_pass);
 
 	/* take multiple samples */
@@ -125,7 +122,7 @@ ccl_device void kernel_bake_evaluate(KernelGlobals *kg, ccl_global uint4 *input,
 	shader_setup_from_sample(kg, &sd, P, Ng, I, shader, object, prim, u, v, t, time, bounce, segment);
 
 	if(is_light_pass(type)){
-		RNG rng = hash_int(i);
+		RNG rng = cmj_hash(i, 0);
 		compute_light_pass(kg, &sd, &L, rng, (type == SHADER_EVAL_AO));
 	}
 
diff --git a/intern/cycles/render/bake.cpp b/intern/cycles/render/bake.cpp
index a265065..3693753 100644
--- a/intern/cycles/render/bake.cpp
+++ b/intern/cycles/render/bake.cpp
@@ -18,22 +18,46 @@
 
 CCL_NAMESPACE_BEGIN
 
-void BakeManager::device_free(Device *device, DeviceScene *dscene) {}
-
-void BakeManager::device_update(Device *device, DeviceScene *dscene, Scene *scene, Progress& progress)
+BakeData::BakeData(const int object, const int tri_offset, const int num_pixels):
+m_object(object),
+m_tri_offset(tri_offset),
+m_num_pixels(num_pixels)
 {
-	if(!need_update)
-		return;
+	m_primitive.resize(num_pixels);
+	m_u.resize(num_pixels);
+	m_v.resize(num_pixels);
+}
 
-	if(progress.get_cancel()) return;
+BakeData::~BakeData()
+{
+	m_primitive.clear();
+	m_u.clear();
+	m_v.clear();
+}
 
-	need_update = false;
+void BakeData::set(int i, int prim, float uv[2])
+{
+	m_primitive[i] = (prim == -1 ? -1 : m_tri_offset + prim);
+	m_u[i] = uv[0];
+	m_v[i] = uv[1];
 }
 
-BakeManager::~BakeManager()
+int BakeData::object()
 {
-	if(bake_data)
-		delete bake_data;
+	return m_object;
+}
+
+int BakeData::size() {
+	return m_num_pixels;
+}
+
+uint4 BakeData::data(int i) {
+	return make_uint4(
+		m_object,
+		m_primitive[i],
+		__float_as_int(m_u[i]),
+		__float_as_int(m_v[i])
+		);
 }
 
 BakeManager::BakeManager()
@@ -42,6 +66,12 @@ BakeManager::BakeManager()
 	need_update = true;
 }
 
+BakeManager::~BakeManager()
+{
+	if(bake_data)
+		delete bake_data;
+}
+
 BakeData *BakeManager::init(const int object, const int tri_offset, const int num_pixels)
 {
 	bake_data = new BakeData(object, tri_offset, num_pixels);
@@ -109,5 +139,16 @@ bool BakeManager::bake(Device *device, DeviceScene *dscene, Scene *scene, Shader
 	return true;
 }
 
-CCL_NAMESPACE_END
+void BakeManager::device_update(Device *device, DeviceScene *dscene, Scene *scene, Progress& progress)
+{
+	if(!need_update)
+		return;
+
+	if(progress.get_cancel()) return;
 
+	need_update = false;
+}
+
+void BakeManager::device_free(Device *device, DeviceScene *dscene) {}
+
+CCL_NAMESPACE_END
diff --git a/intern/cycles/render/bake.h b/intern/cycles/render/bake.h
index 0e95503..d197392 100644
--- a/intern/cycles/render/bake.h
+++ b/intern/cycles/render/bake.h
@@ -26,48 +26,13 @@ CCL_NAMESPACE_BEGIN
 
 class BakeData {
 public:
-	BakeData(const int object, const int tri_offset, const int num_pixels):
-	m_object(object),
-	m_tri_offset(tri_offset),
-	m_num_pixels(num_pixels)
-	{
-		m_primitive.resize(num_pixels);
-		m_u.resize(num_pixels);
-		m_v.resize(num_pixels);
-	}
-
-	~BakeData()
-	{
-		m_primitive.clear();
-		m_u.clear();
-		m_v.clear();
-	}
-
-	void set(int i, int prim, float uv[2])
-	{
-		m_primitive[i] = (prim == -1 ? -1 : m_tri_offset + prim);
-		m_u[i] = uv[0];
-		m_v[i] = uv[1];
-	}
-
-	int object()
-	{
-		return m_object;
-	}
-
-	int size() {
-		return m_num_pixels;
-	}
-
-	uint4 data(int i) {
-		return make_uint4(
-			m_object,
-			m_primitive[i],
-			__float_as_int(m_u[i]),
-			__float_as_int(m_v[i])
-			);
-	}
+	BakeData(const int object, const int tri_offset, const int num_pixels);
+	~BakeData();
 
+	void set(int i, int prim, float uv[2]);
+	int object();
+	int size();
+	uint4 data(int i);
 
 private:
 	int m_object;
@@ -92,9 +57,6 @@ public:
 
 	void device_update(Device *device, DeviceScene *dscene, Scene *scene, Progress& progress);
 	void device_free(Device *device, DeviceScene *dscene);
-	bool modified(const CurveSystemManager& CurveSystemManager);
-	void tag_update(Scene *scene);
-	void tag_update_mesh();
 
 private:
 	BakeData *bake_data;
diff --git a/intern/cycles/render/scene.cpp b/intern/cycles/render/scene.cpp
index 202cbcc..4a42b2c 100644
--- a/intern/cycles/render/scene.cpp
+++ b/intern/cycles/render/scene.cpp
@@ -222,16 +222,6 @@ void Scene::device_update(Device *device_, Progress& progress)
 	device->const_copy_to("__data", &dscene.data, sizeof(dscene.data));
 }
 
-BakeData *Scene::bake_init(const int object, const int tri_offset, const int num_pixels)
-{
-	return bake_manager->init(object, tri_offset, num_pixels);
-}
-
-bool Scene::bake(ShaderEvalType shader_type, BakeData *bake_data, float result[])
-{
-	return bake_manager->bake(device, &dscene, this, shader_type, bake_data, result);
-}
-
 Scene::MotionType Scene::need_motion(bool advanced_shading)
 {
 	if(integrator->motion_blur)
diff --git a/intern/cycles/render/scene.h b/intern/cycles/render/scene.h
index 20aec0a..c913b4c 100644
--- a/intern/cycles/render/scene.h
+++ b/intern/cycles/render/scene.h
@@ -205,9 +205,6 @@ public:
 	enum MotionType { MOTION_NONE = 0, MOTION_PASS, MOTION_BLUR };
 	MotionType need_motion(bool advanced_shading = true);
 
-	BakeData *bake_init(const int object, const int tri_offset, const int num_pixels);
-	bool bake(ShaderEvalType shader_type, BakeData *bake_data, float result[]);
-
 	bool need_update();
 	bool need_reset();




More information about the Bf-blender-cvs mailing list