aboutsummaryrefslogtreecommitdiffhomepage
path: root/samplecode/SampleHairCurves.cpp
diff options
context:
space:
mode:
authorGravatar egdaniel@google.com <egdaniel@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-08-01 17:09:11 +0000
committerGravatar egdaniel@google.com <egdaniel@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-08-01 17:09:11 +0000
commit3f2a2d5fdc833dd20900ee90249b03474d0e00b3 (patch)
tree9d608b97c2eb2a83f12bd2204c1b18483e11280a /samplecode/SampleHairCurves.cpp
parent7fb83c8c72f2a035e84a4ee4ee6abcf5a4872166 (diff)
Add Loop Blinn hairline conics to GPU
BUG= R=bsalomon@google.com Review URL: https://codereview.chromium.org/21036008 git-svn-id: http://skia.googlecode.com/svn/trunk@10487 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'samplecode/SampleHairCurves.cpp')
-rw-r--r--samplecode/SampleHairCurves.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/samplecode/SampleHairCurves.cpp b/samplecode/SampleHairCurves.cpp
index 183fc10995..2cf0b3c900 100644
--- a/samplecode/SampleHairCurves.cpp
+++ b/samplecode/SampleHairCurves.cpp
@@ -35,6 +35,7 @@ protected:
canvas->save();
canvas->scale(1000 * SK_Scalar1, 1000 * SK_Scalar1);
SkRandom rand;
+ SkRandom randW;
SkPath curves;
SkPath hulls;
SkPath ctrlPts;
@@ -82,6 +83,27 @@ protected:
SkScalar pts[] = {
rand.nextUScalar1(), rand.nextUScalar1(),
rand.nextUScalar1(), rand.nextUScalar1(),
+ rand.nextUScalar1(), rand.nextUScalar1(),
+ };
+ SkScalar weight = randW.nextUScalar1() * 2.0f;
+
+ curves.moveTo(pts[0], pts[1]);
+ curves.conicTo(pts[2], pts[3],
+ pts[4], pts[5],
+ weight);
+
+ hulls.moveTo(pts[0], pts[1]);
+ hulls.lineTo(pts[2], pts[3]);
+ hulls.lineTo(pts[4], pts[5]);
+
+ ctrlPts.addCircle(pts[0], pts[1], SK_Scalar1 / 200);
+ ctrlPts.addCircle(pts[2], pts[3], SK_Scalar1 / 200);
+ ctrlPts.addCircle(pts[4], pts[5], SK_Scalar1 / 200);
+ }
+ for (int i = 0; i < 100; ++i) {
+ SkScalar pts[] = {
+ rand.nextUScalar1(), rand.nextUScalar1(),
+ rand.nextUScalar1(), rand.nextUScalar1(),
};
curves.moveTo(pts[0], pts[1]);
curves.lineTo(pts[2], pts[3]);