Commit: b061ace74851116b2ecc5d8b21a03a9430247c92 Author: Miguel Pozo Date: Tue Jan 10 17:36:32 2023 +0100 Branches: tmp-workbench-rewrite2 https://developer.blender.org/rBb061ace74851116b2ecc5d8b21a03a9430247c92
Add explicit initializations to all classes/structs =================================================================== M source/blender/draw/engines/workbench/workbench_private.hh =================================================================== diff --git a/source/blender/draw/engines/workbench/workbench_private.hh b/source/blender/draw/engines/workbench/workbench_private.hh index e1549884027..ee63f2c2010 100644 --- a/source/blender/draw/engines/workbench/workbench_private.hh +++ b/source/blender/draw/engines/workbench/workbench_private.hh @@ -39,9 +39,9 @@ class ShaderCache { }; struct Material { - float3 base_color; + float3 base_color = float3(0); /* Packed data into a int. Decoded in the shader. */ - uint packed_data; + uint packed_data = 0; Material(); Material(float3 color); @@ -60,38 +60,38 @@ void get_material_image(Object *ob, eGPUSamplerState &sampler_state); struct SceneState { - Scene *scene; + Scene *scene = nullptr; - Object *camera_object; - Camera *camera; - float4x4 view_projection_matrix; - int2 resolution; + Object *camera_object = nullptr; + Camera *camera = nullptr; + float4x4 view_projection_matrix = float4x4::identity(); + int2 resolution = int2(0); - eContextObjectMode object_mode; + eContextObjectMode object_mode = CTX_MODE_OBJECT; - View3DShading shading; + View3DShading shading = {}; eLightingType lighting_type = eLightingType::STUDIO; - bool xray_mode; + bool xray_mode = false; - DRWState cull_state; + DRWState cull_state = DRW_STATE_NO_DRAW; Vector<float4> clip_planes = {}; - float4 background_color; + float4 background_color = float4(0); - bool draw_cavity; - bool draw_curvature; - bool draw_shadows; - bool draw_outline; - bool draw_dof; - bool draw_aa; + bool draw_cavity = false; + bool draw_curvature = false; + bool draw_shadows = false; + bool draw_outline = false; + bool draw_dof = false; + bool draw_aa = false; - bool draw_object_id; - bool draw_transparent_depth; + bool draw_object_id = false; + bool draw_transparent_depth = false; - int sample; - int samples_len; - bool reset_taa_next_sample; - bool render_finished; + int sample = 0; + int samples_len = 0; + bool reset_taa_next_sample = false; + bool render_finished = false; /* Used when material_type == eMaterialType::SINGLE */ Material material_override = Material(float3(1.0f)); @@ -102,13 +102,13 @@ struct SceneState { }; struct ObjectState { - eV3DShadingColorType color_type; - bool sculpt_pbvh; - bool texture_paint_mode; - ::Image *image_paint_override; - eGPUSamplerState override_sampler_state; - bool draw_shadow; - bool use_per_material_batches; + eV3DShadingColorType color_type = V3D_SHADING_SINGLE_COLOR; + bool sculpt_pbvh = false; + bool texture_paint_mode = false; + ::Image *image_paint_override = nullptr; + eGPUSamplerState override_sampler_state = GPU_SAMPLER_DEFAULT; + bool draw_shadow = false; + bool use_per_material_batches = false; ObjectState(const SceneState &scene_state, Object *ob); }; @@ -119,12 +119,12 @@ class CavityEffect { * workbench_composite_info.hh (cavity_samples) */ static const int max_samples_ = 512; - UniformArrayBuffer<float4, max_samples_> samples_buf; + UniformArrayBuffer<float4, max_samples_> samples_buf = {}; - int sample_; - int sample_count_; - bool curvature_enabled_; - bool cavity_enabled_; + int sample_ = 0; + int sample_count_ = 0; + bool curvature_enabled_ = false; + bool cavity_enabled_ = false; public: void init(const SceneState &scene_state, struct SceneResources &resources); @@ -137,9 +137,9 @@ class CavityEffect { struct SceneResources { static const int jitter_tx_size = 64; - ShaderCache shader_cache; + ShaderCache shader_cache = {}; - StringRefNull current_matcap; + StringRefNull current_matcap = {}; Texture matcap_tx = "matcap_tx"; TextureFromPool color_tx = "wb_color_tx"; @@ -148,12 +148,12 @@ struct SceneResources { TextureFromPool depth_in_front_tx = "wb_depth_in_front_tx"; StorageVectorBuffer<Material> material_buf = {"material_buf"}; - UniformBuffer<WorldData> world_buf; + UniformBuffer<WorldData> world_buf = {}; UniformArrayBuffer<float4, 6> clip_planes_buf; Texture jitter_tx = "wb_jitter_tx"; - CavityEffect cavity; + CavityEffect cavity = {}; void init(const SceneState &scene_state); void load_jitter_tx(int total_samples); @@ -163,11 +163,11 @@ class MeshPass : public PassMain { private: using TextureSubPassKey = std::pair<GPUTexture *, eGeometryType>; - Map<TextureSubPassKey, PassMain::Sub *> texture_subpass_map_; + Map<TextureSubPassKey, PassMain::Sub *> texture_subpass_map_ = {}; - PassMain::Sub *passes_[geometry_type_len][shader_type_len]; + PassMain::Sub *passes_[geometry_type_len][shader_type_len] = {{nullptr}}; - bool is_empty_; + bool is_empty_ = false; public: MeshPass(const char *name); @@ -193,7 +193,7 @@ class OpaquePass { public: TextureFromPool gbuffer_normal_tx = {"gbuffer_normal_tx"}; TextureFromPool gbuffer_material_tx = {"gbuffer_material_tx"}; - Framebuffer opaque_fb; + Framebuffer opaque_fb = {}; Texture shadow_depth_stencil_tx = {"shadow_depth_stencil_tx"}; GPUTexture *deferred_ps_stencil_tx = nullptr; @@ -214,17 +214,17 @@ class OpaquePass { class TransparentPass { private: - GPUShader *resolve_sh_; + GPUShader *resolve_sh_ = nullptr; public: TextureFromPool accumulation_tx = {"accumulation_accumulation_tx"}; TextureFromPool reveal_tx = {"accumulation_reveal_tx"}; - Framebuffer transparent_fb; + Framebuffer transparent_fb = {}; MeshPass accumulation_ps_ = {"Transparent.Accumulation"}; MeshPass accumulation_in_front_ps_ = {"Transparent.AccumulationInFront"}; PassSimple resolve_ps_ = {"Transparent.Resolve"}; - Framebuffer resolve_fb; + Framebuffer resolve_fb = {}; void sync(const SceneState &scene_state, SceneResources &resources); void draw(Manager &manager, View &view, SceneResources &resources, int2 resolution); @@ -233,7 +233,7 @@ class TransparentPass { class TransparentDepthPass { private: - GPUShader *merge_sh_; + GPUShader *merge_sh_ = nullptr; public: MeshPass main_ps_ = {"TransparentDepth.Main"}; @@ -253,13 +253,13 @@ class ShadowPass { enum PassType { PASS = 0, FAIL, FORCED_FAIL, MAX }; class ShadowView : public View { - bool force_fail_method_; - float3 light_direction_; - UniformBuffer<ExtrudedFrustum> extruded_frustum_; - ShadowPass::PassType current_pass_type_; + bool force_fail_method_ = false; + float3 light_direction_ = float3(0); + UniformBuffer<ExtrudedFrustum> extruded_frustum_ = {}; + ShadowPass::PassType current_pass_type_ = PASS; - VisibilityBuf pass_visibility_buf_; - VisibilityBuf fail_visibility_buf_; + VisibilityBuf pass_visibility_buf_ = {}; + VisibilityBuf fail_visibility_buf_ = {}; public: void setup(View &view, float3 light_direction, bool force_fail_method); @@ -275,7 +275,7 @@ class ShadowPass { bool enabled_; - UniformBuffer<ShadowPassData> pass_data_; + UniformBuffer<ShadowPassData> pass_data_ = {}; /* Draws are added to both passes and the visibily compute shader selects one of them */ PassMain pass_ps_ = {"Shadow.Pass"}; @@ -292,8 +292,8 @@ class ShadowPass { GPUShader *shaders_[2][2][2] = {{{nullptr}}}; GPUShader *get_shader(bool depth_pass, bool manifold, bool cap = false); - TextureFromPool depth_tx_; - Framebuffer fb_; + TextureFromPool depth_tx_ = {}; + Framebuffer fb_ = {}; public: void init(const SceneState &scene_state, SceneResources &resources); @@ -314,10 +314,10 @@ class ShadowPass { class OutlinePass { private: - bool enabled_; + bool enabled_ = false; PassSimple ps_ = PassSimple("Workbench.Outline"); - GPUShader *sh_; + GPUShader *sh_ = nullptr; Framebuffer fb_ = Framebuffer("Workbench.Outline"); public: @@ -331,19 +331,26 @@ class DofPass { static const int kernel_radius_ = 3; static const int samples_len_ = (kernel_radius_ * 2 + 1) * (kernel_radius_ * 2 + 1); - bool enabled_; + bool enabled_ = false; - float offset_; + float offset_ = 0; - UniformArrayBuffer<float4, samples_len_> samples_buf_; + UniformArrayBuffer<float4, samples_len_> samples_buf_ = {}; - Texture source_tx_; - Texture coc_halfres_tx_; - TextureFromPool blur_tx_; + Texture source_tx_ = {}; + Texture coc_halfres_tx_ = {}; + TextureFromPool blur_tx_ = {}; - Framebuffer downsample_fb_, blur1_fb_, blur2_fb_, resolve_fb_; + Framebuffer downsample_fb_ = {}; + Framebuffer blur1_fb_ = {}; + Framebuffer blur2_fb_ = {}; + Framebuffer resolve_fb_ = {}; - GPUShader *prepare_sh_, *downsample_sh_, *blur1_sh_, *blur2_sh_, *resolve_sh_; + GPUShader *prepare_sh_ = nullptr; + GPUShader *downsample_sh_ = nullptr; + GPUShader *blur1_sh_ = nullptr; + GPUShader *blur2_sh_ = nullptr; + GPUShader *resolve_sh_ = nullptr; PassSimple down_ps_ = {"Workbench.DoF.DownSample"}; PassSimple down2_ps_ = {"Workbench.DoF.DownSample2"}; @@ -351,14 +358,14 @@ class DofPass { PassSimple blur2_ps_ = {"Workbench.DoF.Blur2"}; PassSimple resolve_ps_ = {"Workbench.DoF.Resolve"}; - float aperture_size_; - float distance_; - float invsensor_size_; - float near_; - float far_; - float blades_; - float rotation_; - float ratio_; + float aperture_size_ = 0; + float distance_ = 0; + float invsensor_size_ = 0; + float near_ = 0; + float far_ = 0; + float blades_ = 0; + float rotation_ = 0; + float ratio_ = 0; public: void init(const SceneState &scene_state); @@ -372,17 +379,17 @@ class DofPass { class AntiAliasingPass { private: - bool enabled_; + bool enabled_ = false; /* Current TAA sample index in [0..samples_len_] range. */ - int sample_; + int sample_ = 0; /* Total number of samples to after which TAA stops accumulating samples. */ - int samples_len_; + int samples_len_ = 0; /* Weight accumulated. */ - float weight_accum_; + float weight_accum_ = 0; /* Samples weight for this iteration. */ - float weights_[9]; + float weights_[9] = {0}; /* Sum of weights. */ - float weights_sum_; + float weights_sum_ = 0; Texture sample0_depth_tx_ = {"sample0_depth_tx"}; @@ -397,8 +404,8 @@ class AntiAliasingPass { Framebuffer smaa_weight_fb_ = {"smaa_weight_fb"}; Framebuffer smaa_resolve_fb_ = {"smaa_resolve_fb" @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs