Skip to content

Commit ffe53cb

Browse files
committed
Merge pull request #100374 from hpvb/fix-rendering-ubsan
Fix ubsan reported errors in rendering
2 parents 68559c4 + 062d74b commit ffe53cb

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

@@ -2979,7 +2979,7 @@ void RendererSceneCull::_scene_cull(CullData &cull_data, InstanceCullResult &cul
29792979
}
29802980
cull_data.cull->lock.unlock();
29812981

2982-
idata.flags &= ~uint32_t(InstanceData::FLAG_REFLECTION_PROBE_DIRTY);
2982+
idata.flags &= ~InstanceData::FLAG_REFLECTION_PROBE_DIRTY;
29832983
}
29842984

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

30693069
ERR_FAIL_NULL(geom->geometry_instance);
30703070
geom->geometry_instance->pair_light_instances(instance_pair_buffer, idx);
3071-
idata.flags &= ~uint32_t(InstanceData::FLAG_GEOM_LIGHTING_DIRTY);
3071+
idata.flags &= ~InstanceData::FLAG_GEOM_LIGHTING_DIRTY;
30723072
}
30733073

30743074
if (idata.flags & InstanceData::FLAG_GEOM_PROJECTOR_SOFTSHADOW_DIRTY) {
@@ -3078,7 +3078,7 @@ void RendererSceneCull::_scene_cull(CullData &cull_data, InstanceCullResult &cul
30783078
cull_data.cull->lock.lock();
30793079
geom->geometry_instance->set_softshadow_projector_pairing(geom->softshadow_count > 0, geom->projector_count > 0);
30803080
cull_data.cull->lock.unlock();
3081-
idata.flags &= ~uint32_t(InstanceData::FLAG_GEOM_PROJECTOR_SOFTSHADOW_DIRTY);
3081+
idata.flags &= ~InstanceData::FLAG_GEOM_PROJECTOR_SOFTSHADOW_DIRTY;
30823082
}
30833083

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

30973097
ERR_FAIL_NULL(geom->geometry_instance);
30983098
geom->geometry_instance->pair_reflection_probe_instances(instance_pair_buffer, idx);
3099-
idata.flags &= ~uint32_t(InstanceData::FLAG_GEOM_REFLECTION_DIRTY);
3099+
idata.flags &= ~InstanceData::FLAG_GEOM_REFLECTION_DIRTY;
31003100
}
31013101

31023102
if (geometry_instance_pair_mask & (1 << RS::INSTANCE_DECAL) && (idata.flags & InstanceData::FLAG_GEOM_DECAL_DIRTY)) {
@@ -3115,7 +3115,7 @@ void RendererSceneCull::_scene_cull(CullData &cull_data, InstanceCullResult &cul
31153115
ERR_FAIL_NULL(geom->geometry_instance);
31163116
geom->geometry_instance->pair_decal_instances(instance_pair_buffer, idx);
31173117

3118-
idata.flags &= ~uint32_t(InstanceData::FLAG_GEOM_DECAL_DIRTY);
3118+
idata.flags &= ~InstanceData::FLAG_GEOM_DECAL_DIRTY;
31193119
}
31203120

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

3136-
idata.flags &= ~uint32_t(InstanceData::FLAG_GEOM_VOXEL_GI_DIRTY);
3136+
idata.flags &= ~InstanceData::FLAG_GEOM_VOXEL_GI_DIRTY;
31373137
}
31383138

31393139
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()) {
@@ -3993,7 +3993,7 @@ void RendererSceneCull::render_probes() {
39933993
ERR_FAIL_NULL(geom->geometry_instance);
39943994
geom->geometry_instance->pair_voxel_gi_instances(instance_pair_buffer, idx);
39953995

3996-
ins->scenario->instance_data[ins->array_index].flags &= ~uint32_t(InstanceData::FLAG_GEOM_VOXEL_GI_DIRTY);
3996+
ins->scenario->instance_data[ins->array_index].flags &= ~InstanceData::FLAG_GEOM_VOXEL_GI_DIRTY;
39973997
}
39983998

39993999
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)