From 9b3eb69973c368cc6e73bf8802f412085f1880a3 Mon Sep 17 00:00:00 2001 From: Dragios Date: Wed, 25 Oct 2017 22:03:21 +0800 Subject: [PATCH] Utilize vector function instead --- src/video_core/swrasterizer/rasterizer.cpp | 46 +++++++++++----------- 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/src/video_core/swrasterizer/rasterizer.cpp b/src/video_core/swrasterizer/rasterizer.cpp index 06162bd1ff..586587eb84 100644 --- a/src/video_core/swrasterizer/rasterizer.cpp +++ b/src/video_core/swrasterizer/rasterizer.cpp @@ -376,9 +376,9 @@ static void ProcessTriangleInternal(const Vertex& v0, const Vertex& v1, const Ve if (use_border_s || use_border_t) { auto border_color = texture.config.border_color; - texture_color[i] = { - static_cast(border_color.r), static_cast(border_color.g), - static_cast(border_color.b), static_cast(border_color.a)}; + texture_color[i] = Math::MakeVec(border_color.r.Value(), border_color.g.Value(), + border_color.b.Value(), border_color.a.Value()) + .Cast(); } else { // Textures are laid out from bottom to top, hence we invert the t coordinate. // NOTE: This may not be the right place for the inversion. @@ -415,12 +415,12 @@ static void ProcessTriangleInternal(const Vertex& v0, const Vertex& v1, const Ve // analogously. Math::Vec4 combiner_output; Math::Vec4 combiner_buffer = {0, 0, 0, 0}; - Math::Vec4 next_combiner_buffer = { - static_cast(regs.texturing.tev_combiner_buffer_color.r), - static_cast(regs.texturing.tev_combiner_buffer_color.g), - static_cast(regs.texturing.tev_combiner_buffer_color.b), - static_cast(regs.texturing.tev_combiner_buffer_color.a), - }; + Math::Vec4 next_combiner_buffer = + Math::MakeVec(regs.texturing.tev_combiner_buffer_color.r.Value(), + regs.texturing.tev_combiner_buffer_color.g.Value(), + regs.texturing.tev_combiner_buffer_color.b.Value(), + regs.texturing.tev_combiner_buffer_color.a.Value()) + .Cast(); Math::Vec4 primary_fragment_color = {0, 0, 0, 0}; Math::Vec4 secondary_fragment_color = {0, 0, 0, 0}; @@ -474,9 +474,9 @@ static void ProcessTriangleInternal(const Vertex& v0, const Vertex& v1, const Ve return combiner_buffer; case Source::Constant: - return { - static_cast(tev_stage.const_r), static_cast(tev_stage.const_g), - static_cast(tev_stage.const_b), static_cast(tev_stage.const_a)}; + return Math::MakeVec(tev_stage.const_r.Value(), tev_stage.const_g.Value(), + tev_stage.const_b.Value(), tev_stage.const_a.Value()) + .Cast(); case Source::Previous: return combiner_output; @@ -589,11 +589,10 @@ static void ProcessTriangleInternal(const Vertex& v0, const Vertex& v1, const Ve // store the depth etc. Using float for now until we know more // about Pica datatypes if (regs.texturing.fog_mode == TexturingRegs::FogMode::Fog) { - const Math::Vec3 fog_color = { - static_cast(regs.texturing.fog_color.r.Value()), - static_cast(regs.texturing.fog_color.g.Value()), - static_cast(regs.texturing.fog_color.b.Value()), - }; + const Math::Vec3 fog_color = Math::MakeVec(regs.texturing.fog_color.r.Value(), + regs.texturing.fog_color.g.Value(), + regs.texturing.fog_color.b.Value()) + .Cast(); // Get index into fog LUT float fog_index; @@ -745,12 +744,12 @@ static void ProcessTriangleInternal(const Vertex& v0, const Vertex& v1, const Ve FramebufferRegs::BlendFactor factor) -> u8 { DEBUG_ASSERT(channel < 4); - const Math::Vec4 blend_const = { - static_cast(output_merger.blend_const.r), - static_cast(output_merger.blend_const.g), - static_cast(output_merger.blend_const.b), - static_cast(output_merger.blend_const.a), - }; + const Math::Vec4 blend_const = + Math::MakeVec(output_merger.blend_const.r.Value(), + output_merger.blend_const.g.Value(), + output_merger.blend_const.b.Value(), + output_merger.blend_const.a.Value()) + .Cast(); switch (factor) { case FramebufferRegs::BlendFactor::Zero: @@ -851,5 +850,4 @@ void ProcessTriangle(const Vertex& v0, const Vertex& v1, const Vertex& v2) { } } // namespace Rasterizer - } // namespace Pica