[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [45678] trunk/blender/intern/cycles: Fix #30966: cycles nan mesh vertices got set to (0, 0, 0), now remove them instead.

Brecht Van Lommel brechtvanlommel at pandora.be
Mon Apr 16 10:35:21 CEST 2012


Revision: 45678
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=45678
Author:   blendix
Date:     2012-04-16 08:35:21 +0000 (Mon, 16 Apr 2012)
Log Message:
-----------
Fix #30966: cycles nan mesh vertices got set to (0, 0, 0), now remove them instead.

Modified Paths:
--------------
    trunk/blender/intern/cycles/app/cycles_xml.cpp
    trunk/blender/intern/cycles/kernel/kernel_bvh.h
    trunk/blender/intern/cycles/kernel/kernel_camera.h
    trunk/blender/intern/cycles/kernel/kernel_mbvh.h
    trunk/blender/intern/cycles/kernel/kernel_object.h
    trunk/blender/intern/cycles/kernel/kernel_passes.h
    trunk/blender/intern/cycles/kernel/kernel_qbvh.h
    trunk/blender/intern/cycles/kernel/svm/svm_camera.h
    trunk/blender/intern/cycles/kernel/svm/svm_mapping.h
    trunk/blender/intern/cycles/kernel/svm/svm_tex_coord.h
    trunk/blender/intern/cycles/render/camera.cpp
    trunk/blender/intern/cycles/render/light.cpp
    trunk/blender/intern/cycles/render/object.cpp
    trunk/blender/intern/cycles/subd/subd_dice.cpp
    trunk/blender/intern/cycles/subd/subd_split.cpp
    trunk/blender/intern/cycles/util/util_boundbox.h
    trunk/blender/intern/cycles/util/util_transform.h

Modified: trunk/blender/intern/cycles/app/cycles_xml.cpp
===================================================================
--- trunk/blender/intern/cycles/app/cycles_xml.cpp	2012-04-16 08:11:07 UTC (rev 45677)
+++ trunk/blender/intern/cycles/app/cycles_xml.cpp	2012-04-16 08:35:21 UTC (rev 45678)
@@ -724,7 +724,7 @@
 			LinearQuadPatch *bpatch = new LinearQuadPatch();
 
 			for(int i = 0; i < 4; i++)
-				P[i] = transform(&state.tfm, P[i]);
+				P[i] = transform_point(&state.tfm, P[i]);
 			memcpy(bpatch->hull, &P[0], sizeof(bpatch->hull));
 
 			patch = bpatch;
@@ -738,7 +738,7 @@
 			BicubicPatch *bpatch = new BicubicPatch();
 
 			for(int i = 0; i < 16; i++)
-				P[i] = transform(&state.tfm, P[i]);
+				P[i] = transform_point(&state.tfm, P[i]);
 			memcpy(bpatch->hull, &P[0], sizeof(bpatch->hull));
 
 			patch = bpatch;
@@ -777,7 +777,7 @@
 	Light *light = new Light();
 	light->shader = state.shader;
 	xml_read_float3(&light->co, node, "P");
-	light->co = transform(&state.tfm, light->co);
+	light->co = transform_point(&state.tfm, light->co);
 
 	state.scene->lights.push_back(light);
 }

Modified: trunk/blender/intern/cycles/kernel/kernel_bvh.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_bvh.h	2012-04-16 08:11:07 UTC (rev 45677)
+++ trunk/blender/intern/cycles/kernel/kernel_bvh.h	2012-04-16 08:35:21 UTC (rev 45678)
@@ -59,7 +59,7 @@
 {
 	Transform tfm = object_fetch_transform(kg, object, OBJECT_INVERSE_TRANSFORM);
 
-	*P = transform(&tfm, ray->P);
+	*P = transform_point(&tfm, ray->P);
 
 	float3 dir = transform_direction(&tfm, ray->D);
 
@@ -351,7 +351,7 @@
 	if(isect->object != ~0) {
 		Transform tfm = object_fetch_transform(kg, isect->object, OBJECT_INVERSE_TRANSFORM);
 
-		P = transform(&tfm, P);
+		P = transform_point(&tfm, P);
 		D = transform_direction(&tfm, D*t);
 		D = normalize_len(D, &t);
 	}
@@ -367,7 +367,7 @@
 
 	if(isect->object != ~0) {
 		Transform tfm = object_fetch_transform(kg, isect->object, OBJECT_TRANSFORM);
-		P = transform(&tfm, P);
+		P = transform_point(&tfm, P);
 	}
 
 	return P;

Modified: trunk/blender/intern/cycles/kernel/kernel_camera.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_camera.h	2012-04-16 08:11:07 UTC (rev 45677)
+++ trunk/blender/intern/cycles/kernel/kernel_camera.h	2012-04-16 08:35:21 UTC (rev 45678)
@@ -39,7 +39,7 @@
 {
 	/* create ray form raster position */
 	Transform rastertocamera = kernel_data.cam.rastertocamera;
-	float3 Pcamera = transform(&rastertocamera, make_float3(raster_x, raster_y, 0.0f));
+	float3 Pcamera = transform_perspective(&rastertocamera, make_float3(raster_x, raster_y, 0.0f));
 
 	ray->P = make_float3(0.0f, 0.0f, 0.0f);
 	ray->D = Pcamera;
@@ -63,7 +63,7 @@
 	/* transform ray from camera to world */
 	Transform cameratoworld = kernel_data.cam.cameratoworld;
 
-	ray->P = transform(&cameratoworld, ray->P);
+	ray->P = transform_point(&cameratoworld, ray->P);
 	ray->D = transform_direction(&cameratoworld, ray->D);
 	ray->D = normalize(ray->D);
 
@@ -93,7 +93,7 @@
 {
 	/* create ray form raster position */
 	Transform rastertocamera = kernel_data.cam.rastertocamera;
-	float3 Pcamera = transform(&rastertocamera, make_float3(raster_x, raster_y, 0.0f));
+	float3 Pcamera = transform_perspective(&rastertocamera, make_float3(raster_x, raster_y, 0.0f));
 
 	ray->P = Pcamera;
 	ray->D = make_float3(0.0f, 0.0f, 1.0f);
@@ -101,7 +101,7 @@
 	/* transform ray from camera to world */
 	Transform cameratoworld = kernel_data.cam.cameratoworld;
 
-	ray->P = transform(&cameratoworld, ray->P);
+	ray->P = transform_point(&cameratoworld, ray->P);
 	ray->D = transform_direction(&cameratoworld, ray->D);
 	ray->D = normalize(ray->D);
 
@@ -127,7 +127,7 @@
 __device void camera_sample_environment(KernelGlobals *kg, float raster_x, float raster_y, Ray *ray)
 {
 	Transform rastertocamera = kernel_data.cam.rastertocamera;
-	float3 Pcamera = transform(&rastertocamera, make_float3(raster_x, raster_y, 0.0f));
+	float3 Pcamera = transform_perspective(&rastertocamera, make_float3(raster_x, raster_y, 0.0f));
 
 	/* create ray form raster position */
 	ray->P = make_float3(0.0, 0.0f, 0.0f);
@@ -136,7 +136,7 @@
 	/* transform ray from camera to world */
 	Transform cameratoworld = kernel_data.cam.cameratoworld;
 
-	ray->P = transform(&cameratoworld, ray->P);
+	ray->P = transform_point(&cameratoworld, ray->P);
 	ray->D = transform_direction(&cameratoworld, ray->D);
 	ray->D = normalize(ray->D);
 
@@ -145,10 +145,10 @@
 	ray->dP.dx = make_float3(0.0f, 0.0f, 0.0f);
 	ray->dP.dy = make_float3(0.0f, 0.0f, 0.0f);
 
-	Pcamera = transform(&rastertocamera, make_float3(raster_x + 1.0f, raster_y, 0.0f));
+	Pcamera = transform_perspective(&rastertocamera, make_float3(raster_x + 1.0f, raster_y, 0.0f));
 	ray->dD.dx = normalize(transform_direction(&cameratoworld, equirectangular_to_direction(Pcamera.x, Pcamera.y))) - ray->D;
 
-	Pcamera = transform(&rastertocamera, make_float3(raster_x, raster_y + 1.0f, 0.0f));
+	Pcamera = transform_perspective(&rastertocamera, make_float3(raster_x, raster_y + 1.0f, 0.0f));
 	ray->dD.dy = normalize(transform_direction(&cameratoworld, equirectangular_to_direction(Pcamera.x, Pcamera.y))) - ray->D;
 #endif
 

Modified: trunk/blender/intern/cycles/kernel/kernel_mbvh.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_mbvh.h	2012-04-16 08:11:07 UTC (rev 45677)
+++ trunk/blender/intern/cycles/kernel/kernel_mbvh.h	2012-04-16 08:35:21 UTC (rev 45678)
@@ -61,7 +61,7 @@
 {
 	Transform tfm = object_fetch_transform(kg, object, OBJECT_INVERSE_TRANSFORM);
 
-	ray->P = transform(&tfm, ray->origP);
+	ray->P = transform_point(&tfm, ray->origP);
 
 	float3 dir = ray->origD;
 

Modified: trunk/blender/intern/cycles/kernel/kernel_object.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_object.h	2012-04-16 08:11:07 UTC (rev 45677)
+++ trunk/blender/intern/cycles/kernel/kernel_object.h	2012-04-16 08:35:21 UTC (rev 45678)
@@ -42,7 +42,7 @@
 __device_inline void object_position_transform(KernelGlobals *kg, int object, float3 *P)
 {
 	Transform tfm = object_fetch_transform(kg, object, OBJECT_TRANSFORM);
-	*P = transform(&tfm, *P);
+	*P = transform_point(&tfm, *P);
 }
 
 __device_inline void object_normal_transform(KernelGlobals *kg, int object, float3 *N)

Modified: trunk/blender/intern/cycles/kernel/kernel_passes.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_passes.h	2012-04-16 08:11:07 UTC (rev 45677)
+++ trunk/blender/intern/cycles/kernel/kernel_passes.h	2012-04-16 08:35:21 UTC (rev 45678)
@@ -53,7 +53,7 @@
 		if(sample == 0) {
 			if(flag & PASS_DEPTH) {
 				Transform tfm = kernel_data.cam.worldtocamera;
-				float depth = len(transform(&tfm, sd->P));
+				float depth = len(transform_point(&tfm, sd->P));
 
 				kernel_write_pass_float(buffer + kernel_data.film.pass_depth, sample, depth);
 			}

Modified: trunk/blender/intern/cycles/kernel/kernel_qbvh.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_qbvh.h	2012-04-16 08:11:07 UTC (rev 45677)
+++ trunk/blender/intern/cycles/kernel/kernel_qbvh.h	2012-04-16 08:35:21 UTC (rev 45678)
@@ -50,7 +50,7 @@
 {
 	Transform tfm = object_fetch_transform(kg, object, OBJECT_INVERSE_TRANSFORM);
 
-	*P = transform(&tfm, ray->P);
+	*P = transform_point(&tfm, ray->P);
 
 	float3 dir = transform_direction(&tfm, ray->D);
 
@@ -384,7 +384,7 @@
 	if(isect->object != ~0) {
 		Transform tfm = object_fetch_transform(kg, isect->object, OBJECT_INVERSE_TRANSFORM);
 
-		P = transform(&tfm, P);
+		P = transform_point(&tfm, P);
 		D = transform_direction(&tfm, D*t);
 		D = normalize_len(D, &t);
 	}
@@ -400,7 +400,7 @@
 
 	if(isect->object != ~0) {
 		Transform tfm = object_fetch_transform(kg, isect->object, OBJECT_TRANSFORM);
-		P = transform(&tfm, P);
+		P = transform_point(&tfm, P);
 	}
 
 	return P;

Modified: trunk/blender/intern/cycles/kernel/svm/svm_camera.h
===================================================================
--- trunk/blender/intern/cycles/kernel/svm/svm_camera.h	2012-04-16 08:11:07 UTC (rev 45677)
+++ trunk/blender/intern/cycles/kernel/svm/svm_camera.h	2012-04-16 08:35:21 UTC (rev 45678)
@@ -25,7 +25,7 @@
 	float3 vector;
 
 	Transform tfm = kernel_data.cam.worldtocamera;
-	vector = transform(&tfm, sd->P);
+	vector = transform_point(&tfm, sd->P);
 	zdepth = vector.z;
 	distance = len(vector);
 

Modified: trunk/blender/intern/cycles/kernel/svm/svm_mapping.h
===================================================================
--- trunk/blender/intern/cycles/kernel/svm/svm_mapping.h	2012-04-16 08:11:07 UTC (rev 45677)
+++ trunk/blender/intern/cycles/kernel/svm/svm_mapping.h	2012-04-16 08:35:21 UTC (rev 45678)
@@ -30,7 +30,7 @@
 	tfm.z = read_node_float(kg, offset);
 	tfm.w = read_node_float(kg, offset);
 
-	float3 r = transform(&tfm, v);
+	float3 r = transform_point(&tfm, v);
 	stack_store_float3(stack, out_offset, r);
 }
 

Modified: trunk/blender/intern/cycles/kernel/svm/svm_tex_coord.h
===================================================================
--- trunk/blender/intern/cycles/kernel/svm/svm_tex_coord.h	2012-04-16 08:11:07 UTC (rev 45677)
+++ trunk/blender/intern/cycles/kernel/svm/svm_tex_coord.h	2012-04-16 08:35:21 UTC (rev 45678)
@@ -34,7 +34,7 @@
 		case NODE_TEXCO_OBJECT: {
 			if(sd->object != ~0) {
 				Transform tfm = object_fetch_transform(kg, sd->object, OBJECT_INVERSE_TRANSFORM);
-				data = transform(&tfm, sd->P);
+				data = transform_point(&tfm, sd->P);
 			}
 			else
 				data = sd->P;
@@ -44,18 +44,18 @@
 			Transform tfm = kernel_data.cam.worldtocamera;
 
 			if(sd->object != ~0)
-				data = transform(&tfm, sd->P);
+				data = transform_point(&tfm, sd->P);
 			else
-				data = transform(&tfm, sd->P + svm_background_offset(kg));
+				data = transform_point(&tfm, sd->P + svm_background_offset(kg));
 			break;
 		}
 		case NODE_TEXCO_WINDOW: {
 			Transform tfm = kernel_data.cam.worldtondc;
 
 			if(sd->object != ~0)
-				data = transform(&tfm, sd->P);
+				data = transform_perspective(&tfm, sd->P);
 			else
-				data = transform(&tfm, sd->P + svm_background_offset(kg));
+				data = transform_perspective(&tfm, sd->P + svm_background_offset(kg));
 			break;
 		}
 		case NODE_TEXCO_REFLECTION: {
@@ -79,7 +79,7 @@

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list