[Bf-blender-cvs] [0a33aa3] bake-cycles: Cycles-Bake: [review] pass progress to baking, though I still cant cancel it
Dalai Felinto
noreply at git.blender.org
Wed Apr 23 02:47:55 CEST 2014
Commit: 0a33aa3ed4c81fd0dda44f235592900f5b50ab3a
Author: Dalai Felinto
Date: Tue Apr 1 19:39:54 2014 -0300
https://developer.blender.org/rB0a33aa3ed4c81fd0dda44f235592900f5b50ab3a
Cycles-Bake: [review] pass progress to baking, though I still cant cancel it
===================================================================
M intern/cycles/blender/blender_session.cpp
M intern/cycles/render/bake.cpp
M intern/cycles/render/bake.h
===================================================================
diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp
index 14b0c38..8d0e618 100644
--- a/intern/cycles/blender/blender_session.cpp
+++ b/intern/cycles/blender/blender_session.cpp
@@ -561,7 +561,7 @@ void BlenderSession::bake(BL::Object b_object, const string& pass_type, BL::Bake
populate_bake_data(bake_data, pixel_array, num_pixels);
- scene->bake_manager->bake(scene->device, &scene->dscene, scene, shader_type, bake_data, result);
+ scene->bake_manager->bake(scene->device, &scene->dscene, scene, session->progress, 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/render/bake.cpp b/intern/cycles/render/bake.cpp
index 3693753..0aff4a0 100644
--- a/intern/cycles/render/bake.cpp
+++ b/intern/cycles/render/bake.cpp
@@ -78,7 +78,7 @@ BakeData *BakeManager::init(const int object, const int tri_offset, const int nu
return bake_data;
}
-bool BakeManager::bake(Device *device, DeviceScene *dscene, Scene *scene, ShaderEvalType shader_type, BakeData *bake_data, float result[])
+bool BakeManager::bake(Device *device, DeviceScene *dscene, Scene *scene, Progress& progress, ShaderEvalType shader_type, BakeData *bake_data, float result[])
{
size_t limit = bake_data->size();
@@ -115,13 +115,16 @@ bool BakeManager::bake(Device *device, DeviceScene *dscene, Scene *scene, Shader
device->task_add(task);
device->task_wait();
+ if(progress.get_cancel()) {
+ device->mem_free(d_input);
+ device->mem_free(d_output);
+ return false;
+ }
+
device->mem_copy_from(d_output, 0, 1, d_output.size(), sizeof(float4));
device->mem_free(d_input);
device->mem_free(d_output);
-// if(progress.get_cancel())
-// return false;
-
/* read result */
int k = 0;
diff --git a/intern/cycles/render/bake.h b/intern/cycles/render/bake.h
index d197392..24a3443 100644
--- a/intern/cycles/render/bake.h
+++ b/intern/cycles/render/bake.h
@@ -53,7 +53,7 @@ public:
BakeData *init(const int object, const int tri_offset, const int num_pixels);
- bool bake(Device *device, DeviceScene *dscene, Scene *scene, ShaderEvalType shader_type, BakeData *bake_data, float result[]);
+ bool bake(Device *device, DeviceScene *dscene, Scene *scene, Progress& progress, ShaderEvalType shader_type, BakeData *bake_data, float result[]);
void device_update(Device *device, DeviceScene *dscene, Scene *scene, Progress& progress);
void device_free(Device *device, DeviceScene *dscene);
More information about the Bf-blender-cvs
mailing list