| 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> |
| (...skipping 19 matching lines...) Expand all Loading... |
| 30 RETICLE_VERTEX_SHADER, | 30 RETICLE_VERTEX_SHADER, |
| 31 RETICLE_FRAGMENT_SHADER, | 31 RETICLE_FRAGMENT_SHADER, |
| 32 LASER_VERTEX_SHADER, | 32 LASER_VERTEX_SHADER, |
| 33 LASER_FRAGMENT_SHADER, | 33 LASER_FRAGMENT_SHADER, |
| 34 GRADIENT_QUAD_VERTEX_SHADER, | 34 GRADIENT_QUAD_VERTEX_SHADER, |
| 35 GRADIENT_QUAD_FRAGMENT_SHADER, | 35 GRADIENT_QUAD_FRAGMENT_SHADER, |
| 36 GRADIENT_GRID_VERTEX_SHADER, | 36 GRADIENT_GRID_VERTEX_SHADER, |
| 37 GRADIENT_GRID_FRAGMENT_SHADER, | 37 GRADIENT_GRID_FRAGMENT_SHADER, |
| 38 CONTROLLER_VERTEX_SHADER, | 38 CONTROLLER_VERTEX_SHADER, |
| 39 CONTROLLER_FRAGMENT_SHADER, | 39 CONTROLLER_FRAGMENT_SHADER, |
| 40 SKIA_QUAD_VERTEX_SHADER, |
| 41 SKIA_QUAD_FRAGMENT_SHADER, |
| 40 SHADER_ID_MAX | 42 SHADER_ID_MAX |
| 41 }; | 43 }; |
| 42 | 44 |
| 43 struct Vertex3d { | 45 struct Vertex3d { |
| 44 float x; | 46 float x; |
| 45 float y; | 47 float y; |
| 46 float z; | 48 float z; |
| 47 }; | 49 }; |
| 48 | 50 |
| 49 struct RectF { | 51 struct RectF { |
| 50 float x; | 52 float x; |
| 51 float y; | 53 float y; |
| 52 float width; | 54 float width; |
| 53 float height; | 55 float height; |
| 54 }; | 56 }; |
| 55 | 57 |
| 56 struct Line3d { | 58 struct Line3d { |
| 57 Vertex3d start; | 59 Vertex3d start; |
| 58 Vertex3d end; | 60 Vertex3d end; |
| 59 }; | 61 }; |
| 60 | 62 |
| 61 struct TexturedQuad { | 63 struct SkiaQuad { |
| 62 int texture_data_handle; | 64 int texture_data_handle; |
| 63 vr::Mat4f view_proj_matrix; | 65 vr::Mat4f view_proj_matrix; |
| 64 RectF copy_rect; | 66 RectF copy_rect; |
| 65 float opacity; | 67 float opacity; |
| 66 }; | 68 }; |
| 67 | 69 |
| 68 class BaseRenderer { | 70 class BaseRenderer { |
| 69 public: | 71 public: |
| 70 virtual ~BaseRenderer(); | 72 virtual ~BaseRenderer(); |
| 71 | 73 |
| (...skipping 22 matching lines...) Expand all Loading... |
| 94 | 96 |
| 95 DISALLOW_COPY_AND_ASSIGN(BaseQuadRenderer); | 97 DISALLOW_COPY_AND_ASSIGN(BaseQuadRenderer); |
| 96 }; | 98 }; |
| 97 | 99 |
| 98 class TexturedQuadRenderer : public BaseQuadRenderer { | 100 class TexturedQuadRenderer : public BaseQuadRenderer { |
| 99 public: | 101 public: |
| 100 TexturedQuadRenderer(); | 102 TexturedQuadRenderer(); |
| 101 ~TexturedQuadRenderer() override; | 103 ~TexturedQuadRenderer() override; |
| 102 | 104 |
| 103 // Draw the content rect in the texture quad. | 105 // Draw the content rect in the texture quad. |
| 106 void Draw(int texture_data_handle, |
| 107 const vr::Mat4f& view_proj_matrix, |
| 108 const gfx::RectF& copy_rect, |
| 109 float opacity); |
| 110 |
| 111 private: |
| 112 GLuint model_view_proj_matrix_handle_; |
| 113 GLuint copy_rect_uniform_handle_; |
| 114 GLuint tex_uniform_handle_; |
| 115 GLuint opacity_handle_; |
| 116 |
| 117 DISALLOW_COPY_AND_ASSIGN(TexturedQuadRenderer); |
| 118 }; |
| 119 |
| 120 class SkiaQuadRenderer : public BaseQuadRenderer { |
| 121 public: |
| 122 SkiaQuadRenderer(); |
| 123 ~SkiaQuadRenderer() override; |
| 124 |
| 125 // Draw the content rect in the texture quad. |
| 104 void AddQuad(int texture_data_handle, | 126 void AddQuad(int texture_data_handle, |
| 105 const vr::Mat4f& view_proj_matrix, | 127 const vr::Mat4f& view_proj_matrix, |
| 106 const gfx::RectF& copy_rect, | 128 const gfx::RectF& copy_rect, |
| 107 float opacity); | 129 float opacity); |
| 108 | 130 |
| 109 void Flush(); | 131 void Flush(); |
| 110 | 132 |
| 111 private: | 133 private: |
| 112 GLuint model_view_proj_matrix_handle_; | 134 GLuint model_view_proj_matrix_handle_; |
| 113 GLuint copy_rect_uniform_handle_; | 135 GLuint copy_rect_uniform_handle_; |
| 114 GLuint tex_uniform_handle_; | 136 GLuint tex_uniform_handle_; |
| 115 GLuint opacity_handle_; | 137 GLuint opacity_handle_; |
| 116 | 138 |
| 117 std::queue<TexturedQuad> quad_queue_; | 139 std::queue<SkiaQuad> quad_queue_; |
| 118 | 140 |
| 119 DISALLOW_COPY_AND_ASSIGN(TexturedQuadRenderer); | 141 DISALLOW_COPY_AND_ASSIGN(SkiaQuadRenderer); |
| 120 }; | 142 }; |
| 121 | 143 |
| 122 // Renders a page-generated stereo VR view. | 144 // Renders a page-generated stereo VR view. |
| 123 class WebVrRenderer : public BaseQuadRenderer { | 145 class WebVrRenderer : public BaseQuadRenderer { |
| 124 public: | 146 public: |
| 125 WebVrRenderer(); | 147 WebVrRenderer(); |
| 126 ~WebVrRenderer() override; | 148 ~WebVrRenderer() override; |
| 127 | 149 |
| 128 void Draw(int texture_handle); | 150 void Draw(int texture_handle); |
| 129 | 151 |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 246 std::vector<Line3d> grid_lines_; | 268 std::vector<Line3d> grid_lines_; |
| 247 | 269 |
| 248 DISALLOW_COPY_AND_ASSIGN(GradientGridRenderer); | 270 DISALLOW_COPY_AND_ASSIGN(GradientGridRenderer); |
| 249 }; | 271 }; |
| 250 | 272 |
| 251 class VrShellRenderer { | 273 class VrShellRenderer { |
| 252 public: | 274 public: |
| 253 VrShellRenderer(); | 275 VrShellRenderer(); |
| 254 ~VrShellRenderer(); | 276 ~VrShellRenderer(); |
| 255 | 277 |
| 256 TexturedQuadRenderer* GetTexturedQuadRenderer() { | 278 TexturedQuadRenderer* GetTexturedQuadRenderer(); |
| 257 return textured_quad_renderer_.get(); | 279 SkiaQuadRenderer* GetSkiaQuadRenderer(); |
| 258 } | 280 WebVrRenderer* GetWebVrRenderer(); |
| 259 | 281 ReticleRenderer* GetReticleRenderer(); |
| 260 WebVrRenderer* GetWebVrRenderer() { return webvr_renderer_.get(); } | 282 LaserRenderer* GetLaserRenderer(); |
| 261 | 283 ControllerRenderer* GetControllerRenderer(); |
| 262 ReticleRenderer* GetReticleRenderer() { return reticle_renderer_.get(); } | 284 GradientQuadRenderer* GetGradientQuadRenderer(); |
| 263 | 285 GradientGridRenderer* GetGradientGridRenderer(); |
| 264 LaserRenderer* GetLaserRenderer() { return laser_renderer_.get(); } | |
| 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 | 286 |
| 278 private: | 287 private: |
| 279 std::unique_ptr<TexturedQuadRenderer> textured_quad_renderer_; | 288 std::unique_ptr<TexturedQuadRenderer> textured_quad_renderer_; |
| 289 std::unique_ptr<SkiaQuadRenderer> skia_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_ |
| OLD | NEW |