[Bf-blender-cvs] [9fc4bd7] bake-cycles: Cycles-Bake: [review] store u and v as uv[2]
Dalai Felinto
noreply at git.blender.org
Wed Apr 23 02:47:45 CEST 2014
Commit: 9fc4bd78dd252a7714f18093f3078fa84cf1b7dc
Author: Dalai Felinto
Date: Tue Mar 25 17:34:06 2014 -0300
https://developer.blender.org/rB9fc4bd78dd252a7714f18093f3078fa84cf1b7dc
Cycles-Bake: [review] store u and v as uv[2]
===================================================================
M intern/cycles/blender/blender_session.cpp
M intern/cycles/render/bake.h
M source/blender/makesrna/intern/rna_render.c
M source/blender/render/extern/include/RE_bake.h
M source/blender/render/intern/source/bake_new.c
===================================================================
diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp
index d137953..63f90ba 100644
--- a/intern/cycles/blender/blender_session.cpp
+++ b/intern/cycles/blender/blender_session.cpp
@@ -487,7 +487,7 @@ static void populate_bake_data(BakeData *data, BL::BakePixel pixel_array, const
int i;
for(i=0; i < num_pixels; i++) {
- data->set(i, bp.primitive_id(), bp.u(), bp.v());
+ data->set(i, bp.primitive_id(), bp.uv());
bp = bp.next();
}
}
diff --git a/intern/cycles/render/bake.h b/intern/cycles/render/bake.h
index 6f06123..0e95503 100644
--- a/intern/cycles/render/bake.h
+++ b/intern/cycles/render/bake.h
@@ -43,11 +43,11 @@ public:
m_v.clear();
}
- void set(int i, int prim, float u, float v)
+ void set(int i, int prim, float uv[2])
{
m_primitive[i] = (prim == -1 ? -1 : m_tri_offset + prim);
- m_u[i] = u;
- m_v[i] = v;
+ m_u[i] = uv[0];
+ m_v[i] = uv[1];
}
int object()
diff --git a/source/blender/makesrna/intern/rna_render.c b/source/blender/makesrna/intern/rna_render.c
index 81ce1e9..fa5c979 100644
--- a/source/blender/makesrna/intern/rna_render.c
+++ b/source/blender/makesrna/intern/rna_render.c
@@ -718,12 +718,9 @@ static void rna_def_render_bake_pixel(BlenderRNA *brna)
RNA_def_property_int_sdna(prop, NULL, "primitive_id");
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- prop = RNA_def_property(srna, "u", PROP_FLOAT, PROP_NONE);
- RNA_def_property_float_sdna(prop, NULL, "u");
- RNA_def_property_clear_flag(prop, PROP_EDITABLE);
-
- prop = RNA_def_property(srna, "v", PROP_FLOAT, PROP_NONE);
- RNA_def_property_float_sdna(prop, NULL, "v");
+ prop = RNA_def_property(srna, "uv", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_array(prop, 2);
+ RNA_def_property_float_sdna(prop, NULL, "uv");
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
prop = RNA_def_property(srna, "du_dx", PROP_FLOAT, PROP_NONE);
diff --git a/source/blender/render/extern/include/RE_bake.h b/source/blender/render/extern/include/RE_bake.h
index d93a72b..ec8d8e3 100644
--- a/source/blender/render/extern/include/RE_bake.h
+++ b/source/blender/render/extern/include/RE_bake.h
@@ -37,7 +37,7 @@ struct Mesh;
typedef struct BakePixel {
int primitive_id;
- float u, v;
+ float uv[2];
float dudx, dudy;
float dvdx, dvdy;
} BakePixel;
diff --git a/source/blender/render/intern/source/bake_new.c b/source/blender/render/intern/source/bake_new.c
index e5d5c38..72a5d47 100644
--- a/source/blender/render/intern/source/bake_new.c
+++ b/source/blender/render/intern/source/bake_new.c
@@ -107,18 +107,19 @@ typedef struct TriTessFace {
static void store_bake_pixel(void *handle, int x, int y, float u, float v)
{
BakeData *bd = (BakeData *)handle;
- BakePixel *pixel_array = bd->pixel_array;
+ BakePixel *pixel;
const int width = bd->width;
const int i = y * width + x;
- pixel_array[i].primitive_id = bd->primitive_id;
- pixel_array[i].u = u;
- pixel_array[i].v = v;
+ pixel = &bd->pixel_array[i];
+ pixel->primitive_id = bd->primitive_id;
- pixel_array[i].dudx =
- pixel_array[i].dudy =
- pixel_array[i].dvdx =
- pixel_array[i].dvdy =
+ copy_v2_fl2(pixel->uv, u, v);
+
+ pixel->dudx =
+ pixel->dudy =
+ pixel->dvdx =
+ pixel->dvdy =
0.f;
}
@@ -253,8 +254,7 @@ static bool cast_ray_highpoly(BVHTreeFromMesh *treeData, TriTessFace *triangles,
get_barycentric_from_point(triangles, hit.index, hit.co, &primitive_id, &u, &v);
pixel_array->primitive_id = primitive_id;
- pixel_array->u = u;
- pixel_array->v = v;
+ copy_v2_fl2(pixel_array->uv, u, v);
return true;
}
@@ -410,8 +410,8 @@ void RE_populate_bake_pixels_from_object(Mesh *me_low, Mesh *me_high,
continue;
}
- u = pixel_array_from[i].u;
- v = pixel_array_from[i].v;
+ u = pixel_array_from[i].uv[0];
+ v = pixel_array_from[i].uv[1];
/* calculate from low poly mesh cage */
get_point_from_barycentric(tris_low, primitive_id, u, v, cage_extrusion, co, dir);
@@ -610,8 +610,8 @@ void RE_normal_world_to_tangent(const BakePixel pixel_array[], const int num_pix
signs[j] = ts->sign;
}
- u = pixel_array[i].u;
- v = pixel_array[i].v;
+ u = pixel_array[i].uv[0];
+ v = pixel_array[i].uv[1];
w = 1.0f - u - v;
/* normal */
@@ -704,14 +704,13 @@ void RE_normal_world_to_world(const BakePixel pixel_array[], const int num_pixel
/* not the real UV, but the internal per-face UV instead
I'm using it to test if everything is correct */
-static bool bake_uv(BakePixel pixel_array[], int num_pixels, int depth, float result[])
+static bool bake_uv(const BakePixel pixel_array[], const int num_pixels, const int depth, float result[])
{
int i;
for (i=0; i < num_pixels; i++) {
int offset = i * depth;
- result[offset] = pixel_array[i].u;
- result[offset + 1] = pixel_array[i].v;
+ copy_v2_v2(&result[offset], pixel_array[i].uv);
}
return true;
More information about the Bf-blender-cvs
mailing list