[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