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

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

Issue 2814443004: Refactor VR math off of GVR types, onto gfx types where possible. (Closed)
Patch Set: Fix tests 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 "chrome/browser/android/vr_shell/vr_math.h" 14 #include "device/vr/vr_types.h"
15 #include "third_party/gvr-android-sdk/src/libraries/headers/vr/gvr/capi/include/ gvr_types.h"
16 #include "ui/gl/gl_bindings.h" 15 #include "ui/gl/gl_bindings.h"
17 16
18 namespace vr_shell { 17 namespace vr_shell {
19 18
20 // TODO(tiborg): set background color through JS API. 19 // TODO(tiborg): set background color through JS API.
21 constexpr float kFogBrightness = 0.57f; 20 constexpr float kFogBrightness = 0.57f;
22 21
23 typedef unsigned int GLuint; 22 typedef unsigned int GLuint;
24 23
25 enum ShaderID { 24 enum ShaderID {
(...skipping 14 matching lines...) Expand all
40 CONTROLLER_FRAGMENT_SHADER, 39 CONTROLLER_FRAGMENT_SHADER,
41 SHADER_ID_MAX 40 SHADER_ID_MAX
42 }; 41 };
43 42
44 struct Vertex3d { 43 struct Vertex3d {
45 float x; 44 float x;
46 float y; 45 float y;
47 float z; 46 float z;
48 }; 47 };
49 48
49 struct RectF {
50 float x;
51 float y;
52 float width;
53 float height;
54 };
55
50 struct Line3d { 56 struct Line3d {
51 Vertex3d start; 57 Vertex3d start;
52 Vertex3d end; 58 Vertex3d end;
53 }; 59 };
54 60
55 struct TexturedQuad { 61 struct TexturedQuad {
56 int texture_data_handle; 62 int texture_data_handle;
57 gvr::Mat4f view_proj_matrix; 63 vr::Mat4f view_proj_matrix;
58 Rectf copy_rect; 64 RectF copy_rect;
59 float opacity; 65 float opacity;
60 }; 66 };
61 67
62 class BaseRenderer { 68 class BaseRenderer {
63 public: 69 public:
64 virtual ~BaseRenderer(); 70 virtual ~BaseRenderer();
65 71
66 protected: 72 protected:
67 BaseRenderer(ShaderID vertex_id, ShaderID fragment_id); 73 BaseRenderer(ShaderID vertex_id, ShaderID fragment_id);
68 74
69 GLuint program_handle_; 75 GLuint program_handle_;
70 GLuint position_handle_; 76 GLuint position_handle_;
71 GLuint tex_coord_handle_; 77 GLuint tex_coord_handle_;
72 78
73 DISALLOW_COPY_AND_ASSIGN(BaseRenderer); 79 DISALLOW_COPY_AND_ASSIGN(BaseRenderer);
74 }; 80 };
75 81
76 class BaseQuadRenderer : public BaseRenderer { 82 class BaseQuadRenderer : public BaseRenderer {
77 public: 83 public:
78 BaseQuadRenderer(ShaderID vertex_id, ShaderID fragment_id); 84 BaseQuadRenderer(ShaderID vertex_id, ShaderID fragment_id);
79 ~BaseQuadRenderer() override; 85 ~BaseQuadRenderer() override;
80 86
81 static void SetVertexBuffer(); 87 static void SetVertexBuffer();
82 88
83 protected: 89 protected:
84 void PrepareToDraw(GLuint view_proj_matrix_handle, 90 void PrepareToDraw(GLuint view_proj_matrix_handle,
85 const gvr::Mat4f& view_proj_matrix); 91 const vr::Mat4f& view_proj_matrix);
86 92
87 static GLuint vertex_buffer_; 93 static GLuint vertex_buffer_;
88 94
89 DISALLOW_COPY_AND_ASSIGN(BaseQuadRenderer); 95 DISALLOW_COPY_AND_ASSIGN(BaseQuadRenderer);
90 }; 96 };
91 97
92 class TexturedQuadRenderer : public BaseQuadRenderer { 98 class TexturedQuadRenderer : public BaseQuadRenderer {
93 public: 99 public:
94 TexturedQuadRenderer(); 100 TexturedQuadRenderer();
95 ~TexturedQuadRenderer() override; 101 ~TexturedQuadRenderer() override;
96 102
97 // Draw the content rect in the texture quad. 103 // Draw the content rect in the texture quad.
98 void AddQuad(int texture_data_handle, 104 void AddQuad(int texture_data_handle,
99 const gvr::Mat4f& view_proj_matrix, 105 const vr::Mat4f& view_proj_matrix,
100 const Rectf& copy_rect, 106 const gfx::RectF& copy_rect,
101 float opacity); 107 float opacity);
102 108
103 void Flush(); 109 void Flush();
104 110
105 private: 111 private:
106 GLuint model_view_proj_matrix_handle_; 112 GLuint model_view_proj_matrix_handle_;
107 GLuint copy_rect_uniform_handle_; 113 GLuint copy_rect_uniform_handle_;
108 GLuint tex_uniform_handle_; 114 GLuint tex_uniform_handle_;
109 GLuint opacity_handle_; 115 GLuint opacity_handle_;
110 116
(...skipping 14 matching lines...) Expand all
125 GLuint tex_uniform_handle_; 131 GLuint tex_uniform_handle_;
126 132
127 DISALLOW_COPY_AND_ASSIGN(WebVrRenderer); 133 DISALLOW_COPY_AND_ASSIGN(WebVrRenderer);
128 }; 134 };
129 135
130 class ReticleRenderer : public BaseQuadRenderer { 136 class ReticleRenderer : public BaseQuadRenderer {
131 public: 137 public:
132 ReticleRenderer(); 138 ReticleRenderer();
133 ~ReticleRenderer() override; 139 ~ReticleRenderer() override;
134 140
135 void Draw(const gvr::Mat4f& view_proj_matrix); 141 void Draw(const vr::Mat4f& view_proj_matrix);
136 142
137 private: 143 private:
138 GLuint model_view_proj_matrix_handle_; 144 GLuint model_view_proj_matrix_handle_;
139 GLuint color_handle_; 145 GLuint color_handle_;
140 GLuint ring_diameter_handle_; 146 GLuint ring_diameter_handle_;
141 GLuint inner_hole_handle_; 147 GLuint inner_hole_handle_;
142 GLuint inner_ring_end_handle_; 148 GLuint inner_ring_end_handle_;
143 GLuint inner_ring_thickness_handle_; 149 GLuint inner_ring_thickness_handle_;
144 GLuint mid_ring_end_handle_; 150 GLuint mid_ring_end_handle_;
145 GLuint mid_ring_opacity_handle_; 151 GLuint mid_ring_opacity_handle_;
146 152
147 DISALLOW_COPY_AND_ASSIGN(ReticleRenderer); 153 DISALLOW_COPY_AND_ASSIGN(ReticleRenderer);
148 }; 154 };
149 155
150 class LaserRenderer : public BaseQuadRenderer { 156 class LaserRenderer : public BaseQuadRenderer {
151 public: 157 public:
152 LaserRenderer(); 158 LaserRenderer();
153 ~LaserRenderer() override; 159 ~LaserRenderer() override;
154 160
155 void Draw(const gvr::Mat4f& view_proj_matrix); 161 void Draw(const vr::Mat4f& view_proj_matrix);
156 162
157 private: 163 private:
158 GLuint model_view_proj_matrix_handle_; 164 GLuint model_view_proj_matrix_handle_;
159 GLuint texture_unit_handle_; 165 GLuint texture_unit_handle_;
160 GLuint texture_data_handle_; 166 GLuint texture_data_handle_;
161 GLuint color_handle_; 167 GLuint color_handle_;
162 GLuint fade_point_handle_; 168 GLuint fade_point_handle_;
163 GLuint fade_end_handle_; 169 GLuint fade_end_handle_;
164 170
165 DISALLOW_COPY_AND_ASSIGN(LaserRenderer); 171 DISALLOW_COPY_AND_ASSIGN(LaserRenderer);
166 }; 172 };
167 173
168 class ControllerRenderer : public BaseRenderer { 174 class ControllerRenderer : public BaseRenderer {
169 public: 175 public:
170 ControllerRenderer(); 176 ControllerRenderer();
171 ~ControllerRenderer() override; 177 ~ControllerRenderer() override;
172 178
173 void SetUp(std::unique_ptr<VrControllerModel> model); 179 void SetUp(std::unique_ptr<VrControllerModel> model);
174 void Draw(VrControllerModel::State state, const gvr::Mat4f& view_proj_matrix); 180 void Draw(VrControllerModel::State state, const vr::Mat4f& view_proj_matrix);
175 bool IsSetUp() const { return setup_; } 181 bool IsSetUp() const { return setup_; }
176 182
177 private: 183 private:
178 GLuint model_view_proj_matrix_handle_; 184 GLuint model_view_proj_matrix_handle_;
179 GLuint tex_uniform_handle_; 185 GLuint tex_uniform_handle_;
180 GLuint indices_buffer_ = 0; 186 GLuint indices_buffer_ = 0;
181 GLuint vertex_buffer_ = 0; 187 GLuint vertex_buffer_ = 0;
182 GLint position_components_ = 0; 188 GLint position_components_ = 0;
183 GLenum position_type_ = GL_FLOAT; 189 GLenum position_type_ = GL_FLOAT;
184 GLsizei position_stride_ = 0; 190 GLsizei position_stride_ = 0;
(...skipping 10 matching lines...) Expand all
195 bool setup_ = false; 201 bool setup_ = false;
196 202
197 DISALLOW_COPY_AND_ASSIGN(ControllerRenderer); 203 DISALLOW_COPY_AND_ASSIGN(ControllerRenderer);
198 }; 204 };
199 205
200 class GradientQuadRenderer : public BaseQuadRenderer { 206 class GradientQuadRenderer : public BaseQuadRenderer {
201 public: 207 public:
202 GradientQuadRenderer(); 208 GradientQuadRenderer();
203 ~GradientQuadRenderer() override; 209 ~GradientQuadRenderer() override;
204 210
205 void Draw(const gvr::Mat4f& view_proj_matrix, 211 void Draw(const vr::Mat4f& view_proj_matrix,
206 const Colorf& edge_color, 212 const vr::Colorf& edge_color,
207 const Colorf& center_color, 213 const vr::Colorf& center_color,
208 float opacity); 214 float opacity);
209 215
210 private: 216 private:
211 GLuint model_view_proj_matrix_handle_; 217 GLuint model_view_proj_matrix_handle_;
212 GLuint scene_radius_handle_; 218 GLuint scene_radius_handle_;
213 GLuint center_color_handle_; 219 GLuint center_color_handle_;
214 GLuint edge_color_handle_; 220 GLuint edge_color_handle_;
215 GLuint opacity_handle_; 221 GLuint opacity_handle_;
216 222
217 DISALLOW_COPY_AND_ASSIGN(GradientQuadRenderer); 223 DISALLOW_COPY_AND_ASSIGN(GradientQuadRenderer);
218 }; 224 };
219 225
220 class GradientGridRenderer : public BaseRenderer { 226 class GradientGridRenderer : public BaseRenderer {
221 public: 227 public:
222 GradientGridRenderer(); 228 GradientGridRenderer();
223 ~GradientGridRenderer() override; 229 ~GradientGridRenderer() override;
224 230
225 void Draw(const gvr::Mat4f& view_proj_matrix, 231 void Draw(const vr::Mat4f& view_proj_matrix,
226 const Colorf& edge_color, 232 const vr::Colorf& edge_color,
227 const Colorf& center_color, 233 const vr::Colorf& center_color,
228 int gridline_count, 234 int gridline_count,
229 float opacity); 235 float opacity);
230 236
231 private: 237 private:
232 void MakeGridLines(int gridline_count); 238 void MakeGridLines(int gridline_count);
233 239
234 GLuint vertex_buffer_ = 0; 240 GLuint vertex_buffer_ = 0;
235 GLuint model_view_proj_matrix_handle_; 241 GLuint model_view_proj_matrix_handle_;
236 GLuint scene_radius_handle_; 242 GLuint scene_radius_handle_;
237 GLuint center_color_handle_; 243 GLuint center_color_handle_;
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
277 std::unique_ptr<ControllerRenderer> controller_renderer_; 283 std::unique_ptr<ControllerRenderer> controller_renderer_;
278 std::unique_ptr<GradientQuadRenderer> gradient_quad_renderer_; 284 std::unique_ptr<GradientQuadRenderer> gradient_quad_renderer_;
279 std::unique_ptr<GradientGridRenderer> gradient_grid_renderer_; 285 std::unique_ptr<GradientGridRenderer> gradient_grid_renderer_;
280 286
281 DISALLOW_COPY_AND_ASSIGN(VrShellRenderer); 287 DISALLOW_COPY_AND_ASSIGN(VrShellRenderer);
282 }; 288 };
283 289
284 } // namespace vr_shell 290 } // namespace vr_shell
285 291
286 #endif // CHROME_BROWSER_ANDROID_VR_SHELL_VR_SHELL_RENDERER_H_ 292 #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