OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2016 Google Inc. | 2 * Copyright 2016 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #include "GrAlphaThresholdFragmentProcessor.h" | 8 #include "GrAlphaThresholdFragmentProcessor.h" |
9 | 9 |
10 #if SK_SUPPORT_GPU | 10 #if SK_SUPPORT_GPU |
11 | 11 |
12 #include "GrInvariantOutput.h" | 12 #include "GrInvariantOutput.h" |
13 #include "GrTextureAccess.h" | 13 #include "GrTextureAccess.h" |
| 14 #include "SkRefCnt.h" |
14 | 15 |
15 #include "glsl/GrGLSLFragmentProcessor.h" | 16 #include "glsl/GrGLSLFragmentProcessor.h" |
16 #include "glsl/GrGLSLFragmentShaderBuilder.h" | 17 #include "glsl/GrGLSLFragmentShaderBuilder.h" |
17 #include "glsl/GrGLSLUniformHandler.h" | 18 #include "glsl/GrGLSLUniformHandler.h" |
18 | 19 |
19 sk_sp<GrFragmentProcessor> GrAlphaThresholdFragmentProcessor::Make(GrTexture* te
xture, | 20 sk_sp<GrFragmentProcessor> GrAlphaThresholdFragmentProcessor::Make(GrTexture* te
xture, |
20 GrTexture* ma
skTexture, | 21 GrTexture* ma
skTexture, |
21 float innerTh
reshold, | 22 float innerTh
reshold, |
22 float outerTh
reshold, | 23 float outerTh
reshold, |
23 const SkIRect
& bounds) { | 24 const SkIRect
& bounds) { |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
137 const GrProcessor& proc) { | 138 const GrProcessor& proc) { |
138 const GrAlphaThresholdFragmentProcessor& atfp = proc.cast<GrAlphaThresholdFr
agmentProcessor>(); | 139 const GrAlphaThresholdFragmentProcessor& atfp = proc.cast<GrAlphaThresholdFr
agmentProcessor>(); |
139 pdman.set1f(fInnerThresholdVar, atfp.innerThreshold()); | 140 pdman.set1f(fInnerThresholdVar, atfp.innerThreshold()); |
140 pdman.set1f(fOuterThresholdVar, atfp.outerThreshold()); | 141 pdman.set1f(fOuterThresholdVar, atfp.outerThreshold()); |
141 } | 142 } |
142 | 143 |
143 ///////////////////////////////////////////////////////////////////// | 144 ///////////////////////////////////////////////////////////////////// |
144 | 145 |
145 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(GrAlphaThresholdFragmentProcessor); | 146 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(GrAlphaThresholdFragmentProcessor); |
146 | 147 |
147 const GrFragmentProcessor* GrAlphaThresholdFragmentProcessor::TestCreate(GrProce
ssorTestData* d) { | 148 sk_sp<GrFragmentProcessor> GrAlphaThresholdFragmentProcessor::TestCreate(GrProce
ssorTestData* d) { |
148 GrTexture* bmpTex = d->fTextures[GrProcessorUnitTest::kSkiaPMTextureIdx]; | 149 GrTexture* bmpTex = d->fTextures[GrProcessorUnitTest::kSkiaPMTextureIdx]; |
149 GrTexture* maskTex = d->fTextures[GrProcessorUnitTest::kAlphaTextureIdx]; | 150 GrTexture* maskTex = d->fTextures[GrProcessorUnitTest::kAlphaTextureIdx]; |
150 float innerThresh = d->fRandom->nextUScalar1(); | 151 float innerThresh = d->fRandom->nextUScalar1(); |
151 float outerThresh = d->fRandom->nextUScalar1(); | 152 float outerThresh = d->fRandom->nextUScalar1(); |
152 const int kMaxWidth = 1000; | 153 const int kMaxWidth = 1000; |
153 const int kMaxHeight = 1000; | 154 const int kMaxHeight = 1000; |
154 uint32_t width = d->fRandom->nextULessThan(kMaxWidth); | 155 uint32_t width = d->fRandom->nextULessThan(kMaxWidth); |
155 uint32_t height = d->fRandom->nextULessThan(kMaxHeight); | 156 uint32_t height = d->fRandom->nextULessThan(kMaxHeight); |
156 uint32_t x = d->fRandom->nextULessThan(kMaxWidth - width); | 157 uint32_t x = d->fRandom->nextULessThan(kMaxWidth - width); |
157 uint32_t y = d->fRandom->nextULessThan(kMaxHeight - height); | 158 uint32_t y = d->fRandom->nextULessThan(kMaxHeight - height); |
158 SkIRect bounds = SkIRect::MakeXYWH(x, y, width, height); | 159 SkIRect bounds = SkIRect::MakeXYWH(x, y, width, height); |
159 return GrAlphaThresholdFragmentProcessor::Make(bmpTex, maskTex, | 160 return GrAlphaThresholdFragmentProcessor::Make(bmpTex, maskTex, |
160 innerThresh, outerThresh, | 161 innerThresh, outerThresh, |
161 bounds).release(); | 162 bounds); |
162 } | 163 } |
163 | 164 |
164 /////////////////////////////////////////////////////////////////////////////// | 165 /////////////////////////////////////////////////////////////////////////////// |
165 | 166 |
166 void GrAlphaThresholdFragmentProcessor::onGetGLSLProcessorKey(const GrGLSLCaps&
caps, | 167 void GrAlphaThresholdFragmentProcessor::onGetGLSLProcessorKey(const GrGLSLCaps&
caps, |
167 GrProcessorKeyBuil
der* b) const { | 168 GrProcessorKeyBuil
der* b) const { |
168 GrGLAlphaThresholdFragmentProcessor::GenKey(*this, caps, b); | 169 GrGLAlphaThresholdFragmentProcessor::GenKey(*this, caps, b); |
169 } | 170 } |
170 | 171 |
171 GrGLSLFragmentProcessor* GrAlphaThresholdFragmentProcessor::onCreateGLSLInstance
() const { | 172 GrGLSLFragmentProcessor* GrAlphaThresholdFragmentProcessor::onCreateGLSLInstance
() const { |
172 return new GrGLAlphaThresholdFragmentProcessor; | 173 return new GrGLAlphaThresholdFragmentProcessor; |
173 } | 174 } |
174 | 175 |
175 #endif | 176 #endif |
OLD | NEW |