mirror of
https://github.com/godotengine/godot
synced 2024-09-05 14:08:33 +00:00
Change some math macros to constexpr
Changes `MAX`, `MIN`, `ABS`, `CLAMP` and `SIGN`.
This commit is contained in:
parent
922348f4c0
commit
39d429e497
|
@ -1465,8 +1465,8 @@ template <class Component, int CC, bool renormalize,
|
|||
void (*renormalize_func)(Component *)>
|
||||
static void _generate_po2_mipmap(const Component *p_src, Component *p_dst, uint32_t p_width, uint32_t p_height) {
|
||||
//fast power of 2 mipmap generation
|
||||
uint32_t dst_w = MAX(p_width >> 1, 1);
|
||||
uint32_t dst_h = MAX(p_height >> 1, 1);
|
||||
uint32_t dst_w = MAX(p_width >> 1, 1u);
|
||||
uint32_t dst_h = MAX(p_height >> 1, 1u);
|
||||
|
||||
int right_step = (p_width == 1) ? 0 : CC;
|
||||
int down_step = (p_height == 1) ? 0 : (p_width * CC);
|
||||
|
|
|
@ -145,7 +145,7 @@ private:
|
|||
uint32_t old_capacity = capacity;
|
||||
|
||||
// Capacity can't be 0.
|
||||
capacity = MAX(1, p_new_capacity);
|
||||
capacity = MAX(1u, p_new_capacity);
|
||||
|
||||
TKey *old_keys = keys;
|
||||
TValue *old_values = values;
|
||||
|
@ -367,7 +367,7 @@ public:
|
|||
|
||||
OAHashMap(uint32_t p_initial_capacity = 64) {
|
||||
// Capacity can't be 0.
|
||||
capacity = MAX(1, p_initial_capacity);
|
||||
capacity = MAX(1u, p_initial_capacity);
|
||||
|
||||
keys = static_cast<TKey *>(Memory::alloc_static(sizeof(TKey) * capacity));
|
||||
values = static_cast<TValue *>(Memory::alloc_static(sizeof(TValue) * capacity));
|
||||
|
|
|
@ -89,34 +89,43 @@
|
|||
#undef ERROR // override (really stupid) wingdi.h standard definition
|
||||
#undef DELETE // override (another really stupid) winnt.h standard definition
|
||||
#undef MessageBox // override winuser.h standard definition
|
||||
#undef MIN // override standard definition
|
||||
#undef MAX // override standard definition
|
||||
#undef CLAMP // override standard definition
|
||||
#undef Error
|
||||
#undef OK
|
||||
#undef CONNECT_DEFERRED // override from Windows SDK, clashes with Object enum
|
||||
#endif
|
||||
|
||||
// Make room for our constexpr's below by overriding potential system-specific macros.
|
||||
#undef ABS
|
||||
#undef SIGN
|
||||
#undef MIN
|
||||
#undef MAX
|
||||
#undef CLAMP
|
||||
|
||||
// Generic ABS function, for math uses please use Math::abs.
|
||||
#ifndef ABS
|
||||
#define ABS(m_v) (((m_v) < 0) ? (-(m_v)) : (m_v))
|
||||
#endif
|
||||
template <typename T>
|
||||
constexpr T ABS(T m_v) {
|
||||
return m_v < 0 ? -m_v : m_v;
|
||||
}
|
||||
|
||||
#ifndef SIGN
|
||||
#define SIGN(m_v) (((m_v) == 0) ? (0.0f) : (((m_v) < 0) ? (-1.0f) : (+1.0f)))
|
||||
#endif
|
||||
template <typename T>
|
||||
constexpr const T SIGN(const T m_v) {
|
||||
return m_v == 0 ? 0.0f : (m_v < 0 ? -1.0f : +1.0f);
|
||||
}
|
||||
|
||||
#ifndef MIN
|
||||
#define MIN(m_a, m_b) (((m_a) < (m_b)) ? (m_a) : (m_b))
|
||||
#endif
|
||||
template <typename T, typename T2>
|
||||
constexpr auto MIN(const T m_a, const T2 m_b) {
|
||||
return m_a < m_b ? m_a : m_b;
|
||||
}
|
||||
|
||||
#ifndef MAX
|
||||
#define MAX(m_a, m_b) (((m_a) > (m_b)) ? (m_a) : (m_b))
|
||||
#endif
|
||||
template <typename T, typename T2>
|
||||
constexpr auto MAX(const T m_a, const T2 m_b) {
|
||||
return m_a > m_b ? m_a : m_b;
|
||||
}
|
||||
|
||||
#ifndef CLAMP
|
||||
#define CLAMP(m_a, m_min, m_max) (((m_a) < (m_min)) ? (m_min) : (((m_a) > (m_max)) ? m_max : m_a))
|
||||
#endif
|
||||
template <typename T, typename T2, typename T3>
|
||||
constexpr auto CLAMP(const T m_a, const T2 m_min, const T3 m_max) {
|
||||
return m_a < m_min ? m_min : (m_a > m_max ? m_max : m_a);
|
||||
}
|
||||
|
||||
// Generic swap template.
|
||||
#ifndef SWAP
|
||||
|
|
|
@ -605,7 +605,7 @@ void RasterizerCanvasGLES3::_render_item(RID p_render_target, const Item *p_item
|
|||
_bind_canvas_texture(RID(), current_filter, current_repeat, r_index, last_texture, texpixel_size);
|
||||
state.canvas_shader.version_bind_shader(state.current_shader_version, CanvasShaderGLES3::MODE_PRIMITIVE);
|
||||
|
||||
for (uint32_t j = 0; j < MIN(3, primitive->point_count); j++) {
|
||||
for (uint32_t j = 0; j < MIN(3u, primitive->point_count); j++) {
|
||||
state.instance_data_array[r_index].points[j * 2 + 0] = primitive->points[j].x;
|
||||
state.instance_data_array[r_index].points[j * 2 + 1] = primitive->points[j].y;
|
||||
state.instance_data_array[r_index].uvs[j * 2 + 0] = primitive->uvs[j].x;
|
||||
|
|
|
@ -1176,7 +1176,7 @@ uint32_t RenderingDeviceVulkan::get_image_format_required_size(DataFormat p_form
|
|||
}
|
||||
w = MAX(blockw, w >> 1);
|
||||
h = MAX(blockh, h >> 1);
|
||||
d = MAX(1, d >> 1);
|
||||
d = MAX(1u, d >> 1);
|
||||
}
|
||||
|
||||
return size;
|
||||
|
@ -1184,20 +1184,20 @@ uint32_t RenderingDeviceVulkan::get_image_format_required_size(DataFormat p_form
|
|||
|
||||
uint32_t RenderingDeviceVulkan::get_image_required_mipmaps(uint32_t p_width, uint32_t p_height, uint32_t p_depth) {
|
||||
//formats and block size don't really matter here since they can all go down to 1px (even if block is larger)
|
||||
int w = p_width;
|
||||
int h = p_height;
|
||||
int d = p_depth;
|
||||
uint32_t w = p_width;
|
||||
uint32_t h = p_height;
|
||||
uint32_t d = p_depth;
|
||||
|
||||
int mipmaps = 1;
|
||||
uint32_t mipmaps = 1;
|
||||
|
||||
while (true) {
|
||||
if (w == 1 && h == 1 && d == 1) {
|
||||
break;
|
||||
}
|
||||
|
||||
w = MAX(1, w >> 1);
|
||||
h = MAX(1, h >> 1);
|
||||
d = MAX(1, d >> 1);
|
||||
w = MAX(1u, w >> 1);
|
||||
h = MAX(1u, h >> 1);
|
||||
d = MAX(1u, d >> 1);
|
||||
|
||||
mipmaps++;
|
||||
}
|
||||
|
@ -2556,8 +2556,8 @@ Error RenderingDeviceVulkan::_texture_update(RID p_texture, uint32_t p_layer, co
|
|||
}
|
||||
|
||||
mipmap_offset = image_total;
|
||||
logic_width = MAX(1, logic_width >> 1);
|
||||
logic_height = MAX(1, logic_height >> 1);
|
||||
logic_width = MAX(1u, logic_width >> 1);
|
||||
logic_height = MAX(1u, logic_height >> 1);
|
||||
}
|
||||
|
||||
//barrier to restore layout
|
||||
|
@ -2755,9 +2755,9 @@ Vector<uint8_t> RenderingDeviceVulkan::texture_get_data(RID p_texture, uint32_t
|
|||
|
||||
vkCmdCopyImageToBuffer(command_buffer, tex->image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, tmp_buffer.buffer, 1, &buffer_image_copy);
|
||||
|
||||
computed_w = MAX(1, computed_w >> 1);
|
||||
computed_h = MAX(1, computed_h >> 1);
|
||||
computed_d = MAX(1, computed_d >> 1);
|
||||
computed_w = MAX(1u, computed_w >> 1);
|
||||
computed_h = MAX(1u, computed_h >> 1);
|
||||
computed_d = MAX(1u, computed_d >> 1);
|
||||
offset += size;
|
||||
}
|
||||
|
||||
|
@ -9050,10 +9050,10 @@ void RenderingDeviceVulkan::initialize(VulkanContext *p_context, bool p_local_de
|
|||
// Note: If adding new project settings here, also duplicate their definition in
|
||||
// rendering_server.cpp for headless doctool.
|
||||
staging_buffer_block_size = GLOBAL_DEF("rendering/vulkan/staging_buffer/block_size_kb", 256);
|
||||
staging_buffer_block_size = MAX(4, staging_buffer_block_size);
|
||||
staging_buffer_block_size = MAX(4u, staging_buffer_block_size);
|
||||
staging_buffer_block_size *= 1024; //kb -> bytes
|
||||
staging_buffer_max_size = GLOBAL_DEF("rendering/vulkan/staging_buffer/max_size_mb", 128);
|
||||
staging_buffer_max_size = MAX(1, staging_buffer_max_size);
|
||||
staging_buffer_max_size = MAX(1u, staging_buffer_max_size);
|
||||
staging_buffer_max_size *= 1024 * 1024;
|
||||
|
||||
if (staging_buffer_max_size < staging_buffer_block_size * 4) {
|
||||
|
|
|
@ -67,7 +67,7 @@ void EditorVisualProfiler::add_frame_metric(const Metric &p_metric) {
|
|||
|
||||
updating_frame = true;
|
||||
cursor_metric_edit->set_max(frame_metrics[last_metric].frame_number);
|
||||
cursor_metric_edit->set_min(MAX(frame_metrics[last_metric].frame_number - frame_metrics.size(), 0));
|
||||
cursor_metric_edit->set_min(MAX(frame_metrics[last_metric].frame_number - frame_metrics.size(), 0u));
|
||||
|
||||
if (!seeking) {
|
||||
cursor_metric_edit->set_value(frame_metrics[last_metric].frame_number);
|
||||
|
|
|
@ -60,12 +60,12 @@
|
|||
|
||||
// Min and Max are power of two in order to play nicely with successive increment.
|
||||
// That way, we can naturally reach a 100% zoom from boundaries.
|
||||
#define MIN_ZOOM 1. / 128
|
||||
#define MAX_ZOOM 128
|
||||
constexpr real_t MIN_ZOOM = 1. / 128;
|
||||
constexpr real_t MAX_ZOOM = 128;
|
||||
|
||||
#define RULER_WIDTH (15 * EDSCALE)
|
||||
#define SCALE_HANDLE_DISTANCE 25
|
||||
#define MOVE_HANDLE_DISTANCE 25
|
||||
constexpr real_t SCALE_HANDLE_DISTANCE = 25;
|
||||
constexpr real_t MOVE_HANDLE_DISTANCE = 25;
|
||||
|
||||
class SnapDialog : public ConfirmationDialog {
|
||||
GDCLASS(SnapDialog, ConfirmationDialog);
|
||||
|
|
|
@ -56,31 +56,31 @@
|
|||
#include "scene/resources/packed_scene.h"
|
||||
#include "scene/resources/surface_tool.h"
|
||||
|
||||
#define DISTANCE_DEFAULT 4
|
||||
constexpr real_t DISTANCE_DEFAULT = 4;
|
||||
|
||||
#define GIZMO_ARROW_SIZE 0.35
|
||||
#define GIZMO_RING_HALF_WIDTH 0.1
|
||||
#define GIZMO_PLANE_SIZE 0.2
|
||||
#define GIZMO_PLANE_DST 0.3
|
||||
#define GIZMO_CIRCLE_SIZE 1.1
|
||||
#define GIZMO_SCALE_OFFSET (GIZMO_CIRCLE_SIZE + 0.3)
|
||||
#define GIZMO_ARROW_OFFSET (GIZMO_CIRCLE_SIZE + 0.3)
|
||||
constexpr real_t GIZMO_ARROW_SIZE = 0.35;
|
||||
constexpr real_t GIZMO_RING_HALF_WIDTH = 0.1;
|
||||
constexpr real_t GIZMO_PLANE_SIZE = 0.2;
|
||||
constexpr real_t GIZMO_PLANE_DST = 0.3;
|
||||
constexpr real_t GIZMO_CIRCLE_SIZE = 1.1;
|
||||
constexpr real_t GIZMO_SCALE_OFFSET = GIZMO_CIRCLE_SIZE + 0.3;
|
||||
constexpr real_t GIZMO_ARROW_OFFSET = GIZMO_CIRCLE_SIZE + 0.3;
|
||||
|
||||
#define ZOOM_FREELOOK_MIN 0.01
|
||||
#define ZOOM_FREELOOK_MULTIPLIER 1.08
|
||||
#define ZOOM_FREELOOK_INDICATOR_DELAY_S 1.5
|
||||
constexpr real_t ZOOM_FREELOOK_MIN = 0.01;
|
||||
constexpr real_t ZOOM_FREELOOK_MULTIPLIER = 1.08;
|
||||
constexpr real_t ZOOM_FREELOOK_INDICATOR_DELAY_S = 1.5;
|
||||
|
||||
#ifdef REAL_T_IS_DOUBLE
|
||||
#define ZOOM_FREELOOK_MAX 1'000'000'000'000
|
||||
constexpr double ZOOM_FREELOOK_MAX = 1'000'000'000'000;
|
||||
#else
|
||||
#define ZOOM_FREELOOK_MAX 10'000
|
||||
constexpr float ZOOM_FREELOOK_MAX = 10'000;
|
||||
#endif
|
||||
|
||||
#define MIN_Z 0.01
|
||||
#define MAX_Z 1000000.0
|
||||
constexpr real_t MIN_Z = 0.01;
|
||||
constexpr real_t MAX_Z = 1000000.0;
|
||||
|
||||
#define MIN_FOV 0.01
|
||||
#define MAX_FOV 179
|
||||
constexpr real_t MIN_FOV = 0.01;
|
||||
constexpr real_t MAX_FOV = 179;
|
||||
|
||||
void ViewportRotationControl::_notification(int p_what) {
|
||||
switch (p_what) {
|
||||
|
|
|
@ -225,8 +225,8 @@ RES ResourceFormatDDS::load(const String &p_path, const String &p_original_path,
|
|||
ERR_FAIL_COND_V(!(flags & DDSD_LINEARSIZE), RES());
|
||||
|
||||
for (uint32_t i = 1; i < mipmaps; i++) {
|
||||
w = MAX(1, w >> 1);
|
||||
h = MAX(1, h >> 1);
|
||||
w = MAX(1u, w >> 1);
|
||||
h = MAX(1u, h >> 1);
|
||||
uint32_t bsize = MAX(info.divisor, w) / info.divisor * MAX(info.divisor, h) / info.divisor * info.block_size;
|
||||
//printf("%i x %i - block: %i\n",w,h,bsize);
|
||||
size += bsize;
|
||||
|
|
|
@ -1244,7 +1244,7 @@ LightmapperRD::BakeError LightmapperRD::bake(BakeQuality p_quality, bool p_use_d
|
|||
} break;
|
||||
}
|
||||
|
||||
push_constant.ray_count = CLAMP(push_constant.ray_count, 16, 8192);
|
||||
push_constant.ray_count = CLAMP(push_constant.ray_count, 16u, 8192u);
|
||||
|
||||
int max_region_size = nearest_power_of_2_templated(int(GLOBAL_GET("rendering/lightmapping/bake_performance/region_size")));
|
||||
int max_rays = GLOBAL_GET("rendering/lightmapping/bake_performance/max_rays_per_pass");
|
||||
|
@ -1375,7 +1375,7 @@ LightmapperRD::BakeError LightmapperRD::bake(BakeQuality p_quality, bool p_use_d
|
|||
}
|
||||
|
||||
push_constant.atlas_size[0] = probe_positions.size();
|
||||
push_constant.ray_count = CLAMP(push_constant.ray_count, 16, 8192);
|
||||
push_constant.ray_count = CLAMP(push_constant.ray_count, 16u, 8192u);
|
||||
|
||||
int max_rays = GLOBAL_GET("rendering/lightmapping/bake_performance/max_rays_per_probe_pass");
|
||||
int ray_iterations = (push_constant.ray_count - 1) / max_rays + 1;
|
||||
|
|
|
@ -872,7 +872,7 @@ Vector<uint8_t> Voxelizer::get_sdf_3d_image() const {
|
|||
if (d == 0) {
|
||||
w[i] = 0;
|
||||
} else {
|
||||
w[i] = MIN(d, 254) + 1;
|
||||
w[i] = MIN(d, 254u) + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -694,9 +694,9 @@ void RendererCanvasRenderRD::_render_item(RD::DrawListID p_draw_list, RID p_rend
|
|||
|
||||
_bind_canvas_texture(p_draw_list, RID(), current_filter, current_repeat, last_texture, push_constant, texpixel_size);
|
||||
|
||||
RD::get_singleton()->draw_list_bind_index_array(p_draw_list, primitive_arrays.index_array[MIN(3, primitive->point_count) - 1]);
|
||||
RD::get_singleton()->draw_list_bind_index_array(p_draw_list, primitive_arrays.index_array[MIN(3u, primitive->point_count) - 1]);
|
||||
|
||||
for (uint32_t j = 0; j < MIN(3, primitive->point_count); j++) {
|
||||
for (uint32_t j = 0; j < MIN(3u, primitive->point_count); j++) {
|
||||
push_constant.points[j * 2 + 0] = primitive->points[j].x;
|
||||
push_constant.points[j * 2 + 1] = primitive->points[j].y;
|
||||
push_constant.uvs[j * 2 + 0] = primitive->uvs[j].x;
|
||||
|
|
|
@ -1666,8 +1666,8 @@ void RendererSceneRenderRD::_allocate_blur_textures(RenderBuffers *rb) {
|
|||
|
||||
if (i == 1) {
|
||||
// next 2 are half size
|
||||
tf.width = MAX(1, tf.width >> 1);
|
||||
tf.height = MAX(1, tf.height >> 1);
|
||||
tf.width = MAX(1u, tf.width >> 1);
|
||||
tf.height = MAX(1u, tf.height >> 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -362,8 +362,8 @@ void RendererSceneSkyRD::ReflectionData::update_reflection_data(RendererStorageR
|
|||
|
||||
layer.views.write[j] = RD::get_singleton()->texture_create_shared_from_slice(RD::TextureView(), p_base_cube, p_base_layer + i * 6, j, 1, RD::TEXTURE_SLICE_CUBEMAP);
|
||||
|
||||
mmw = MAX(1, mmw >> 1);
|
||||
mmh = MAX(1, mmh >> 1);
|
||||
mmw = MAX(1u, mmw >> 1);
|
||||
mmh = MAX(1u, mmh >> 1);
|
||||
}
|
||||
|
||||
layers.push_back(layer);
|
||||
|
@ -390,8 +390,8 @@ void RendererSceneSkyRD::ReflectionData::update_reflection_data(RendererStorageR
|
|||
|
||||
layer.views.write[j] = RD::get_singleton()->texture_create_shared_from_slice(RD::TextureView(), p_base_cube, p_base_layer, j, 1, RD::TEXTURE_SLICE_CUBEMAP);
|
||||
|
||||
mmw = MAX(1, mmw >> 1);
|
||||
mmh = MAX(1, mmh >> 1);
|
||||
mmw = MAX(1u, mmw >> 1);
|
||||
mmh = MAX(1u, mmh >> 1);
|
||||
}
|
||||
|
||||
layers.push_back(layer);
|
||||
|
@ -432,8 +432,8 @@ void RendererSceneSkyRD::ReflectionData::update_reflection_data(RendererStorageR
|
|||
}
|
||||
}
|
||||
|
||||
mmw = MAX(1, mmw >> 1);
|
||||
mmh = MAX(1, mmh >> 1);
|
||||
mmw = MAX(1u, mmw >> 1);
|
||||
mmh = MAX(1u, mmh >> 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9510,8 +9510,7 @@ RendererStorageRD::RendererStorageRD() {
|
|||
|
||||
static_assert(sizeof(GlobalVariables::Value) == 16);
|
||||
|
||||
global_variables.buffer_size = GLOBAL_GET("rendering/limits/global_shader_variables/buffer_size");
|
||||
global_variables.buffer_size = MAX(4096, global_variables.buffer_size);
|
||||
global_variables.buffer_size = MAX(4096, (int)GLOBAL_GET("rendering/limits/global_shader_variables/buffer_size"));
|
||||
global_variables.buffer_values = memnew_arr(GlobalVariables::Value, global_variables.buffer_size);
|
||||
memset(global_variables.buffer_values, 0, sizeof(GlobalVariables::Value) * global_variables.buffer_size);
|
||||
global_variables.buffer_usage = memnew_arr(GlobalVariables::ValueUsage, global_variables.buffer_size);
|
||||
|
|
Loading…
Reference in a new issue