Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(120)

Side by Side Diff: src/gpu/effects/GrDistanceFieldTextureEffect.h

Issue 791743003: Remove GP from drawstate, revision of invariant output for GP (Closed) Base URL: https://skia.googlesource.com/skia.git@color-to-gp
Patch Set: more windows fix Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/gpu/effects/GrDashingEffect.cpp ('k') | src/gpu/effects/GrDistanceFieldTextureEffect.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2013 Google Inc. 2 * Copyright 2013 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 #ifndef GrDistanceFieldTextureEffect_DEFINED 8 #ifndef GrDistanceFieldTextureEffect_DEFINED
9 #define GrDistanceFieldTextureEffect_DEFINED 9 #define GrDistanceFieldTextureEffect_DEFINED
10 10
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 * The output color of this effect is a modulation of the input color and a samp le from a 42 * The output color of this effect is a modulation of the input color and a samp le from a
43 * distance field texture (using a smoothed step function near 0.5). 43 * distance field texture (using a smoothed step function near 0.5).
44 * It allows explicit specification of the filtering and wrap modes (GrTexturePa rams). The input 44 * It allows explicit specification of the filtering and wrap modes (GrTexturePa rams). The input
45 * coords are a custom attribute. Gamma correction is handled via a texture LUT. 45 * coords are a custom attribute. Gamma correction is handled via a texture LUT.
46 */ 46 */
47 class GrDistanceFieldTextureEffect : public GrGeometryProcessor { 47 class GrDistanceFieldTextureEffect : public GrGeometryProcessor {
48 public: 48 public:
49 #ifdef SK_GAMMA_APPLY_TO_A8 49 #ifdef SK_GAMMA_APPLY_TO_A8
50 static GrGeometryProcessor* Create(GrColor color, GrTexture* tex, const GrTe xtureParams& params, 50 static GrGeometryProcessor* Create(GrColor color, GrTexture* tex, const GrTe xtureParams& params,
51 GrTexture* gamma, const GrTextureParams& gammaParams, 51 GrTexture* gamma, const GrTextureParams& gammaParams,
52 float lum, uint32_t flags) { 52 float lum, uint32_t flags, bool opaqueVer texColors) {
53 return SkNEW_ARGS(GrDistanceFieldTextureEffect, (color, tex, params, gamm a, gammaParams, lum, 53 return SkNEW_ARGS(GrDistanceFieldTextureEffect, (color, tex, params, gamm a, gammaParams, lum,
54 flags)); 54 flags, opaqueVertexColor s));
55 } 55 }
56 #else 56 #else
57 static GrGeometryProcessor* Create(GrColor color, GrTexture* tex, const GrTe xtureParams& params, 57 static GrGeometryProcessor* Create(GrColor color, GrTexture* tex, const GrTe xtureParams& params,
58 uint32_t flags) { 58 uint32_t flags, bool opaqueVertexColors) {
59 return SkNEW_ARGS(GrDistanceFieldTextureEffect, (color, tex, params, fl ags)); 59 return SkNEW_ARGS(GrDistanceFieldTextureEffect, (color, tex, params, fl ags,
60 opaqueVertexColors));
60 } 61 }
61 #endif 62 #endif
62 63
63 virtual ~GrDistanceFieldTextureEffect() {} 64 virtual ~GrDistanceFieldTextureEffect() {}
64 65
65 virtual const char* name() const SK_OVERRIDE { return "DistanceFieldTexture" ; } 66 virtual const char* name() const SK_OVERRIDE { return "DistanceFieldTexture" ; }
66 67
67 const GrAttribute* inPosition() const { return fInPosition; } 68 const GrAttribute* inPosition() const { return fInPosition; }
68 const GrAttribute* inColor() const { return fInColor; } 69 const GrAttribute* inColor() const { return fInColor; }
69 const GrAttribute* inTextureCoords() const { return fInTextureCoords; } 70 const GrAttribute* inTextureCoords() const { return fInTextureCoords; }
70 #ifdef SK_GAMMA_APPLY_TO_A8 71 #ifdef SK_GAMMA_APPLY_TO_A8
71 float getLuminance() const { return fLuminance; } 72 float getLuminance() const { return fLuminance; }
72 #endif 73 #endif
73 uint32_t getFlags() const { return fFlags; } 74 uint32_t getFlags() const { return fFlags; }
74 75
75 virtual void getGLProcessorKey(const GrBatchTracker& bt, 76 virtual void getGLProcessorKey(const GrBatchTracker& bt,
76 const GrGLCaps& caps, 77 const GrGLCaps& caps,
77 GrProcessorKeyBuilder* b) const SK_OVERRIDE; 78 GrProcessorKeyBuilder* b) const SK_OVERRIDE;
78 79
79 virtual GrGLGeometryProcessor* createGLInstance(const GrBatchTracker& bt) co nst SK_OVERRIDE; 80 virtual GrGLGeometryProcessor* createGLInstance(const GrBatchTracker& bt) co nst SK_OVERRIDE;
80 81
81 private: 82 private:
82 GrDistanceFieldTextureEffect(GrColor, GrTexture* texture, const GrTexturePar ams& params, 83 GrDistanceFieldTextureEffect(GrColor, GrTexture* texture, const GrTexturePar ams& params,
83 #ifdef SK_GAMMA_APPLY_TO_A8 84 #ifdef SK_GAMMA_APPLY_TO_A8
84 GrTexture* gamma, const GrTextureParams& gammaP arams, float lum, 85 GrTexture* gamma, const GrTextureParams& gammaP arams, float lum,
85 #endif 86 #endif
86 uint32_t flags); 87 uint32_t flags, bool opaqueVertexColors);
87 88
88 virtual bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE; 89 virtual bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE;
89 90
90 virtual void onComputeInvariantOutput(GrInvariantOutput* inout) const SK_OVE RRIDE; 91 virtual void onGetInvariantOutputCoverage(GrInitInvariantOutput*) const SK_O VERRIDE;
91 92
92 GrTextureAccess fTextureAccess; 93 GrTextureAccess fTextureAccess;
93 #ifdef SK_GAMMA_APPLY_TO_A8 94 #ifdef SK_GAMMA_APPLY_TO_A8
94 GrTextureAccess fGammaTextureAccess; 95 GrTextureAccess fGammaTextureAccess;
95 float fLuminance; 96 float fLuminance;
96 #endif 97 #endif
97 uint32_t fFlags; 98 uint32_t fFlags;
98 const GrAttribute* fInPosition; 99 const GrAttribute* fInPosition;
99 const GrAttribute* fInColor; 100 const GrAttribute* fInColor;
100 const GrAttribute* fInTextureCoords; 101 const GrAttribute* fInTextureCoords;
101 102
102 GR_DECLARE_GEOMETRY_PROCESSOR_TEST; 103 GR_DECLARE_GEOMETRY_PROCESSOR_TEST;
103 104
104 typedef GrGeometryProcessor INHERITED; 105 typedef GrGeometryProcessor INHERITED;
105 }; 106 };
106 107
107 108
108 /** 109 /**
109 * The output color of this effect is a modulation of the input color and a sampl e from a 110 * The output color of this effect is a modulation of the input color and a sampl e from a
110 * distance field texture (using a smoothed step function near 0.5). 111 * distance field texture (using a smoothed step function near 0.5).
111 * It allows explicit specification of the filtering and wrap modes (GrTexturePar ams). The input 112 * It allows explicit specification of the filtering and wrap modes (GrTexturePar ams). The input
112 * coords are a custom attribute. No gamma correct blending is applied. 113 * coords are a custom attribute. No gamma correct blending is applied.
113 */ 114 */
114 class GrDistanceFieldNoGammaTextureEffect : public GrGeometryProcessor { 115 class GrDistanceFieldNoGammaTextureEffect : public GrGeometryProcessor {
115 public: 116 public:
116 static GrGeometryProcessor* Create(GrColor color, GrTexture* tex, const GrTe xtureParams& params, 117 static GrGeometryProcessor* Create(GrColor color, GrTexture* tex, const GrTe xtureParams& params,
117 uint32_t flags) { 118 uint32_t flags, bool opaqueVertexColors) {
118 return SkNEW_ARGS(GrDistanceFieldNoGammaTextureEffect, (color, tex, para ms, flags)); 119 return SkNEW_ARGS(GrDistanceFieldNoGammaTextureEffect, (color, tex, para ms, flags,
120 opaqueVertexColo rs));
119 } 121 }
120 122
121 virtual ~GrDistanceFieldNoGammaTextureEffect() {} 123 virtual ~GrDistanceFieldNoGammaTextureEffect() {}
122 124
123 virtual const char* name() const SK_OVERRIDE { return "DistanceFieldTexture" ; } 125 virtual const char* name() const SK_OVERRIDE { return "DistanceFieldTexture" ; }
124 126
125 const GrAttribute* inPosition() const { return fInPosition; } 127 const GrAttribute* inPosition() const { return fInPosition; }
126 const GrAttribute* inColor() const { return fInColor; } 128 const GrAttribute* inColor() const { return fInColor; }
127 const GrAttribute* inTextureCoords() const { return fInTextureCoords; } 129 const GrAttribute* inTextureCoords() const { return fInTextureCoords; }
128 uint32_t getFlags() const { return fFlags; } 130 uint32_t getFlags() const { return fFlags; }
129 131
130 virtual void getGLProcessorKey(const GrBatchTracker& bt, 132 virtual void getGLProcessorKey(const GrBatchTracker& bt,
131 const GrGLCaps& caps, 133 const GrGLCaps& caps,
132 GrProcessorKeyBuilder* b) const SK_OVERRIDE; 134 GrProcessorKeyBuilder* b) const SK_OVERRIDE;
133 135
134 virtual GrGLGeometryProcessor* createGLInstance(const GrBatchTracker& bt) co nst SK_OVERRIDE; 136 virtual GrGLGeometryProcessor* createGLInstance(const GrBatchTracker& bt) co nst SK_OVERRIDE;
135 137
136 private: 138 private:
137 GrDistanceFieldNoGammaTextureEffect(GrColor, GrTexture* texture, const GrTex tureParams& params, 139 GrDistanceFieldNoGammaTextureEffect(GrColor, GrTexture* texture, const GrTex tureParams& params,
138 uint32_t flags); 140 uint32_t flags, bool opaqueVertexColors) ;
139 141
140 virtual bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE; 142 virtual bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE;
141 143
142 virtual void onComputeInvariantOutput(GrInvariantOutput* inout) const SK_OVE RRIDE; 144 virtual void onGetInvariantOutputCoverage(GrInitInvariantOutput*) const SK_O VERRIDE;
143 145
144 GrTextureAccess fTextureAccess; 146 GrTextureAccess fTextureAccess;
145 uint32_t fFlags; 147 uint32_t fFlags;
146 const GrAttribute* fInPosition; 148 const GrAttribute* fInPosition;
147 const GrAttribute* fInColor; 149 const GrAttribute* fInColor;
148 const GrAttribute* fInTextureCoords; 150 const GrAttribute* fInTextureCoords;
149 151
150 GR_DECLARE_GEOMETRY_PROCESSOR_TEST; 152 GR_DECLARE_GEOMETRY_PROCESSOR_TEST;
151 153
152 typedef GrGeometryProcessor INHERITED; 154 typedef GrGeometryProcessor INHERITED;
(...skipping 30 matching lines...) Expand all
183 virtual GrGLGeometryProcessor* createGLInstance(const GrBatchTracker& bt) co nst SK_OVERRIDE; 185 virtual GrGLGeometryProcessor* createGLInstance(const GrBatchTracker& bt) co nst SK_OVERRIDE;
184 186
185 private: 187 private:
186 GrDistanceFieldLCDTextureEffect(GrColor, GrTexture* texture, const GrTexture Params& params, 188 GrDistanceFieldLCDTextureEffect(GrColor, GrTexture* texture, const GrTexture Params& params,
187 GrTexture* gamma, const GrTextureParams& gam maParams, 189 GrTexture* gamma, const GrTextureParams& gam maParams,
188 SkColor textColor, 190 SkColor textColor,
189 uint32_t flags); 191 uint32_t flags);
190 192
191 virtual bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE; 193 virtual bool onIsEqual(const GrGeometryProcessor& other) const SK_OVERRIDE;
192 194
193 virtual void onComputeInvariantOutput(GrInvariantOutput* inout) const SK_OVE RRIDE; 195 virtual void onGetInvariantOutputCoverage(GrInitInvariantOutput*) const SK_O VERRIDE;
194 196
195 GrTextureAccess fTextureAccess; 197 GrTextureAccess fTextureAccess;
196 GrTextureAccess fGammaTextureAccess; 198 GrTextureAccess fGammaTextureAccess;
197 GrColor fTextColor; 199 GrColor fTextColor;
198 uint32_t fFlags; 200 uint32_t fFlags;
199 const GrAttribute* fInPosition; 201 const GrAttribute* fInPosition;
200 const GrAttribute* fInTextureCoords; 202 const GrAttribute* fInTextureCoords;
201 203
202 GR_DECLARE_GEOMETRY_PROCESSOR_TEST; 204 GR_DECLARE_GEOMETRY_PROCESSOR_TEST;
203 205
204 typedef GrGeometryProcessor INHERITED; 206 typedef GrGeometryProcessor INHERITED;
205 }; 207 };
206 208
207 #endif 209 #endif
OLDNEW
« no previous file with comments | « src/gpu/effects/GrDashingEffect.cpp ('k') | src/gpu/effects/GrDistanceFieldTextureEffect.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698