OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2014 Google Inc. | 2 * Copyright 2014 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 "SkColorCubeFilter.h" | 8 #include "SkColorCubeFilter.h" |
9 #include "SkColorPriv.h" | 9 #include "SkColorPriv.h" |
10 #include "SkOnce.h" | 10 #include "SkOnce.h" |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
187 class GrColorCubeEffect : public GrFragmentProcessor { | 187 class GrColorCubeEffect : public GrFragmentProcessor { |
188 public: | 188 public: |
189 static GrFragmentProcessor* Create(GrTexture* colorCube) { | 189 static GrFragmentProcessor* Create(GrTexture* colorCube) { |
190 return (NULL != colorCube) ? SkNEW_ARGS(GrColorCubeEffect, (colorCube))
: NULL; | 190 return (NULL != colorCube) ? SkNEW_ARGS(GrColorCubeEffect, (colorCube))
: NULL; |
191 } | 191 } |
192 | 192 |
193 virtual ~GrColorCubeEffect(); | 193 virtual ~GrColorCubeEffect(); |
194 | 194 |
195 const char* name() const override { return "ColorCube"; } | 195 const char* name() const override { return "ColorCube"; } |
196 | 196 |
197 virtual void getGLProcessorKey(const GrGLSLCaps& caps, | |
198 GrProcessorKeyBuilder* b) const override; | |
199 | |
200 GrGLFragmentProcessor* createGLInstance() const override; | 197 GrGLFragmentProcessor* createGLInstance() const override; |
201 int colorCubeSize() const { return fColorCubeAccess.getTexture()->width(); } | 198 int colorCubeSize() const { return fColorCubeAccess.getTexture()->width(); } |
202 | 199 |
203 | 200 |
204 void onComputeInvariantOutput(GrInvariantOutput*) const override; | 201 void onComputeInvariantOutput(GrInvariantOutput*) const override; |
205 | 202 |
206 class GLProcessor : public GrGLFragmentProcessor { | 203 class GLProcessor : public GrGLFragmentProcessor { |
207 public: | 204 public: |
208 GLProcessor(const GrProcessor&); | 205 GLProcessor(const GrProcessor&); |
209 virtual ~GLProcessor(); | 206 virtual ~GLProcessor(); |
210 | 207 |
211 virtual void emitCode(EmitArgs&) override; | 208 virtual void emitCode(EmitArgs&) override; |
212 | 209 |
213 static inline void GenKey(const GrProcessor&, const GrGLSLCaps&, GrProce
ssorKeyBuilder*); | 210 static inline void GenKey(const GrProcessor&, const GrGLSLCaps&, GrProce
ssorKeyBuilder*); |
214 | 211 |
215 void setData(const GrGLProgramDataManager&, const GrProcessor&) override
; | 212 void setData(const GrGLProgramDataManager&, const GrProcessor&) override
; |
216 | 213 |
217 private: | 214 private: |
218 GrGLProgramDataManager::UniformHandle fColorCubeSizeUni; | 215 GrGLProgramDataManager::UniformHandle fColorCubeSizeUni; |
219 GrGLProgramDataManager::UniformHandle fColorCubeInvSizeUni; | 216 GrGLProgramDataManager::UniformHandle fColorCubeInvSizeUni; |
220 | 217 |
221 typedef GrGLFragmentProcessor INHERITED; | 218 typedef GrGLFragmentProcessor INHERITED; |
222 }; | 219 }; |
223 | 220 |
224 private: | 221 private: |
| 222 virtual void onGetGLProcessorKey(const GrGLSLCaps& caps, |
| 223 GrProcessorKeyBuilder* b) const override; |
| 224 |
225 bool onIsEqual(const GrFragmentProcessor&) const override { return true; } | 225 bool onIsEqual(const GrFragmentProcessor&) const override { return true; } |
226 | 226 |
227 GrColorCubeEffect(GrTexture* colorCube); | 227 GrColorCubeEffect(GrTexture* colorCube); |
228 | 228 |
229 GrTextureAccess fColorCubeAccess; | 229 GrTextureAccess fColorCubeAccess; |
230 | 230 |
231 typedef GrFragmentProcessor INHERITED; | 231 typedef GrFragmentProcessor INHERITED; |
232 }; | 232 }; |
233 | 233 |
234 /////////////////////////////////////////////////////////////////////////////// | 234 /////////////////////////////////////////////////////////////////////////////// |
235 | 235 |
236 GrColorCubeEffect::GrColorCubeEffect(GrTexture* colorCube) | 236 GrColorCubeEffect::GrColorCubeEffect(GrTexture* colorCube) |
237 : fColorCubeAccess(colorCube, "bgra", GrTextureParams::kBilerp_FilterMode) { | 237 : fColorCubeAccess(colorCube, "bgra", GrTextureParams::kBilerp_FilterMode) { |
238 this->initClassID<GrColorCubeEffect>(); | 238 this->initClassID<GrColorCubeEffect>(); |
239 this->addTextureAccess(&fColorCubeAccess); | 239 this->addTextureAccess(&fColorCubeAccess); |
240 } | 240 } |
241 | 241 |
242 GrColorCubeEffect::~GrColorCubeEffect() { | 242 GrColorCubeEffect::~GrColorCubeEffect() { |
243 } | 243 } |
244 | 244 |
245 void GrColorCubeEffect::getGLProcessorKey(const GrGLSLCaps& caps, GrProcessorKey
Builder* b) const { | 245 void GrColorCubeEffect::onGetGLProcessorKey(const GrGLSLCaps& caps, GrProcessorK
eyBuilder* b) const { |
246 GLProcessor::GenKey(*this, caps, b); | 246 GLProcessor::GenKey(*this, caps, b); |
247 } | 247 } |
248 | 248 |
249 GrGLFragmentProcessor* GrColorCubeEffect::createGLInstance() const { | 249 GrGLFragmentProcessor* GrColorCubeEffect::createGLInstance() const { |
250 return SkNEW_ARGS(GLProcessor, (*this)); | 250 return SkNEW_ARGS(GLProcessor, (*this)); |
251 } | 251 } |
252 | 252 |
253 void GrColorCubeEffect::onComputeInvariantOutput(GrInvariantOutput* inout) const
{ | 253 void GrColorCubeEffect::onComputeInvariantOutput(GrInvariantOutput* inout) const
{ |
254 inout->setToUnknown(GrInvariantOutput::kWill_ReadInput); | 254 inout->setToUnknown(GrInvariantOutput::kWill_ReadInput); |
255 } | 255 } |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
357 *array->append() = frag; | 357 *array->append() = frag; |
358 } else { | 358 } else { |
359 frag->unref(); | 359 frag->unref(); |
360 SkDEBUGCODE(frag = NULL;) | 360 SkDEBUGCODE(frag = NULL;) |
361 } | 361 } |
362 return true; | 362 return true; |
363 } | 363 } |
364 return false; | 364 return false; |
365 } | 365 } |
366 #endif | 366 #endif |
OLD | NEW |