mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 13:50:03 +00:00 
			
		
		
		
	Merge pull request #3994 from FearlessTobi/replace-clamp-functions
Remove MathUtil::Clamp and replace it with its std:: counterpart
This commit is contained in:
		
						commit
						14b0435df2
					
				
					 17 changed files with 69 additions and 82 deletions
				
			
		|  | @ -2,6 +2,7 @@ | |||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #include <algorithm> | ||||
| #include <memory> | ||||
| #include <string> | ||||
| #include <tuple> | ||||
|  | @ -540,18 +541,18 @@ bool RasterizerOpenGL::Draw(bool accelerate, bool is_indexed) { | |||
|                               : (depth_surface == nullptr ? 1u : depth_surface->res_scale); | ||||
| 
 | ||||
|     MathUtil::Rectangle<u32> draw_rect{ | ||||
|         static_cast<u32>(MathUtil::Clamp<s32>(static_cast<s32>(surfaces_rect.left) + | ||||
|                                                   viewport_rect_unscaled.left * res_scale, | ||||
|                                               surfaces_rect.left, surfaces_rect.right)), // Left
 | ||||
|         static_cast<u32>(MathUtil::Clamp<s32>(static_cast<s32>(surfaces_rect.bottom) + | ||||
|                                                   viewport_rect_unscaled.top * res_scale, | ||||
|                                               surfaces_rect.bottom, surfaces_rect.top)), // Top
 | ||||
|         static_cast<u32>(MathUtil::Clamp<s32>(static_cast<s32>(surfaces_rect.left) + | ||||
|                                                   viewport_rect_unscaled.right * res_scale, | ||||
|                                               surfaces_rect.left, surfaces_rect.right)), // Right
 | ||||
|         static_cast<u32>(MathUtil::Clamp<s32>(static_cast<s32>(surfaces_rect.bottom) + | ||||
|                                                   viewport_rect_unscaled.bottom * res_scale, | ||||
|                                               surfaces_rect.bottom, surfaces_rect.top))}; // Bottom
 | ||||
|         static_cast<u32>(std::clamp<s32>(static_cast<s32>(surfaces_rect.left) + | ||||
|                                              viewport_rect_unscaled.left * res_scale, | ||||
|                                          surfaces_rect.left, surfaces_rect.right)), // Left
 | ||||
|         static_cast<u32>(std::clamp<s32>(static_cast<s32>(surfaces_rect.bottom) + | ||||
|                                              viewport_rect_unscaled.top * res_scale, | ||||
|                                          surfaces_rect.bottom, surfaces_rect.top)), // Top
 | ||||
|         static_cast<u32>(std::clamp<s32>(static_cast<s32>(surfaces_rect.left) + | ||||
|                                              viewport_rect_unscaled.right * res_scale, | ||||
|                                          surfaces_rect.left, surfaces_rect.right)), // Right
 | ||||
|         static_cast<u32>(std::clamp<s32>(static_cast<s32>(surfaces_rect.bottom) + | ||||
|                                              viewport_rect_unscaled.bottom * res_scale, | ||||
|                                          surfaces_rect.bottom, surfaces_rect.top))}; // Bottom
 | ||||
| 
 | ||||
|     // Bind the framebuffer surfaces
 | ||||
|     state.draw.draw_framebuffer = framebuffer.handle; | ||||
|  |  | |||
|  | @ -1359,14 +1359,11 @@ SurfaceSurfaceRect_Tuple RasterizerCacheOpenGL::GetFramebufferSurfaces( | |||
|     } | ||||
| 
 | ||||
|     MathUtil::Rectangle<u32> viewport_clamped{ | ||||
|         static_cast<u32>(std::clamp(viewport_rect.left, 0, static_cast<s32>(config.GetWidth()))), | ||||
|         static_cast<u32>(std::clamp(viewport_rect.top, 0, static_cast<s32>(config.GetHeight()))), | ||||
|         static_cast<u32>(std::clamp(viewport_rect.right, 0, static_cast<s32>(config.GetWidth()))), | ||||
|         static_cast<u32>( | ||||
|             MathUtil::Clamp(viewport_rect.left, 0, static_cast<s32>(config.GetWidth()))), | ||||
|         static_cast<u32>( | ||||
|             MathUtil::Clamp(viewport_rect.top, 0, static_cast<s32>(config.GetHeight()))), | ||||
|         static_cast<u32>( | ||||
|             MathUtil::Clamp(viewport_rect.right, 0, static_cast<s32>(config.GetWidth()))), | ||||
|         static_cast<u32>( | ||||
|             MathUtil::Clamp(viewport_rect.bottom, 0, static_cast<s32>(config.GetHeight())))}; | ||||
|             std::clamp(viewport_rect.bottom, 0, static_cast<s32>(config.GetHeight())))}; | ||||
| 
 | ||||
|     // get color and depth surfaces
 | ||||
|     SurfaceParams color_params; | ||||
|  |  | |||
|  | @ -3,12 +3,10 @@ | |||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #include <algorithm> | ||||
| 
 | ||||
| #include "common/assert.h" | ||||
| #include "common/color.h" | ||||
| #include "common/common_types.h" | ||||
| #include "common/logging/log.h" | ||||
| #include "common/math_util.h" | ||||
| #include "common/vector_math.h" | ||||
| #include "core/hw/gpu.h" | ||||
| #include "core/memory.h" | ||||
|  | @ -301,8 +299,8 @@ Math::Vec4<u8> EvaluateBlendEquation(const Math::Vec4<u8>& src, const Math::Vec4 | |||
|         UNIMPLEMENTED(); | ||||
|     } | ||||
| 
 | ||||
|     return Math::Vec4<u8>(MathUtil::Clamp(result.r(), 0, 255), MathUtil::Clamp(result.g(), 0, 255), | ||||
|                           MathUtil::Clamp(result.b(), 0, 255), MathUtil::Clamp(result.a(), 0, 255)); | ||||
|     return Math::Vec4<u8>(std::clamp(result.r(), 0, 255), std::clamp(result.g(), 0, 255), | ||||
|                           std::clamp(result.b(), 0, 255), std::clamp(result.a(), 0, 255)); | ||||
| }; | ||||
| 
 | ||||
| u8 LogicOp(u8 src, u8 dest, FramebufferRegs::LogicOp op) { | ||||
|  | @ -400,7 +398,7 @@ void DrawShadowMapPixel(int x, int y, u32 depth, u8 stencil) { | |||
|             float16 linear = float16::FromRaw(shadow.linear); | ||||
|             float16 x = float16::FromFloat32(static_cast<float>(depth) / ref_z); | ||||
|             float16 stencil_new = float16::FromFloat32(stencil) / (constant + linear * x); | ||||
|             stencil = static_cast<u8>(MathUtil::Clamp(stencil_new.ToFloat32(), 0.0f, 255.0f)); | ||||
|             stencil = static_cast<u8>(std::clamp(stencil_new.ToFloat32(), 0.0f, 255.0f)); | ||||
| 
 | ||||
|             if (stencil < ref_s) | ||||
|                 EncodeX24S8Shadow(stencil, dst_pixel); | ||||
|  |  | |||
|  | @ -2,7 +2,7 @@ | |||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #include "common/math_util.h" | ||||
| #include <algorithm> | ||||
| #include "video_core/swrasterizer/lighting.h" | ||||
| 
 | ||||
| namespace Pica { | ||||
|  | @ -96,10 +96,10 @@ std::tuple<Math::Vec4<u8>, Math::Vec4<u8>> ComputeFragmentsColors( | |||
|             size_t lut = | ||||
|                 static_cast<size_t>(LightingRegs::LightingSampler::DistanceAttenuation) + num; | ||||
| 
 | ||||
|             float sample_loc = MathUtil::Clamp(scale * distance + bias, 0.0f, 1.0f); | ||||
|             float sample_loc = std::clamp(scale * distance + bias, 0.0f, 1.0f); | ||||
| 
 | ||||
|             u8 lutindex = | ||||
|                 static_cast<u8>(MathUtil::Clamp(std::floor(sample_loc * 256.0f), 0.0f, 255.0f)); | ||||
|                 static_cast<u8>(std::clamp(std::floor(sample_loc * 256.0f), 0.0f, 255.0f)); | ||||
|             float delta = sample_loc * 256 - lutindex; | ||||
|             dist_atten = LookupLightingLut(lighting_state, lut, lutindex, delta); | ||||
|         } | ||||
|  | @ -158,11 +158,11 @@ std::tuple<Math::Vec4<u8>, Math::Vec4<u8>> ComputeFragmentsColors( | |||
|                     result = std::max(result, 0.0f); | ||||
| 
 | ||||
|                 float flr = std::floor(result * 256.0f); | ||||
|                 index = static_cast<u8>(MathUtil::Clamp(flr, 0.0f, 255.0f)); | ||||
|                 index = static_cast<u8>(std::clamp(flr, 0.0f, 255.0f)); | ||||
|                 delta = result * 256 - index; | ||||
|             } else { | ||||
|                 float flr = std::floor(result * 128.0f); | ||||
|                 s8 signed_index = static_cast<s8>(MathUtil::Clamp(flr, -128.0f, 127.0f)); | ||||
|                 s8 signed_index = static_cast<s8>(std::clamp(flr, -128.0f, 127.0f)); | ||||
|                 delta = result * 128.0f - signed_index; | ||||
|                 index = static_cast<u8>(signed_index); | ||||
|             } | ||||
|  | @ -316,15 +316,15 @@ std::tuple<Math::Vec4<u8>, Math::Vec4<u8>> ComputeFragmentsColors( | |||
| 
 | ||||
|     diffuse_sum += Math::MakeVec(lighting.global_ambient.ToVec3f(), 0.0f); | ||||
| 
 | ||||
|     auto diffuse = Math::MakeVec<float>(MathUtil::Clamp(diffuse_sum.x, 0.0f, 1.0f) * 255, | ||||
|                                         MathUtil::Clamp(diffuse_sum.y, 0.0f, 1.0f) * 255, | ||||
|                                         MathUtil::Clamp(diffuse_sum.z, 0.0f, 1.0f) * 255, | ||||
|                                         MathUtil::Clamp(diffuse_sum.w, 0.0f, 1.0f) * 255) | ||||
|     auto diffuse = Math::MakeVec<float>(std::clamp(diffuse_sum.x, 0.0f, 1.0f) * 255, | ||||
|                                         std::clamp(diffuse_sum.y, 0.0f, 1.0f) * 255, | ||||
|                                         std::clamp(diffuse_sum.z, 0.0f, 1.0f) * 255, | ||||
|                                         std::clamp(diffuse_sum.w, 0.0f, 1.0f) * 255) | ||||
|                        .Cast<u8>(); | ||||
|     auto specular = Math::MakeVec<float>(MathUtil::Clamp(specular_sum.x, 0.0f, 1.0f) * 255, | ||||
|                                          MathUtil::Clamp(specular_sum.y, 0.0f, 1.0f) * 255, | ||||
|                                          MathUtil::Clamp(specular_sum.z, 0.0f, 1.0f) * 255, | ||||
|                                          MathUtil::Clamp(specular_sum.w, 0.0f, 1.0f) * 255) | ||||
|     auto specular = Math::MakeVec<float>(std::clamp(specular_sum.x, 0.0f, 1.0f) * 255, | ||||
|                                          std::clamp(specular_sum.y, 0.0f, 1.0f) * 255, | ||||
|                                          std::clamp(specular_sum.z, 0.0f, 1.0f) * 255, | ||||
|                                          std::clamp(specular_sum.w, 0.0f, 1.0f) * 255) | ||||
|                         .Cast<u8>(); | ||||
|     return std::make_tuple(diffuse, specular); | ||||
| } | ||||
|  |  | |||
|  | @ -11,7 +11,6 @@ | |||
| #include "common/color.h" | ||||
| #include "common/common_types.h" | ||||
| #include "common/logging/log.h" | ||||
| #include "common/math_util.h" | ||||
| #include "common/microprofile.h" | ||||
| #include "common/quaternion.h" | ||||
| #include "common/vector_math.h" | ||||
|  | @ -271,7 +270,7 @@ static void ProcessTriangleInternal(const Vertex& v0, const Vertex& v1, const Ve | |||
|             } | ||||
| 
 | ||||
|             // Clamp the result
 | ||||
|             depth = MathUtil::Clamp(depth, 0.0f, 1.0f); | ||||
|             depth = std::clamp(depth, 0.0f, 1.0f); | ||||
| 
 | ||||
|             // Perspective correct attribute interpolation:
 | ||||
|             // Attribute values cannot be calculated by simple linear interpolation since
 | ||||
|  | @ -645,11 +644,11 @@ static void ProcessTriangleInternal(const Vertex& v0, const Vertex& v1, const Ve | |||
|                 } | ||||
| 
 | ||||
|                 // Generate clamped fog factor from LUT for given fog index
 | ||||
|                 float fog_i = MathUtil::Clamp(floorf(fog_index), 0.0f, 127.0f); | ||||
|                 float fog_i = std::clamp(floorf(fog_index), 0.0f, 127.0f); | ||||
|                 float fog_f = fog_index - fog_i; | ||||
|                 const auto& fog_lut_entry = g_state.fog.lut[static_cast<unsigned int>(fog_i)]; | ||||
|                 float fog_factor = fog_lut_entry.ToFloat() + fog_lut_entry.DiffToFloat() * fog_f; | ||||
|                 fog_factor = MathUtil::Clamp(fog_factor, 0.0f, 1.0f); | ||||
|                 fog_factor = std::clamp(fog_factor, 0.0f, 1.0f); | ||||
| 
 | ||||
|                 // Blend the fog
 | ||||
|                 for (unsigned i = 0; i < 3; i++) { | ||||
|  |  | |||
|  | @ -3,10 +3,8 @@ | |||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #include <algorithm> | ||||
| 
 | ||||
| #include "common/assert.h" | ||||
| #include "common/common_types.h" | ||||
| #include "common/math_util.h" | ||||
| #include "common/vector_math.h" | ||||
| #include "video_core/regs_texturing.h" | ||||
| #include "video_core/swrasterizer/texturing.h" | ||||
|  | @ -148,9 +146,9 @@ Math::Vec3<u8> ColorCombine(TevStageConfig::Operation op, const Math::Vec3<u8> i | |||
|         // (byte) 128 is correct
 | ||||
|         auto result = | ||||
|             input[0].Cast<int>() + input[1].Cast<int>() - Math::MakeVec<int>(128, 128, 128); | ||||
|         result.r() = MathUtil::Clamp<int>(result.r(), 0, 255); | ||||
|         result.g() = MathUtil::Clamp<int>(result.g(), 0, 255); | ||||
|         result.b() = MathUtil::Clamp<int>(result.b(), 0, 255); | ||||
|         result.r() = std::clamp<int>(result.r(), 0, 255); | ||||
|         result.g() = std::clamp<int>(result.g(), 0, 255); | ||||
|         result.b() = std::clamp<int>(result.b(), 0, 255); | ||||
|         return result.Cast<u8>(); | ||||
|     } | ||||
| 
 | ||||
|  | @ -218,7 +216,7 @@ u8 AlphaCombine(TevStageConfig::Operation op, const std::array<u8, 3>& input) { | |||
|     case Operation::AddSigned: { | ||||
|         // TODO(bunnei): Verify that the color conversion from (float) 0.5f to (byte) 128 is correct
 | ||||
|         auto result = static_cast<int>(input[0]) + static_cast<int>(input[1]) - 128; | ||||
|         return static_cast<u8>(MathUtil::Clamp<int>(result, 0, 255)); | ||||
|         return static_cast<u8>(std::clamp<int>(result, 0, 255)); | ||||
|     } | ||||
| 
 | ||||
|     case Operation::Lerp: | ||||
|  |  | |||
|  | @ -2,11 +2,11 @@ | |||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #include <algorithm> | ||||
| #include <array> | ||||
| #include "common/bit_field.h" | ||||
| #include "common/color.h" | ||||
| #include "common/common_types.h" | ||||
| #include "common/math_util.h" | ||||
| #include "common/vector_math.h" | ||||
| #include "video_core/texture/etc1.h" | ||||
| 
 | ||||
|  | @ -110,9 +110,9 @@ union ETC1Tile { | |||
|         if (GetNegationFlag(texel)) | ||||
|             modifier *= -1; | ||||
| 
 | ||||
|         ret.r() = MathUtil::Clamp(ret.r() + modifier, 0, 255); | ||||
|         ret.g() = MathUtil::Clamp(ret.g() + modifier, 0, 255); | ||||
|         ret.b() = MathUtil::Clamp(ret.b() + modifier, 0, 255); | ||||
|         ret.r() = std::clamp(ret.r() + modifier, 0, 255); | ||||
|         ret.g() = std::clamp(ret.g() + modifier, 0, 255); | ||||
|         ret.b() = std::clamp(ret.b() + modifier, 0, 255); | ||||
| 
 | ||||
|         return ret.Cast<u8>(); | ||||
|     } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue