Skip to content

Commit 062d74b

Browse files
committed
Fix ubsan reported errors in rendering
This allows the TPS demo to run without an ubsan reports from any of the rendering code.
1 parent 7f5c469 commit 062d74b

12 files changed

+81
-76
lines changed

drivers/d3d12/rendering_context_driver_d3d12.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ Error RenderingContextDriverD3D12::_initialize_devices() {
184184

185185
Device &device = driver_devices[i];
186186
device.name = desc.Description;
187-
device.vendor = Vendor(desc.VendorId);
187+
device.vendor = desc.VendorId;
188188
device.workarounds = Workarounds();
189189

190190
if (desc.Flags & DXGI_ADAPTER_FLAG_SOFTWARE) {

drivers/metal/rendering_context_driver_metal.mm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ - (void)setShouldMaximizeConcurrentCompilation:(BOOL)v;
5252
}
5353
#endif
5454
device.type = DEVICE_TYPE_INTEGRATED_GPU;
55-
device.vendor = VENDOR_APPLE;
55+
device.vendor = Vendor::VENDOR_APPLE;
5656
device.workarounds = Workarounds();
5757

5858
MetalDeviceProperties props(metal_device);

drivers/vulkan/rendering_context_driver_vulkan.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -843,7 +843,7 @@ Error RenderingContextDriverVulkan::_initialize_devices() {
843843

844844
Device &driver_device = driver_devices[i];
845845
driver_device.name = String::utf8(props.deviceName);
846-
driver_device.vendor = Vendor(props.vendorID);
846+
driver_device.vendor = props.vendorID;
847847
driver_device.type = DeviceType(props.deviceType);
848848
driver_device.workarounds = Workarounds();
849849

@@ -880,7 +880,7 @@ void RenderingContextDriverVulkan::_check_driver_workarounds(const VkPhysicalDev
880880
// This bug was fixed in driver version 512.503.0, so we only enabled it on devices older than this.
881881
//
882882
r_device.workarounds.avoid_compute_after_draw =
883-
r_device.vendor == VENDOR_QUALCOMM &&
883+
r_device.vendor == Vendor::VENDOR_QUALCOMM &&
884884
p_device_properties.deviceID >= 0x6000000 && // Adreno 6xx
885885
p_device_properties.driverVersion < VK_MAKE_VERSION(512, 503, 0) &&
886886
r_device.name.find("Turnip") < 0;

drivers/vulkan/rendering_device_driver_vulkan.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1898,10 +1898,10 @@ RDD::TextureID RenderingDeviceDriverVulkan::texture_create_shared(TextureID p_or
18981898
vkGetPhysicalDeviceFormatProperties(physical_device, RD_TO_VK_FORMAT[p_view.format], &properties);
18991899
const VkFormatFeatureFlags &supported_flags = owner_tex_info->vk_create_info.tiling == VK_IMAGE_TILING_LINEAR ? properties.linearTilingFeatures : properties.optimalTilingFeatures;
19001900
if ((usage_info->usage & VK_IMAGE_USAGE_STORAGE_BIT) && !(supported_flags & VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT)) {
1901-
usage_info->usage &= ~VK_IMAGE_USAGE_STORAGE_BIT;
1901+
usage_info->usage &= ~uint32_t(VK_IMAGE_USAGE_STORAGE_BIT);
19021902
}
19031903
if ((usage_info->usage & VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT) && !(supported_flags & VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT)) {
1904-
usage_info->usage &= ~VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
1904+
usage_info->usage &= ~uint32_t(VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT);
19051905
}
19061906
}
19071907

servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2099,7 +2099,7 @@ void RenderForwardClustered::_render_scene(RenderDataRD *p_render_data, const Co
20992099
}
21002100
}
21012101

2102-
uint32_t opaque_color_pass_flags = using_motion_pass ? (color_pass_flags & ~COLOR_PASS_FLAG_MOTION_VECTORS) : color_pass_flags;
2102+
uint32_t opaque_color_pass_flags = using_motion_pass ? (color_pass_flags & ~uint32_t(COLOR_PASS_FLAG_MOTION_VECTORS)) : color_pass_flags;
21032103
RID opaque_framebuffer = using_motion_pass ? rb_data->get_color_pass_fb(opaque_color_pass_flags) : color_framebuffer;
21042104
RenderListParameters render_list_params(render_list[RENDER_LIST_OPAQUE].elements.ptr(), render_list[RENDER_LIST_OPAQUE].element_info.ptr(), render_list[RENDER_LIST_OPAQUE].elements.size(), reverse_cull, PASS_MODE_COLOR, opaque_color_pass_flags, rb_data.is_null(), p_render_data->directional_light_soft_shadows, rp_uniform_set, get_debug_draw_mode() == RS::VIEWPORT_DEBUG_DRAW_WIREFRAME, Vector2(), p_render_data->scene_data->lod_distance_multiplier, p_render_data->scene_data->screen_mesh_lod_threshold, p_render_data->scene_data->view_count, 0, base_specialization);
21052105
_render_list_with_draw_list(&render_list_params, opaque_framebuffer, RD::DrawFlags(load_color ? RD::DRAW_DEFAULT_ALL : RD::DRAW_CLEAR_COLOR_ALL) | (depth_pre_pass ? RD::DRAW_DEFAULT_ALL : RD::DRAW_CLEAR_DEPTH), c, 0.0f);
@@ -2293,10 +2293,10 @@ void RenderForwardClustered::_render_scene(RenderDataRD *p_render_data, const Co
22932293
_setup_environment(p_render_data, is_reflection_probe, screen_size, p_default_bg_color, false);
22942294

22952295
{
2296-
uint32_t transparent_color_pass_flags = (color_pass_flags | COLOR_PASS_FLAG_TRANSPARENT) & ~(COLOR_PASS_FLAG_SEPARATE_SPECULAR);
2296+
uint32_t transparent_color_pass_flags = (color_pass_flags | uint32_t(COLOR_PASS_FLAG_TRANSPARENT)) & ~uint32_t(COLOR_PASS_FLAG_SEPARATE_SPECULAR);
22972297
if (using_motion_pass) {
22982298
// Motion vectors on transparent draw calls are not required when using the reactive mask.
2299-
transparent_color_pass_flags &= ~(COLOR_PASS_FLAG_MOTION_VECTORS);
2299+
transparent_color_pass_flags &= ~uint32_t(COLOR_PASS_FLAG_MOTION_VECTORS);
23002300
}
23012301

23022302
RID alpha_framebuffer = rb_data.is_valid() ? rb_data->get_color_pass_fb(transparent_color_pass_flags) : color_only_framebuffer;

servers/rendering/renderer_rd/forward_clustered/scene_shader_forward_clustered.cpp

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -222,27 +222,27 @@ RS::ShaderNativeSourceCode SceneShaderForwardClustered::ShaderData::get_native_s
222222
}
223223
}
224224

225-
SceneShaderForwardClustered::ShaderVersion SceneShaderForwardClustered::ShaderData::_get_shader_version(PipelineVersion p_pipeline_version, uint32_t p_color_pass_flags, bool p_ubershader) const {
226-
uint32_t ubershader_base = p_ubershader ? SHADER_VERSION_DEPTH_PASS_WITH_MATERIAL : 0;
225+
uint16_t SceneShaderForwardClustered::ShaderData::_get_shader_version(PipelineVersion p_pipeline_version, uint32_t p_color_pass_flags, bool p_ubershader) const {
226+
uint32_t ubershader_base = p_ubershader ? ShaderVersion::SHADER_VERSION_DEPTH_PASS_WITH_MATERIAL : 0;
227227
switch (p_pipeline_version) {
228228
case PIPELINE_VERSION_DEPTH_PASS:
229-
return ShaderVersion(SHADER_VERSION_DEPTH_PASS + ubershader_base);
229+
return ShaderVersion::SHADER_VERSION_DEPTH_PASS + ubershader_base;
230230
case PIPELINE_VERSION_DEPTH_PASS_DP:
231-
return ShaderVersion(SHADER_VERSION_DEPTH_PASS_DP + ubershader_base);
231+
return ShaderVersion::SHADER_VERSION_DEPTH_PASS_DP + ubershader_base;
232232
case PIPELINE_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS:
233-
return ShaderVersion(SHADER_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS + ubershader_base);
233+
return ShaderVersion::SHADER_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS + ubershader_base;
234234
case PIPELINE_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS_AND_VOXEL_GI:
235-
return ShaderVersion(SHADER_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS_AND_VOXEL_GI + ubershader_base);
235+
return ShaderVersion::SHADER_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS_AND_VOXEL_GI + ubershader_base;
236236
case PIPELINE_VERSION_DEPTH_PASS_MULTIVIEW:
237-
return ShaderVersion(SHADER_VERSION_DEPTH_PASS_MULTIVIEW + ubershader_base);
237+
return ShaderVersion::SHADER_VERSION_DEPTH_PASS_MULTIVIEW + ubershader_base;
238238
case PIPELINE_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS_MULTIVIEW:
239-
return ShaderVersion(SHADER_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS_MULTIVIEW + ubershader_base);
239+
return ShaderVersion::SHADER_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS_MULTIVIEW + ubershader_base;
240240
case PIPELINE_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS_AND_VOXEL_GI_MULTIVIEW:
241-
return ShaderVersion(SHADER_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS_AND_VOXEL_GI_MULTIVIEW + ubershader_base);
241+
return ShaderVersion::SHADER_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS_AND_VOXEL_GI_MULTIVIEW + ubershader_base;
242242
case PIPELINE_VERSION_DEPTH_PASS_WITH_MATERIAL:
243-
return ShaderVersion(SHADER_VERSION_DEPTH_PASS_WITH_MATERIAL + SHADER_VERSION_DEPTH_PASS_WITH_MATERIAL);
243+
return ShaderVersion::SHADER_VERSION_DEPTH_PASS_WITH_MATERIAL + ShaderVersion::SHADER_VERSION_DEPTH_PASS_WITH_MATERIAL;
244244
case PIPELINE_VERSION_DEPTH_PASS_WITH_SDF:
245-
return ShaderVersion(SHADER_VERSION_DEPTH_PASS_WITH_MATERIAL + SHADER_VERSION_DEPTH_PASS_WITH_SDF);
245+
return ShaderVersion::SHADER_VERSION_DEPTH_PASS_WITH_MATERIAL + ShaderVersion::SHADER_VERSION_DEPTH_PASS_WITH_SDF;
246246
case PIPELINE_VERSION_COLOR_PASS: {
247247
int shader_flags = 0;
248248

@@ -266,11 +266,11 @@ SceneShaderForwardClustered::ShaderVersion SceneShaderForwardClustered::ShaderDa
266266
shader_flags |= SHADER_COLOR_PASS_FLAG_MULTIVIEW;
267267
}
268268

269-
return ShaderVersion(SHADER_VERSION_DEPTH_PASS_WITH_MATERIAL + SHADER_VERSION_COLOR_PASS + shader_flags);
269+
return ShaderVersion::SHADER_VERSION_DEPTH_PASS_WITH_MATERIAL + ShaderVersion::SHADER_VERSION_COLOR_PASS + shader_flags;
270270
} break;
271271
default: {
272272
DEV_ASSERT(false && "Unknown pipeline version.");
273-
return ShaderVersion(0);
273+
return 0;
274274
} break;
275275
}
276276
}
@@ -404,7 +404,7 @@ RD::PolygonCullMode SceneShaderForwardClustered::ShaderData::get_cull_mode_from_
404404
return cull_mode_rd_table[p_cull_variant][cull_mode];
405405
}
406406

407-
RID SceneShaderForwardClustered::ShaderData::_get_shader_variant(ShaderVersion p_shader_version) const {
407+
RID SceneShaderForwardClustered::ShaderData::_get_shader_variant(uint16_t p_shader_version) const {
408408
if (version.is_valid()) {
409409
MutexLock lock(SceneShaderForwardClustered::singleton_mutex);
410410
ERR_FAIL_NULL_V(SceneShaderForwardClustered::singleton, RID());
@@ -426,7 +426,7 @@ RID SceneShaderForwardClustered::ShaderData::get_shader_variant(PipelineVersion
426426

427427
uint64_t SceneShaderForwardClustered::ShaderData::get_vertex_input_mask(PipelineVersion p_pipeline_version, uint32_t p_color_pass_flags, bool p_ubershader) {
428428
// Vertex input masks require knowledge of the shader. Since querying the shader can be expensive due to high contention and the necessary mutex, we cache the result instead.
429-
ShaderVersion shader_version = _get_shader_version(p_pipeline_version, p_color_pass_flags, p_ubershader);
429+
uint16_t shader_version = _get_shader_version(p_pipeline_version, p_color_pass_flags, p_ubershader);
430430
uint64_t input_mask = vertex_input_masks[shader_version].load(std::memory_order_relaxed);
431431
if (input_mask == 0) {
432432
RID shader_rid = _get_shader_variant(shader_version);

servers/rendering/renderer_rd/forward_clustered/scene_shader_forward_clustered.h

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -50,18 +50,19 @@ class SceneShaderForwardClustered {
5050
SHADER_GROUP_ADVANCED_MULTIVIEW,
5151
};
5252

53-
enum ShaderVersion {
54-
SHADER_VERSION_DEPTH_PASS,
55-
SHADER_VERSION_DEPTH_PASS_DP,
56-
SHADER_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS,
57-
SHADER_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS_AND_VOXEL_GI,
58-
SHADER_VERSION_DEPTH_PASS_MULTIVIEW,
59-
SHADER_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS_MULTIVIEW,
60-
SHADER_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS_AND_VOXEL_GI_MULTIVIEW,
61-
SHADER_VERSION_DEPTH_PASS_WITH_MATERIAL,
62-
SHADER_VERSION_DEPTH_PASS_WITH_SDF,
63-
SHADER_VERSION_COLOR_PASS,
64-
SHADER_VERSION_MAX
53+
// Not an enum because these values are constants that are processed as numbers
54+
// to arrive at a unique version for a particular shader.
55+
struct ShaderVersion {
56+
constexpr static uint16_t SHADER_VERSION_DEPTH_PASS = 0;
57+
constexpr static uint16_t SHADER_VERSION_DEPTH_PASS_DP = 1;
58+
constexpr static uint16_t SHADER_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS = 2;
59+
constexpr static uint16_t SHADER_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS_AND_VOXEL_GI = 3;
60+
constexpr static uint16_t SHADER_VERSION_DEPTH_PASS_MULTIVIEW = 4;
61+
constexpr static uint16_t SHADER_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS_MULTIVIEW = 5;
62+
constexpr static uint16_t SHADER_VERSION_DEPTH_PASS_WITH_NORMAL_AND_ROUGHNESS_AND_VOXEL_GI_MULTIVIEW = 6;
63+
constexpr static uint16_t SHADER_VERSION_DEPTH_PASS_WITH_MATERIAL = 7;
64+
constexpr static uint16_t SHADER_VERSION_DEPTH_PASS_WITH_SDF = 8;
65+
constexpr static uint16_t SHADER_VERSION_COLOR_PASS = 9;
6566
};
6667

6768
enum ShaderColorPassFlags {
@@ -205,7 +206,7 @@ class SceneShaderForwardClustered {
205206

206207
RID version;
207208

208-
static const uint32_t VERTEX_INPUT_MASKS_SIZE = SHADER_VERSION_DEPTH_PASS_WITH_MATERIAL + SHADER_VERSION_COLOR_PASS + SHADER_COLOR_PASS_FLAG_COUNT;
209+
static const uint32_t VERTEX_INPUT_MASKS_SIZE = ShaderVersion::SHADER_VERSION_DEPTH_PASS_WITH_MATERIAL + ShaderVersion::SHADER_VERSION_COLOR_PASS + SHADER_COLOR_PASS_FLAG_COUNT;
209210
std::atomic<uint64_t> vertex_input_masks[VERTEX_INPUT_MASKS_SIZE] = {};
210211

211212
Vector<ShaderCompiler::GeneratedCode::Texture> texture_uniforms;
@@ -281,8 +282,8 @@ class SceneShaderForwardClustered {
281282
virtual bool is_animated() const;
282283
virtual bool casts_shadows() const;
283284
virtual RS::ShaderNativeSourceCode get_native_source_code() const;
284-
ShaderVersion _get_shader_version(PipelineVersion p_pipeline_version, uint32_t p_color_pass_flags, bool p_ubershader) const;
285-
RID _get_shader_variant(ShaderVersion p_shader_version) const;
285+
uint16_t _get_shader_version(PipelineVersion p_pipeline_version, uint32_t p_color_pass_flags, bool p_ubershader) const;
286+
RID _get_shader_variant(uint16_t p_shader_version) const;
286287
void _clear_vertex_input_mask_cache();
287288
RID get_shader_variant(PipelineVersion p_pipeline_version, uint32_t p_color_pass_flags, bool p_ubershader) const;
288289
uint64_t get_vertex_input_mask(PipelineVersion p_pipeline_version, uint32_t p_color_pass_flags, bool p_ubershader);

servers/rendering/renderer_rd/renderer_canvas_render_rd.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ class RendererCanvasRenderRD : public RendererCanvasRender {
138138
uint32_t hash() const {
139139
uint32_t h = hash_murmur3_one_32(variant);
140140
h = hash_murmur3_one_32(framebuffer_format_id, h);
141-
h = hash_murmur3_one_32(vertex_format_id, h);
141+
h = hash_murmur3_one_64((uint64_t)vertex_format_id, h);
142142
h = hash_murmur3_one_32(render_primitive, h);
143143
h = hash_murmur3_one_32(shader_specialization.packed_0, h);
144144
h = hash_murmur3_one_32(lcd_blend, h);

servers/rendering/renderer_scene_cull.cpp

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -359,7 +359,7 @@ void RendererSceneCull::_instance_unpair(Instance *p_A, Instance *p_B) {
359359

360360
if (geom->lightmap_captures.is_empty() && A->scenario && A->array_index >= 0) {
361361
InstanceData &idata = A->scenario->instance_data[A->array_index];
362-
idata.flags &= ~uint32_t(InstanceData::FLAG_LIGHTMAP_CAPTURE);
362+
idata.flags &= ~InstanceData::FLAG_LIGHTMAP_CAPTURE;
363363
}
364364

365365
lightmap_data->geometries.erase(A);
@@ -532,7 +532,7 @@ void RendererSceneCull::_instance_update_mesh_instance(Instance *p_instance) con
532532
if (p_instance->mesh_instance.is_valid()) {
533533
idata.flags |= InstanceData::FLAG_USES_MESH_INSTANCE;
534534
} else {
535-
idata.flags &= ~uint32_t(InstanceData::FLAG_USES_MESH_INSTANCE);
535+
idata.flags &= ~InstanceData::FLAG_USES_MESH_INSTANCE;
536536
}
537537
}
538538
}
@@ -1232,7 +1232,7 @@ void RendererSceneCull::instance_set_ignore_culling(RID p_instance, bool p_enabl
12321232
if (instance->ignore_all_culling) {
12331233
idata.flags |= InstanceData::FLAG_IGNORE_ALL_CULLING;
12341234
} else {
1235-
idata.flags &= ~uint32_t(InstanceData::FLAG_IGNORE_ALL_CULLING);
1235+
idata.flags &= ~InstanceData::FLAG_IGNORE_ALL_CULLING;
12361236
}
12371237
}
12381238
}
@@ -1324,7 +1324,7 @@ void RendererSceneCull::instance_geometry_set_flag(RID p_instance, RS::InstanceF
13241324
if (instance->baked_light) {
13251325
idata.flags |= InstanceData::FLAG_USES_BAKED_LIGHT;
13261326
} else {
1327-
idata.flags &= ~uint32_t(InstanceData::FLAG_USES_BAKED_LIGHT);
1327+
idata.flags &= ~InstanceData::FLAG_USES_BAKED_LIGHT;
13281328
}
13291329
}
13301330

@@ -1364,7 +1364,7 @@ void RendererSceneCull::instance_geometry_set_flag(RID p_instance, RS::InstanceF
13641364
if (instance->redraw_if_visible) {
13651365
idata.flags |= InstanceData::FLAG_REDRAW_IF_VISIBLE;
13661366
} else {
1367-
idata.flags &= ~uint32_t(InstanceData::FLAG_REDRAW_IF_VISIBLE);
1367+
idata.flags &= ~InstanceData::FLAG_REDRAW_IF_VISIBLE;
13681368
}
13691369
}
13701370

@@ -1377,7 +1377,7 @@ void RendererSceneCull::instance_geometry_set_flag(RID p_instance, RS::InstanceF
13771377
if (instance->ignore_occlusion_culling) {
13781378
idata.flags |= InstanceData::FLAG_IGNORE_OCCLUSION_CULLING;
13791379
} else {
1380-
idata.flags &= ~uint32_t(InstanceData::FLAG_IGNORE_OCCLUSION_CULLING);
1380+
idata.flags &= ~InstanceData::FLAG_IGNORE_OCCLUSION_CULLING;
13811381
}
13821382
}
13831383
} break;
@@ -1398,13 +1398,13 @@ void RendererSceneCull::instance_geometry_set_cast_shadows_setting(RID p_instanc
13981398
if (instance->cast_shadows != RS::SHADOW_CASTING_SETTING_OFF) {
13991399
idata.flags |= InstanceData::FLAG_CAST_SHADOWS;
14001400
} else {
1401-
idata.flags &= ~uint32_t(InstanceData::FLAG_CAST_SHADOWS);
1401+
idata.flags &= ~InstanceData::FLAG_CAST_SHADOWS;
14021402
}
14031403

14041404
if (instance->cast_shadows == RS::SHADOW_CASTING_SETTING_SHADOWS_ONLY) {
14051405
idata.flags |= InstanceData::FLAG_CAST_SHADOWS_ONLY;
14061406
} else {
1407-
idata.flags &= ~uint32_t(InstanceData::FLAG_CAST_SHADOWS_ONLY);
1407+
idata.flags &= ~InstanceData::FLAG_CAST_SHADOWS_ONLY;
14081408
}
14091409
}
14101410

@@ -2967,7 +2967,7 @@ void RendererSceneCull::_scene_cull(CullData &cull_data, InstanceCullResult &cul
29672967
}
29682968
cull_data.cull->lock.unlock();
29692969

2970-
idata.flags &= ~uint32_t(InstanceData::FLAG_REFLECTION_PROBE_DIRTY);
2970+
idata.flags &= ~InstanceData::FLAG_REFLECTION_PROBE_DIRTY;
29712971
}
29722972

29732973
if (RSG::light_storage->reflection_probe_instance_has_reflection(RID::from_uint64(idata.instance_data_rid))) {
@@ -3056,7 +3056,7 @@ void RendererSceneCull::_scene_cull(CullData &cull_data, InstanceCullResult &cul
30563056

30573057
ERR_FAIL_NULL(geom->geometry_instance);
30583058
geom->geometry_instance->pair_light_instances(instance_pair_buffer, idx);
3059-
idata.flags &= ~uint32_t(InstanceData::FLAG_GEOM_LIGHTING_DIRTY);
3059+
idata.flags &= ~InstanceData::FLAG_GEOM_LIGHTING_DIRTY;
30603060
}
30613061

30623062
if (idata.flags & InstanceData::FLAG_GEOM_PROJECTOR_SOFTSHADOW_DIRTY) {
@@ -3066,7 +3066,7 @@ void RendererSceneCull::_scene_cull(CullData &cull_data, InstanceCullResult &cul
30663066
cull_data.cull->lock.lock();
30673067
geom->geometry_instance->set_softshadow_projector_pairing(geom->softshadow_count > 0, geom->projector_count > 0);
30683068
cull_data.cull->lock.unlock();
3069-
idata.flags &= ~uint32_t(InstanceData::FLAG_GEOM_PROJECTOR_SOFTSHADOW_DIRTY);
3069+
idata.flags &= ~InstanceData::FLAG_GEOM_PROJECTOR_SOFTSHADOW_DIRTY;
30703070
}
30713071

30723072
if (geometry_instance_pair_mask & (1 << RS::INSTANCE_REFLECTION_PROBE) && (idata.flags & InstanceData::FLAG_GEOM_REFLECTION_DIRTY)) {
@@ -3084,7 +3084,7 @@ void RendererSceneCull::_scene_cull(CullData &cull_data, InstanceCullResult &cul
30843084

30853085
ERR_FAIL_NULL(geom->geometry_instance);
30863086
geom->geometry_instance->pair_reflection_probe_instances(instance_pair_buffer, idx);
3087-
idata.flags &= ~uint32_t(InstanceData::FLAG_GEOM_REFLECTION_DIRTY);
3087+
idata.flags &= ~InstanceData::FLAG_GEOM_REFLECTION_DIRTY;
30883088
}
30893089

30903090
if (geometry_instance_pair_mask & (1 << RS::INSTANCE_DECAL) && (idata.flags & InstanceData::FLAG_GEOM_DECAL_DIRTY)) {
@@ -3103,7 +3103,7 @@ void RendererSceneCull::_scene_cull(CullData &cull_data, InstanceCullResult &cul
31033103
ERR_FAIL_NULL(geom->geometry_instance);
31043104
geom->geometry_instance->pair_decal_instances(instance_pair_buffer, idx);
31053105

3106-
idata.flags &= ~uint32_t(InstanceData::FLAG_GEOM_DECAL_DIRTY);
3106+
idata.flags &= ~InstanceData::FLAG_GEOM_DECAL_DIRTY;
31073107
}
31083108

31093109
if (idata.flags & InstanceData::FLAG_GEOM_VOXEL_GI_DIRTY) {
@@ -3121,7 +3121,7 @@ void RendererSceneCull::_scene_cull(CullData &cull_data, InstanceCullResult &cul
31213121
ERR_FAIL_NULL(geom->geometry_instance);
31223122
geom->geometry_instance->pair_voxel_gi_instances(instance_pair_buffer, idx);
31233123

3124-
idata.flags &= ~uint32_t(InstanceData::FLAG_GEOM_VOXEL_GI_DIRTY);
3124+
idata.flags &= ~InstanceData::FLAG_GEOM_VOXEL_GI_DIRTY;
31253125
}
31263126

31273127
if ((idata.flags & InstanceData::FLAG_LIGHTMAP_CAPTURE) && idata.instance->last_frame_pass != frame_number && !idata.instance->lightmap_target_sh.is_empty() && !idata.instance->lightmap_sh.is_empty()) {
@@ -3981,7 +3981,7 @@ void RendererSceneCull::render_probes() {
39813981
ERR_FAIL_NULL(geom->geometry_instance);
39823982
geom->geometry_instance->pair_voxel_gi_instances(instance_pair_buffer, idx);
39833983

3984-
ins->scenario->instance_data[ins->array_index].flags &= ~uint32_t(InstanceData::FLAG_GEOM_VOXEL_GI_DIRTY);
3984+
ins->scenario->instance_data[ins->array_index].flags &= ~InstanceData::FLAG_GEOM_VOXEL_GI_DIRTY;
39853985
}
39863986

39873987
ERR_FAIL_NULL(geom->geometry_instance);

servers/rendering/renderer_scene_cull.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,7 @@ class RendererSceneCull : public RenderingMethod {
259259
struct InstanceData {
260260
// Store instance pointer as well as common instance processing information,
261261
// to make processing more cache friendly.
262-
enum Flags {
262+
enum Flags : uint32_t {
263263
FLAG_BASE_TYPE_MASK = 0xFF,
264264
FLAG_CAST_SHADOWS = (1 << 8),
265265
FLAG_CAST_SHADOWS_ONLY = (1 << 9),

0 commit comments

Comments
 (0)