| 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 |