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

Unified Diff: cc/output/shader.h

Issue 2605343002: The great shader refactor: Delete instances of GetShaderSource (Closed)
Patch Set: Just GetShaderSource Created 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | cc/output/shader.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/output/shader.h
diff --git a/cc/output/shader.h b/cc/output/shader.h
index 21b4a70de5aaac404dc18061f6483967841dddf7..fdccb59355b9f1d40bd1f1795aa525d623642f46 100644
--- a/cc/output/shader.h
+++ b/cc/output/shader.h
@@ -354,8 +354,11 @@ class VertexShaderVideoTransform {
DISALLOW_COPY_AND_ASSIGN(VertexShaderVideoTransform);
};
-class FragmentTexBlendMode {
+class FragmentShaderBase {
public:
+ std::string GetShaderString(TexCoordPrecision precision,
+ SamplerType sampler) const;
+
int backdrop_location() const { return backdrop_location_; }
int original_backdrop_location() const { return original_backdrop_location_; }
int backdrop_rect_location() const { return backdrop_rect_location_; }
@@ -369,7 +372,8 @@ class FragmentTexBlendMode {
bool mask_for_background() const { return mask_for_background_; }
protected:
- FragmentTexBlendMode();
+ FragmentShaderBase();
+ virtual std::string GetShaderSource() const = 0;
std::string SetBlendModeFunctions(const std::string& shader_string) const;
@@ -386,7 +390,7 @@ class FragmentTexBlendMode {
std::string GetBlendFunctionBodyForRGB() const;
};
-class FragmentTexAlphaBinding : public FragmentTexBlendMode {
+class FragmentTexAlphaBinding : public FragmentShaderBase {
public:
FragmentTexAlphaBinding();
@@ -404,7 +408,7 @@ class FragmentTexAlphaBinding : public FragmentTexBlendMode {
DISALLOW_COPY_AND_ASSIGN(FragmentTexAlphaBinding);
};
-class FragmentTexColorMatrixAlphaBinding : public FragmentTexBlendMode {
+class FragmentTexColorMatrixAlphaBinding : public FragmentShaderBase {
public:
FragmentTexColorMatrixAlphaBinding();
@@ -424,7 +428,7 @@ class FragmentTexColorMatrixAlphaBinding : public FragmentTexBlendMode {
int color_offset_location_;
};
-class FragmentTexOpaqueBinding : public FragmentTexBlendMode {
+class FragmentTexOpaqueBinding : public FragmentShaderBase {
public:
FragmentTexOpaqueBinding();
@@ -442,7 +446,7 @@ class FragmentTexOpaqueBinding : public FragmentTexBlendMode {
DISALLOW_COPY_AND_ASSIGN(FragmentTexOpaqueBinding);
};
-class FragmentTexBackgroundBinding : public FragmentTexBlendMode {
+class FragmentTexBackgroundBinding : public FragmentShaderBase {
public:
FragmentTexBackgroundBinding();
@@ -460,116 +464,87 @@ class FragmentTexBackgroundBinding : public FragmentTexBlendMode {
};
class FragmentShaderRGBATexVaryingAlpha : public FragmentTexOpaqueBinding {
- public:
- std::string GetShaderString(
- TexCoordPrecision precision, SamplerType sampler) const;
- static std::string GetShaderHead();
- static std::string GetShaderBody();
+ private:
+ std::string GetShaderSource() const override;
};
class FragmentShaderRGBATexPremultiplyAlpha : public FragmentTexOpaqueBinding {
- public:
- std::string GetShaderString(
- TexCoordPrecision precision, SamplerType sampler) const;
- static std::string GetShaderHead();
- static std::string GetShaderBody();
+ private:
+ std::string GetShaderSource() const override;
};
class FragmentShaderTexBackgroundVaryingAlpha
: public FragmentTexBackgroundBinding {
- public:
- std::string GetShaderString(
- TexCoordPrecision precision, SamplerType sampler) const;
- static std::string GetShaderHead();
- static std::string GetShaderBody();
+ private:
+ std::string GetShaderSource() const override;
};
class FragmentShaderTexBackgroundPremultiplyAlpha
: public FragmentTexBackgroundBinding {
- public:
- std::string GetShaderString(
- TexCoordPrecision precision, SamplerType sampler) const;
- static std::string GetShaderHead();
- static std::string GetShaderBody();
+ private:
+ std::string GetShaderSource() const override;
};
class FragmentShaderRGBATexAlpha : public FragmentTexAlphaBinding {
public:
- std::string GetShaderString(
- TexCoordPrecision precision, SamplerType sampler) const;
- static std::string GetShaderHead();
- static std::string GetShaderBody();
void FillLocations(ShaderLocations* locations) const;
+
+ private:
+ std::string GetShaderSource() const override;
};
class FragmentShaderRGBATexColorMatrixAlpha
: public FragmentTexColorMatrixAlphaBinding {
public:
- std::string GetShaderString(TexCoordPrecision precision,
- SamplerType sampler) const;
- static std::string GetShaderHead();
- static std::string GetShaderBody();
void FillLocations(ShaderLocations* locations) const;
+
+ private:
+ std::string GetShaderSource() const override;
};
class FragmentShaderRGBATexOpaque : public FragmentTexOpaqueBinding {
- public:
- std::string GetShaderString(
- TexCoordPrecision precision, SamplerType sampler) const;
- static std::string GetShaderHead();
- static std::string GetShaderBody();
+ private:
+ std::string GetShaderSource() const override;
};
class FragmentShaderRGBATex : public FragmentTexOpaqueBinding {
- public:
- std::string GetShaderString(
- TexCoordPrecision precision, SamplerType sampler) const;
- static std::string GetShaderHead();
- static std::string GetShaderBody();
+ private:
+ std::string GetShaderSource() const override;
};
// Swizzles the red and blue component of sampled texel with alpha.
class FragmentShaderRGBATexSwizzleAlpha : public FragmentTexAlphaBinding {
- public:
- std::string GetShaderString(
- TexCoordPrecision precision, SamplerType sampler) const;
- static std::string GetShaderHead();
- static std::string GetShaderBody();
+ private:
+ std::string GetShaderSource() const override;
};
// Swizzles the red and blue component of sampled texel without alpha.
class FragmentShaderRGBATexSwizzleOpaque : public FragmentTexOpaqueBinding {
- public:
- std::string GetShaderString(
- TexCoordPrecision precision, SamplerType sampler) const;
- static std::string GetShaderHead();
- static std::string GetShaderBody();
+ private:
+ std::string GetShaderSource() const override;
};
-class FragmentShaderRGBATexAlphaAA : public FragmentTexBlendMode {
+class FragmentShaderRGBATexAlphaAA : public FragmentShaderBase {
public:
FragmentShaderRGBATexAlphaAA();
void Init(gpu::gles2::GLES2Interface* context,
unsigned program,
int* base_uniform_index);
- std::string GetShaderString(
- TexCoordPrecision precision, SamplerType sampler) const;
- static std::string GetShaderHead();
- static std::string GetShaderBody();
void FillLocations(ShaderLocations* locations) const;
int alpha_location() const { return alpha_location_; }
int sampler_location() const { return sampler_location_; }
private:
+ std::string GetShaderSource() const override;
int sampler_location_;
int alpha_location_;
DISALLOW_COPY_AND_ASSIGN(FragmentShaderRGBATexAlphaAA);
};
-class FragmentTexClampAlphaAABinding : public FragmentTexBlendMode {
+class FragmentTexClampAlphaAABinding : public FragmentShaderBase {
public:
FragmentTexClampAlphaAABinding();
@@ -592,30 +567,20 @@ class FragmentTexClampAlphaAABinding : public FragmentTexBlendMode {
class FragmentShaderRGBATexClampAlphaAA
: public FragmentTexClampAlphaAABinding {
- public:
- std::string GetShaderString(
- TexCoordPrecision precision, SamplerType sampler) const;
- static std::string GetShaderHead();
- static std::string GetShaderBody();
+ private:
+ std::string GetShaderSource() const override;
};
// Swizzles the red and blue component of sampled texel.
class FragmentShaderRGBATexClampSwizzleAlphaAA
: public FragmentTexClampAlphaAABinding {
- public:
- std::string GetShaderString(
- TexCoordPrecision precision, SamplerType sampler) const;
- static std::string GetShaderHead();
- static std::string GetShaderBody();
+ private:
+ std::string GetShaderSource() const override;
};
-class FragmentShaderRGBATexAlphaMask : public FragmentTexBlendMode {
+class FragmentShaderRGBATexAlphaMask : public FragmentShaderBase {
public:
FragmentShaderRGBATexAlphaMask();
- std::string GetShaderString(
- TexCoordPrecision precision, SamplerType sampler) const;
- static std::string GetShaderHead();
- static std::string GetShaderBody();
void FillLocations(ShaderLocations* locations) const;
void Init(gpu::gles2::GLES2Interface* context,
unsigned program,
@@ -631,6 +596,7 @@ class FragmentShaderRGBATexAlphaMask : public FragmentTexBlendMode {
}
private:
+ std::string GetShaderSource() const override;
int sampler_location_;
int mask_sampler_location_;
int alpha_location_;
@@ -640,13 +606,9 @@ class FragmentShaderRGBATexAlphaMask : public FragmentTexBlendMode {
DISALLOW_COPY_AND_ASSIGN(FragmentShaderRGBATexAlphaMask);
};
-class FragmentShaderRGBATexAlphaMaskAA : public FragmentTexBlendMode {
+class FragmentShaderRGBATexAlphaMaskAA : public FragmentShaderBase {
public:
FragmentShaderRGBATexAlphaMaskAA();
- std::string GetShaderString(
- TexCoordPrecision precision, SamplerType sampler) const;
- static std::string GetShaderHead();
- static std::string GetShaderBody();
void FillLocations(ShaderLocations* locations) const;
void Init(gpu::gles2::GLES2Interface* context,
unsigned program,
@@ -662,6 +624,7 @@ class FragmentShaderRGBATexAlphaMaskAA : public FragmentTexBlendMode {
}
private:
+ std::string GetShaderSource() const override;
int sampler_location_;
int mask_sampler_location_;
int alpha_location_;
@@ -671,14 +634,9 @@ class FragmentShaderRGBATexAlphaMaskAA : public FragmentTexBlendMode {
DISALLOW_COPY_AND_ASSIGN(FragmentShaderRGBATexAlphaMaskAA);
};
-class FragmentShaderRGBATexAlphaMaskColorMatrixAA
- : public FragmentTexBlendMode {
+class FragmentShaderRGBATexAlphaMaskColorMatrixAA : public FragmentShaderBase {
public:
FragmentShaderRGBATexAlphaMaskColorMatrixAA();
- std::string GetShaderString(
- TexCoordPrecision precision, SamplerType sampler) const;
- static std::string GetShaderHead();
- static std::string GetShaderBody();
void FillLocations(ShaderLocations* locations) const;
void Init(gpu::gles2::GLES2Interface* context,
unsigned program,
@@ -696,6 +654,7 @@ class FragmentShaderRGBATexAlphaMaskColorMatrixAA
int color_offset_location() const { return color_offset_location_; }
private:
+ std::string GetShaderSource() const override;
int sampler_location_;
int mask_sampler_location_;
int alpha_location_;
@@ -705,13 +664,9 @@ class FragmentShaderRGBATexAlphaMaskColorMatrixAA
int color_offset_location_;
};
-class FragmentShaderRGBATexAlphaColorMatrixAA : public FragmentTexBlendMode {
+class FragmentShaderRGBATexAlphaColorMatrixAA : public FragmentShaderBase {
public:
FragmentShaderRGBATexAlphaColorMatrixAA();
- std::string GetShaderString(
- TexCoordPrecision precision, SamplerType sampler) const;
- static std::string GetShaderHead();
- static std::string GetShaderBody();
void FillLocations(ShaderLocations* locations) const;
void Init(gpu::gles2::GLES2Interface* context,
unsigned program,
@@ -722,19 +677,16 @@ class FragmentShaderRGBATexAlphaColorMatrixAA : public FragmentTexBlendMode {
int color_offset_location() const { return color_offset_location_; }
private:
+ std::string GetShaderSource() const override;
int sampler_location_;
int alpha_location_;
int color_matrix_location_;
int color_offset_location_;
};
-class FragmentShaderRGBATexAlphaMaskColorMatrix : public FragmentTexBlendMode {
+class FragmentShaderRGBATexAlphaMaskColorMatrix : public FragmentShaderBase {
public:
FragmentShaderRGBATexAlphaMaskColorMatrix();
- std::string GetShaderString(
- TexCoordPrecision precision, SamplerType sampler) const;
- static std::string GetShaderHead();
- static std::string GetShaderBody();
void FillLocations(ShaderLocations* locations) const;
void Init(gpu::gles2::GLES2Interface* context,
unsigned program,
@@ -752,6 +704,7 @@ class FragmentShaderRGBATexAlphaMaskColorMatrix : public FragmentTexBlendMode {
int color_offset_location() const { return color_offset_location_; }
private:
+ std::string GetShaderSource() const override;
int sampler_location_;
int mask_sampler_location_;
int alpha_location_;
@@ -761,12 +714,9 @@ class FragmentShaderRGBATexAlphaMaskColorMatrix : public FragmentTexBlendMode {
int color_offset_location_;
};
-class FragmentShaderYUVVideo : public FragmentTexBlendMode {
+class FragmentShaderYUVVideo : public FragmentShaderBase {
public:
FragmentShaderYUVVideo();
- std::string GetShaderString(
- TexCoordPrecision precision, SamplerType sampler) const;
-
void SetFeatures(bool use_alpha_texture, bool use_nv12, bool use_color_lut);
void Init(gpu::gles2::GLES2Interface* context,
@@ -789,6 +739,8 @@ class FragmentShaderYUVVideo : public FragmentTexBlendMode {
int resource_offset_location() const { return resource_offset_location_; }
private:
+ std::string GetShaderSource() const override;
+
bool use_alpha_texture_;
bool use_nv12_;
bool use_color_lut_;
@@ -810,13 +762,9 @@ class FragmentShaderYUVVideo : public FragmentTexBlendMode {
DISALLOW_COPY_AND_ASSIGN(FragmentShaderYUVVideo);
};
-class FragmentShaderColor : public FragmentTexBlendMode {
+class FragmentShaderColor : public FragmentShaderBase {
public:
FragmentShaderColor();
- std::string GetShaderString(
- TexCoordPrecision precision, SamplerType sampler) const;
- static std::string GetShaderHead();
- static std::string GetShaderBody();
void Init(gpu::gles2::GLES2Interface* context,
unsigned program,
@@ -824,18 +772,15 @@ class FragmentShaderColor : public FragmentTexBlendMode {
int color_location() const { return color_location_; }
private:
+ std::string GetShaderSource() const override;
int color_location_;
DISALLOW_COPY_AND_ASSIGN(FragmentShaderColor);
};
-class FragmentShaderColorAA : public FragmentTexBlendMode {
+class FragmentShaderColorAA : public FragmentShaderBase {
public:
FragmentShaderColorAA();
- std::string GetShaderString(
- TexCoordPrecision precision, SamplerType sampler) const;
- static std::string GetShaderHead();
- static std::string GetShaderBody();
void Init(gpu::gles2::GLES2Interface* context,
unsigned program,
@@ -843,6 +788,7 @@ class FragmentShaderColorAA : public FragmentTexBlendMode {
int color_location() const { return color_location_; }
private:
+ std::string GetShaderSource() const override;
int color_location_;
DISALLOW_COPY_AND_ASSIGN(FragmentShaderColorAA);
« no previous file with comments | « no previous file | cc/output/shader.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698