[Bf-blender-cvs] [bcc8400] temp-cycles-microdisplacement: Improved splitting

Mai Lavelle noreply at git.blender.org
Fri Jun 24 19:26:53 CEST 2016


Commit: bcc84007dddd99ee27653fcb8578574ecffc049e
Author: Mai Lavelle
Date:   Wed Jun 22 01:49:41 2016 -0400
Branches: temp-cycles-microdisplacement
https://developer.blender.org/rBbcc84007dddd99ee27653fcb8578574ecffc049e

Improved splitting

Split subpatches such that the ratio of T for opposite edges doesn't
exceed 1.5, this reduces over tessellation for some patches

===================================================================

M	intern/cycles/subd/subd_split.cpp

===================================================================

diff --git a/intern/cycles/subd/subd_split.cpp b/intern/cycles/subd/subd_split.cpp
index 15df4e4..401216b 100644
--- a/intern/cycles/subd/subd_split.cpp
+++ b/intern/cycles/subd/subd_split.cpp
@@ -140,6 +140,12 @@ void DiagSplit::split(QuadDice::SubPatch& sub, QuadDice::EdgeFactors& ef, int de
 	bool split_u = (ef.tu0 == DSPLIT_NON_UNIFORM || ef.tu1 == DSPLIT_NON_UNIFORM);
 	bool split_v = (ef.tv0 == DSPLIT_NON_UNIFORM || ef.tv1 == DSPLIT_NON_UNIFORM);
 
+	bool tmp_split_v = split_v;
+	if(!split_u && min(ef.tu0, ef.tu1) > 8 && min(ef.tu0, ef.tu1)*1.5f < max(ef.tu0, ef.tu1))
+		split_v = true;
+	if(!tmp_split_v && min(ef.tu0, ef.tu1) > 8 && min(ef.tv0, ef.tv1)*1.5f < max(ef.tv0, ef.tv1))
+		split_u = true;
+
 	if(split_u && split_v) {
 		split_u = depth % 2;
 	}




More information about the Bf-blender-cvs mailing list