Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-01-12BLI: Refactor vector types & functions to use templatesClment Foucault
This patch implements the vector types (i.e:`float2`) by making heavy usage of templating. All vector functions are now outside of the vector classes (inside the `blender::math` namespace) and are not vector size dependent for the most part. In the ongoing effort to make shaders less GL centric, we are aiming to share more code between GLSL and C++ to avoid code duplication. ####Motivations: - We are aiming to share UBO and SSBO structures between GLSL and C++. This means we will use many of the existing vector types and others we currently don't have (uintX, intX). All these variations were asking for many more code duplication. - Deduplicate existing code which is duplicated for each vector size. - We also want to share small functions. Which means that vector functions should be static and not in the class namespace. - Reduce friction to use these types in new projects due to their incompleteness. - The current state of the `BLI_(float|double|mpq)(2|3|4).hh` is a bit of a let down. Most clases are incomplete, out of sync with each others with different codestyles, and some functions that should be static are not (i.e: `float3::reflect()`). ####Upsides: - Still support `.x, .y, .z, .w` for readability. - Compact, readable and easilly extendable. - All of the vector functions are available for all the vectors types and can be restricted to certain types. Also template specialization let us define exception for special class (like mpq). - With optimization ON, the compiler unroll the loops and performance is the same. ####Downsides: - Might impact debugability. Though I would arge that the bugs are rarelly caused by the vector class itself (since the operations are quite trivial) but by the type conversions. - Might impact compile time. I did not saw a significant impact since the usage is not really widespread. - Functions needs to be rewritten to support arbitrary vector length. For instance, one can't call `len_squared_v3v3` in `math::length_squared()` and call it a day. - Type cast does not work with the template version of the `math::` vector functions. Meaning you need to manually cast `float *` and `(float *)[3]` to `float3` for the function calls. i.e: `math::distance_squared(float3(nearest.co), positions[i]);` - Some parts might loose in readability: `float3::dot(v1.normalized(), v2.normalized())` becoming `math::dot(math::normalize(v1), math::normalize(v2))` But I propose, when appropriate, to use `using namespace blender::math;` on function local or file scope to increase readability. `dot(normalize(v1), normalize(v2))` ####Consideration: - Include back `.length()` method. It is quite handy and is more C++ oriented. - I considered the GLM library as a candidate for replacement. It felt like too much for what we need and would be difficult to extend / modify to our needs. - I used Macros to reduce code in operators declaration and potential copy paste bugs. This could reduce debugability and could be reverted. - This touches `delaunay_2d.cc` and the intersection code. I would like to know @howardt opinion on the matter. - The `noexcept` on the copy constructor of `mpq(2|3)` is being removed. But according to @JacquesLucke it is not a real problem for now. I would like to give a huge thanks to @JacquesLucke who helped during this and pushed me to reduce the duplication further. Reviewed By: brecht, sergey, JacquesLucke Differential Revision: https://developer.blender.org/D13791
2022-01-12Revert "BLI: Refactor vector types & functions to use templates"Clément Foucault
Reverted because the commit removes a lot of commits. This reverts commit a2c1c368af48644fa8995ecbe7138cc0d7900c30.
2022-01-12BLI: Refactor vector types & functions to use templatesClément Foucault
This patch implements the vector types (i.e:float2) by making heavy usage of templating. All vector functions are now outside of the vector classes (inside the blender::math namespace) and are not vector size dependent for the most part. In the ongoing effort to make shaders less GL centric, we are aiming to share more code between GLSL and C++ to avoid code duplication. Motivations: - We are aiming to share UBO and SSBO structures between GLSL and C++. This means we will use many of the existing vector types and others we currently don't have (uintX, intX). All these variations were asking for many more code duplication. - Deduplicate existing code which is duplicated for each vector size. - We also want to share small functions. Which means that vector functions should be static and not in the class namespace. - Reduce friction to use these types in new projects due to their incompleteness. - The current state of the BLI_(float|double|mpq)(2|3|4).hh is a bit of a let down. Most clases are incomplete, out of sync with each others with different codestyles, and some functions that should be static are not (i.e: float3::reflect()). Upsides: - Still support .x, .y, .z, .w for readability. - Compact, readable and easilly extendable. - All of the vector functions are available for all the vectors types and can be restricted to certain types. Also template specialization let us define exception for special class (like mpq). - With optimization ON, the compiler unroll the loops and performance is the same. Downsides: - Might impact debugability. Though I would arge that the bugs are rarelly caused by the vector class itself (since the operations are quite trivial) but by the type conversions. - Might impact compile time. I did not saw a significant impact since the usage is not really widespread. - Functions needs to be rewritten to support arbitrary vector length. For instance, one can't call len_squared_v3v3 in math::length_squared() and call it a day. - Type cast does not work with the template version of the math:: vector functions. Meaning you need to manually cast float * and (float *)[3] to float3 for the function calls. i.e: math::distance_squared(float3(nearest.co), positions[i]); - Some parts might loose in readability: float3::dot(v1.normalized(), v2.normalized()) becoming math::dot(math::normalize(v1), math::normalize(v2)) But I propose, when appropriate, to use using namespace blender::math; on function local or file scope to increase readability. dot(normalize(v1), normalize(v2)) Consideration: - Include back .length() method. It is quite handy and is more C++ oriented. - I considered the GLM library as a candidate for replacement. It felt like too much for what we need and would be difficult to extend / modify to our needs. - I used Macros to reduce code in operators declaration and potential copy paste bugs. This could reduce debugability and could be reverted. - This touches delaunay_2d.cc and the intersection code. I would like to know @Howard Trickey (howardt) opinion on the matter. - The noexcept on the copy constructor of mpq(2|3) is being removed. But according to @Jacques Lucke (JacquesLucke) it is not a real problem for now. I would like to give a huge thanks to @Jacques Lucke (JacquesLucke) who helped during this and pushed me to reduce the duplication further. Reviewed By: brecht, sergey, JacquesLucke Differential Revision: http://developer.blender.org/D13791
2022-01-12Cleanup: remove redundant const qualifiers for POD typesCampbell Barton
2022-01-11Cleanup: correct exception messageCampbell Barton
2022-01-07Fix T94708: negative reference count error with Python API callbacksCampbell Barton
Regression in 7972785d7b90771f50534fe3e1101d8adb615fa3 that caused Python callback arguments to be de-referenced twice - potentially accessing freed memory. Making a new-file with a circle-select tool active triggered this (for example). Now arguments aren't de-referenced when Blender it's self has already removed the callback handle.
2022-01-07Cleanup: remove redundant const qualifiers for POD typesCampbell Barton
MSVC used to warn about const mismatch for arguments passed by value. Remove these as newer versions of MSVC no longer show this warning.
2022-01-06Fix T94685: python error adding Space handlers for SpreadsheetPhilipp Oeser
Oversight in {rB9cb5f0a2282a}. Above commit made an entry in `rna_Space_refine()`, but the entry in `rna_Space_refine_reverse()` was missing (and this is what python uses for the Space callbacks). Maniphest Tasks: T94685 Differential Revision: https://developer.blender.org/D13751
2022-01-06Cleanup: Spelling/grammar in commentsHans Goudey
2021-12-29gpu.types.GPUOffScreen: accept format argument for color textureGermano Cavalcante
Some projects need more than 8-bit RGBA off-screen, so add the ability to accept color format and defaults to RGBA8 so existing code should not be affected. Currently supported formats: - RGBA8 (default) - RGBA16 - RGBA16F - RGBA32F Reviewed By: mano-wii Differential Revision: https://developer.blender.org/D13650
2021-12-16Animation: send notifier when keyframe is insertedSybren A. Stüvel
`<some_id>.keyframe_insert()` now sends a notifier that animation data was changed, so that animation-related editors can properly refresh. Since this function is quite high-level (if necessary it creates the Action and FCurves), I thought this would be a suitable location for the notifier. If high keyframing speed is required, it is still recommended to use `FCurveKeyframePoints.insert(options={'FAST'})` instead.
2021-12-14Cleanup: correct unbalanced doxygen groupsCampbell Barton
Also add groups in some files.
2021-12-13Cleanup: use "filepath" term for Main, BlendFileData & FileGlobalCampbell Barton
Use "filepath" which is the current convention for naming full paths. - Main use "name" which isn't obviously a file path. - BlendFileData & FileGlobal used "filename" which is often used for the name component of a path (without the directory).
2021-12-13Cleanup: remove checks for invalid input for Python Run utilitiesCampbell Barton
These arguments must be non-null for useful functionality, there is no need for paranoid checks. The return value in case of invalid input for BPY_run_string_as_number was also wrong (casting -1 to a bool, when false was expected).
2021-12-13Docs: improve on doc-strings for BPY_extern_run.hCampbell Barton
Also add ATTR_NONNULL function attributes.
2021-12-10Cleanup: move public doc-strings into headers for 'python/intern'Campbell Barton
Ref T92709
2021-12-07Cleanup: move public doc-strings into headers for 'blenkernel'Campbell Barton
- Added space below non doc-string comments to make it clear these aren't comments for the symbols directly below them. - Use doxy sections for some headers. - Minor improvements to doc-strings. Ref T92709
2021-12-02Cleanup: move public doc-strings into headers for 'python'Campbell Barton
2021-11-30LibLink/Append: Port `bpy.data.libraries.load` to new ↵Bastien Montagne
`BKE_blendfile_link_append` module. Note that this fully replaces the 'PyCapsule' storage of linked/appended items in the python API code by the generic storage of items in the `BlendfileLinkAppendContext` data. Maniphest Tasks: T91414 Differential Revision: https://developer.blender.org/D13331
2021-11-30Cleanup: clang-format, trailing spaceCampbell Barton
2021-11-30Cleanup: spelling in comments & stringsCampbell Barton
2021-11-29Refactor BKE_bpath module.Bastien Montagne
The main goal of this refactor is to make BPath module use `IDTypeInfo`, and move each ID-specific part of the `foreach_path` looper into their own IDTypeInfo struct, using a new `foreach_path` callback. Additionally, following improvements/cleanups are included: * Attempt to get better, more consistent namings. ** In particular, move from `path_visitor` to more standard `foreach_path`. * Update and extend documentation. ** API doc was moved to header, according to recent discussions on this topic. * Remove `BKE_bpath_relocate_visitor` from API, this is specific callback that belongs in `lib_id.c` user code. NOTE: This commit is expected to be 100% non-behavioral-change. This implies that several potential further changes were only noted as comments (like using a more generic solution for `lib_id_library_local_paths`, addressing inconsistencies like path of packed libraries always being skipped, regardless of the `BKE_BPATH_FOREACH_PATH_SKIP_PACKED` `eBPathForeachFlag` flag value, etc.). NOTE: basic unittests were added to master already in rBdcc500e5a265093bc9cc. Reviewed By: brecht Differential Revision: https://developer.blender.org/D13381
2021-11-25Merge branch 'blender-v3.0-release'Bastien Montagne
2021-11-25Fix Py API: wrong doc about type of Collection property.Bastien Montagne
Collection property only accepts PropertyGroup type, not ID ones. Reported on IRC by @frameshift, thanks.
2021-11-23Merge branch 'blender-v3.0-release'Clément Foucault
2021-11-23Fix T89204: slow repeated rendering with GPUOffscreen.draw_view3d.Christian Stolze
Reviewed By: fclem Differential Revision: D13235
2021-11-13BLF: Use Floats for Font Point SizesHarley Acheson
Allow the use of floating-point values for font point sizes, which allows greater precision and flexibility for text output. See D8960 for more information, details, and justification. Differential Revision: https://developer.blender.org/D8960 Reviewed by Campbell Barton
2021-11-11Merge branch 'blender-v3.0-release'Bastien Montagne
2021-11-11Fix (unreported) bad handling of reports in `libraries.load` code.Bastien Montagne
rB60fee69682ac39 only partially fixed the issue, `BlendFileReadReport bf_reports` was now properly stored in `BPy_Library` `self` for the lifetime of the context, but its `reports` member was still referencing local variable to `bpy_lib_enter` function.
2021-11-09Expose BLI_string_flip_side_name as bpy.utils.flip_nameDemeter Dzadik
Expose a new function in `bpy.utils.flip_name(name, strip_number=False) that allows flipping bone names, eg "Bone.L" -> "Bone.R". Useful for add-ons to avoid re-implementing Blender's name flipping. Ref D12322
2021-11-08Cleanup: Grammar in commentsHans Goudey
2021-11-05Fix GCC warnings after own recent commitJulian Eisel
Caused by 4e09fd76bcab.
2021-11-05Cleanup: Remove misleading commentJulian Eisel
Python isn't doing any conversion here. We just do a regular lookup of the given enum identifier in the RNA enum definition.
2021-11-05Cleanup (UI): Add/use type for operator context enumJulian Eisel
Adds a `wmOperatorCallContext` typedef for the existing `WM_OP_XXX` operator context enum. This adds type safety, allows the compiler to produce better warnings and helps understanding what a variable is for. Differential Revision: https://developer.blender.org/D13113 Reviewed by: Campbell Barton
2021-11-05Correct assert checking gizmo typeCampbell Barton
2021-11-05Fix PyAPI integer conversion error handlingCampbell Barton
Non integer types raised an OverflowError, even when non-number types were passed in. Now the error from Python is kept.
2021-11-02Fix T92532: Missing null checks in IDPropertyManager.update_fromHans Goudey
Calling it with a None argument, or no arguments, or with a property that is missing UI data for some reason would fail. There is no particular reason why ensuring those things don't happen is helpful, so just add null checks for safety. Differential Revision: https://developer.blender.org/D13024
2021-10-26Cleanup: Clang formatAaron Carlisle
2021-10-23Docs: Fixes and improvements in API documentationXavier Cho
Fixes several notable mistakes and missing information regarding the API documentation (*.rst). This will allow API stub generators like bpystubgen or fake-bpy-module to produce more accurate result. Differential Revision: https://developer.blender.org/D12639
2021-10-20Cleanup: use elem macrosCampbell Barton
2021-10-12Fix leak on exit when WITH_PYTHON_SAFETY is enabledCampbell Barton
The lead only occurred when Python references were leaking as well.
2021-10-11Fix T90634: Gizmo.target_set_value() crash without a valid propertyCampbell Barton
Raise an exception when target properties have not been set.
2021-10-11Cleanup: add utility functions to parse gizmos and target propertiesCampbell Barton
2021-10-11Doc: expand on docstring for PyC_Long_AsBoolCampbell Barton
2021-10-08Docs: note that message-bus subscribers are reset on file loadCampbell Barton
2021-10-08Py doc: document msgbus subscriptions clearing on blendfile loadSybren A. Stüvel
Document that `bpy.msgbus.subscribe_rna()`-registered messagebus subscriptions will be cleared whenever a new blend file is loaded. Passing `options={'PERSISTENT'}` has no influence on this behaviour.
2021-10-06Cleanup: spelling in commentsCampbell Barton
2021-10-03Cleanup: spelling in stringsCampbell Barton
2021-09-23Cleanup: spelling in commentsCampbell Barton
2021-09-16Fix memory leak if an error occurred assigning id-property sequenceCampbell Barton