diff options
author | egdaniel@google.com <egdaniel@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-08-01 17:09:11 +0000 |
---|---|---|
committer | egdaniel@google.com <egdaniel@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-08-01 17:09:11 +0000 |
commit | 3f2a2d5fdc833dd20900ee90249b03474d0e00b3 (patch) | |
tree | 9d608b97c2eb2a83f12bd2204c1b18483e11280a /samplecode/SampleHairCurves.cpp | |
parent | 7fb83c8c72f2a035e84a4ee4ee6abcf5a4872166 (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.cpp | 22 |
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]); |