From ccf46180a7552f581e816dc490198cea1bcaf4b9 Mon Sep 17 00:00:00 2001 From: pineappleEA Date: Wed, 10 Feb 2021 01:19:46 +0100 Subject: [PATCH] early-access version 1436 --- README.md | 2 +- .../renderer_opengl/gl_rasterizer.cpp | 3 -- src/video_core/texture_cache/util.cpp | 34 ----------------- .../configure_input_player_widget.cpp | 37 ++++++++++++++++--- .../configure_input_player_widget.h | 2 +- 5 files changed, 34 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index 8d0ac5e40..2b133646d 100755 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ yuzu emulator early access ============= -This is the source code for early-access 1433. +This is the source code for early-access 1436. ## Legal Notice diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index 8298d6787..a85b3d439 100755 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp @@ -60,9 +60,6 @@ constexpr size_t TOTAL_CONST_BUFFER_BYTES = constexpr size_t NUM_SUPPORTED_VERTEX_ATTRIBUTES = 16; constexpr size_t NUM_SUPPORTED_VERTEX_BINDINGS = 16; -constexpr size_t MAX_TEXTURES = 192; -constexpr size_t MAX_IMAGES = 48; - struct TextureHandle { constexpr TextureHandle(u32 data, bool via_header_index) { const Tegra::Texture::TextureHandle handle{data}; diff --git a/src/video_core/texture_cache/util.cpp b/src/video_core/texture_cache/util.cpp index bb2cdef81..a0bc1f7b6 100755 --- a/src/video_core/texture_cache/util.cpp +++ b/src/video_core/texture_cache/util.cpp @@ -169,40 +169,6 @@ template return Common::DivCeil(AdjustMipSize(size, level), block_size); } -[[nodiscard]] constexpr u32 LayerSize(const TICEntry& config, PixelFormat format) { - return config.Width() * config.Height() * BytesPerBlock(format); -} - -[[nodiscard]] constexpr bool HasTwoDimsPerLayer(TextureType type) { - switch (type) { - case TextureType::Texture2D: - case TextureType::Texture2DArray: - case TextureType::Texture2DNoMipmap: - case TextureType::Texture3D: - case TextureType::TextureCubeArray: - case TextureType::TextureCubemap: - return true; - case TextureType::Texture1D: - case TextureType::Texture1DArray: - case TextureType::Texture1DBuffer: - return false; - } - return false; -} - -[[nodiscard]] constexpr bool HasTwoDimsPerLayer(ImageType type) { - switch (type) { - case ImageType::e2D: - case ImageType::e3D: - case ImageType::Linear: - return true; - case ImageType::e1D: - case ImageType::Buffer: - return false; - } - UNREACHABLE_MSG("Invalid image type={}", static_cast(type)); -} - [[nodiscard]] constexpr std::pair Samples(int num_samples) { switch (num_samples) { case 1: diff --git a/src/yuzu/configuration/configure_input_player_widget.cpp b/src/yuzu/configuration/configure_input_player_widget.cpp index e3e8bde48..298c1f566 100755 --- a/src/yuzu/configuration/configure_input_player_widget.cpp +++ b/src/yuzu/configuration/configure_input_player_widget.cpp @@ -226,6 +226,9 @@ void PlayerControlPreview::paintEvent(QPaintEvent* event) { case Settings::ControllerType::RightJoycon: DrawRightController(p, center); break; + case Settings::ControllerType::GameCube: + DrawGCController(p, center); + break; case Settings::ControllerType::ProController: default: DrawProController(p, center); @@ -699,9 +702,9 @@ void PlayerControlPreview::DrawProController(QPainter& p, const QPointF center) { // Draw joysticks using namespace Settings::NativeAnalog; - DrawProJoystick(p, center + QPointF(-111, -55) + (axis_values[LStick].value * 11), + DrawProJoystick(p, center + QPointF(-111, -55), axis_values[LStick].value, 11, button_values[Settings::NativeButton::LStick]); - DrawProJoystick(p, center + QPointF(51, 0) + (axis_values[RStick].value * 11), + DrawProJoystick(p, center + QPointF(51, 0), axis_values[RStick].value, 11, button_values[Settings::NativeButton::RStick]); DrawRawJoystick(p, center + QPointF(-50, 105), axis_values[LStick].raw_value, axis_values[LStick].properties); @@ -2273,15 +2276,39 @@ void PlayerControlPreview::DrawJoystickSideview(QPainter& p, const QPointF cente p.drawLine(p2.at(32), p2.at(71)); } -void PlayerControlPreview::DrawProJoystick(QPainter& p, const QPointF center, bool pressed) { +void PlayerControlPreview::DrawProJoystick(QPainter& p, const QPointF center, const QPointF offset, + float offset_scalar, bool pressed) { + const float radius1 = 24.0f; + const float radius2 = 17.0f; + + const QPointF offset_center = center + offset * offset_scalar; + + const auto amplitude = static_cast( + 1.0 - std::sqrt((offset.x() * offset.x()) + (offset.y() * offset.y())) * 0.1f); + + const float rotation = + ((offset.x() == 0) ? atan(1) * 2 : atan(offset.y() / offset.x())) * (180 / (atan(1) * 4)); + + p.save(); + p.translate(offset_center); + p.rotate(rotation); + // Outer circle p.setPen(colors.outline); p.setBrush(pressed ? colors.highlight : colors.button); - DrawCircle(p, center, 24.0f); + p.drawEllipse(QPointF(0, 0), radius1 * amplitude, radius1); // Inner circle p.setBrush(pressed ? colors.highlight2 : colors.button2); - DrawCircle(p, center, 17.0f); + + const float inner_offset = + (radius1 - radius2) * 0.4f * ((offset.x() == 0 && offset.y() < 0) ? -1.0f : 1.0f); + const float offset_factor = (1.0f - amplitude) / 0.1f; + + p.drawEllipse(QPointF((offset.x() < 0) ? -inner_offset : inner_offset, 0) * offset_factor, + radius2 * amplitude, radius2); + + p.restore(); } void PlayerControlPreview::DrawGCJoystick(QPainter& p, const QPointF center, bool pressed) { diff --git a/src/yuzu/configuration/configure_input_player_widget.h b/src/yuzu/configuration/configure_input_player_widget.h index 39565f795..676effbfd 100755 --- a/src/yuzu/configuration/configure_input_player_widget.h +++ b/src/yuzu/configuration/configure_input_player_widget.h @@ -140,7 +140,7 @@ private: void DrawJoystickSideview(QPainter& p, QPointF center, float angle, float size, bool pressed); void DrawRawJoystick(QPainter& p, QPointF center, const QPointF value, const Input::AnalogProperties properties); - void DrawProJoystick(QPainter& p, QPointF center, bool pressed); + void DrawProJoystick(QPainter& p, QPointF center, QPointF offset, float scalar, bool pressed); void DrawGCJoystick(QPainter& p, QPointF center, bool pressed); // Draw button functions