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

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

Issue 2668093002: VrShell background implemented in JS. (Closed)
Patch Set: Created 3 years, 10 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 <vector> 9 #include <vector>
10 10
11 #include "base/macros.h" 11 #include "base/macros.h"
12 #include "chrome/browser/android/vr_shell/vr_math.h" 12 #include "chrome/browser/android/vr_shell/vr_math.h"
13 #include "third_party/gvr-android-sdk/src/libraries/headers/vr/gvr/capi/include/ gvr_types.h" 13 #include "third_party/gvr-android-sdk/src/libraries/headers/vr/gvr/capi/include/ gvr_types.h"
14 #include "ui/gl/gl_bindings.h" 14 #include "ui/gl/gl_bindings.h"
15 15
16 namespace vr_shell { 16 namespace vr_shell {
17 17
18 // TODO(tiborg): set background color through JS API.
19 constexpr float kFogBrightness = 0.57f;
20
18 typedef unsigned int GLuint; 21 typedef unsigned int GLuint;
19 22
20 enum ShaderID { 23 enum ShaderID {
21 SHADER_UNRECOGNIZED = 0, 24 SHADER_UNRECOGNIZED = 0,
22 TEXTURE_QUAD_VERTEX_SHADER, 25 TEXTURE_QUAD_VERTEX_SHADER,
23 TEXTURE_QUAD_FRAGMENT_SHADER, 26 TEXTURE_QUAD_FRAGMENT_SHADER,
24 WEBVR_VERTEX_SHADER, 27 WEBVR_VERTEX_SHADER,
25 WEBVR_FRAGMENT_SHADER, 28 WEBVR_FRAGMENT_SHADER,
26 RETICLE_VERTEX_SHADER, 29 RETICLE_VERTEX_SHADER,
27 RETICLE_FRAGMENT_SHADER, 30 RETICLE_FRAGMENT_SHADER,
28 LASER_VERTEX_SHADER, 31 LASER_VERTEX_SHADER,
29 LASER_FRAGMENT_SHADER, 32 LASER_FRAGMENT_SHADER,
30 BACKGROUND_VERTEX_SHADER, 33 GRADIENT_QUAD_VERTEX_SHADER,
31 BACKGROUND_FRAGMENT_SHADER, 34 GRADIENT_QUAD_FRAGMENT_SHADER,
35 GRADIENT_GRID_VERTEX_SHADER,
36 GRADIENT_GRID_FRAGMENT_SHADER,
32 SHADER_ID_MAX 37 SHADER_ID_MAX
33 }; 38 };
34 39
35 struct Vertex3d { 40 struct Vertex3d {
36 float x; 41 float x;
37 float y; 42 float y;
38 float z; 43 float z;
39 }; 44 };
40 45
41 struct Line3d { 46 struct Line3d {
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 GLuint model_view_proj_matrix_handle_; 135 GLuint model_view_proj_matrix_handle_;
131 GLuint texture_unit_handle_; 136 GLuint texture_unit_handle_;
132 GLuint texture_data_handle_; 137 GLuint texture_data_handle_;
133 GLuint color_handle_; 138 GLuint color_handle_;
134 GLuint fade_point_handle_; 139 GLuint fade_point_handle_;
135 GLuint fade_end_handle_; 140 GLuint fade_end_handle_;
136 141
137 DISALLOW_COPY_AND_ASSIGN(LaserRenderer); 142 DISALLOW_COPY_AND_ASSIGN(LaserRenderer);
138 }; 143 };
139 144
140 class BackgroundRenderer : public BaseRenderer { 145 class GradientQuadRenderer : public BaseRenderer {
141 public: 146 public:
142 static constexpr float kFogBrightness = 0.57f; 147 GradientQuadRenderer();
143 static constexpr float kGroundCeilingBrightness = 0.48f; 148 ~GradientQuadRenderer() override;
144 static constexpr float kGridBrightness = 0.57f;
145 149
146 BackgroundRenderer(); 150 void Draw(const gvr::Mat4f& view_proj_matrix,
147 ~BackgroundRenderer() override; 151 const Colorf& edge_color,
148 152 const Colorf& center_color);
149 void Draw(const gvr::Mat4f& view_proj_matrix);
150 153
151 private: 154 private:
152 GLuint model_view_proj_matrix_handle_; 155 GLuint model_view_proj_matrix_handle_;
153 GLuint scene_radius_handle_; 156 GLuint scene_radius_handle_;
154 GLuint center_color_handle_; 157 GLuint center_color_handle_;
155 GLuint edge_color_handle_; 158 GLuint edge_color_handle_;
156 std::vector<Line3d> ground_grid_lines_;
157 std::vector<float> ground_ceiling_plane_positions_;
158 gvr::Mat4f ground_plane_transform_mat_;
159 gvr::Mat4f ceiling_plane_transform_mat_;
160 float scene_radius_;
161 159
162 DISALLOW_COPY_AND_ASSIGN(BackgroundRenderer); 160 DISALLOW_COPY_AND_ASSIGN(GradientQuadRenderer);
161 };
162
163 class GradientGridRenderer : public BaseRenderer {
164 public:
165 GradientGridRenderer();
166 ~GradientGridRenderer() override;
167
168 void Draw(const gvr::Mat4f& view_proj_matrix,
169 const Colorf& edge_color,
170 const Colorf& center_color,
171 unsigned int tile_number);
172
173 private:
174 void MakeGridLines(unsigned int tile_number);
175
176 GLuint model_view_proj_matrix_handle_;
177 GLuint scene_radius_handle_;
178 GLuint center_color_handle_;
179 GLuint edge_color_handle_;
180 std::vector<Line3d> grid_lines_;
181
182 DISALLOW_COPY_AND_ASSIGN(GradientGridRenderer);
163 }; 183 };
164 184
165 class VrShellRenderer { 185 class VrShellRenderer {
166 public: 186 public:
167 VrShellRenderer(); 187 VrShellRenderer();
168 ~VrShellRenderer(); 188 ~VrShellRenderer();
169 189
170 TexturedQuadRenderer* GetTexturedQuadRenderer() { 190 TexturedQuadRenderer* GetTexturedQuadRenderer() {
171 return textured_quad_renderer_.get(); 191 return textured_quad_renderer_.get();
172 } 192 }
173 193
174 WebVrRenderer* GetWebVrRenderer() { 194 WebVrRenderer* GetWebVrRenderer() {
175 return webvr_renderer_.get(); 195 return webvr_renderer_.get();
176 } 196 }
177 197
178 ReticleRenderer* GetReticleRenderer() { 198 ReticleRenderer* GetReticleRenderer() {
179 return reticle_renderer_.get(); 199 return reticle_renderer_.get();
180 } 200 }
181 201
182 LaserRenderer* GetLaserRenderer() { 202 LaserRenderer* GetLaserRenderer() {
183 return laser_renderer_.get(); 203 return laser_renderer_.get();
184 } 204 }
185 205
186 BackgroundRenderer* GetBackgroundRenderer() { 206 GradientQuadRenderer* GetGradientQuadRenderer() {
187 return background_renderer_.get(); 207 return gradient_quad_renderer_.get();
208 }
209
210 GradientGridRenderer* GetGradientGridRenderer() {
211 return gradient_grid_renderer_.get();
188 } 212 }
189 213
190 private: 214 private:
191 std::unique_ptr<TexturedQuadRenderer> textured_quad_renderer_; 215 std::unique_ptr<TexturedQuadRenderer> textured_quad_renderer_;
192 std::unique_ptr<WebVrRenderer> webvr_renderer_; 216 std::unique_ptr<WebVrRenderer> webvr_renderer_;
193 std::unique_ptr<ReticleRenderer> reticle_renderer_; 217 std::unique_ptr<ReticleRenderer> reticle_renderer_;
194 std::unique_ptr<LaserRenderer> laser_renderer_; 218 std::unique_ptr<LaserRenderer> laser_renderer_;
195 std::unique_ptr<BackgroundRenderer> background_renderer_; 219 std::unique_ptr<GradientQuadRenderer> gradient_quad_renderer_;
220 std::unique_ptr<GradientGridRenderer> gradient_grid_renderer_;
196 221
197 DISALLOW_COPY_AND_ASSIGN(VrShellRenderer); 222 DISALLOW_COPY_AND_ASSIGN(VrShellRenderer);
198 }; 223 };
199 224
200 } // namespace vr_shell 225 } // namespace vr_shell
201 226
202 #endif // CHROME_BROWSER_ANDROID_VR_SHELL_VR_SHELL_RENDERER_H_ 227 #endif // CHROME_BROWSER_ANDROID_VR_SHELL_VR_SHELL_RENDERER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698