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

Side by Side Diff: cc/shader.cc

Issue 11420079: Allow using a larger-than-necessary texture as cached render pass backing (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: win build fix - filepath literals Created 8 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
« cc/gl_renderer_pixeltest.cc ('K') | « cc/shader.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/shader.h" 5 #include "cc/shader.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include <public/WebGraphicsContext3D.h> 9 #include <public/WebGraphicsContext3D.h>
10 10
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 uniform vec4 texTransform[8]; 164 uniform vec4 texTransform[8];
165 varying vec2 v_texCoord; 165 varying vec2 v_texCoord;
166 void main() 166 void main()
167 { 167 {
168 gl_Position = matrix[int(a_index)] * a_position; 168 gl_Position = matrix[int(a_index)] * a_position;
169 v_texCoord = a_texCoord * texTransform[int(a_index)].zw + texTransfo rm[int(a_index)].xy; 169 v_texCoord = a_texCoord * texTransform[int(a_index)].zw + texTransfo rm[int(a_index)].xy;
170 } 170 }
171 ); 171 );
172 } 172 }
173 173
174 VertexShaderQuad::VertexShaderQuad()
175 : m_matrixLocation(-1)
176 , m_pointLocation(-1)
177 {
178 }
179
180 std::string VertexShaderPosTexIdentity::getShaderString() const 174 std::string VertexShaderPosTexIdentity::getShaderString() const
181 { 175 {
182 return SHADER( 176 return SHADER(
183 attribute vec4 a_position; 177 attribute vec4 a_position;
184 varying vec2 v_texCoord; 178 varying vec2 v_texCoord;
185 void main() 179 void main()
186 { 180 {
187 gl_Position = a_position; 181 gl_Position = a_position;
188 v_texCoord = (a_position.xy + vec2(1.0)) * 0.5; 182 v_texCoord = (a_position.xy + vec2(1.0)) * 0.5;
189 } 183 }
190 ); 184 );
191 } 185 }
192 186
187 VertexShaderQuad::VertexShaderQuad()
188 : m_matrixLocation(-1)
189 , m_pointLocation(-1)
190 , m_texScaleLocation(-1)
191 {
192 }
193
193 void VertexShaderQuad::init(WebGraphicsContext3D* context, unsigned program, boo l usingBindUniform, int* baseUniformIndex) 194 void VertexShaderQuad::init(WebGraphicsContext3D* context, unsigned program, boo l usingBindUniform, int* baseUniformIndex)
194 { 195 {
195 static const char* shaderUniforms[] = { 196 static const char* shaderUniforms[] = {
196 "matrix", 197 "matrix",
197 "point", 198 "point",
199 "texScale",
198 }; 200 };
199 int locations[2]; 201 int locations[3];
200 202
201 getProgramUniformLocations(context, program, shaderUniforms, arraysize(shade rUniforms), arraysize(locations), locations, usingBindUniform, baseUniformIndex) ; 203 getProgramUniformLocations(context, program, shaderUniforms, arraysize(shade rUniforms), arraysize(locations), locations, usingBindUniform, baseUniformIndex) ;
202 204
203 m_matrixLocation = locations[0]; 205 m_matrixLocation = locations[0];
204 m_pointLocation = locations[1]; 206 m_pointLocation = locations[1];
205 DCHECK(m_matrixLocation != -1 && m_pointLocation != -1); 207 m_texScaleLocation = locations[2];
208 DCHECK_NE(m_matrixLocation, -1);
209 DCHECK_NE(m_pointLocation, -1);
210 DCHECK_NE(m_texScaleLocation, -1);
206 } 211 }
207 212
208 std::string VertexShaderQuad::getShaderString() const 213 std::string VertexShaderQuad::getShaderString() const
209 { 214 {
210 return SHADER( 215 return SHADER(
211 attribute vec4 a_position; 216 attribute vec4 a_position;
212 attribute vec2 a_texCoord; 217 attribute vec2 a_texCoord;
213 uniform mat4 matrix; 218 uniform mat4 matrix;
214 uniform vec2 point[4]; 219 uniform vec2 point[4];
220 uniform vec2 texScale;
215 varying vec2 v_texCoord; 221 varying vec2 v_texCoord;
216 void main() 222 void main()
217 { 223 {
218 vec2 complement = abs(a_texCoord - 1.0); 224 vec2 complement = abs(a_texCoord - 1.0);
219 vec4 pos = vec4(0.0, 0.0, a_position.z, a_position.w); 225 vec4 pos = vec4(0.0, 0.0, a_position.z, a_position.w);
220 pos.xy += (complement.x * complement.y) * point[0]; 226 pos.xy += (complement.x * complement.y) * point[0];
221 pos.xy += (a_texCoord.x * complement.y) * point[1]; 227 pos.xy += (a_texCoord.x * complement.y) * point[1];
222 pos.xy += (a_texCoord.x * a_texCoord.y) * point[2]; 228 pos.xy += (a_texCoord.x * a_texCoord.y) * point[2];
223 pos.xy += (complement.x * a_texCoord.y) * point[3]; 229 pos.xy += (complement.x * a_texCoord.y) * point[3];
224 gl_Position = matrix * pos; 230 gl_Position = matrix * pos;
225 v_texCoord = pos.xy + vec2(0.5); 231 v_texCoord = (pos.xy + vec2(0.5)) * texScale;
226 } 232 }
227 ); 233 );
228 } 234 }
229 235
230 VertexShaderTile::VertexShaderTile() 236 VertexShaderTile::VertexShaderTile()
231 : m_matrixLocation(-1) 237 : m_matrixLocation(-1)
232 , m_pointLocation(-1) 238 , m_pointLocation(-1)
233 , m_vertexTexTransformLocation(-1) 239 , m_vertexTexTransformLocation(-1)
234 { 240 {
235 } 241 }
(...skipping 632 matching lines...) Expand 10 before | Expand all | Expand 10 after
868 vec4 color2 = color; 874 vec4 color2 = color;
869 vec2 texCoord = clamp(v_texCoord, 0.0, 1.0) * texTransform.zw + texT ransform.xy; 875 vec2 texCoord = clamp(v_texCoord, 0.0, 1.0) * texTransform.zw + texT ransform.xy;
870 vec2 coord = mod(floor(texCoord * frequency * 2.0), 2.0); 876 vec2 coord = mod(floor(texCoord * frequency * 2.0), 2.0);
871 float picker = abs(coord.x - coord.y); 877 float picker = abs(coord.x - coord.y);
872 gl_FragColor = mix(color1, color2, picker) * alpha; 878 gl_FragColor = mix(color1, color2, picker) * alpha;
873 } 879 }
874 ); 880 );
875 } 881 }
876 882
877 } // namespace cc 883 } // namespace cc
OLDNEW
« cc/gl_renderer_pixeltest.cc ('K') | « cc/shader.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698