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

Side by Side Diff: chrome/browser/android/vr_shell/vr_shell_renderer.cc

Issue 2624243002: VrShell: Allow native control of UI element opacity. (Closed)
Patch Set: for (auto nit : nits) nit.fix(); Created 3 years, 11 months 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "chrome/browser/android/vr_shell/vr_shell_renderer.h" 5 #include "chrome/browser/android/vr_shell/vr_shell_renderer.h"
6 6
7 #include "chrome/browser/android/vr_shell/vr_gl_util.h" 7 #include "chrome/browser/android/vr_shell/vr_gl_util.h"
8 8
9 namespace { 9 namespace {
10 10
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 void main() { 83 void main() {
84 v_TexCoordinate = a_TexCoordinate; 84 v_TexCoordinate = a_TexCoordinate;
85 gl_Position = u_CombinedMatrix * a_Position; 85 gl_Position = u_CombinedMatrix * a_Position;
86 }); 86 });
87 case vr_shell::ShaderID::TEXTURE_QUAD_FRAGMENT_SHADER: 87 case vr_shell::ShaderID::TEXTURE_QUAD_FRAGMENT_SHADER:
88 return OEIE_SHADER( 88 return OEIE_SHADER(
89 precision highp float; 89 precision highp float;
90 uniform samplerExternalOES u_Texture; 90 uniform samplerExternalOES u_Texture;
91 uniform vec4 u_CopyRect; // rectangle 91 uniform vec4 u_CopyRect; // rectangle
92 varying vec2 v_TexCoordinate; 92 varying vec2 v_TexCoordinate;
93 uniform lowp vec4 color;
94 uniform mediump float opacity;
95
93 void main() { 96 void main() {
94 vec2 scaledTex = 97 vec2 scaledTex =
95 vec2(u_CopyRect[0] + v_TexCoordinate.x * u_CopyRect[2], 98 vec2(u_CopyRect[0] + v_TexCoordinate.x * u_CopyRect[2],
96 u_CopyRect[1] + v_TexCoordinate.y * u_CopyRect[3]); 99 u_CopyRect[1] + v_TexCoordinate.y * u_CopyRect[3]);
97 gl_FragColor = texture2D(u_Texture, scaledTex); 100 lowp vec4 color = texture2D(u_Texture, scaledTex);
101 gl_FragColor = vec4(color.xyz, color.w * opacity);
98 }); 102 });
99 case vr_shell::ShaderID::WEBVR_VERTEX_SHADER: 103 case vr_shell::ShaderID::WEBVR_VERTEX_SHADER:
100 return SHADER( 104 return SHADER(
101 attribute vec4 a_Position; 105 attribute vec4 a_Position;
102 varying vec2 v_TexCoordinate; 106 varying vec2 v_TexCoordinate;
103 107
104 void main() { 108 void main() {
105 // Pack the texcoord into the position to avoid state changes. 109 // Pack the texcoord into the position to avoid state changes.
106 v_TexCoordinate = a_Position.zw; 110 v_TexCoordinate = a_Position.zw;
107 gl_Position = vec4(a_Position.xy, 0.0, 1.0); 111 gl_Position = vec4(a_Position.xy, 0.0, 1.0);
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 227 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
224 } 228 }
225 229
226 TexturedQuadRenderer::TexturedQuadRenderer() 230 TexturedQuadRenderer::TexturedQuadRenderer()
227 : BaseRenderer(TEXTURE_QUAD_VERTEX_SHADER, TEXTURE_QUAD_FRAGMENT_SHADER) { 231 : BaseRenderer(TEXTURE_QUAD_VERTEX_SHADER, TEXTURE_QUAD_FRAGMENT_SHADER) {
228 combined_matrix_handle_ = 232 combined_matrix_handle_ =
229 glGetUniformLocation(program_handle_, "u_CombinedMatrix"); 233 glGetUniformLocation(program_handle_, "u_CombinedMatrix");
230 tex_uniform_handle_ = glGetUniformLocation(program_handle_, "u_Texture"); 234 tex_uniform_handle_ = glGetUniformLocation(program_handle_, "u_Texture");
231 copy_rect_uniform_handle_ = 235 copy_rect_uniform_handle_ =
232 glGetUniformLocation(program_handle_, "u_CopyRect"); 236 glGetUniformLocation(program_handle_, "u_CopyRect");
237 opacity_handle_ = glGetUniformLocation(program_handle_, "opacity");
233 } 238 }
234 239
235 void TexturedQuadRenderer::Draw(int texture_data_handle, 240 void TexturedQuadRenderer::Draw(int texture_data_handle,
236 const gvr::Mat4f& combined_matrix, 241 const gvr::Mat4f& combined_matrix,
237 const Rectf& copy_rect) { 242 const Rectf& copy_rect,
243 float opacity) {
238 PrepareToDraw(combined_matrix_handle_, combined_matrix); 244 PrepareToDraw(combined_matrix_handle_, combined_matrix);
239 245
240 // Link texture data with texture unit. 246 // Link texture data with texture unit.
241 glActiveTexture(GL_TEXTURE0); 247 glActiveTexture(GL_TEXTURE0);
242 glBindTexture(GL_TEXTURE_EXTERNAL_OES, texture_data_handle); 248 glBindTexture(GL_TEXTURE_EXTERNAL_OES, texture_data_handle);
243 glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); 249 glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
244 glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); 250 glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
245 glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 251 glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
246 glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 252 glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
247 253
248 glUniform1i(tex_uniform_handle_, 0); 254 glUniform1i(tex_uniform_handle_, 0);
249 glUniform4fv(copy_rect_uniform_handle_, 1, (float*)(&copy_rect)); 255 glUniform4fv(copy_rect_uniform_handle_, 1, (float*)(&copy_rect));
256 glUniform1f(opacity_handle_, opacity);
250 257
251 glDrawArrays(GL_TRIANGLES, 0, kVerticesNumber); 258 glDrawArrays(GL_TRIANGLES, 0, kVerticesNumber);
252 259
253 glDisableVertexAttribArray(position_handle_); 260 glDisableVertexAttribArray(position_handle_);
254 glDisableVertexAttribArray(tex_coord_handle_); 261 glDisableVertexAttribArray(tex_coord_handle_);
255 } 262 }
256 263
257 TexturedQuadRenderer::~TexturedQuadRenderer() = default; 264 TexturedQuadRenderer::~TexturedQuadRenderer() = default;
258 265
259 WebVrRenderer::WebVrRenderer() : 266 WebVrRenderer::WebVrRenderer() :
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
397 404
398 VrShellRenderer::VrShellRenderer() 405 VrShellRenderer::VrShellRenderer()
399 : textured_quad_renderer_(new TexturedQuadRenderer), 406 : textured_quad_renderer_(new TexturedQuadRenderer),
400 webvr_renderer_(new WebVrRenderer), 407 webvr_renderer_(new WebVrRenderer),
401 reticle_renderer_(new ReticleRenderer), 408 reticle_renderer_(new ReticleRenderer),
402 laser_renderer_(new LaserRenderer) {} 409 laser_renderer_(new LaserRenderer) {}
403 410
404 VrShellRenderer::~VrShellRenderer() = default; 411 VrShellRenderer::~VrShellRenderer() = default;
405 412
406 } // namespace vr_shell 413 } // namespace vr_shell
OLDNEW
« no previous file with comments | « chrome/browser/android/vr_shell/vr_shell_renderer.h ('k') | chrome/browser/resources/vr_shell/vr_shell_ui.css » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698