| Index: client/deps/glbench/src/shaders.cc
|
| diff --git a/client/deps/glbench/src/shaders.cc b/client/deps/glbench/src/shaders.cc
|
| index 983c57c5c9b612a06b4e84f9becea80e7f38ed2c..b414e77270315e07a02290037d1ff97a735cdc68 100644
|
| --- a/client/deps/glbench/src/shaders.cc
|
| +++ b/client/deps/glbench/src/shaders.cc
|
| @@ -80,7 +80,6 @@ ShaderProgram AttributeFetchShaderProgram(int attribute_count,
|
| return program;
|
| }
|
|
|
| -
|
| #define I915_WORKAROUND 1
|
|
|
| #if I915_WORKAROUND
|
| @@ -107,6 +106,175 @@ ShaderProgram AttributeFetchShaderProgram(int attribute_count,
|
| #define DDY "ddy"
|
| #endif
|
|
|
| +const char *basic_texture_vertex_shader =
|
| +"attribute vec4 c1;"
|
| +"attribute vec4 c2;"
|
| +"varying vec2 v1;"
|
| +"void main() {"
|
| +" gl_Position = c1;"
|
| +" " V1 " = c2;"
|
| +"}";
|
| +
|
| +const char *basic_texture_fragment_shader =
|
| +"uniform sampler2D texture_sampler;"
|
| +"varying vec2 v1;"
|
| +"void main() {"
|
| +" gl_FragColor = texture2D(texture_sampler, " V1 ".xy);"
|
| +"}";
|
| +
|
| +ShaderProgram BasicTextureShaderProgram(GLuint vertex_buffer,
|
| + GLuint texture_buffer) {
|
| + ShaderProgram program =
|
| + InitShaderProgram(basic_texture_vertex_shader,
|
| + basic_texture_fragment_shader);
|
| +
|
| + // Set up the texture sampler
|
| + int textureSampler = glGetUniformLocation(program, "texture_sampler");
|
| + glUniform1i(textureSampler, 0);
|
| +
|
| + // Set up vertex attribute
|
| + int attribute_index = glGetAttribLocation(program, "c1");
|
| + glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer);
|
| + glVertexAttribPointer(attribute_index, 2, GL_FLOAT, GL_FALSE, 0, NULL);
|
| + glEnableVertexAttribArray(attribute_index);
|
| +
|
| + // Set up texture attribute
|
| + attribute_index = glGetAttribLocation(program, "c2");
|
| + glBindBuffer(GL_ARRAY_BUFFER, texture_buffer);
|
| + glVertexAttribPointer(attribute_index, 2, GL_FLOAT, GL_FALSE, 0, NULL);
|
| + glEnableVertexAttribArray(attribute_index);
|
| +
|
| + return program;
|
| +}
|
| +
|
| +const char *double_texture_blend_vertex_shader =
|
| +"attribute vec4 c1;"
|
| +"attribute vec4 c2;"
|
| +"attribute vec4 c3;"
|
| +"varying vec2 v1;"
|
| +"varying vec2 v2;"
|
| +"void main() {"
|
| +" gl_Position = c1;"
|
| +" " V1 " = c2;"
|
| +" " V2 " = c3;"
|
| +"}";
|
| +
|
| +const char *double_texture_blend_fragment_shader =
|
| +"uniform sampler2D texture_sampler_0;"
|
| +"uniform sampler2D texture_sampler_1;"
|
| +"varying vec2 v1;"
|
| +"varying vec2 v2;"
|
| +"void main() {"
|
| +" vec4 one = texture2D(texture_sampler_0, " V1 ".xy);"
|
| +" vec4 two = texture2D(texture_sampler_1, " V2 ".xy);"
|
| +" gl_FragColor = mix(one, two, 0.5);"
|
| +"}";
|
| +
|
| +// This shader blends the three textures
|
| +ShaderProgram DoubleTextureBlendShaderProgram(GLuint vertex_buffer,
|
| + GLuint texture_buffer_0,
|
| + GLuint texture_buffer_1) {
|
| + ShaderProgram program =
|
| + InitShaderProgram(double_texture_blend_vertex_shader,
|
| + double_texture_blend_fragment_shader);
|
| +
|
| + // Set up the texture sampler
|
| + int textureSampler0 = glGetUniformLocation(program, "texture_sampler_0");
|
| + glUniform1i(textureSampler0, 0);
|
| + int textureSampler1 = glGetUniformLocation(program, "texture_sampler_1");
|
| + glUniform1i(textureSampler1, 1);
|
| +
|
| + // Set up vertex attribute
|
| + int attribute_index = glGetAttribLocation(program, "c1");
|
| + glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer);
|
| + glVertexAttribPointer(attribute_index, 2, GL_FLOAT, GL_FALSE, 0, NULL);
|
| + glEnableVertexAttribArray(attribute_index);
|
| +
|
| + // Set up texture attributes
|
| + attribute_index = glGetAttribLocation(program, "c2");
|
| + glBindBuffer(GL_ARRAY_BUFFER, texture_buffer_0);
|
| + glVertexAttribPointer(attribute_index, 2, GL_FLOAT, GL_FALSE, 0, NULL);
|
| + glEnableVertexAttribArray(attribute_index);
|
| +
|
| + attribute_index = glGetAttribLocation(program, "c3");
|
| + glBindBuffer(GL_ARRAY_BUFFER, texture_buffer_1);
|
| + glVertexAttribPointer(attribute_index, 2, GL_FLOAT, GL_FALSE, 0, NULL);
|
| + glEnableVertexAttribArray(attribute_index);
|
| +
|
| + return program;
|
| +}
|
| +
|
| +const char *triple_texture_blend_vertex_shader =
|
| +"attribute vec4 c1;"
|
| +"attribute vec4 c2;"
|
| +"attribute vec4 c3;"
|
| +"attribute vec4 c4;"
|
| +"varying vec2 v1;"
|
| +"varying vec2 v2;"
|
| +"varying vec2 v3;"
|
| +"void main() {"
|
| +" gl_Position = c1;"
|
| +" " V1 " = c2;"
|
| +" " V2 " = c3;"
|
| +" " V3 " = c4;"
|
| +"}";
|
| +
|
| +const char *triple_texture_blend_fragment_shader =
|
| +"uniform sampler2D texture_sampler_0;"
|
| +"uniform sampler2D texture_sampler_1;"
|
| +"uniform sampler2D texture_sampler_2;"
|
| +"varying vec2 v1;"
|
| +"varying vec2 v2;"
|
| +"varying vec2 v3;"
|
| +"void main() {"
|
| +" vec4 one = texture2D(texture_sampler_0, " V1 ".xy);"
|
| +" vec4 two = texture2D(texture_sampler_1, " V2 ".xy);"
|
| +" vec4 three = texture2D(texture_sampler_2, " V3 ".xy);"
|
| +" gl_FragColor = mix(mix(one, two, 0.5), three, 0.5);"
|
| +"}";
|
| +
|
| +// This shader blends the three textures
|
| +ShaderProgram TripleTextureBlendShaderProgram(GLuint vertex_buffer,
|
| + GLuint texture_buffer_0,
|
| + GLuint texture_buffer_1,
|
| + GLuint texture_buffer_2) {
|
| + ShaderProgram program =
|
| + InitShaderProgram(triple_texture_blend_vertex_shader,
|
| + triple_texture_blend_fragment_shader);
|
| +
|
| + // Set up the texture sampler
|
| + int textureSampler0 = glGetUniformLocation(program, "texture_sampler_0");
|
| + glUniform1i(textureSampler0, 0);
|
| + int textureSampler1 = glGetUniformLocation(program, "texture_sampler_1");
|
| + glUniform1i(textureSampler1, 1);
|
| + int textureSampler2 = glGetUniformLocation(program, "texture_sampler_2");
|
| + glUniform1i(textureSampler2, 2);
|
| +
|
| + // Set up vertex attribute
|
| + int attribute_index = glGetAttribLocation(program, "c1");
|
| + glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer);
|
| + glVertexAttribPointer(attribute_index, 2, GL_FLOAT, GL_FALSE, 0, NULL);
|
| + glEnableVertexAttribArray(attribute_index);
|
| +
|
| + // Set up texture attributes
|
| + attribute_index = glGetAttribLocation(program, "c2");
|
| + glBindBuffer(GL_ARRAY_BUFFER, texture_buffer_0);
|
| + glVertexAttribPointer(attribute_index, 2, GL_FLOAT, GL_FALSE, 0, NULL);
|
| + glEnableVertexAttribArray(attribute_index);
|
| +
|
| + attribute_index = glGetAttribLocation(program, "c3");
|
| + glBindBuffer(GL_ARRAY_BUFFER, texture_buffer_1);
|
| + glVertexAttribPointer(attribute_index, 2, GL_FLOAT, GL_FALSE, 0, NULL);
|
| + glEnableVertexAttribArray(attribute_index);
|
| +
|
| + attribute_index = glGetAttribLocation(program, "c4");
|
| + glBindBuffer(GL_ARRAY_BUFFER, texture_buffer_2);
|
| + glVertexAttribPointer(attribute_index, 2, GL_FLOAT, GL_FALSE, 0, NULL);
|
| + glEnableVertexAttribArray(attribute_index);
|
| +
|
| + return program;
|
| +}
|
| +
|
| const char *vertex_shader_1_varying =
|
| "attribute vec4 c;"
|
| "varying vec4 v1;"
|
|
|