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

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

Issue 2668093002: VrShell background implemented in JS. (Closed)
Patch Set: Fixed tests 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); 153 float opacity);
150 154
151 private: 155 private:
152 GLuint model_view_proj_matrix_handle_; 156 GLuint model_view_proj_matrix_handle_;
153 GLuint scene_radius_handle_; 157 GLuint scene_radius_handle_;
154 GLuint center_color_handle_; 158 GLuint center_color_handle_;
155 GLuint edge_color_handle_; 159 GLuint edge_color_handle_;
156 std::vector<Line3d> ground_grid_lines_; 160 GLuint opacity_handle_;
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 161
162 DISALLOW_COPY_AND_ASSIGN(BackgroundRenderer); 162 DISALLOW_COPY_AND_ASSIGN(GradientQuadRenderer);
163 };
164
165 class GradientGridRenderer : public BaseRenderer {
166 public:
167 GradientGridRenderer();
168 ~GradientGridRenderer() override;
169
170 void Draw(const gvr::Mat4f& view_proj_matrix,
171 const Colorf& edge_color,
172 const Colorf& center_color,
173 int gridline_count,
174 float opacity);
175
176 private:
177 void MakeGridLines(int gridline_count);
178
179 GLuint model_view_proj_matrix_handle_;
180 GLuint scene_radius_handle_;
181 GLuint center_color_handle_;
182 GLuint edge_color_handle_;
183 GLuint opacity_handle_;
184 std::vector<Line3d> grid_lines_;
185
186 DISALLOW_COPY_AND_ASSIGN(GradientGridRenderer);
163 }; 187 };
164 188
165 class VrShellRenderer { 189 class VrShellRenderer {
166 public: 190 public:
167 VrShellRenderer(); 191 VrShellRenderer();
168 ~VrShellRenderer(); 192 ~VrShellRenderer();
169 193
170 TexturedQuadRenderer* GetTexturedQuadRenderer() { 194 TexturedQuadRenderer* GetTexturedQuadRenderer() {
171 return textured_quad_renderer_.get(); 195 return textured_quad_renderer_.get();
172 } 196 }
173 197
174 WebVrRenderer* GetWebVrRenderer() { 198 WebVrRenderer* GetWebVrRenderer() {
175 return webvr_renderer_.get(); 199 return webvr_renderer_.get();
176 } 200 }
177 201
178 ReticleRenderer* GetReticleRenderer() { 202 ReticleRenderer* GetReticleRenderer() {
179 return reticle_renderer_.get(); 203 return reticle_renderer_.get();
180 } 204 }
181 205
182 LaserRenderer* GetLaserRenderer() { 206 LaserRenderer* GetLaserRenderer() {
183 return laser_renderer_.get(); 207 return laser_renderer_.get();
184 } 208 }
185 209
186 BackgroundRenderer* GetBackgroundRenderer() { 210 GradientQuadRenderer* GetGradientQuadRenderer() {
187 return background_renderer_.get(); 211 return gradient_quad_renderer_.get();
212 }
213
214 GradientGridRenderer* GetGradientGridRenderer() {
215 return gradient_grid_renderer_.get();
188 } 216 }
189 217
190 private: 218 private:
191 std::unique_ptr<TexturedQuadRenderer> textured_quad_renderer_; 219 std::unique_ptr<TexturedQuadRenderer> textured_quad_renderer_;
192 std::unique_ptr<WebVrRenderer> webvr_renderer_; 220 std::unique_ptr<WebVrRenderer> webvr_renderer_;
193 std::unique_ptr<ReticleRenderer> reticle_renderer_; 221 std::unique_ptr<ReticleRenderer> reticle_renderer_;
194 std::unique_ptr<LaserRenderer> laser_renderer_; 222 std::unique_ptr<LaserRenderer> laser_renderer_;
195 std::unique_ptr<BackgroundRenderer> background_renderer_; 223 std::unique_ptr<GradientQuadRenderer> gradient_quad_renderer_;
224 std::unique_ptr<GradientGridRenderer> gradient_grid_renderer_;
196 225
197 DISALLOW_COPY_AND_ASSIGN(VrShellRenderer); 226 DISALLOW_COPY_AND_ASSIGN(VrShellRenderer);
198 }; 227 };
199 228
200 } // namespace vr_shell 229 } // namespace vr_shell
201 230
202 #endif // CHROME_BROWSER_ANDROID_VR_SHELL_VR_SHELL_RENDERER_H_ 231 #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