[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28096] branches/render25/source/blender/ render/intern/source/object_displace.c: Render Branch: clip displacement values by the displacement bound.

Brecht Van Lommel brecht at blender.org
Thu Apr 8 18:19:09 CEST 2010


Revision: 28096
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28096
Author:   blendix
Date:     2010-04-08 18:19:09 +0200 (Thu, 08 Apr 2010)

Log Message:
-----------
Render Branch: clip displacement values by the displacement bound. Ideally this
should be computed automatic, but this at least helps finding out if it's too low.

Modified Paths:
--------------
    branches/render25/source/blender/render/intern/source/object_displace.c

Modified: branches/render25/source/blender/render/intern/source/object_displace.c
===================================================================
--- branches/render25/source/blender/render/intern/source/object_displace.c	2010-04-08 16:08:06 UTC (rev 28095)
+++ branches/render25/source/blender/render/intern/source/object_displace.c	2010-04-08 16:19:09 UTC (rev 28096)
@@ -131,7 +131,7 @@
 
 static void displace_render_vert(Render *re, ObjectRen *obr, ShadeInput *shi, VertRen *vr, int vindex, float scale[3])
 {
-	float displacement[3];
+	float displacement[3], bound= obr->ob->displacebound;
 
 	/* setup shadeinput for vertex */
 	displace_shadeinput_init_vertex(re, shi, vr);
@@ -139,8 +139,14 @@
 	/* compute displacement from materials */
 	mat_displacement(re, shi, displacement);
 
+	mul_v3_v3(displacement, scale);
+
+	/* clamp by displacement bound */
+	if(fabs(dot_v3v3(displacement, displacement)) > bound*bound)
+		mul_v3_fl(displacement, bound/len_v3(displacement));
+
 	/* add displacement to vertex */
-	madd_v3_v3v3(vr->co, displacement, scale);
+	add_v3_v3(vr->co, displacement);
 
 	/* tag vertex as done */
 	vr->flag |= 1;





More information about the Bf-blender-cvs mailing list