[Bf-blender-cvs] [31d0e8a] testbuild: Revert "Bake-API: use size_t instead of width, height"
Dalai Felinto
noreply at git.blender.org
Fri Nov 14 04:28:03 CET 2014
Commit: 31d0e8a8fe4bfc9253ef565ebfce04495c116495
Author: Dalai Felinto
Date: Mon Jul 28 16:44:51 2014 -0300
Branches: testbuild
https://developer.blender.org/rB31d0e8a8fe4bfc9253ef565ebfce04495c116495
Revert "Bake-API: use size_t instead of width, height"
This reverts commit 1607bcebc65fd5296f9f695e76580a1ae7ade9a2.
===================================================================
M intern/cycles/blender/addon/__init__.py
M intern/cycles/blender/addon/engine.py
M intern/cycles/blender/blender_python.cpp
M intern/cycles/blender/blender_session.cpp
M intern/cycles/blender/blender_session.h
M intern/cycles/render/bake.cpp
M intern/cycles/render/bake.h
M source/blender/editors/object/object_bake_api.c
M source/blender/makesrna/intern/rna_render.c
M source/blender/render/extern/include/RE_bake.h
M source/blender/render/extern/include/RE_engine.h
M source/blender/render/intern/source/bake_api.c
M source/blender/render/intern/source/external_engine.c
===================================================================
diff --git a/intern/cycles/blender/addon/__init__.py b/intern/cycles/blender/addon/__init__.py
index 44ffdc4..27d9869 100644
--- a/intern/cycles/blender/addon/__init__.py
+++ b/intern/cycles/blender/addon/__init__.py
@@ -67,8 +67,8 @@ class CyclesRender(bpy.types.RenderEngine):
def render(self, scene):
engine.render(self)
- def bake(self, scene, obj, pass_type, pixel_array, width, height, depth, result):
- engine.bake(self, obj, pass_type, pixel_array, width, height, depth, result)
+ def bake(self, scene, obj, pass_type, pixel_array, num_pixels, depth, result):
+ engine.bake(self, obj, pass_type, pixel_array, num_pixels, depth, result)
# viewport render
def view_update(self, context):
diff --git a/intern/cycles/blender/addon/engine.py b/intern/cycles/blender/addon/engine.py
index ca14bfe..18235ec 100644
--- a/intern/cycles/blender/addon/engine.py
+++ b/intern/cycles/blender/addon/engine.py
@@ -59,11 +59,11 @@ def render(engine):
_cycles.render(engine.session)
-def bake(engine, obj, pass_type, pixel_array, width, height, depth, result):
+def bake(engine, obj, pass_type, pixel_array, num_pixels, depth, result):
import _cycles
session = getattr(engine, "session", None)
if session is not None:
- _cycles.bake(engine.session, obj.as_pointer(), pass_type, pixel_array.as_pointer(), width, height, depth, result.as_pointer())
+ _cycles.bake(engine.session, obj.as_pointer(), pass_type, pixel_array.as_pointer(), num_pixels, depth, result.as_pointer())
def reset(engine, data, scene):
diff --git a/intern/cycles/blender/blender_python.cpp b/intern/cycles/blender/blender_python.cpp
index e89043e..1d18f56 100644
--- a/intern/cycles/blender/blender_python.cpp
+++ b/intern/cycles/blender/blender_python.cpp
@@ -160,9 +160,9 @@ static PyObject *bake_func(PyObject *self, PyObject *args)
PyObject *pysession, *pyobject;
PyObject *pypixel_array, *pyresult;
const char *pass_type;
- int width, height, depth;
+ int num_pixels, depth;
- if(!PyArg_ParseTuple(args, "OOsOiiiO", &pysession, &pyobject, &pass_type, &pypixel_array, &width, &height, &depth, &pyresult))
+ if(!PyArg_ParseTuple(args, "OOsOiiO", &pysession, &pyobject, &pass_type, &pypixel_array, &num_pixels, &depth, &pyresult))
return NULL;
BlenderSession *session = (BlenderSession*)PyLong_AsVoidPtr(pysession);
@@ -179,7 +179,7 @@ static PyObject *bake_func(PyObject *self, PyObject *args)
python_thread_state_save(&session->python_thread_state);
- session->bake(b_object, pass_type, b_bake_pixel, width, height, depth, (float *)b_result);
+ session->bake(b_object, pass_type, b_bake_pixel, num_pixels, depth, (float *)b_result);
python_thread_state_restore(&session->python_thread_state);
diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp
index 57d0f5b..e57a672 100644
--- a/intern/cycles/blender/blender_session.cpp
+++ b/intern/cycles/blender/blender_session.cpp
@@ -481,23 +481,22 @@ void BlenderSession::render()
sync = NULL;
}
-static void populate_bake_data(BakeData *data, BL::BakePixel pixel_array, const size_t num_pixels)
+static void populate_bake_data(BakeData *data, BL::BakePixel pixel_array, const int num_pixels)
{
BL::BakePixel bp = pixel_array;
- size_t i;
+ int i;
for(i=0; i < num_pixels; i++) {
data->set(i, bp.primitive_id(), bp.uv(), bp.du_dx(), bp.du_dy(), bp.dv_dx(), bp.dv_dy());
bp = bp.next();
}
}
-void BlenderSession::bake(BL::Object b_object, const string& pass_type, BL::BakePixel pixel_array, int width, int height, int depth, float result[])
+void BlenderSession::bake(BL::Object b_object, const string& pass_type, BL::BakePixel pixel_array, int num_pixels, int depth, float result[])
{
ShaderEvalType shader_type = get_shader_type(pass_type);
size_t object_index = OBJECT_NONE;
int tri_offset = 0;
- const size_t num_pixels = width * height;
/* ensure kernels are loaded before we do any scene updates */
session->load_kernels();
diff --git a/intern/cycles/blender/blender_session.h b/intern/cycles/blender/blender_session.h
index c936b3b..5146483 100644
--- a/intern/cycles/blender/blender_session.h
+++ b/intern/cycles/blender/blender_session.h
@@ -52,7 +52,7 @@ public:
/* offline render */
void render();
- void bake(BL::Object b_object, const string& pass_type, BL::BakePixel pixel_array, int width, int height, int depth, float pixels[]);
+ void bake(BL::Object b_object, const string& pass_type, BL::BakePixel pixel_array, int num_pixels, int depth, float pixels[]);
void write_render_result(BL::RenderResult b_rr, BL::RenderLayer b_rlay, RenderTile& rtile);
void write_render_tile(RenderTile& rtile);
diff --git a/intern/cycles/render/bake.cpp b/intern/cycles/render/bake.cpp
index d7da63d..bc313a5 100644
--- a/intern/cycles/render/bake.cpp
+++ b/intern/cycles/render/bake.cpp
@@ -19,7 +19,7 @@
CCL_NAMESPACE_BEGIN
-BakeData::BakeData(const int object, const size_t tri_offset, const size_t num_pixels):
+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)
@@ -60,7 +60,7 @@ int BakeData::object()
return m_object;
}
-size_t BakeData::size()
+int BakeData::size()
{
return m_num_pixels;
}
@@ -113,7 +113,7 @@ void BakeManager::set_baking(const bool value)
m_is_baking = value;
}
-BakeData *BakeManager::init(const int object, const size_t tri_offset, const size_t num_pixels)
+BakeData *BakeManager::init(const int object, const int tri_offset, const int num_pixels)
{
m_bake_data = new BakeData(object, tri_offset, num_pixels);
return m_bake_data;
diff --git a/intern/cycles/render/bake.h b/intern/cycles/render/bake.h
index 652420c..bf03a16 100644
--- a/intern/cycles/render/bake.h
+++ b/intern/cycles/render/bake.h
@@ -27,20 +27,20 @@ CCL_NAMESPACE_BEGIN
class BakeData {
public:
- BakeData(const int object, const size_t tri_offset, const size_t num_pixels);
+ BakeData(const int object, const int tri_offset, const int num_pixels);
~BakeData();
void set(int i, int prim, float uv[2], float dudx, float dudy, float dvdx, float dvdy);
int object();
- size_t size();
+ int size();
uint4 data(int i);
uint4 differentials(int i);
bool is_valid(int i);
private:
int m_object;
- size_t m_tri_offset;
- size_t m_num_pixels;
+ int m_tri_offset;
+ int m_num_pixels;
vector<int>m_primitive;
vector<float>m_u;
vector<float>m_v;
@@ -58,7 +58,7 @@ public:
bool get_baking();
void set_baking(const bool value);
- BakeData *init(const int object, const size_t tri_offset, const size_t num_pixels);
+ BakeData *init(const int object, const int tri_offset, const int num_pixels);
bool bake(Device *device, DeviceScene *dscene, Scene *scene, Progress& progress, ShaderEvalType shader_type, BakeData *bake_data, float result[]);
diff --git a/source/blender/editors/object/object_bake_api.c b/source/blender/editors/object/object_bake_api.c
index 417dcef..c3bb6d9 100644
--- a/source/blender/editors/object/object_bake_api.c
+++ b/source/blender/editors/object/object_bake_api.c
@@ -178,7 +178,7 @@ static bool write_internal_bake_pixels(
void *lock;
bool is_float;
char *mask_buffer = NULL;
- const size_t num_pixels = width * height;
+ const int num_pixels = width * height;
ibuf = BKE_image_acquire_ibuf(image, NULL, &lock);
@@ -311,7 +311,7 @@ static bool write_external_bake_pixels(
/* margins */
if (margin > 0) {
char *mask_buffer = NULL;
- const size_t num_pixels = width * height;
+ const int num_pixels = width * height;
mask_buffer = MEM_callocN(sizeof(char) * num_pixels, "Bake Mask");
RE_bake_mask_fill(pixel_array, num_pixels, mask_buffer);
@@ -514,10 +514,10 @@ static void build_image_lookup(Main *bmain, Object *ob, BakeImages *bake_images)
/*
* returns the total number of pixels
*/
-static size_t initialize_internal_images(BakeImages *bake_images, ReportList *reports)
+static int initialize_internal_images(BakeImages *bake_images, ReportList *reports)
{
int i;
- size_t tot_size = 0;
+ int tot_size = 0;
for (i = 0; i < bake_images->size; i++) {
ImBuf *ibuf;
@@ -543,28 +543,6 @@ static size_t initialize_internal_images(BakeImages *bake_images, ReportList *re
return tot_size;
}
-/* returns the image dimensions for single-images baking sessions, or an optimal dimension (the closest we can get to the square root) */
-static void calculate_buffer_dimension(int *width, int *height, const size_t num_pixels, BakeImages *bake_images)
-{
- if (bake_images->size == 1) {
- *width = bake_images->data[0].width;
- *height = bake_images->data[0].height;
- }
- else {
- int max_dividend = floor(sqrt(num_pixels));
- BLI_assert(max_dividend > 0);
-
- while (true) {
- if ((num_pixels % max_dividend) == 0) {
- *width = max_dividend;
- *height = num_pixels / max_dividend;
- break;
- }
- max_dividend--;
- }
- }
-}
-
static int bake(
Render *re, Main *bmain, Scene *scene, Object *ob_low, ListBase *selected_objects, ReportList *reports,
const ScenePassType pass_type, const int margin,
@@ -598,12 +576,10 @@ static int bake(
BakeImages bake_images = {NULL};
- size_t num_pixels;
+ int num_pixels;
int tot_materials;
int i;
- int buffer_width, buffer_height;
-
RE_bake_engine_set_engine_parameters(re, bmain, scene);
if (!RE_bake_has_engine(re)) {
@@ -673,8 +649,6 @@ static int bake(
}
}
- calculate_buffer_dimension(&buffer_width, &buffer_height, num_pixels, &bake_images);
-
if (is_selected_to_active) {
CollectionPointerLink *link;
tot_highpoly = 0;
@@ -814,7 +788,7 @@ static int bake(
/* the baking itself */
for (i = 0; i < tot_highpoly; i++) {
- ok = RE_bake_engine(re, highpoly[i].ob, highpoly[i].pixel_array, buffer_width, buffer_height,
+ ok = RE_bake_engine(re, highpoly[i].ob, highpoly[i].pixel_array, num_pixels,
depth, pass_type, result);
if (!ok) {
BKE_reportf(reports, RPT_ERROR, "Error baking from object \"%s\"", highpoly[i].ob->id.name + 2);
@@ -841,7 +815,7 @@ cage_cleanup:
ob_low->restrictflag &= ~OB_RESTRICT_RENDER;
if (RE_bake_has_engine(re))
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list