[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