| 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 <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 Loading... |
| 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_ |
| OLD | NEW |