OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 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 GrGLShaderVar_DEFINED | 8 #ifndef GrGLSLShaderVar_DEFINED |
9 #define GrGLShaderVar_DEFINED | 9 #define GrGLSLShaderVar_DEFINED |
10 | 10 |
11 #include "GrShaderVar.h" | 11 #include "GrShaderVar.h" |
12 #include "../glsl/GrGLSL.h" | 12 #include "../glsl/GrGLSL.h" |
13 #include "../glsl/GrGLSLCaps.h" | 13 #include "../glsl/GrGLSLCaps.h" |
14 | 14 |
15 #define USE_UNIFORM_FLOAT_ARRAYS true | 15 #define USE_UNIFORM_FLOAT_ARRAYS true |
16 | 16 |
17 /** | 17 /** |
18 * Represents a variable in a shader | 18 * Represents a variable in a shader |
19 */ | 19 */ |
20 class GrGLShaderVar : public GrShaderVar { | 20 class GrGLSLShaderVar : public GrShaderVar { |
21 public: | 21 public: |
22 /** | 22 /** |
23 * See GL_ARB_fragment_coord_conventions. | 23 * See GL_ARB_fragment_coord_conventions. |
24 */ | 24 */ |
25 enum Origin { | 25 enum Origin { |
26 kDefault_Origin, // when set to kDefault the origin field is igno
red. | 26 kDefault_Origin, // when set to kDefault the origin field is igno
red. |
27 kUpperLeft_Origin, // only used to declare vec4 in gl_FragCoord. | 27 kUpperLeft_Origin, // only used to declare vec4 in gl_FragCoord. |
28 }; | 28 }; |
29 | 29 |
30 /** | 30 /** |
31 * Defaults to a float with no precision specifier | 31 * Defaults to a float with no precision specifier |
32 */ | 32 */ |
33 GrGLShaderVar() | 33 GrGLSLShaderVar() |
34 : GrShaderVar() | 34 : GrShaderVar() |
35 , fOrigin(kDefault_Origin) | 35 , fOrigin(kDefault_Origin) |
36 , fUseUniformFloatArrays(USE_UNIFORM_FLOAT_ARRAYS) { | 36 , fUseUniformFloatArrays(USE_UNIFORM_FLOAT_ARRAYS) { |
37 } | 37 } |
38 | 38 |
39 GrGLShaderVar(const char* name, GrSLType type, int arrayCount = kNonArray, | 39 GrGLSLShaderVar(const char* name, GrSLType type, int arrayCount = kNonArray, |
40 GrSLPrecision precision = kDefault_GrSLPrecision) | 40 GrSLPrecision precision = kDefault_GrSLPrecision) |
41 : GrShaderVar(name, type, arrayCount, precision) | 41 : GrShaderVar(name, type, arrayCount, precision) |
42 , fOrigin(kDefault_Origin) | 42 , fOrigin(kDefault_Origin) |
43 , fUseUniformFloatArrays(USE_UNIFORM_FLOAT_ARRAYS) { | 43 , fUseUniformFloatArrays(USE_UNIFORM_FLOAT_ARRAYS) { |
44 SkASSERT(kVoid_GrSLType != type); | 44 SkASSERT(kVoid_GrSLType != type); |
45 fOrigin = kDefault_Origin; | 45 fOrigin = kDefault_Origin; |
46 fUseUniformFloatArrays = USE_UNIFORM_FLOAT_ARRAYS; | 46 fUseUniformFloatArrays = USE_UNIFORM_FLOAT_ARRAYS; |
47 } | 47 } |
48 | 48 |
49 GrGLShaderVar(const char* name, GrSLType type, TypeModifier typeModifier, | 49 GrGLSLShaderVar(const char* name, GrSLType type, TypeModifier typeModifier, |
50 int arrayCount = kNonArray, GrSLPrecision precision = kDefault
_GrSLPrecision) | 50 int arrayCount = kNonArray, GrSLPrecision precision = kDefau
lt_GrSLPrecision) |
51 : GrShaderVar(name, type, typeModifier, arrayCount, precision) | 51 : GrShaderVar(name, type, typeModifier, arrayCount, precision) |
52 , fOrigin(kDefault_Origin) | 52 , fOrigin(kDefault_Origin) |
53 , fUseUniformFloatArrays(USE_UNIFORM_FLOAT_ARRAYS) { | 53 , fUseUniformFloatArrays(USE_UNIFORM_FLOAT_ARRAYS) { |
54 SkASSERT(kVoid_GrSLType != type); | 54 SkASSERT(kVoid_GrSLType != type); |
55 } | 55 } |
56 | 56 |
57 GrGLShaderVar(const GrShaderVar& var) | 57 GrGLSLShaderVar(const GrShaderVar& var) |
58 : GrShaderVar(var) | 58 : GrShaderVar(var) |
59 , fOrigin(kDefault_Origin) | 59 , fOrigin(kDefault_Origin) |
60 , fUseUniformFloatArrays(USE_UNIFORM_FLOAT_ARRAYS) { | 60 , fUseUniformFloatArrays(USE_UNIFORM_FLOAT_ARRAYS) { |
61 SkASSERT(kVoid_GrSLType != var.getType()); | 61 SkASSERT(kVoid_GrSLType != var.getType()); |
62 } | 62 } |
63 | 63 |
64 GrGLShaderVar(const GrGLShaderVar& var) | 64 GrGLSLShaderVar(const GrGLSLShaderVar& var) |
65 : GrShaderVar(var.c_str(), var.getType(), var.getTypeModifier(), | 65 : GrShaderVar(var.c_str(), var.getType(), var.getTypeModifier(), |
66 var.getArrayCount(), var.getPrecision()) | 66 var.getArrayCount(), var.getPrecision()) |
67 , fOrigin(var.fOrigin) | 67 , fOrigin(var.fOrigin) |
68 , fUseUniformFloatArrays(var.fUseUniformFloatArrays) { | 68 , fUseUniformFloatArrays(var.fUseUniformFloatArrays) { |
69 SkASSERT(kVoid_GrSLType != var.getType()); | 69 SkASSERT(kVoid_GrSLType != var.getType()); |
70 } | 70 } |
71 | 71 |
72 /** | 72 /** |
73 * Values for array count that have special meaning. We allow 1-sized arrays
. | 73 * Values for array count that have special meaning. We allow 1-sized arrays
. |
74 */ | 74 */ |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
247 | 247 |
248 Origin fOrigin; | 248 Origin fOrigin; |
249 /// Work around driver bugs on some hardware that don't correctly | 249 /// Work around driver bugs on some hardware that don't correctly |
250 /// support uniform float [] | 250 /// support uniform float [] |
251 bool fUseUniformFloatArrays; | 251 bool fUseUniformFloatArrays; |
252 | 252 |
253 typedef GrShaderVar INHERITED; | 253 typedef GrShaderVar INHERITED; |
254 }; | 254 }; |
255 | 255 |
256 #endif | 256 #endif |
OLD | NEW |