OLD | NEW |
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/ui_element_renderer.h" |
13 #include "chrome/browser/android/vr_shell/vr_controller_model.h" | 14 #include "chrome/browser/android/vr_shell/vr_controller_model.h" |
14 #include "device/vr/vr_types.h" | 15 #include "device/vr/vr_types.h" |
15 #include "ui/gl/gl_bindings.h" | 16 #include "ui/gl/gl_bindings.h" |
16 | 17 |
17 namespace vr_shell { | 18 namespace vr_shell { |
18 | 19 |
19 // TODO(tiborg): set background color through JS API. | 20 // TODO(tiborg): set background color through JS API. |
20 constexpr float kFogBrightness = 0.57f; | 21 constexpr float kFogBrightness = 0.57f; |
21 | 22 |
22 enum ShaderID { | 23 enum ShaderID { |
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
265 GLuint model_view_proj_matrix_handle_; | 266 GLuint model_view_proj_matrix_handle_; |
266 GLuint scene_radius_handle_; | 267 GLuint scene_radius_handle_; |
267 GLuint center_color_handle_; | 268 GLuint center_color_handle_; |
268 GLuint edge_color_handle_; | 269 GLuint edge_color_handle_; |
269 GLuint opacity_handle_; | 270 GLuint opacity_handle_; |
270 std::vector<Line3d> grid_lines_; | 271 std::vector<Line3d> grid_lines_; |
271 | 272 |
272 DISALLOW_COPY_AND_ASSIGN(GradientGridRenderer); | 273 DISALLOW_COPY_AND_ASSIGN(GradientGridRenderer); |
273 }; | 274 }; |
274 | 275 |
275 class VrShellRenderer { | 276 class VrShellRenderer : public UiElementRenderer { |
276 public: | 277 public: |
277 VrShellRenderer(); | 278 VrShellRenderer(); |
278 ~VrShellRenderer(); | 279 ~VrShellRenderer() override; |
279 | 280 |
| 281 // UiElementRenderer interface (exposed to UI elements). |
| 282 void DrawTexturedQuad(int texture_data_handle, |
| 283 const vr::Mat4f& view_proj_matrix, |
| 284 const gfx::RectF& copy_rect, |
| 285 float opacity) override; |
| 286 void DrawGradientQuad(const vr::Mat4f& view_proj_matrix, |
| 287 const SkColor edge_color, |
| 288 const SkColor center_color, |
| 289 float opacity) override; |
| 290 |
| 291 // VrShell's internal GL rendering API. |
280 ExternalTexturedQuadRenderer* GetExternalTexturedQuadRenderer(); | 292 ExternalTexturedQuadRenderer* GetExternalTexturedQuadRenderer(); |
281 TexturedQuadRenderer* GetTexturedQuadRenderer(); | 293 TexturedQuadRenderer* GetTexturedQuadRenderer(); |
282 WebVrRenderer* GetWebVrRenderer(); | 294 WebVrRenderer* GetWebVrRenderer(); |
283 ReticleRenderer* GetReticleRenderer(); | 295 ReticleRenderer* GetReticleRenderer(); |
284 LaserRenderer* GetLaserRenderer(); | 296 LaserRenderer* GetLaserRenderer(); |
285 ControllerRenderer* GetControllerRenderer(); | 297 ControllerRenderer* GetControllerRenderer(); |
286 GradientQuadRenderer* GetGradientQuadRenderer(); | 298 GradientQuadRenderer* GetGradientQuadRenderer(); |
287 GradientGridRenderer* GetGradientGridRenderer(); | 299 GradientGridRenderer* GetGradientGridRenderer(); |
288 void Flush(); | 300 void Flush(); |
289 | 301 |
290 private: | 302 private: |
291 std::unique_ptr<ExternalTexturedQuadRenderer> | 303 std::unique_ptr<ExternalTexturedQuadRenderer> |
292 external_textured_quad_renderer_; | 304 external_textured_quad_renderer_; |
293 std::unique_ptr<TexturedQuadRenderer> textured_quad_renderer_; | 305 std::unique_ptr<TexturedQuadRenderer> textured_quad_renderer_; |
294 std::unique_ptr<WebVrRenderer> webvr_renderer_; | 306 std::unique_ptr<WebVrRenderer> webvr_renderer_; |
295 std::unique_ptr<ReticleRenderer> reticle_renderer_; | 307 std::unique_ptr<ReticleRenderer> reticle_renderer_; |
296 std::unique_ptr<LaserRenderer> laser_renderer_; | 308 std::unique_ptr<LaserRenderer> laser_renderer_; |
297 std::unique_ptr<ControllerRenderer> controller_renderer_; | 309 std::unique_ptr<ControllerRenderer> controller_renderer_; |
298 std::unique_ptr<GradientQuadRenderer> gradient_quad_renderer_; | 310 std::unique_ptr<GradientQuadRenderer> gradient_quad_renderer_; |
299 std::unique_ptr<GradientGridRenderer> gradient_grid_renderer_; | 311 std::unique_ptr<GradientGridRenderer> gradient_grid_renderer_; |
300 | 312 |
301 DISALLOW_COPY_AND_ASSIGN(VrShellRenderer); | 313 DISALLOW_COPY_AND_ASSIGN(VrShellRenderer); |
302 }; | 314 }; |
303 | 315 |
304 } // namespace vr_shell | 316 } // namespace vr_shell |
305 | 317 |
306 #endif // CHROME_BROWSER_ANDROID_VR_SHELL_VR_SHELL_RENDERER_H_ | 318 #endif // CHROME_BROWSER_ANDROID_VR_SHELL_VR_SHELL_RENDERER_H_ |
OLD | NEW |