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

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

Issue 2757213003: Implementing glTF 1.0 parser (Closed)
Patch Set: Moving glTF structs to their own file Created 3 years, 9 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>
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 gvr::Mat4f view_proj_matrix; 54 gvr::Mat4f view_proj_matrix;
55 Rectf copy_rect; 55 Rectf copy_rect;
56 float opacity; 56 float opacity;
57 }; 57 };
58 58
59 class BaseRenderer { 59 class BaseRenderer {
60 public: 60 public:
61 virtual ~BaseRenderer(); 61 virtual ~BaseRenderer();
62 62
63 protected: 63 protected:
64 BaseRenderer(ShaderID vertex_id, 64 BaseRenderer(ShaderID vertex_id, ShaderID fragment_id);
65 ShaderID fragment_id,
66 bool setup_vertex_buffer);
67 65
68 void PrepareToDraw(GLuint view_proj_matrix_handle, 66 void PrepareToDraw(GLuint view_proj_matrix_handle,
69 const gvr::Mat4f& view_proj_matrix); 67 const gvr::Mat4f& view_proj_matrix);
70 68
71 GLuint program_handle_; 69 GLuint program_handle_;
72 GLuint position_handle_; 70 GLuint position_handle_;
73 GLuint tex_coord_handle_; 71 GLuint tex_coord_handle_;
74 GLuint vertex_buffer_; 72 GLuint vertex_buffer_;
75 73
76 DISALLOW_COPY_AND_ASSIGN(BaseRenderer); 74 DISALLOW_COPY_AND_ASSIGN(BaseRenderer);
77 }; 75 };
78 76
79 class TexturedQuadRenderer : public BaseRenderer { 77 class BaseQuadRenderer : public BaseRenderer {
78 public:
79 BaseQuadRenderer(ShaderID vertex_id, ShaderID fragment_id);
80 ~BaseQuadRenderer() override;
81
82 DISALLOW_COPY_AND_ASSIGN(BaseQuadRenderer);
83 };
84
85 class TexturedQuadRenderer : public BaseQuadRenderer {
80 public: 86 public:
81 TexturedQuadRenderer(); 87 TexturedQuadRenderer();
82 ~TexturedQuadRenderer() override; 88 ~TexturedQuadRenderer() override;
83 89
84 // Draw the content rect in the texture quad. 90 // Draw the content rect in the texture quad.
85 void AddQuad(int texture_data_handle, 91 void AddQuad(int texture_data_handle,
86 const gvr::Mat4f& view_proj_matrix, 92 const gvr::Mat4f& view_proj_matrix,
87 const Rectf& copy_rect, 93 const Rectf& copy_rect,
88 float opacity); 94 float opacity);
89 95
90 void Flush(); 96 void Flush();
91 97
92 private: 98 private:
93 GLuint model_view_proj_matrix_handle_; 99 GLuint model_view_proj_matrix_handle_;
94 GLuint copy_rect_uniform_handle_; 100 GLuint copy_rect_uniform_handle_;
95 GLuint tex_uniform_handle_; 101 GLuint tex_uniform_handle_;
96 GLuint opacity_handle_; 102 GLuint opacity_handle_;
97 103
98 std::queue<TexturedQuad> quad_queue_; 104 std::queue<TexturedQuad> quad_queue_;
99 105
100 DISALLOW_COPY_AND_ASSIGN(TexturedQuadRenderer); 106 DISALLOW_COPY_AND_ASSIGN(TexturedQuadRenderer);
101 }; 107 };
102 108
103 // Renders a page-generated stereo VR view. 109 // Renders a page-generated stereo VR view.
104 class WebVrRenderer : public BaseRenderer { 110 class WebVrRenderer : public BaseQuadRenderer {
105 public: 111 public:
106 WebVrRenderer(); 112 WebVrRenderer();
107 ~WebVrRenderer() override; 113 ~WebVrRenderer() override;
108 114
109 void Draw(int texture_handle); 115 void Draw(int texture_handle);
110 116
111 private: 117 private:
112 GLuint tex_uniform_handle_; 118 GLuint tex_uniform_handle_;
113 119
114 DISALLOW_COPY_AND_ASSIGN(WebVrRenderer); 120 DISALLOW_COPY_AND_ASSIGN(WebVrRenderer);
115 }; 121 };
116 122
117 class ReticleRenderer : public BaseRenderer { 123 class ReticleRenderer : public BaseQuadRenderer {
118 public: 124 public:
119 ReticleRenderer(); 125 ReticleRenderer();
120 ~ReticleRenderer() override; 126 ~ReticleRenderer() override;
121 127
122 void Draw(const gvr::Mat4f& view_proj_matrix); 128 void Draw(const gvr::Mat4f& view_proj_matrix);
123 129
124 private: 130 private:
125 GLuint model_view_proj_matrix_handle_; 131 GLuint model_view_proj_matrix_handle_;
126 GLuint color_handle_; 132 GLuint color_handle_;
127 GLuint ring_diameter_handle_; 133 GLuint ring_diameter_handle_;
128 GLuint inner_hole_handle_; 134 GLuint inner_hole_handle_;
129 GLuint inner_ring_end_handle_; 135 GLuint inner_ring_end_handle_;
130 GLuint inner_ring_thickness_handle_; 136 GLuint inner_ring_thickness_handle_;
131 GLuint mid_ring_end_handle_; 137 GLuint mid_ring_end_handle_;
132 GLuint mid_ring_opacity_handle_; 138 GLuint mid_ring_opacity_handle_;
133 139
134 DISALLOW_COPY_AND_ASSIGN(ReticleRenderer); 140 DISALLOW_COPY_AND_ASSIGN(ReticleRenderer);
135 }; 141 };
136 142
137 class LaserRenderer : public BaseRenderer { 143 class LaserRenderer : public BaseQuadRenderer {
138 public: 144 public:
139 LaserRenderer(); 145 LaserRenderer();
140 ~LaserRenderer() override; 146 ~LaserRenderer() override;
141 147
142 void Draw(const gvr::Mat4f& view_proj_matrix); 148 void Draw(const gvr::Mat4f& view_proj_matrix);
143 149
144 private: 150 private:
145 GLuint model_view_proj_matrix_handle_; 151 GLuint model_view_proj_matrix_handle_;
146 GLuint texture_unit_handle_; 152 GLuint texture_unit_handle_;
147 GLuint texture_data_handle_; 153 GLuint texture_data_handle_;
148 GLuint color_handle_; 154 GLuint color_handle_;
149 GLuint fade_point_handle_; 155 GLuint fade_point_handle_;
150 GLuint fade_end_handle_; 156 GLuint fade_end_handle_;
151 157
152 DISALLOW_COPY_AND_ASSIGN(LaserRenderer); 158 DISALLOW_COPY_AND_ASSIGN(LaserRenderer);
153 }; 159 };
154 160
155 class GradientQuadRenderer : public BaseRenderer { 161 class GradientQuadRenderer : public BaseQuadRenderer {
156 public: 162 public:
157 GradientQuadRenderer(); 163 GradientQuadRenderer();
158 ~GradientQuadRenderer() override; 164 ~GradientQuadRenderer() override;
159 165
160 void Draw(const gvr::Mat4f& view_proj_matrix, 166 void Draw(const gvr::Mat4f& view_proj_matrix,
161 const Colorf& edge_color, 167 const Colorf& edge_color,
162 const Colorf& center_color, 168 const Colorf& center_color,
163 float opacity); 169 float opacity);
164 170
165 private: 171 private:
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 std::unique_ptr<LaserRenderer> laser_renderer_; 232 std::unique_ptr<LaserRenderer> laser_renderer_;
227 std::unique_ptr<GradientQuadRenderer> gradient_quad_renderer_; 233 std::unique_ptr<GradientQuadRenderer> gradient_quad_renderer_;
228 std::unique_ptr<GradientGridRenderer> gradient_grid_renderer_; 234 std::unique_ptr<GradientGridRenderer> gradient_grid_renderer_;
229 235
230 DISALLOW_COPY_AND_ASSIGN(VrShellRenderer); 236 DISALLOW_COPY_AND_ASSIGN(VrShellRenderer);
231 }; 237 };
232 238
233 } // namespace vr_shell 239 } // namespace vr_shell
234 240
235 #endif // CHROME_BROWSER_ANDROID_VR_SHELL_VR_SHELL_RENDERER_H_ 241 #endif // CHROME_BROWSER_ANDROID_VR_SHELL_VR_SHELL_RENDERER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698