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-02-11File headers: SPDX License migrationCampbell Barton
Use a shorter/simpler license convention, stops the header taking so much space. Follow the SPDX license specification: https://spdx.org/licenses - C/C++/objc/objc++ - Python - Shell Scripts - CMake, GNUmakefile While most of the source tree has been included - `./extern/` was left out. - `./intern/cycles` & `./intern/atomic` are also excluded because they use different header conventions. doc/license/SPDX-license-identifiers.txt has been added to list SPDX all used identifiers. See P2788 for the script that automated these edits. Reviewed By: brecht, mont29, sergey Ref D14069
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.
2021-12-14Cleanup: resolve parameter mis-matches in doc-stringsCampbell Barton
Renamed or removed parameters which no longer exist.
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-09-23Fix D12533: Simplify curve object to mesh conversionHans Goudey
This patch simplifies the curve object to mesh conversion used by the object convert operator and exporters. The existing code had a convoluted model of ownership, and did quite a bit of unnecessary work. It also assumed that curve objects always evaluated to a mesh, which is not the case anymore. Now the code checks if the object it receives is evaluated. If so, it can simply return a copy of the evaluated mesh (or convert the evaluated curve wire edges to a mesh if there was no evaluated mesh). If the object isn't evaluated, it uses a temporary copy of the object with modifiers removed to create the mesh in the same way. This follows up on the recent changes to curve evaluation, namely that the result is always either a mesh or a wire curve. Differential Revision: https://developer.blender.org/D12533
2021-09-11Cleanup: Remove no-op/unused codeHans Goudey
2021-09-11Geometry Nodes: Support modifier on curve objectsHans Goudey
With this commit, curve objects support the geometry nodes modifier. Curves objects now evaluate to `CurveEval` unless there was a previous implicit conversion (tessellating modifiers, mesh modifiers, or the settings in the curve "Geometry" panel). In the new code, curves are only considered to be the wire edges-- any generated surface is a mesh instead, stored in the evaluated geometry set. The consolidation of concepts mentioned above allows remove a lot of code that had to do with maintaining the `DispList` type temporarily for modifiers and rendering. Instead, render engines see a separate object for the mesh from the mesh geometry component, and when the curve object evaluates to a curve, the `CurveEval` is always used for drawing wire edges. However, currently the `DispList` type is still maintained and used as an intermediate step in implicit mesh conversion. In the future, more uses of it could be changed to use `CurveEval` and `Mesh` instead. This is mostly not changed behavior, it is just a formalization of existing logic after recent fixes for 2.8 versions last year and two years ago. Also, in the future more functionality can be converted to nodes, removing cases of implicit conversions. For more discussion on that topic, see T89676. The `use_fill_deform` option is removed. It has not worked properly since 2.62, and the choice for filling a curve before or after deformation will work much better and be clearer with a node system. Applying the geometry nodes modifier to generate a curve is not implemented with this commit, so applying the modifier won't work at all. This is a separate technical challenge, and should be solved in a separate step. Differential Revision: https://developer.blender.org/D11597
2021-06-28Cleanup: Remove unused "for_orco" argument to curve evaluationHans Goudey
`BKE_displist_make_curveTypes` had a `for_orco` argument that was always false in calls to the function. Removing it allows the curve displist and modifier evaluation code to become simpler. There are some related cleanups in rBdf4299465279 and rB93aecd2b8107.
2021-06-24Cleanup: comment blocks, trailing space in commentsCampbell Barton
2021-06-14Cleanup: Order return argument lastHans Goudey
2021-06-07Cleanup: Make function staticHans Goudey
This was not used in any other file, and it's not likely to be used elsewhere in the future anyway.
2021-06-07Cleanup: Remove outdated/useless commentsHans Goudey
Some of the comments referenced code that was no longer there, or even defines that were removed. Other comments were more confusing and vague than helpful. Also adjust formatting in a few cases.
2021-06-07Cleanup: Remove unused function, make function privateHans Goudey
2021-04-01Cleanup: Use const arguments in curve codeHans Goudey
2021-03-31Cleanup: Remove remaining unused code for DispList "bevel_split"Hans Goudey
This was added in rB93aeb6b318a7, last changed in rB8f0a44a5d55d, and removed in rB51b796ff1528. I assume it was a way for curves to have split edges at corners. As far as I can tell it only ever worked in Blender Internal, and that has been gone for years. Another possible route here would be restoring this functionality, but it's generally preferrable to reduce complexity in this area of curve code than adding it back, especially in the context of other improvements planned related to curves in geometry nodes. Differential Revision: https://developer.blender.org/D9966
2021-02-20Python: Add to_curve method to the object APIOmar Emara
This patch adds a to_curve method to the Object ID. This method is analogous to the to_mesh method. The method can operate on curve and text objects. For text objects, the text is converted into a 3D Curve ID and that curve is returned. For curve objects, if apply_modifiers is true, the spline deform modifiers will be applied and a Curve ID with the result will be returned, otherwise a copy of the curve will be returned. The goal of this addition is to allow the developer to access the splines of text objects and to get the result of modifier applications which was otherwise not possible. Reviewed By: Brecht Differential Revision: https://developer.blender.org/D10354
2021-02-15Cleanup: clang tidyJacques Lucke
2021-02-13Cleanup: Simplify three functions in displist.cHans Goudey
A few related improvements to the three functions: - Reduce variable scope - Use for loops instead of while loops - Use const, bool instead of int - Generally make logic easier to read
2020-09-08Docs: comment values for DispList.typeCampbell Barton
2020-08-07Code Style: use "#pragma once" in source directoryJacques Lucke
This replaces header include guards with `#pragma once`. A couple of include guards are not removed yet (e.g. `__RNA_TYPES_H__`), because they are used in other places. This patch has been generated by P1561 followed by `make format`. Differential Revision: https://developer.blender.org/D8466
2020-03-19Cleanup: `make format` after SortedIncludes changeDalai Felinto
2020-03-02Cleanup: make remaining blenkernel headers work in C++Jacques Lucke
2019-08-25Cleanup: redundant struct declarationsCampbell Barton
2019-05-21Fix T64842: crash rendering files with bevel curvesBrecht Van Lommel
This is old logic that no longer makes sense in the new depsgraph, and causes issues when multiple threads try to modify the same bevel object. Differential Revision: https://developer.blender.org/D4913
2019-05-13Curve: Remove duplicated and confusing argumentSergey Sharybin
Curve function had two arguments: - for_render, which was originally supposed to be used to control whether viewport or render visibility for modifiers is to be used. - use_render_resolution, which sounds like it is supposed to control whether viewport or render resolution for curves is to be used. What is totally confusing is that those arguments were used interchangeably: sometimes use_render_resolution would control modifiers visibility. This commit makes it so there is one single argument for this. Reviewers: brecht Reviewed By: brecht Differential Revision: https://developer.blender.org/D4850
2019-05-10Cleanup: Remove unused functionsSergey Sharybin
2019-04-17ClangFormat: apply to source, most of internCampbell Barton
Apply clang format as proposed in T53211. For details on usage and instructions for migrating branches without conflicts, see: https://wiki.blender.org/wiki/Tools/ClangFormat
2019-02-18doxygen: add newline after \fileCampbell Barton
While \file doesn't need an argument, it can't have another doxy command after it.
2019-02-14Fix T61353: Crash converting a curve to a meshCampbell Barton
This was caused by curves pointing to each other creating a cyclic dependency. While the dependency graph detects this, generating a mesh for render recursively generates data which cashes in this case. Add in a check to detect cyclic links. Note, this bug exists in 2.7x too - but only crashes on render since 2.7x didn't use 'for_render' when converting data.
2019-02-06Cleanup: remove redundant doxygen \file argumentCampbell Barton
Move \ingroup onto same line to be more compact and make it clear the file is in the group.
2019-02-01Cleanup: remove redundant, invalid info from headersCampbell Barton
BF-admins agree to remove header information that isn't useful, to reduce noise. - BEGIN/END license blocks Developers should add non license comments as separate comment blocks. No need for separator text. - Contributors This is often invalid, outdated or misleading especially when splitting files. It's more useful to git-blame to find out who has developed the code. See P901 for script to perform these edits.
2019-01-28Cleanup: sort forward declarations of enum & structCampbell Barton
Done using: source/tools/utils_maintenance/c_sort_blocks.py
2018-11-28Fix T56906: Mesh from Curve not working on curves beveled by curves.Bastien Montagne
Not exactly sure why we did not have cached displist for bevel object here... But anyway, that conversion operation should really happen outside of depsgraph evaluation area, so makes sense to do it as when generating geometry for rendering, imho. Also solves issues like loosing hidden parts of the curve/surface, etc. Still using viewport resolution for curves, though.
2018-11-19Revert "BKE object: Correct bound box of bezier curve objects not matching ↵mano-wii
the object viewed." This reverts commit 24677cf77bbd97827bb5789bc1e4d883732a59da.
2018-11-19BKE object: Correct bound box of bezier curve objects not matching the ↵mano-wii
object viewed.
2018-10-15Mesh: remove DerivedMesh for displist conversionCampbell Barton
2018-06-17Merge branch 'master' into blender2.8Campbell Barton
2018-06-17Cleanup: trailing space for blenkernelCampbell Barton
2018-06-11Merge branch 'master' into blender2.8Bastien Montagne
Conflicts: intern/cycles/blender/blender_object.cpp source/blender/alembic/intern/abc_exporter.cc source/blender/alembic/intern/abc_mball.cc source/blender/alembic/intern/abc_mball.h source/blender/blenkernel/BKE_anim.h source/blender/blenkernel/BKE_displist.h source/blender/blenkernel/BKE_dynamicpaint.h source/blender/blenkernel/BKE_group.h source/blender/blenkernel/BKE_mball.h source/blender/blenkernel/BKE_mball_tessellate.h source/blender/blenkernel/BKE_object.h source/blender/blenkernel/BKE_scene.h source/blender/blenkernel/intern/anim.c source/blender/blenkernel/intern/depsgraph.c source/blender/blenkernel/intern/displist.c source/blender/blenkernel/intern/dynamicpaint.c source/blender/blenkernel/intern/group.c source/blender/blenkernel/intern/mball.c source/blender/blenkernel/intern/mball_tessellate.c source/blender/blenkernel/intern/mesh_convert.c source/blender/blenkernel/intern/object.c source/blender/blenkernel/intern/object_dupli.c source/blender/blenkernel/intern/object_update.c source/blender/blenkernel/intern/pointcache.c source/blender/blenkernel/intern/scene.c source/blender/blenkernel/intern/smoke.c source/blender/depsgraph/intern/builder/deg_builder_nodes.cc source/blender/depsgraph/intern/builder/deg_builder_relations.cc source/blender/editors/include/ED_object.h source/blender/editors/object/object_add.c source/blender/editors/object/object_edit.c source/blender/editors/object/object_modifier.c source/blender/editors/physics/dynamicpaint_ops.c source/blender/editors/sculpt_paint/paint_vertex.c source/blender/editors/sculpt_paint/sculpt_uv.c source/blender/editors/space_view3d/drawobject.c source/blender/editors/space_view3d/view3d_draw.c source/blender/editors/transform/transform_conversions.c source/blender/editors/transform/transform_snap_object.c source/blender/editors/util/ed_util.c source/blender/gpu/intern/gpu_material.c source/blender/makesrna/intern/rna_meta.c source/blender/makesrna/intern/rna_object_api.c source/blender/modifiers/intern/MOD_dynamicpaint.c source/blenderplayer/bad_level_call_stubs/stubs.c
2018-06-11Cleanup: Moar G.main removal of Hell.Bastien Montagne
This commit actually adds some G.main... but at much, much higher level than the ones it removes, so should still be better ;)
2018-04-16Depsgraph: remove EvaluationContext, pass Depsgraph instead.Brecht Van Lommel
The depsgraph was always created within a fixed evaluation context. Passing both risks the depsgraph and evaluation context not matching, and it complicates the Python API where we'd have to expose both which is not so easy to understand. This also removes the global evaluation context in main, which assumed there to be a single active scene and view layer. Differential Revision: https://developer.blender.org/D3152
2017-08-16Pass EvaluationContext instead of bContextCampbell Barton
2.8x branch added bContext arg in many places, pass eval-context instead since its not simple to reason about what what nested functions do when they can access and change almost anything. Also use const to prevent unexpected modifications. This fixes crash loading files with shadows, since off-screen buffers use a NULL context for rendering.
2017-07-21Pass EvaluationContext argument everywhereLuca Rood
Note that some little parts of code have been dissabled because eval_ctx was not available there. This should be resolved once DerivedMesh is replaced.
2016-06-25Cleanup: use BLI_bitmap for bevel-splitCampbell Barton
2015-03-28Cleanup: redundant struct declarationsCampbell Barton
2014-06-15Curve: remove unused displist membersCampbell Barton
2014-03-20Code cleanup: use boolsCampbell Barton
2013-12-26Threaded object update and EvaluationContextSergey Sharybin
Summary: Made objects update happening from multiple threads. It is a task-based scheduling system which uses current dependency graph for spawning new tasks. This means threading happens on object level, but the system is flexible enough for higher granularity. Technical details: - Uses task scheduler which was recently committed to trunk (that one which Brecht ported from Cycles). - Added two utility functions to dependency graph: * DAG_threaded_update_begin, which is called to initialize threaded objects update. It will also schedule root DAG node to the queue, hence starting evaluation process. Initialization will calculate how much parents are to be evaluation before current DAG node can be scheduled. This value is used by task threads for faster detecting which nodes might be scheduled. * DAG_threaded_update_handle_node_updated which is called from task thread function when node was fully handled. This function decreases num_pending_parents of node children and schedules children with zero valency. As it might have become clear, task thread receives DAG nodes and decides which callback to call for it. Currently only BKE_object_handle_update is called for object nodes. In the future it'll call node->callback() from Ali's new DAG. - This required adding some workarounds to the render pipeline. Mainly to stop using get_object_dm() from modifiers' apply callback. Such a call was only a workaround for dependency graph glitch when rendering scene with, say, boolean modifiers before displaying this scene. Such change moves workaround from one place to another, so overall hackentropy remains the same. - Added paradigm of EvaluaitonContext. Currently it's more like just a more reliable replacement for G.is_rendering which fails in some circumstances. Future idea of this context is to also store all the local data needed for objects evaluation such as local time, Copy-on-Write data and so. There're two types of EvaluationContext: * Context used for viewport updated and owned by Main. In the future this context might be easily moved to Window or Screen to allo per-window/per-screen local time. * Context used by render engines to evaluate objects for render purposes. Render engine is an owner of this context. This context is passed to all object update routines. Reviewers: brecht, campbellbarton Reviewed By: brecht CC: lukastoenne Differential Revision: https://developer.blender.org/D94
2013-08-21Partial revert of recenr cu->disp merge commitSergey Sharybin
That ended up in tricky code trying to mimic depsgraph branch behavior API-wise preserving texspace and bound box calculation compatible with previous releases. So for now bring cu->disp back to the trunk but keep texpsace and boundbox APIs the same as in the branch. This keeps texpsapce and boundbox behavior fully compatible with previous releases and still makes API the same as for meshes.
2013-05-28code cleanup: comment/remove unused definesCampbell Barton