Commit bae94e3a authored by Michael Thiessen's avatar Michael Thiessen Committed by Commit Bot

Revert "VR: Implement quad buffer for content quad."

This reverts commit 1e24d20a.

Reason for revert: Tanks performance. Quad layers are apparently expensive, yo.

Original change's description:
> VR: Implement quad buffer for content quad.
> 
> Huge thanks to bajones for building the prototype I built this CL
> off of, and for debugging for me ;)
> 
> Uses a separate viewport with transform to avoid resampling the
> content quad when drawing it into our scene. The viewport is placed
> underneath the viewport for the other browser UI, and a transparent
> hole is punched through to the underlying viewport.
> 
> Also avoids toggling multisampling at runtime (which recreates the
> swap chain) by re-using the two buffers (one multisampled and one
> not) across browsing and webVR modes.
> 
> Bug: 714304
> 
> Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_vr
> Change-Id: Ibcbb2752aaa957c3f904d4b76bf6dd5fdf9164c8
> Reviewed-on: https://chromium-review.googlesource.com/1017589
> Commit-Queue: Michael Thiessen <mthiesse@chromium.org>
> Reviewed-by: Ian Vollick <vollick@chromium.org>
> Reviewed-by: Brandon Jones <bajones@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#552212}

TBR=vollick@chromium.org,mthiesse@chromium.org,bajones@chromium.org

Change-Id: Iea71c2d624193c5f90c7554ee212d28fb526bcfc
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 714304
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_vr
Reviewed-on: https://chromium-review.googlesource.com/1021972Reviewed-by: default avatarMichael Thiessen <mthiesse@chromium.org>
Commit-Queue: Michael Thiessen <mthiesse@chromium.org>
Cr-Commit-Position: refs/heads/master@{#552333}
parent b2f81897
This diff is collapsed.
...@@ -334,7 +334,6 @@ class VrShellGl : public device::mojom::VRPresentationProvider { ...@@ -334,7 +334,6 @@ class VrShellGl : public device::mojom::VRPresentationProvider {
Viewport& viewport, Viewport& viewport,
const gfx::Size& render_size, const gfx::Size& render_size,
RenderInfo* out_render_info); RenderInfo* out_render_info);
void UpdateContentViewportTransforms(const gfx::Transform& head_pose);
void DrawFrame(int16_t frame_index, base::TimeTicks current_time); void DrawFrame(int16_t frame_index, base::TimeTicks current_time);
void DrawIntoAcquiredFrame(int16_t frame_index, base::TimeTicks current_time); void DrawIntoAcquiredFrame(int16_t frame_index, base::TimeTicks current_time);
void DrawFrameSubmitWhenReady(int16_t frame_index, void DrawFrameSubmitWhenReady(int16_t frame_index,
...@@ -343,7 +342,6 @@ class VrShellGl : public device::mojom::VRPresentationProvider { ...@@ -343,7 +342,6 @@ class VrShellGl : public device::mojom::VRPresentationProvider {
void DrawFrameSubmitNow(int16_t frame_index, const gfx::Transform& head_pose); void DrawFrameSubmitNow(int16_t frame_index, const gfx::Transform& head_pose);
bool ShouldDrawWebVr(); bool ShouldDrawWebVr();
void DrawWebVr(); void DrawWebVr();
void DrawContentQuad(bool draw_overlay_texture);
bool ShouldSendGesturesToWebVr(); bool ShouldSendGesturesToWebVr();
bool WebVrPoseByteIsValid(int pose_index_byte); bool WebVrPoseByteIsValid(int pose_index_byte);
...@@ -439,8 +437,6 @@ class VrShellGl : public device::mojom::VRPresentationProvider { ...@@ -439,8 +437,6 @@ class VrShellGl : public device::mojom::VRPresentationProvider {
// samplerExternalOES texture data for WebVR content image. // samplerExternalOES texture data for WebVR content image.
int webvr_texture_id_ = 0; int webvr_texture_id_ = 0;
int content_texture_id_ = 0;
int content_overlay_texture_id_ = 0;
// Set from feature flags. // Set from feature flags.
bool webvr_vsync_align_; bool webvr_vsync_align_;
...@@ -461,7 +457,6 @@ class VrShellGl : public device::mojom::VRPresentationProvider { ...@@ -461,7 +457,6 @@ class VrShellGl : public device::mojom::VRPresentationProvider {
Viewport main_viewport_; Viewport main_viewport_;
Viewport webvr_viewport_; Viewport webvr_viewport_;
Viewport webvr_overlay_viewport_; Viewport webvr_overlay_viewport_;
Viewport content_underlay_viewport_;
bool viewports_need_updating_; bool viewports_need_updating_;
gvr::SwapChain swap_chain_; gvr::SwapChain swap_chain_;
gvr::Frame acquired_frame_; gvr::Frame acquired_frame_;
...@@ -567,7 +562,7 @@ class VrShellGl : public device::mojom::VRPresentationProvider { ...@@ -567,7 +562,7 @@ class VrShellGl : public device::mojom::VRPresentationProvider {
gfx::Point3F pointer_start_; gfx::Point3F pointer_start_;
RenderInfo render_info_; RenderInfo render_info_primary_;
AndroidVSyncHelper vsync_helper_; AndroidVSyncHelper vsync_helper_;
......
...@@ -174,8 +174,6 @@ static_library("vr_common") { ...@@ -174,8 +174,6 @@ static_library("vr_common") {
"renderers/gradient_quad_renderer.h", "renderers/gradient_quad_renderer.h",
"renderers/textured_quad_renderer.cc", "renderers/textured_quad_renderer.cc",
"renderers/textured_quad_renderer.h", "renderers/textured_quad_renderer.h",
"renderers/transparent_quad_renderer.cc",
"renderers/transparent_quad_renderer.h",
"renderers/web_vr_renderer.cc", "renderers/web_vr_renderer.cc",
"renderers/web_vr_renderer.h", "renderers/web_vr_renderer.h",
"sample_queue.cc", "sample_queue.cc",
......
...@@ -52,7 +52,7 @@ void ContentElement::Render(UiElementRenderer* renderer, ...@@ -52,7 +52,7 @@ void ContentElement::Render(UiElementRenderer* renderer,
int texture_id = texture_id_; int texture_id = texture_id_;
bool blend = true; bool blend = true;
if (uses_quad_layer_) { if (uses_quad_layer_) {
texture_id = 0; texture_id = overlay_texture_id_;
overlay_texture_id = 0; overlay_texture_id = 0;
blend = false; blend = false;
} }
...@@ -156,10 +156,6 @@ void ContentElement::SetOverlayTextureEmpty(bool empty) { ...@@ -156,10 +156,6 @@ void ContentElement::SetOverlayTextureEmpty(bool empty) {
overlay_texture_non_empty_ = !empty; overlay_texture_non_empty_ = !empty;
} }
bool ContentElement::GetOverlayTextureEmpty() {
return !overlay_texture_non_empty_;
}
void ContentElement::SetProjectionMatrix(const gfx::Transform& matrix) { void ContentElement::SetProjectionMatrix(const gfx::Transform& matrix) {
projection_matrix_ = matrix; projection_matrix_ = matrix;
} }
......
...@@ -50,7 +50,6 @@ class ContentElement : public UiElement { ...@@ -50,7 +50,6 @@ class ContentElement : public UiElement {
void SetOverlayTextureId(unsigned int texture_id); void SetOverlayTextureId(unsigned int texture_id);
void SetOverlayTextureLocation(UiElementRenderer::TextureLocation location); void SetOverlayTextureLocation(UiElementRenderer::TextureLocation location);
void SetOverlayTextureEmpty(bool empty); void SetOverlayTextureEmpty(bool empty);
bool GetOverlayTextureEmpty();
void SetProjectionMatrix(const gfx::Transform& matrix); void SetProjectionMatrix(const gfx::Transform& matrix);
void SetTextInputDelegate(TextInputDelegate* text_input_delegate); void SetTextInputDelegate(TextInputDelegate* text_input_delegate);
void SetDelegate(ContentInputDelegate* delegate); void SetDelegate(ContentInputDelegate* delegate);
......
...@@ -307,14 +307,6 @@ bool UiElement::IsVisible() const { ...@@ -307,14 +307,6 @@ bool UiElement::IsVisible() const {
computed_opacity() > 0.0f; computed_opacity() > 0.0f;
} }
bool UiElement::IsVisibleAndOpaque() const {
DCHECK(update_phase_ >= kUpdatedComputedOpacity ||
FrameLifecycle::phase() >= kUpdatedComputedOpacity);
// TODO(crbug.com/832216): we shouldn't need to check opacity() here.
return update_phase_ != kDirty && opacity() == 1.0f &&
computed_opacity() == 1.0f;
}
bool UiElement::IsOrWillBeLocallyVisible() const { bool UiElement::IsOrWillBeLocallyVisible() const {
return opacity() > 0.0f || GetTargetOpacity() > 0.0f; return opacity() > 0.0f || GetTargetOpacity() > 0.0f;
} }
......
...@@ -179,9 +179,6 @@ class UiElement : public cc::AnimationTarget { ...@@ -179,9 +179,6 @@ class UiElement : public cc::AnimationTarget {
// If true, the object has a non-zero opacity. // If true, the object has a non-zero opacity.
bool IsVisible() const; bool IsVisible() const;
// If true, the object is both visible and opaque.
bool IsVisibleAndOpaque() const;
// For convenience, sets opacity to |opacity_when_visible_|. // For convenience, sets opacity to |opacity_when_visible_|.
virtual void SetVisible(bool visible); virtual void SetVisible(bool visible);
virtual void SetVisibleImmediately(bool visible); virtual void SetVisibleImmediately(bool visible);
......
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/vr/renderers/transparent_quad_renderer.h"
#include "chrome/browser/vr/vr_gl_util.h"
#include "ui/gfx/transform.h"
namespace vr {
namespace {
// clang-format off
static constexpr char const* kFragmentShader = SHADER(
precision highp float;
uniform sampler2D u_Texture;
uniform sampler2D u_OverlayTexture;
uniform vec4 u_CopyRect;
varying vec2 v_TexCoordinate;
varying vec2 v_CornerPosition;
uniform mediump float u_Opacity;
uniform mediump float u_OverlayOpacity;
void main() {
if (step(1.0, length(v_CornerPosition)) > 0.0)
discard;
gl_FragColor = vec4(0, 0, 0, 0);
}
);
// clang-format on
} // namespace
TransparentQuadRenderer::TransparentQuadRenderer()
: TexturedQuadRenderer(TexturedQuadRenderer::VertexShader(),
kFragmentShader) {}
TransparentQuadRenderer::~TransparentQuadRenderer() = default;
} // namespace vr
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_VR_RENDERERS_TRANSPARENT_QUAD_RENDERER_H_
#define CHROME_BROWSER_VR_RENDERERS_TRANSPARENT_QUAD_RENDERER_H_
#include "base/macros.h"
#include "chrome/browser/vr/renderers/textured_quad_renderer.h"
namespace vr {
class TransparentQuadRenderer : public TexturedQuadRenderer {
public:
TransparentQuadRenderer();
~TransparentQuadRenderer() override;
DISALLOW_COPY_AND_ASSIGN(TransparentQuadRenderer);
};
} // namespace vr
#endif // CHROME_BROWSER_VR_RENDERERS_TRANSPARENT_QUAD_RENDERER_H_
...@@ -16,18 +16,12 @@ static constexpr char const* kWebVrVertexShader = SHADER( ...@@ -16,18 +16,12 @@ static constexpr char const* kWebVrVertexShader = SHADER(
uniform mat4 u_UvTransform; uniform mat4 u_UvTransform;
attribute vec4 a_Position; attribute vec4 a_Position;
varying vec2 v_TexCoordinate; varying vec2 v_TexCoordinate;
uniform float u_XBorder;
uniform float u_YBorder;
void main() { void main() {
// The quad vertex coordinate range is [-0.5, 0.5]. Transform to [0, 1], // The quad vertex coordinate range is [-0.5, 0.5]. Transform to [0, 1] for
// scale to cause the borders to wrap the texture, then apply the supplied // the input UV vector, and then apply the supplied affine transform matrix
// affine transform matrix to get the final UV. // to get the final UV.
float xposition = a_Position[0] + 0.5; vec4 uv_in = vec4(a_Position[0] + 0.5, a_Position[1] + 0.5, 0.0, 1.0);
xposition = xposition * (2.0 * u_XBorder + 1.0) - u_XBorder;
float yposition = a_Position[1] + 0.5;
yposition = yposition * (2.0 * u_YBorder + 1.0) - u_YBorder;
vec4 uv_in = vec4(xposition, yposition, 0.0, 1.0);
vec4 uv_out = u_UvTransform * uv_in; vec4 uv_out = u_UvTransform * uv_in;
v_TexCoordinate = vec2(uv_out.x, uv_out.y); v_TexCoordinate = vec2(uv_out.x, uv_out.y);
gl_Position = vec4(a_Position.xyz * 2.0, 1.0); gl_Position = vec4(a_Position.xyz * 2.0, 1.0);
...@@ -51,15 +45,10 @@ WebVrRenderer::WebVrRenderer() ...@@ -51,15 +45,10 @@ WebVrRenderer::WebVrRenderer()
: BaseQuadRenderer(kWebVrVertexShader, kWebVrFragmentShader) { : BaseQuadRenderer(kWebVrVertexShader, kWebVrFragmentShader) {
texture_handle_ = glGetUniformLocation(program_handle_, "u_Texture"); texture_handle_ = glGetUniformLocation(program_handle_, "u_Texture");
uv_transform_ = glGetUniformLocation(program_handle_, "u_UvTransform"); uv_transform_ = glGetUniformLocation(program_handle_, "u_UvTransform");
x_border_handle_ = glGetUniformLocation(program_handle_, "u_XBorder");
y_border_handle_ = glGetUniformLocation(program_handle_, "u_YBorder");
} }
// Draw the stereo WebVR frame // Draw the stereo WebVR frame
void WebVrRenderer::Draw(int texture_handle, void WebVrRenderer::Draw(int texture_handle, const float (&uv_transform)[16]) {
const float (&uv_transform)[16],
float xborder,
float yborder) {
glUseProgram(program_handle_); glUseProgram(program_handle_);
// Bind vertex attributes // Bind vertex attributes
...@@ -77,9 +66,6 @@ void WebVrRenderer::Draw(int texture_handle, ...@@ -77,9 +66,6 @@ void WebVrRenderer::Draw(int texture_handle,
SetTexParameters(GL_TEXTURE_EXTERNAL_OES); SetTexParameters(GL_TEXTURE_EXTERNAL_OES);
glUniform1i(texture_handle_, 0); glUniform1i(texture_handle_, 0);
glUniform1f(x_border_handle_, xborder);
glUniform1f(y_border_handle_, yborder);
glUniformMatrix4fv(uv_transform_, 1, GL_FALSE, &uv_transform[0]); glUniformMatrix4fv(uv_transform_, 1, GL_FALSE, &uv_transform[0]);
// Blit texture to buffer // Blit texture to buffer
......
...@@ -16,16 +16,11 @@ class WebVrRenderer : public BaseQuadRenderer { ...@@ -16,16 +16,11 @@ class WebVrRenderer : public BaseQuadRenderer {
WebVrRenderer(); WebVrRenderer();
~WebVrRenderer() override; ~WebVrRenderer() override;
void Draw(int texture_handle, void Draw(int texture_handle, const float (&uv_transform)[16]);
const float (&uv_transform)[16],
float xborder,
float yborder);
private: private:
GLuint texture_handle_; GLuint texture_handle_;
GLuint uv_transform_; GLuint uv_transform_;
GLuint x_border_handle_;
GLuint y_border_handle_;
DISALLOW_COPY_AND_ASSIGN(WebVrRenderer); DISALLOW_COPY_AND_ASSIGN(WebVrRenderer);
}; };
......
...@@ -87,6 +87,7 @@ void UiPixelTest::DrawUi(const gfx::Vector3dF& laser_direction, ...@@ -87,6 +87,7 @@ void UiPixelTest::DrawUi(const gfx::Vector3dF& laser_direction,
render_info.left_eye_model.proj_matrix = proj_matrix; render_info.left_eye_model.proj_matrix = proj_matrix;
render_info.left_eye_model.view_proj_matrix = proj_matrix * view_matrix; render_info.left_eye_model.view_proj_matrix = proj_matrix * view_matrix;
render_info.right_eye_model = render_info.left_eye_model; render_info.right_eye_model = render_info.left_eye_model;
render_info.surface_texture_size = frame_buffer_size_;
render_info.left_eye_model.viewport = {0, 0, frame_buffer_size_.width(), render_info.left_eye_model.viewport = {0, 0, frame_buffer_size_.width(),
frame_buffer_size_.height()}; frame_buffer_size_.height()};
render_info.right_eye_model.viewport = {0, 0, 0, 0}; render_info.right_eye_model.viewport = {0, 0, 0, 0};
......
...@@ -683,6 +683,7 @@ void VrTestContext::CycleOrigin() { ...@@ -683,6 +683,7 @@ void VrTestContext::CycleOrigin() {
RenderInfo VrTestContext::GetRenderInfo() const { RenderInfo VrTestContext::GetRenderInfo() const {
RenderInfo render_info; RenderInfo render_info;
render_info.head_pose = head_pose_; render_info.head_pose = head_pose_;
render_info.surface_texture_size = window_size_;
render_info.left_eye_model.viewport = gfx::Rect(window_size_); render_info.left_eye_model.viewport = gfx::Rect(window_size_);
render_info.left_eye_model.view_matrix = head_pose_; render_info.left_eye_model.view_matrix = head_pose_;
render_info.left_eye_model.proj_matrix = ProjectionMatrix(); render_info.left_eye_model.proj_matrix = ProjectionMatrix();
......
...@@ -11,7 +11,6 @@ ...@@ -11,7 +11,6 @@
#include "base/threading/thread_task_runner_handle.h" #include "base/threading/thread_task_runner_handle.h"
#include "chrome/browser/vr/content_input_delegate.h" #include "chrome/browser/vr/content_input_delegate.h"
#include "chrome/browser/vr/cpu_surface_provider.h" #include "chrome/browser/vr/cpu_surface_provider.h"
#include "chrome/browser/vr/elements/content_element.h"
#include "chrome/browser/vr/elements/prompt.h" #include "chrome/browser/vr/elements/prompt.h"
#include "chrome/browser/vr/elements/text_input.h" #include "chrome/browser/vr/elements/text_input.h"
#include "chrome/browser/vr/ganesh_surface_provider.h" #include "chrome/browser/vr/ganesh_surface_provider.h"
...@@ -534,28 +533,4 @@ void Ui::PerformUiActionForTesting(UiTestInput test_input) { ...@@ -534,28 +533,4 @@ void Ui::PerformUiActionForTesting(UiTestInput test_input) {
} }
} }
ContentElement* Ui::GetContentElement() {
if (!content_element_) {
content_element_ =
static_cast<ContentElement*>(scene()->GetUiElementByName(kContentQuad));
}
return content_element_;
}
bool Ui::IsContentVisibleAndOpaque() {
return GetContentElement()->IsVisibleAndOpaque();
}
bool Ui::IsContentOverlayTextureEmpty() {
return GetContentElement()->GetOverlayTextureEmpty();
}
void Ui::SetContentUsesQuadLayer(bool uses_quad_layer) {
return GetContentElement()->SetUsesQuadLayer(uses_quad_layer);
}
gfx::Transform Ui::GetContentWorldSpaceTransform() {
return GetContentElement()->world_space_transform();
}
} // namespace vr } // namespace vr
...@@ -21,7 +21,6 @@ namespace vr { ...@@ -21,7 +21,6 @@ namespace vr {
class AudioDelegate; class AudioDelegate;
class BrowserUiInterface; class BrowserUiInterface;
class ContentElement;
class ContentInputDelegate; class ContentInputDelegate;
class ContentInputForwarder; class ContentInputForwarder;
class KeyboardDelegate; class KeyboardDelegate;
...@@ -169,15 +168,9 @@ class Ui : public BrowserUiInterface, public KeyboardUiInterface { ...@@ -169,15 +168,9 @@ class Ui : public BrowserUiInterface, public KeyboardUiInterface {
void AcceptDoffPromptForTesting(); void AcceptDoffPromptForTesting();
void PerformUiActionForTesting(UiTestInput test_input); void PerformUiActionForTesting(UiTestInput test_input);
bool IsContentVisibleAndOpaque();
bool IsContentOverlayTextureEmpty();
void SetContentUsesQuadLayer(bool uses_quad_buffers);
gfx::Transform GetContentWorldSpaceTransform();
private: private:
void InitializeModel(const UiInitialState& ui_initial_state); void InitializeModel(const UiInitialState& ui_initial_state);
UiBrowserInterface* browser_; UiBrowserInterface* browser_;
ContentElement* GetContentElement();
// This state may be further abstracted into a SkiaUi object. // This state may be further abstracted into a SkiaUi object.
std::unique_ptr<UiScene> scene_; std::unique_ptr<UiScene> scene_;
...@@ -188,10 +181,6 @@ class Ui : public BrowserUiInterface, public KeyboardUiInterface { ...@@ -188,10 +181,6 @@ class Ui : public BrowserUiInterface, public KeyboardUiInterface {
std::unique_ptr<UiRenderer> ui_renderer_; std::unique_ptr<UiRenderer> ui_renderer_;
std::unique_ptr<SkiaSurfaceProvider> provider_; std::unique_ptr<SkiaSurfaceProvider> provider_;
// Cache the content element so we don't have to get it multiple times per
// frame.
ContentElement* content_element_ = nullptr;
AudioDelegate* audio_delegate_ = nullptr; AudioDelegate* audio_delegate_ = nullptr;
base::WeakPtrFactory<Ui> weak_ptr_factory_; base::WeakPtrFactory<Ui> weak_ptr_factory_;
......
...@@ -15,7 +15,6 @@ ...@@ -15,7 +15,6 @@
#include "chrome/browser/vr/renderers/external_textured_quad_renderer.h" #include "chrome/browser/vr/renderers/external_textured_quad_renderer.h"
#include "chrome/browser/vr/renderers/gradient_quad_renderer.h" #include "chrome/browser/vr/renderers/gradient_quad_renderer.h"
#include "chrome/browser/vr/renderers/textured_quad_renderer.h" #include "chrome/browser/vr/renderers/textured_quad_renderer.h"
#include "chrome/browser/vr/renderers/transparent_quad_renderer.h"
#include "chrome/browser/vr/renderers/web_vr_renderer.h" #include "chrome/browser/vr/renderers/web_vr_renderer.h"
#include "chrome/browser/vr/vr_gl_util.h" #include "chrome/browser/vr/vr_gl_util.h"
#include "ui/gfx/geometry/point3_f.h" #include "ui/gfx/geometry/point3_f.h"
...@@ -39,7 +38,6 @@ UiElementRenderer::~UiElementRenderer() = default; ...@@ -39,7 +38,6 @@ UiElementRenderer::~UiElementRenderer() = default;
void UiElementRenderer::Init() { void UiElementRenderer::Init() {
external_textured_quad_renderer_ = external_textured_quad_renderer_ =
std::make_unique<ExternalTexturedQuadRenderer>(); std::make_unique<ExternalTexturedQuadRenderer>();
transparent_quad_renderer_ = std::make_unique<TransparentQuadRenderer>();
textured_quad_renderer_ = std::make_unique<TexturedQuadRenderer>(); textured_quad_renderer_ = std::make_unique<TexturedQuadRenderer>();
gradient_quad_renderer_ = std::make_unique<GradientQuadRenderer>(); gradient_quad_renderer_ = std::make_unique<GradientQuadRenderer>();
webvr_renderer_ = std::make_unique<WebVrRenderer>(); webvr_renderer_ = std::make_unique<WebVrRenderer>();
...@@ -72,11 +70,6 @@ void UiElementRenderer::DrawTexturedQuad( ...@@ -72,11 +70,6 @@ void UiElementRenderer::DrawTexturedQuad(
TexturedQuadRenderer* renderer = texture_location == kTextureLocationExternal TexturedQuadRenderer* renderer = texture_location == kTextureLocationExternal
? external_textured_quad_renderer_.get() ? external_textured_quad_renderer_.get()
: textured_quad_renderer_.get(); : textured_quad_renderer_.get();
if (!texture_data_handle && !overlay_texture_data_handle) {
// If we're blending, why are we even drawing a transparent quad?
DCHECK(!blend);
renderer = transparent_quad_renderer_.get();
}
FlushIfNecessary(renderer); FlushIfNecessary(renderer);
renderer->AddQuad(texture_data_handle, overlay_texture_data_handle, renderer->AddQuad(texture_data_handle, overlay_texture_data_handle,
model_view_proj_matrix, copy_rect, opacity, element_size, model_view_proj_matrix, copy_rect, opacity, element_size,
...@@ -135,11 +128,9 @@ void UiElementRenderer::DrawReticle( ...@@ -135,11 +128,9 @@ void UiElementRenderer::DrawReticle(
} }
void UiElementRenderer::DrawWebVr(int texture_data_handle, void UiElementRenderer::DrawWebVr(int texture_data_handle,
const float (&uv_transform)[16], const float (&uv_transform)[16]) {
float xborder,
float yborder) {
FlushIfNecessary(webvr_renderer_.get()); FlushIfNecessary(webvr_renderer_.get());
webvr_renderer_->Draw(texture_data_handle, uv_transform, xborder, yborder); webvr_renderer_->Draw(texture_data_handle, uv_transform);
} }
void UiElementRenderer::DrawShadow(const gfx::Transform& model_view_proj_matrix, void UiElementRenderer::DrawShadow(const gfx::Transform& model_view_proj_matrix,
......
...@@ -38,7 +38,6 @@ class BaseRenderer; ...@@ -38,7 +38,6 @@ class BaseRenderer;
class ExternalTexturedQuadRenderer; class ExternalTexturedQuadRenderer;
class GradientQuadRenderer; class GradientQuadRenderer;
class TexturedQuadRenderer; class TexturedQuadRenderer;
class TransparentQuadRenderer;
class WebVrRenderer; class WebVrRenderer;
// An instance of this class is passed to UiElements by the UiRenderer in order // An instance of this class is passed to UiElements by the UiRenderer in order
...@@ -97,9 +96,7 @@ class UiElementRenderer { ...@@ -97,9 +96,7 @@ class UiElementRenderer {
const gfx::Transform& model_view_proj_matrix); const gfx::Transform& model_view_proj_matrix);
VIRTUAL_FOR_MOCKS void DrawWebVr(int texture_data_handle, VIRTUAL_FOR_MOCKS void DrawWebVr(int texture_data_handle,
const float (&uv_transform)[16], const float (&uv_transform)[16]);
float xborder,
float yborder);
VIRTUAL_FOR_MOCKS void DrawShadow( VIRTUAL_FOR_MOCKS void DrawShadow(
const gfx::Transform& model_view_proj_matrix, const gfx::Transform& model_view_proj_matrix,
...@@ -141,7 +138,6 @@ class UiElementRenderer { ...@@ -141,7 +138,6 @@ class UiElementRenderer {
std::unique_ptr<ExternalTexturedQuadRenderer> std::unique_ptr<ExternalTexturedQuadRenderer>
external_textured_quad_renderer_; external_textured_quad_renderer_;
std::unique_ptr<TransparentQuadRenderer> transparent_quad_renderer_;
std::unique_ptr<TexturedQuadRenderer> textured_quad_renderer_; std::unique_ptr<TexturedQuadRenderer> textured_quad_renderer_;
std::unique_ptr<GradientQuadRenderer> gradient_quad_renderer_; std::unique_ptr<GradientQuadRenderer> gradient_quad_renderer_;
std::unique_ptr<WebVrRenderer> webvr_renderer_; std::unique_ptr<WebVrRenderer> webvr_renderer_;
......
...@@ -142,6 +142,7 @@ class UiInputManagerContentTest : public UiTest { ...@@ -142,6 +142,7 @@ class UiInputManagerContentTest : public UiTest {
1.0f, static_cast<float>(kWindowSize.width()) / kWindowSize.height()); 1.0f, static_cast<float>(kWindowSize.width()) / kWindowSize.height());
render_info.head_pose = head_pose_; render_info.head_pose = head_pose_;
render_info.surface_texture_size = kWindowSize;
render_info.left_eye_model.viewport = gfx::Rect(kWindowSize); render_info.left_eye_model.viewport = gfx::Rect(kWindowSize);
render_info.left_eye_model.view_matrix = head_pose_; render_info.left_eye_model.view_matrix = head_pose_;
render_info.left_eye_model.proj_matrix = projection_matrix; render_info.left_eye_model.proj_matrix = projection_matrix;
......
...@@ -21,6 +21,7 @@ class UiElementRenderer; ...@@ -21,6 +21,7 @@ class UiElementRenderer;
// matrix. // matrix.
struct RenderInfo { struct RenderInfo {
gfx::Transform head_pose; gfx::Transform head_pose;
gfx::Size surface_texture_size;
CameraModel left_eye_model; CameraModel left_eye_model;
CameraModel right_eye_model; CameraModel right_eye_model;
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment