You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-24 15:26:15 +00:00
Zero initialize all pointer class and struct members
This prevents the pitfall of UB when checking if they have been assigned something valid by comparing to nullptr.
This commit is contained in:
@@ -332,7 +332,7 @@ class RenderForwardClustered : public RendererSceneRenderRD {
|
||||
uint32_t instance_buffer_size[RENDER_LIST_MAX] = { 0, 0, 0 };
|
||||
LocalVector<InstanceData> instance_data[RENDER_LIST_MAX];
|
||||
|
||||
LightmapCaptureData *lightmap_captures;
|
||||
LightmapCaptureData *lightmap_captures = nullptr;
|
||||
uint32_t max_lightmap_captures;
|
||||
RID lightmap_capture_buffer;
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ private:
|
||||
static SceneShaderForwardClustered *singleton;
|
||||
|
||||
public:
|
||||
RendererStorageRD *storage;
|
||||
RendererStorageRD *storage = nullptr;
|
||||
|
||||
enum ShaderVersion {
|
||||
SHADER_VERSION_DEPTH_PASS,
|
||||
@@ -199,7 +199,7 @@ public:
|
||||
}
|
||||
|
||||
struct MaterialData : public RendererRD::MaterialData {
|
||||
ShaderData *shader_data;
|
||||
ShaderData *shader_data = nullptr;
|
||||
RID uniform_set;
|
||||
uint64_t last_pass = 0;
|
||||
uint32_t index = 0;
|
||||
|
||||
@@ -328,7 +328,7 @@ protected:
|
||||
uint32_t max_lightmaps;
|
||||
RID lightmap_buffer;
|
||||
|
||||
LightmapCaptureData *lightmap_captures;
|
||||
LightmapCaptureData *lightmap_captures = nullptr;
|
||||
uint32_t max_lightmap_captures;
|
||||
RID lightmap_capture_buffer;
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ namespace RendererSceneRenderImplementation {
|
||||
class SceneShaderForwardMobile {
|
||||
private:
|
||||
static SceneShaderForwardMobile *singleton;
|
||||
RendererStorageRD *storage;
|
||||
RendererStorageRD *storage = nullptr;
|
||||
|
||||
public:
|
||||
enum ShaderVersion {
|
||||
@@ -163,7 +163,7 @@ public:
|
||||
}
|
||||
|
||||
struct MaterialData : public RendererRD::MaterialData {
|
||||
ShaderData *shader_data;
|
||||
ShaderData *shader_data = nullptr;
|
||||
RID uniform_set;
|
||||
uint64_t last_pass = 0;
|
||||
uint32_t index = 0;
|
||||
|
||||
@@ -57,7 +57,7 @@ class PipelineCacheRD {
|
||||
RID pipeline;
|
||||
};
|
||||
|
||||
Version *versions;
|
||||
Version *versions = nullptr;
|
||||
uint32_t version_count;
|
||||
|
||||
RID _generate_version(RD::VertexFormatID p_vertex_format_id, RD::FramebufferFormatID p_framebuffer_format_id, bool p_wireframe, uint32_t p_render_pass, uint32_t p_bool_specializations = 0);
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
#include "servers/rendering/shader_compiler.h"
|
||||
|
||||
class RendererCanvasRenderRD : public RendererCanvasRender {
|
||||
RendererStorageRD *storage;
|
||||
RendererStorageRD *storage = nullptr;
|
||||
|
||||
enum {
|
||||
BASE_UNIFORM_SET = 0,
|
||||
@@ -200,7 +200,7 @@ class RendererCanvasRenderRD : public RendererCanvasRender {
|
||||
}
|
||||
|
||||
struct CanvasMaterialData : public RendererRD::MaterialData {
|
||||
CanvasShaderData *shader_data;
|
||||
CanvasShaderData *shader_data = nullptr;
|
||||
RID uniform_set;
|
||||
|
||||
virtual void set_render_priority(int p_priority) {}
|
||||
@@ -361,7 +361,7 @@ class RendererCanvasRenderRD : public RendererCanvasRender {
|
||||
uint32_t pad2;
|
||||
};
|
||||
|
||||
LightUniform *light_uniforms;
|
||||
LightUniform *light_uniforms = nullptr;
|
||||
|
||||
RID lights_uniform_buffer;
|
||||
RID canvas_state_buffer;
|
||||
|
||||
@@ -48,15 +48,15 @@
|
||||
|
||||
class RendererCompositorRD : public RendererCompositor {
|
||||
protected:
|
||||
UniformSetCacheRD *uniform_set_cache;
|
||||
RendererCanvasRenderRD *canvas;
|
||||
UniformSetCacheRD *uniform_set_cache = nullptr;
|
||||
RendererCanvasRenderRD *canvas = nullptr;
|
||||
RendererRD::CanvasTextureStorage *canvas_texture_storage;
|
||||
RendererRD::MaterialStorage *material_storage;
|
||||
RendererRD::MeshStorage *mesh_storage;
|
||||
RendererRD::TextureStorage *texture_storage;
|
||||
RendererRD::DecalAtlasStorage *decal_atlas_storage;
|
||||
RendererStorageRD *storage;
|
||||
RendererSceneRenderRD *scene;
|
||||
RendererStorageRD *storage = nullptr;
|
||||
RendererSceneRenderRD *scene = nullptr;
|
||||
|
||||
enum BlitMode {
|
||||
BLIT_MODE_NORMAL,
|
||||
|
||||
@@ -55,7 +55,7 @@ class RendererSceneRenderRD;
|
||||
|
||||
class RendererSceneGIRD {
|
||||
private:
|
||||
RendererStorageRD *storage;
|
||||
RendererStorageRD *storage = nullptr;
|
||||
|
||||
/* VOXEL_GI INSTANCE */
|
||||
|
||||
@@ -331,8 +331,8 @@ public:
|
||||
|
||||
struct VoxelGIInstance {
|
||||
// access to our containers
|
||||
RendererStorageRD *storage;
|
||||
RendererSceneGIRD *gi;
|
||||
RendererStorageRD *storage = nullptr;
|
||||
RendererSceneGIRD *gi = nullptr;
|
||||
|
||||
RID probe;
|
||||
RID texture;
|
||||
@@ -455,8 +455,8 @@ public:
|
||||
};
|
||||
|
||||
// access to our containers
|
||||
RendererStorageRD *storage;
|
||||
RendererSceneGIRD *gi;
|
||||
RendererStorageRD *storage = nullptr;
|
||||
RendererSceneGIRD *gi = nullptr;
|
||||
|
||||
// used for rendering (voxelization)
|
||||
RID render_albedo;
|
||||
|
||||
@@ -92,7 +92,7 @@ class RendererSceneRenderRD : public RendererSceneRender {
|
||||
friend RendererSceneGIRD;
|
||||
|
||||
protected:
|
||||
RendererStorageRD *storage;
|
||||
RendererStorageRD *storage = nullptr;
|
||||
double time;
|
||||
double time_step = 0;
|
||||
|
||||
@@ -314,10 +314,10 @@ private:
|
||||
float shadows_quality_radius = 1.0;
|
||||
float directional_shadow_quality_radius = 1.0;
|
||||
|
||||
float *directional_penumbra_shadow_kernel;
|
||||
float *directional_soft_shadow_kernel;
|
||||
float *penumbra_shadow_kernel;
|
||||
float *soft_shadow_kernel;
|
||||
float *directional_penumbra_shadow_kernel = nullptr;
|
||||
float *directional_soft_shadow_kernel = nullptr;
|
||||
float *penumbra_shadow_kernel = nullptr;
|
||||
float *soft_shadow_kernel = nullptr;
|
||||
int directional_penumbra_shadow_samples = 0;
|
||||
int directional_soft_shadow_samples = 0;
|
||||
int penumbra_shadow_samples = 0;
|
||||
@@ -705,27 +705,27 @@ private:
|
||||
template <class T>
|
||||
struct InstanceSort {
|
||||
float depth;
|
||||
T *instance;
|
||||
T *instance = nullptr;
|
||||
bool operator<(const InstanceSort &p_sort) const {
|
||||
return depth < p_sort.depth;
|
||||
}
|
||||
};
|
||||
|
||||
ReflectionData *reflections;
|
||||
ReflectionData *reflections = nullptr;
|
||||
InstanceSort<ReflectionProbeInstance> *reflection_sort;
|
||||
uint32_t max_reflections;
|
||||
RID reflection_buffer;
|
||||
uint32_t max_reflection_probes_per_instance;
|
||||
uint32_t reflection_count = 0;
|
||||
|
||||
DecalData *decals;
|
||||
DecalData *decals = nullptr;
|
||||
InstanceSort<DecalInstance> *decal_sort;
|
||||
uint32_t max_decals;
|
||||
RID decal_buffer;
|
||||
uint32_t decal_count;
|
||||
|
||||
LightData *omni_lights;
|
||||
LightData *spot_lights;
|
||||
LightData *omni_lights = nullptr;
|
||||
LightData *spot_lights = nullptr;
|
||||
|
||||
InstanceSort<LightInstance> *omni_light_sort;
|
||||
InstanceSort<LightInstance> *spot_light_sort;
|
||||
@@ -735,7 +735,7 @@ private:
|
||||
uint32_t omni_light_count = 0;
|
||||
uint32_t spot_light_count = 0;
|
||||
|
||||
DirectionalLightData *directional_lights;
|
||||
DirectionalLightData *directional_lights = nullptr;
|
||||
uint32_t max_directional_lights;
|
||||
RID directional_light_buffer;
|
||||
|
||||
@@ -938,7 +938,7 @@ private:
|
||||
};
|
||||
|
||||
struct FogMaterialData : public RendererRD::MaterialData {
|
||||
FogShaderData *shader_data;
|
||||
FogShaderData *shader_data = nullptr;
|
||||
RID uniform_set;
|
||||
bool uniform_set_updated;
|
||||
|
||||
|
||||
@@ -63,7 +63,7 @@ public:
|
||||
};
|
||||
|
||||
private:
|
||||
RendererStorageRD *storage;
|
||||
RendererStorageRD *storage = nullptr;
|
||||
RD::DataFormat texture_format = RD::DATA_FORMAT_R16G16B16A16_SFLOAT;
|
||||
|
||||
RID index_buffer;
|
||||
@@ -162,8 +162,8 @@ public:
|
||||
|
||||
UBO ubo;
|
||||
|
||||
SkyDirectionalLightData *directional_lights;
|
||||
SkyDirectionalLightData *last_frame_directional_lights;
|
||||
SkyDirectionalLightData *directional_lights = nullptr;
|
||||
SkyDirectionalLightData *last_frame_directional_lights = nullptr;
|
||||
uint32_t max_directional_lights;
|
||||
uint32_t last_frame_directional_light_count;
|
||||
RID directional_light_buffer;
|
||||
@@ -228,7 +228,7 @@ public:
|
||||
} sky_shader;
|
||||
|
||||
struct SkyMaterialData : public RendererRD::MaterialData {
|
||||
SkyShaderData *shader_data;
|
||||
SkyShaderData *shader_data = nullptr;
|
||||
RID uniform_set;
|
||||
bool uniform_set_updated;
|
||||
|
||||
@@ -262,7 +262,7 @@ public:
|
||||
Sky *dirty_list = nullptr;
|
||||
|
||||
//State to track when radiance cubemap needs updating
|
||||
SkyMaterialData *prev_material;
|
||||
SkyMaterialData *prev_material = nullptr;
|
||||
Vector3 prev_position;
|
||||
float prev_time;
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@ typedef ShaderData *(*ShaderDataRequestFunction)();
|
||||
struct Material;
|
||||
|
||||
struct Shader {
|
||||
ShaderData *data;
|
||||
ShaderData *data = nullptr;
|
||||
String code;
|
||||
ShaderType type;
|
||||
Map<StringName, Map<int, RID>> default_texture_parameter;
|
||||
@@ -177,9 +177,9 @@ struct GlobalVariables {
|
||||
List<RID> materials_using_texture;
|
||||
|
||||
RID buffer;
|
||||
Value *buffer_values;
|
||||
ValueUsage *buffer_usage;
|
||||
bool *buffer_dirty_regions;
|
||||
Value *buffer_values = nullptr;
|
||||
ValueUsage *buffer_usage = nullptr;
|
||||
bool *buffer_dirty_regions = nullptr;
|
||||
uint32_t buffer_dirty_region_count = 0;
|
||||
|
||||
uint32_t buffer_size;
|
||||
|
||||
@@ -149,7 +149,7 @@ struct Mesh {
|
||||
/* Mesh Instance */
|
||||
|
||||
struct MeshInstance {
|
||||
Mesh *mesh;
|
||||
Mesh *mesh = nullptr;
|
||||
RID skeleton;
|
||||
struct Surface {
|
||||
RID vertex_buffer;
|
||||
|
||||
Reference in New Issue
Block a user