OLD | NEW |
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 GrGLSLPrimitiveProcessor_DEFINED | 8 #ifndef GrGLSLPrimitiveProcessor_DEFINED |
9 #define GrGLSLPrimitiveProcessor_DEFINED | 9 #define GrGLSLPrimitiveProcessor_DEFINED |
10 | 10 |
(...skipping 24 matching lines...) Expand all Loading... |
35 | 35 |
36 struct EmitArgs { | 36 struct EmitArgs { |
37 EmitArgs(GrGLSLVertexBuilder* vertBuilder, | 37 EmitArgs(GrGLSLVertexBuilder* vertBuilder, |
38 GrGLSLPPFragmentBuilder* fragBuilder, | 38 GrGLSLPPFragmentBuilder* fragBuilder, |
39 GrGLSLVaryingHandler* varyingHandler, | 39 GrGLSLVaryingHandler* varyingHandler, |
40 GrGLSLUniformHandler* uniformHandler, | 40 GrGLSLUniformHandler* uniformHandler, |
41 const GrGLSLCaps* caps, | 41 const GrGLSLCaps* caps, |
42 const GrPrimitiveProcessor& gp, | 42 const GrPrimitiveProcessor& gp, |
43 const char* outputColor, | 43 const char* outputColor, |
44 const char* outputCoverage, | 44 const char* outputCoverage, |
45 const char* distanceVectorName, | |
46 const SamplerHandle* texSamplers, | 45 const SamplerHandle* texSamplers, |
47 const SamplerHandle* bufferSamplers, | 46 const SamplerHandle* bufferSamplers, |
48 const TransformsIn& transformsIn, | 47 const TransformsIn& transformsIn, |
49 TransformsOut* transformsOut) | 48 TransformsOut* transformsOut) |
50 : fVertBuilder(vertBuilder) | 49 : fVertBuilder(vertBuilder) |
51 , fFragBuilder(fragBuilder) | 50 , fFragBuilder(fragBuilder) |
52 , fVaryingHandler(varyingHandler) | 51 , fVaryingHandler(varyingHandler) |
53 , fUniformHandler(uniformHandler) | 52 , fUniformHandler(uniformHandler) |
54 , fGLSLCaps(caps) | 53 , fGLSLCaps(caps) |
55 , fGP(gp) | 54 , fGP(gp) |
56 , fOutputColor(outputColor) | 55 , fOutputColor(outputColor) |
57 , fOutputCoverage(outputCoverage) | 56 , fOutputCoverage(outputCoverage) |
58 , fDistanceVectorName(distanceVectorName) | |
59 , fTexSamplers(texSamplers) | 57 , fTexSamplers(texSamplers) |
60 , fBufferSamplers(bufferSamplers) | 58 , fBufferSamplers(bufferSamplers) |
61 , fTransformsIn(transformsIn) | 59 , fTransformsIn(transformsIn) |
62 , fTransformsOut(transformsOut) {} | 60 , fTransformsOut(transformsOut) {} |
63 GrGLSLVertexBuilder* fVertBuilder; | 61 GrGLSLVertexBuilder* fVertBuilder; |
64 GrGLSLPPFragmentBuilder* fFragBuilder; | 62 GrGLSLPPFragmentBuilder* fFragBuilder; |
65 GrGLSLVaryingHandler* fVaryingHandler; | 63 GrGLSLVaryingHandler* fVaryingHandler; |
66 GrGLSLUniformHandler* fUniformHandler; | 64 GrGLSLUniformHandler* fUniformHandler; |
67 const GrGLSLCaps* fGLSLCaps; | 65 const GrGLSLCaps* fGLSLCaps; |
68 const GrPrimitiveProcessor& fGP; | 66 const GrPrimitiveProcessor& fGP; |
69 const char* fOutputColor; | 67 const char* fOutputColor; |
70 const char* fOutputCoverage; | 68 const char* fOutputCoverage; |
71 const char* fDistanceVectorName; | |
72 const SamplerHandle* fTexSamplers; | 69 const SamplerHandle* fTexSamplers; |
73 const SamplerHandle* fBufferSamplers; | 70 const SamplerHandle* fBufferSamplers; |
74 const TransformsIn& fTransformsIn; | 71 const TransformsIn& fTransformsIn; |
75 TransformsOut* fTransformsOut; | 72 TransformsOut* fTransformsOut; |
76 }; | 73 }; |
77 | 74 |
78 /** | 75 /** |
79 * This is similar to emitCode() in the base class, except it takes a full s
hader builder. | 76 * This is similar to emitCode() in the base class, except it takes a full s
hader builder. |
80 * This allows the effect subclass to emit vertex code. | 77 * This allows the effect subclass to emit vertex code. |
81 */ | 78 */ |
82 virtual void emitCode(EmitArgs&) = 0; | 79 virtual void emitCode(EmitArgs&) = 0; |
83 | 80 |
| 81 |
84 /** A GrGLSLPrimitiveProcessor instance can be reused with any GrGLSLPrimiti
veProcessor that | 82 /** A GrGLSLPrimitiveProcessor instance can be reused with any GrGLSLPrimiti
veProcessor that |
85 produces the same stage key; this function reads data from a GrGLSLPrimi
tiveProcessor and | 83 produces the same stage key; this function reads data from a GrGLSLPrimi
tiveProcessor and |
86 uploads any uniform variables required by the shaders created in emitCo
de(). The | 84 uploads any uniform variables required by the shaders created in emitCo
de(). The |
87 GrPrimitiveProcessor parameter is guaranteed to be of the same type that
created this | 85 GrPrimitiveProcessor parameter is guaranteed to be of the same type that
created this |
88 GrGLSLPrimitiveProcessor and to have an identical processor key as the o
ne that created this | 86 GrGLSLPrimitiveProcessor and to have an identical processor key as the o
ne that created this |
89 GrGLSLPrimitiveProcessor. */ | 87 GrGLSLPrimitiveProcessor. */ |
90 virtual void setData(const GrGLSLProgramDataManager&, const GrPrimitiveProce
ssor&) = 0; | 88 virtual void setData(const GrGLSLProgramDataManager&, const GrPrimitiveProce
ssor&) = 0; |
91 | 89 |
92 static SkMatrix GetTransformMatrix(const SkMatrix& localMatrix, const GrCoor
dTransform&); | 90 static SkMatrix GetTransformMatrix(const SkMatrix& localMatrix, const GrCoor
dTransform&); |
93 | 91 |
94 virtual void setTransformData(const GrPrimitiveProcessor&, | 92 virtual void setTransformData(const GrPrimitiveProcessor&, |
95 const GrGLSLProgramDataManager& pdman, | 93 const GrGLSLProgramDataManager& pdman, |
96 int index, | 94 int index, |
97 const SkTArray<const GrCoordTransform*, true>&
transforms) = 0; | 95 const SkTArray<const GrCoordTransform*, true>&
transforms) = 0; |
98 | 96 |
99 protected: | 97 protected: |
100 void setupUniformColor(GrGLSLPPFragmentBuilder* fragBuilder, | 98 void setupUniformColor(GrGLSLPPFragmentBuilder* fragBuilder, |
101 GrGLSLUniformHandler* uniformHandler, | 99 GrGLSLUniformHandler* uniformHandler, |
102 const char* outputName, | 100 const char* outputName, |
103 UniformHandle* colorUniform); | 101 UniformHandle* colorUniform); |
104 | 102 |
105 struct Transform { | 103 struct Transform { |
106 Transform() : fType(kVoid_GrSLType) { fCurrentValue = SkMatrix::InvalidM
atrix(); } | 104 Transform() : fType(kVoid_GrSLType) { fCurrentValue = SkMatrix::InvalidM
atrix(); } |
107 SkMatrix fCurrentValue; | 105 SkMatrix fCurrentValue; |
108 GrSLType fType; | 106 GrSLType fType; |
109 }; | 107 }; |
110 }; | 108 }; |
111 | 109 |
112 #endif | 110 #endif |
OLD | NEW |