[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