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

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

Issue 2834543006: Hook up insecure content warnings for http webVR presentation. (Closed)
Patch Set: rebase Created 3 years, 8 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 #ifndef CHROME_BROWSER_ANDROID_VR_SHELL_VR_SHELL_RENDERER_H_ 5 #ifndef CHROME_BROWSER_ANDROID_VR_SHELL_VR_SHELL_RENDERER_H_
6 #define CHROME_BROWSER_ANDROID_VR_SHELL_VR_SHELL_RENDERER_H_ 6 #define CHROME_BROWSER_ANDROID_VR_SHELL_VR_SHELL_RENDERER_H_
7 7
8 #include <memory> 8 #include <memory>
9 #include <queue> 9 #include <queue>
10 #include <vector> 10 #include <vector>
11 11
12 #include "base/macros.h" 12 #include "base/macros.h"
13 #include "chrome/browser/android/vr_shell/vr_controller_model.h" 13 #include "chrome/browser/android/vr_shell/vr_controller_model.h"
14 #include "device/vr/vr_types.h" 14 #include "device/vr/vr_types.h"
15 #include "ui/gl/gl_bindings.h" 15 #include "ui/gl/gl_bindings.h"
16 16
17 namespace vr_shell { 17 namespace vr_shell {
18 18
19 // TODO(tiborg): set background color through JS API. 19 // TODO(tiborg): set background color through JS API.
20 constexpr float kFogBrightness = 0.57f; 20 constexpr float kFogBrightness = 0.57f;
21 21
22 typedef unsigned int GLuint;
23
24 enum ShaderID { 22 enum ShaderID {
25 SHADER_UNRECOGNIZED = 0, 23 SHADER_UNRECOGNIZED = 0,
26 TEXTURE_QUAD_VERTEX_SHADER, 24 EXTERNAL_TEXTURED_QUAD_VERTEX_SHADER,
27 TEXTURE_QUAD_FRAGMENT_SHADER, 25 EXTERNAL_TEXTURED_QUAD_FRAGMENT_SHADER,
28 WEBVR_VERTEX_SHADER, 26 WEBVR_VERTEX_SHADER,
29 WEBVR_FRAGMENT_SHADER, 27 WEBVR_FRAGMENT_SHADER,
30 RETICLE_VERTEX_SHADER, 28 RETICLE_VERTEX_SHADER,
31 RETICLE_FRAGMENT_SHADER, 29 RETICLE_FRAGMENT_SHADER,
32 LASER_VERTEX_SHADER, 30 LASER_VERTEX_SHADER,
33 LASER_FRAGMENT_SHADER, 31 LASER_FRAGMENT_SHADER,
34 GRADIENT_QUAD_VERTEX_SHADER, 32 GRADIENT_QUAD_VERTEX_SHADER,
35 GRADIENT_QUAD_FRAGMENT_SHADER, 33 GRADIENT_QUAD_FRAGMENT_SHADER,
36 GRADIENT_GRID_VERTEX_SHADER, 34 GRADIENT_GRID_VERTEX_SHADER,
37 GRADIENT_GRID_FRAGMENT_SHADER, 35 GRADIENT_GRID_FRAGMENT_SHADER,
38 CONTROLLER_VERTEX_SHADER, 36 CONTROLLER_VERTEX_SHADER,
39 CONTROLLER_FRAGMENT_SHADER, 37 CONTROLLER_FRAGMENT_SHADER,
38 TEXTURED_QUAD_VERTEX_SHADER,
39 TEXTURED_QUAD_FRAGMENT_SHADER,
40 SHADER_ID_MAX 40 SHADER_ID_MAX
41 }; 41 };
42 42
43 struct Vertex3d { 43 struct Vertex3d {
44 float x; 44 float x;
45 float y; 45 float y;
46 float z; 46 float z;
47 }; 47 };
48 48
49 struct RectF { 49 struct RectF {
50 float x; 50 float x;
51 float y; 51 float y;
52 float width; 52 float width;
53 float height; 53 float height;
54 }; 54 };
55 55
56 struct Line3d { 56 struct Line3d {
57 Vertex3d start; 57 Vertex3d start;
58 Vertex3d end; 58 Vertex3d end;
59 }; 59 };
60 60
61 struct TexturedQuad { 61 struct SkiaQuad {
62 int texture_data_handle; 62 int texture_data_handle;
63 vr::Mat4f view_proj_matrix; 63 vr::Mat4f view_proj_matrix;
64 RectF copy_rect; 64 RectF copy_rect;
65 float opacity; 65 float opacity;
66 }; 66 };
67 67
68 class BaseRenderer { 68 class BaseRenderer {
69 public: 69 public:
70 virtual ~BaseRenderer(); 70 virtual ~BaseRenderer();
71 71
(...skipping 16 matching lines...) Expand all
88 88
89 protected: 89 protected:
90 void PrepareToDraw(GLuint view_proj_matrix_handle, 90 void PrepareToDraw(GLuint view_proj_matrix_handle,
91 const vr::Mat4f& view_proj_matrix); 91 const vr::Mat4f& view_proj_matrix);
92 92
93 static GLuint vertex_buffer_; 93 static GLuint vertex_buffer_;
94 94
95 DISALLOW_COPY_AND_ASSIGN(BaseQuadRenderer); 95 DISALLOW_COPY_AND_ASSIGN(BaseQuadRenderer);
96 }; 96 };
97 97
98 class ExternalTexturedQuadRenderer : public BaseQuadRenderer {
99 public:
100 ExternalTexturedQuadRenderer();
101 ~ExternalTexturedQuadRenderer() override;
102
103 // Draw the content rect in the texture quad.
104 void Draw(int texture_data_handle,
105 const vr::Mat4f& view_proj_matrix,
106 const gfx::RectF& copy_rect,
107 float opacity);
108
109 private:
110 GLuint model_view_proj_matrix_handle_;
111 GLuint copy_rect_uniform_handle_;
112 GLuint tex_uniform_handle_;
113 GLuint opacity_handle_;
114
115 DISALLOW_COPY_AND_ASSIGN(ExternalTexturedQuadRenderer);
116 };
117
98 class TexturedQuadRenderer : public BaseQuadRenderer { 118 class TexturedQuadRenderer : public BaseQuadRenderer {
99 public: 119 public:
100 TexturedQuadRenderer(); 120 TexturedQuadRenderer();
101 ~TexturedQuadRenderer() override; 121 ~TexturedQuadRenderer() override;
102 122
103 // Draw the content rect in the texture quad. 123 // Draw the content rect in the texture quad.
104 void AddQuad(int texture_data_handle, 124 void AddQuad(int texture_data_handle,
105 const vr::Mat4f& view_proj_matrix, 125 const vr::Mat4f& view_proj_matrix,
106 const gfx::RectF& copy_rect, 126 const gfx::RectF& copy_rect,
107 float opacity); 127 float opacity);
108 128
109 void Flush(); 129 void Flush();
110 130
111 private: 131 private:
112 GLuint model_view_proj_matrix_handle_; 132 GLuint model_view_proj_matrix_handle_;
113 GLuint copy_rect_uniform_handle_; 133 GLuint copy_rect_uniform_handle_;
114 GLuint tex_uniform_handle_; 134 GLuint tex_uniform_handle_;
115 GLuint opacity_handle_; 135 GLuint opacity_handle_;
116 136
117 std::queue<TexturedQuad> quad_queue_; 137 std::queue<SkiaQuad> quad_queue_;
118 138
119 DISALLOW_COPY_AND_ASSIGN(TexturedQuadRenderer); 139 DISALLOW_COPY_AND_ASSIGN(TexturedQuadRenderer);
120 }; 140 };
121 141
122 // Renders a page-generated stereo VR view. 142 // Renders a page-generated stereo VR view.
123 class WebVrRenderer : public BaseQuadRenderer { 143 class WebVrRenderer : public BaseQuadRenderer {
124 public: 144 public:
125 WebVrRenderer(); 145 WebVrRenderer();
126 ~WebVrRenderer() override; 146 ~WebVrRenderer() override;
127 147
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
246 std::vector<Line3d> grid_lines_; 266 std::vector<Line3d> grid_lines_;
247 267
248 DISALLOW_COPY_AND_ASSIGN(GradientGridRenderer); 268 DISALLOW_COPY_AND_ASSIGN(GradientGridRenderer);
249 }; 269 };
250 270
251 class VrShellRenderer { 271 class VrShellRenderer {
252 public: 272 public:
253 VrShellRenderer(); 273 VrShellRenderer();
254 ~VrShellRenderer(); 274 ~VrShellRenderer();
255 275
256 TexturedQuadRenderer* GetTexturedQuadRenderer() { 276 ExternalTexturedQuadRenderer* GetExternalTexturedQuadRenderer();
257 return textured_quad_renderer_.get(); 277 TexturedQuadRenderer* GetTexturedQuadRenderer();
258 } 278 WebVrRenderer* GetWebVrRenderer();
259 279 ReticleRenderer* GetReticleRenderer();
260 WebVrRenderer* GetWebVrRenderer() { return webvr_renderer_.get(); } 280 LaserRenderer* GetLaserRenderer();
261 281 ControllerRenderer* GetControllerRenderer();
262 ReticleRenderer* GetReticleRenderer() { return reticle_renderer_.get(); } 282 GradientQuadRenderer* GetGradientQuadRenderer();
263 283 GradientGridRenderer* GetGradientGridRenderer();
264 LaserRenderer* GetLaserRenderer() { return laser_renderer_.get(); } 284 void Flush();
265
266 ControllerRenderer* GetControllerRenderer() {
267 return controller_renderer_.get();
268 }
269
270 GradientQuadRenderer* GetGradientQuadRenderer() {
271 return gradient_quad_renderer_.get();
272 }
273
274 GradientGridRenderer* GetGradientGridRenderer() {
275 return gradient_grid_renderer_.get();
276 }
277 285
278 private: 286 private:
287 std::unique_ptr<ExternalTexturedQuadRenderer>
288 external_textured_quad_renderer_;
279 std::unique_ptr<TexturedQuadRenderer> textured_quad_renderer_; 289 std::unique_ptr<TexturedQuadRenderer> textured_quad_renderer_;
280 std::unique_ptr<WebVrRenderer> webvr_renderer_; 290 std::unique_ptr<WebVrRenderer> webvr_renderer_;
281 std::unique_ptr<ReticleRenderer> reticle_renderer_; 291 std::unique_ptr<ReticleRenderer> reticle_renderer_;
282 std::unique_ptr<LaserRenderer> laser_renderer_; 292 std::unique_ptr<LaserRenderer> laser_renderer_;
283 std::unique_ptr<ControllerRenderer> controller_renderer_; 293 std::unique_ptr<ControllerRenderer> controller_renderer_;
284 std::unique_ptr<GradientQuadRenderer> gradient_quad_renderer_; 294 std::unique_ptr<GradientQuadRenderer> gradient_quad_renderer_;
285 std::unique_ptr<GradientGridRenderer> gradient_grid_renderer_; 295 std::unique_ptr<GradientGridRenderer> gradient_grid_renderer_;
286 296
287 DISALLOW_COPY_AND_ASSIGN(VrShellRenderer); 297 DISALLOW_COPY_AND_ASSIGN(VrShellRenderer);
288 }; 298 };
289 299
290 } // namespace vr_shell 300 } // namespace vr_shell
291 301
292 #endif // CHROME_BROWSER_ANDROID_VR_SHELL_VR_SHELL_RENDERER_H_ 302 #endif // CHROME_BROWSER_ANDROID_VR_SHELL_VR_SHELL_RENDERER_H_
OLDNEW
« no previous file with comments | « chrome/browser/android/vr_shell/vr_shell_gl.cc ('k') | chrome/browser/android/vr_shell/vr_shell_renderer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698