2008-04-16 22:40:48 +00:00
|
|
|
# ***** BEGIN GPL LICENSE BLOCK *****
|
2006-11-17 02:27:12 +00:00
|
|
|
#
|
|
|
|
|
# This program is free software; you can redistribute it and/or
|
|
|
|
|
# modify it under the terms of the GNU General Public License
|
|
|
|
|
# as published by the Free Software Foundation; either version 2
|
2008-04-16 22:40:48 +00:00
|
|
|
# of the License, or (at your option) any later version.
|
2006-11-17 02:27:12 +00:00
|
|
|
#
|
|
|
|
|
# This program is distributed in the hope that it will be useful,
|
|
|
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
|
# GNU General Public License for more details.
|
|
|
|
|
#
|
|
|
|
|
# You should have received a copy of the GNU General Public License
|
|
|
|
|
# along with this program; if not, write to the Free Software Foundation,
|
2010-02-12 13:34:04 +00:00
|
|
|
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
2006-11-17 02:27:12 +00:00
|
|
|
#
|
|
|
|
|
# The Original Code is Copyright (C) 2006, Blender Foundation
|
|
|
|
|
# All rights reserved.
|
2008-04-16 22:40:48 +00:00
|
|
|
# ***** END GPL LICENSE BLOCK *****
|
2006-11-17 02:27:12 +00:00
|
|
|
|
2012-03-27 00:17:57 +00:00
|
|
|
set(INC
|
2010-09-06 10:15:41 +00:00
|
|
|
.
|
2011-07-16 23:01:14 +00:00
|
|
|
../blenfont
|
2010-09-06 10:15:41 +00:00
|
|
|
../blenlib
|
|
|
|
|
../blenloader
|
2015-08-16 17:32:01 +10:00
|
|
|
../blentranslation
|
2019-04-24 14:39:31 +10:00
|
|
|
../bmesh
|
Depsgraph: New dependency graph integration commit
This commit integrates the work done so far on the new dependency graph system,
where goal was to replace legacy depsgraph with the new one, supporting loads of
neat features like:
- More granular dependency relation nature, which solves issues with fake cycles
in the dependencies.
- Move towards all-animatable, by better integration of drivers into the system.
- Lay down some basis for upcoming copy-on-write, overrides and so on.
The new system is living side-by-side with the previous one and disabled by
default, so nothing will become suddenly broken. The way to enable new depsgraph
is to pass `--new-depsgraph` command line argument.
It's a bit early to consider the system production-ready, there are some TODOs
and issues were discovered during the merge period, they'll be addressed ASAP.
But it's important to merge, because it's the only way to attract artists to
really start testing this system.
There are number of assorted documents related on the design of the new system:
* http://wiki.blender.org/index.php/User:Aligorith/GSoC2013_Depsgraph#Design_Documents
* http://wiki.blender.org/index.php/User:Nazg-gul/DependencyGraph
There are also some user-related information online:
* http://code.blender.org/2015/02/blender-dependency-graph-branch-for-users/
* http://code.blender.org/2015/03/more-dependency-graph-tricks/
Kudos to everyone who was involved into the project:
- Joshua "Aligorith" Leung -- design specification, initial code
- Lukas "lukas_t" Toenne -- integrating code into blender, with further fixes
- Sergey "Sergey" "Sharybin" -- some mocking around, trying to wrap up the
project and so
- Bassam "slikdigit" Kurdali -- stressing the new system, reporting all the
issues and recording/writing documentation.
- Everyone else who i forgot to mention here :)
2015-05-12 15:05:57 +05:00
|
|
|
../depsgraph
|
2017-02-17 17:53:51 +01:00
|
|
|
../draw
|
2020-07-07 18:23:33 +02:00
|
|
|
../functions
|
2019-04-24 14:39:31 +10:00
|
|
|
../gpencil_modifiers
|
2010-09-06 10:15:41 +00:00
|
|
|
../gpu
|
|
|
|
|
../ikplugin
|
|
|
|
|
../imbuf
|
|
|
|
|
../makesdna
|
|
|
|
|
../makesrna
|
|
|
|
|
../modifiers
|
|
|
|
|
../nodes
|
2020-12-11 15:00:22 +11:00
|
|
|
../render
|
2020-10-05 02:58:56 +02:00
|
|
|
../sequencer
|
2019-04-24 14:39:31 +10:00
|
|
|
../shader_fx
|
2020-08-17 12:40:03 +10:00
|
|
|
../simulation
|
2021-01-04 13:16:17 +11:00
|
|
|
../../../intern/eigen
|
2014-11-23 14:37:13 +01:00
|
|
|
../../../intern/ghost
|
2014-10-07 15:46:19 -05:00
|
|
|
../../../intern/glew-mx
|
2019-04-24 14:39:31 +10:00
|
|
|
../../../intern/guardedalloc
|
2010-09-06 10:15:41 +00:00
|
|
|
../../../intern/iksolver/extern
|
2013-08-19 10:44:18 +00:00
|
|
|
../../../intern/atomic
|
2018-03-29 20:38:32 +02:00
|
|
|
../../../intern/clog
|
2016-01-04 18:22:27 +05:00
|
|
|
../../../intern/libmv
|
2019-12-16 15:50:14 +01:00
|
|
|
../../../intern/mantaflow/extern
|
2019-04-24 14:39:31 +10:00
|
|
|
../../../intern/memutil
|
|
|
|
|
../../../intern/mikktspace
|
2018-08-13 12:21:29 +02:00
|
|
|
../../../intern/opensubdiv
|
2017-10-30 22:36:51 +11:00
|
|
|
../../../extern/curve_fit_nd
|
2019-09-09 22:32:34 +10:00
|
|
|
|
2019-09-12 06:48:13 +10:00
|
|
|
# dna_type_offsets.h
|
2019-09-09 22:32:34 +10:00
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/../makesdna/intern
|
2011-05-31 01:15:44 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
set(INC_SYS
|
2011-01-25 14:43:13 +00:00
|
|
|
${ZLIB_INCLUDE_DIRS}
|
2006-11-17 02:27:12 +00:00
|
|
|
)
|
|
|
|
|
|
2010-10-23 04:05:55 +00:00
|
|
|
set(SRC
|
2019-07-30 11:04:02 +10:00
|
|
|
${CMAKE_SOURCE_DIR}/release/datafiles/userdef/userdef_default.c
|
2010-10-23 04:05:55 +00:00
|
|
|
intern/CCGSubSurf.c
|
2015-07-20 15:05:16 +02:00
|
|
|
intern/CCGSubSurf_legacy.c
|
|
|
|
|
intern/CCGSubSurf_util.c
|
2020-12-14 13:00:28 +01:00
|
|
|
intern/DerivedMesh.cc
|
2010-10-23 04:05:55 +00:00
|
|
|
intern/action.c
|
2021-03-26 13:12:56 +11:00
|
|
|
intern/action_mirror.c
|
2012-12-29 10:24:42 +00:00
|
|
|
intern/addon.c
|
2020-04-03 13:07:36 +02:00
|
|
|
intern/anim_data.c
|
2020-04-03 11:35:04 +02:00
|
|
|
intern/anim_path.c
|
2010-10-23 04:05:55 +00:00
|
|
|
intern/anim_sys.c
|
2020-04-03 11:35:04 +02:00
|
|
|
intern/anim_visualization.c
|
2014-11-23 14:37:13 +01:00
|
|
|
intern/appdir.c
|
2010-10-23 04:05:55 +00:00
|
|
|
intern/armature.c
|
2020-06-12 15:12:54 +10:00
|
|
|
intern/armature_deform.c
|
2021-03-05 16:35:08 +01:00
|
|
|
intern/armature_pose.cc
|
2015-05-12 12:50:24 +05:00
|
|
|
intern/armature_update.c
|
2021-02-06 02:18:38 +01:00
|
|
|
intern/asset.cc
|
2020-07-03 15:30:04 +02:00
|
|
|
intern/attribute.c
|
2020-12-02 13:25:25 +01:00
|
|
|
intern/attribute_access.cc
|
2021-02-09 11:44:58 +01:00
|
|
|
intern/attribute_math.cc
|
2013-06-18 18:11:52 +00:00
|
|
|
intern/autoexec.c
|
2010-10-23 04:05:55 +00:00
|
|
|
intern/blender.c
|
2016-04-24 22:42:41 +10:00
|
|
|
intern/blender_copybuffer.c
|
|
|
|
|
intern/blender_undo.c
|
2018-06-24 16:07:34 +02:00
|
|
|
intern/blender_user_menu.c
|
2016-04-24 22:42:41 +10:00
|
|
|
intern/blendfile.c
|
2016-12-28 17:30:58 +01:00
|
|
|
intern/boids.c
|
2012-12-15 15:31:50 +00:00
|
|
|
intern/bpath.c
|
2010-10-23 04:05:55 +00:00
|
|
|
intern/brush.c
|
|
|
|
|
intern/bvhutils.c
|
Basic Alembic support
All in all, this patch adds an Alembic importer, an Alembic exporter,
and a new CacheFile data block which, for now, wraps around an Alembic
archive. This data block is made available through a new modifier ("Mesh
Sequence Cache") as well as a new constraint ("Transform Cache") to
somewhat properly support respectively geometric and transformation data
streaming from alembic caches.
A more in-depth documentation is to be found on the wiki, as well as a
guide to compile alembic: https://wiki.blender.org/index.php/
User:Kevindietrich/AlembicBasicIo.
Many thanks to everyone involved in this little project, and huge shout
out to "cgstrive" for the thorough testings with Maya, 3ds Max, Houdini
and Realflow as well as @fjuhec, @jensverwiebe and @jasperge for the
custom builds and compile fixes.
Reviewers: sergey, campbellbarton, mont29
Reviewed By: sergey, campbellbarton, mont29
Differential Revision: https://developer.blender.org/D2060
2016-08-06 06:20:37 +02:00
|
|
|
intern/cachefile.c
|
2019-09-05 15:52:38 +02:00
|
|
|
intern/callbacks.c
|
2011-11-05 13:00:39 +00:00
|
|
|
intern/camera.c
|
2010-10-23 04:05:55 +00:00
|
|
|
intern/cdderivedmesh.c
|
|
|
|
|
intern/cloth.c
|
Render Layers and Collections (merge from render-layers)
Design Documents
----------------
* https://wiki.blender.org/index.php/Dev:2.8/Source/Layers
* https://wiki.blender.org/index.php/Dev:2.8/Source/DataDesignRevised
User Commit Log
---------------
* New Layer and Collection system to replace render layers and viewport layers.
* A layer is a set of collections of objects (and their drawing options) required for specific tasks.
* A collection is a set of objects, equivalent of the old layers in Blender. A collection can be shared across multiple layers.
* All Scenes have a master collection that all other collections are children of.
* New collection "context" tab (in Properties Editor)
* New temporary viewport "collections" panel to control per-collection
visibility
Missing User Features
---------------------
* Collection "Filter"
Option to add objects based on their names
* Collection Manager operators
The existing buttons are placeholders
* Collection Manager drawing
The editor main region is empty
* Collection Override
* Per-Collection engine settings
This will come as a separate commit, as part of the clay-engine branch
Dev Commit Log
--------------
* New DNA file (DNA_layer_types.h) with the new structs
We are replacing Base by a new extended Base while keeping it backward
compatible with some legacy settings (i.e., lay, flag_legacy).
Renamed all Base to BaseLegacy to make it clear the areas of code that
still need to be converted
Note: manual changes were required on - deg_builder_nodes.h, rna_object.c, KX_Light.cpp
* Unittesting for main syncronization requirements
- read, write, add/copy/remove objects, copy scene, collection
link/unlinking, context)
* New Editor: Collection Manager
Based on patch by Julian Eisel
This is extracted from the layer-manager branch. With the following changes:
- Renamed references of layer manager to collections manager
- I doesn't include the editors/space_collections/ draw and util files
- The drawing code itself will be implemented separately by Julian
* Base / Object:
A little note about them. Original Blender code would try to keep them
in sync through the code, juggling flags back and forth. This will now
be handled by Depsgraph, keeping Object and Bases more separated
throughout the non-rendering code.
Scene.base is being cleared in doversion, and the old viewport drawing
code was poorly converted to use the new bases while the new viewport
code doesn't get merged and replace the old one.
Python API Changes
------------------
```
- scene.layers
+ # no longer exists
- scene.objects
+ scene.scene_layers.active.objects
- scene.objects.active
+ scene.render_layers.active.objects.active
- bpy.context.scene.objects.link()
+ bpy.context.scene_collection.objects.link()
- bpy_extras.object_utils.object_data_add(context, obdata, operator=None, use_active_layer=True, name=None)
+ bpy_extras.object_utils.object_data_add(context, obdata, operator=None, name=None)
- bpy.context.object.select
+ bpy.context.object.select = True
+ bpy.context.object.select = False
+ bpy.context.object.select_get()
+ bpy.context.object.select_set(action='SELECT')
+ bpy.context.object.select_set(action='DESELECT')
-AddObjectHelper.layers
+ # no longer exists
```
2017-02-07 10:18:38 +01:00
|
|
|
intern/collection.c
|
2010-10-23 04:05:55 +00:00
|
|
|
intern/collision.c
|
2017-12-07 15:36:26 +11:00
|
|
|
intern/colorband.c
|
2010-10-23 04:05:55 +00:00
|
|
|
intern/colortools.c
|
|
|
|
|
intern/constraint.c
|
|
|
|
|
intern/context.c
|
2014-09-09 01:43:25 +10:00
|
|
|
intern/crazyspace.c
|
2020-12-14 16:14:21 +01:00
|
|
|
intern/cryptomatte.cc
|
2014-09-09 01:43:25 +10:00
|
|
|
intern/curve.c
|
2020-07-30 14:45:31 +10:00
|
|
|
intern/curve_bevel.c
|
2021-02-20 18:05:13 +02:00
|
|
|
intern/curve_convert.c
|
2017-10-30 22:36:51 +11:00
|
|
|
intern/curve_decimate.c
|
2020-06-12 15:12:54 +10:00
|
|
|
intern/curve_deform.c
|
2021-05-08 14:54:48 +02:00
|
|
|
intern/curve_eval.cc
|
2019-11-22 13:03:56 +11:00
|
|
|
intern/curveprofile.c
|
2010-10-23 04:05:55 +00:00
|
|
|
intern/customdata.c
|
|
|
|
|
intern/customdata_file.c
|
2015-01-12 12:03:28 +01:00
|
|
|
intern/data_transfer.c
|
2010-10-23 04:05:55 +00:00
|
|
|
intern/deform.c
|
2021-04-26 15:11:53 -05:00
|
|
|
intern/displist.cc
|
2020-01-30 02:44:56 +01:00
|
|
|
intern/displist_tangent.c
|
2011-05-24 07:08:58 +00:00
|
|
|
intern/dynamicpaint.c
|
2018-03-19 14:49:59 +01:00
|
|
|
intern/editlattice.c
|
2013-04-16 05:46:17 +00:00
|
|
|
intern/editmesh.c
|
2013-04-16 05:23:34 +00:00
|
|
|
intern/editmesh_bvh.c
|
2018-10-08 11:35:01 +11:00
|
|
|
intern/editmesh_cache.c
|
2017-05-09 08:50:45 +10:00
|
|
|
intern/editmesh_tangent.c
|
2012-03-08 03:25:53 +00:00
|
|
|
intern/effect.c
|
2010-10-23 04:05:55 +00:00
|
|
|
intern/fcurve.c
|
2021-03-26 13:08:07 +11:00
|
|
|
intern/fcurve_cache.c
|
2020-05-01 12:43:12 +02:00
|
|
|
intern/fcurve_driver.c
|
2019-12-17 10:07:44 +11:00
|
|
|
intern/fluid.c
|
2010-10-23 04:05:55 +00:00
|
|
|
intern/fmodifier.c
|
|
|
|
|
intern/font.c
|
2013-03-23 03:00:37 +00:00
|
|
|
intern/freestyle.c
|
Geometry Nodes: Initial basic curve data support
This patch adds initial curve support to geometry nodes. Currently
there is only one node available, the "Curve to Mesh" node, T87428.
However, the aim of the changes here is larger than just supporting
curve data in nodes-- it also uses the opportunity to add better spline
data structures, intended to replace the existing curve evaluation code.
The curve code in Blender is quite old, and it's generally regarded as
some of the messiest, hardest-to-understand code as well. The classes
in `BKE_spline.hh` aim to be faster, more extensible, and much more
easily understandable. Further explanation can be found in comments in
that file.
Initial builtin spline attributes are supported-- reading and writing
from the `cyclic` and `resolution` attributes works with any of the
attribute nodes. Also, only Z-up normal calculation is implemented
at the moment, and tilts do not apply yet.
**Limitations**
- For now, you must bring curves into the node tree with an "Object
Info" node. Changes to the curve modifier stack will come later.
- Converting to a mesh is necessary to visualize the curve data.
Further progress can be tracked in: T87245
Higher level design document: https://wiki.blender.org/wiki/Modules/Physics_Nodes/Projects/EverythingNodes/CurveNodes
Differential Revision: https://developer.blender.org/D11091
2021-05-03 12:29:17 -05:00
|
|
|
intern/geometry_component_curve.cc
|
2021-03-08 16:31:51 -05:00
|
|
|
intern/geometry_component_instances.cc
|
|
|
|
|
intern/geometry_component_mesh.cc
|
|
|
|
|
intern/geometry_component_pointcloud.cc
|
|
|
|
|
intern/geometry_component_volume.cc
|
2020-12-02 13:25:25 +01:00
|
|
|
intern/geometry_set.cc
|
2021-02-16 12:07:10 +01:00
|
|
|
intern/geometry_set_instances.cc
|
2010-10-23 04:05:55 +00:00
|
|
|
intern/gpencil.c
|
2020-05-06 18:13:59 +02:00
|
|
|
intern/gpencil_curve.c
|
2020-03-19 11:35:17 +01:00
|
|
|
intern/gpencil_geom.c
|
2018-07-31 10:22:19 +02:00
|
|
|
intern/gpencil_modifier.c
|
2020-03-17 14:41:48 +01:00
|
|
|
intern/hair.c
|
2020-12-14 13:21:58 +01:00
|
|
|
intern/icons.cc
|
2018-04-21 21:10:09 +02:00
|
|
|
intern/icons_rasterize.c
|
2010-10-23 04:05:55 +00:00
|
|
|
intern/idprop.c
|
2018-05-05 14:27:54 +02:00
|
|
|
intern/idprop_utils.c
|
2020-03-05 10:54:00 +01:00
|
|
|
intern/idtype.c
|
2010-10-23 04:05:55 +00:00
|
|
|
intern/image.c
|
|
|
|
|
intern/image_gen.c
|
2020-07-29 18:13:19 +02:00
|
|
|
intern/image_gpu.c
|
2019-04-15 00:24:00 +02:00
|
|
|
intern/image_save.c
|
2010-10-23 04:05:55 +00:00
|
|
|
intern/ipo.c
|
2019-11-26 18:43:44 +01:00
|
|
|
intern/kelvinlet.c
|
2010-10-23 04:05:55 +00:00
|
|
|
intern/key.c
|
2018-11-16 11:24:49 +11:00
|
|
|
intern/keyconfig.c
|
2010-10-23 04:05:55 +00:00
|
|
|
intern/lattice.c
|
2020-06-12 15:12:54 +10:00
|
|
|
intern/lattice_deform.c
|
2019-01-25 08:30:33 +11:00
|
|
|
intern/layer.c
|
|
|
|
|
intern/layer_utils.c
|
2020-02-10 12:58:59 +01:00
|
|
|
intern/lib_id.c
|
2020-02-10 15:55:43 +01:00
|
|
|
intern/lib_id_delete.c
|
2020-02-10 12:58:59 +01:00
|
|
|
intern/lib_override.c
|
|
|
|
|
intern/lib_query.c
|
|
|
|
|
intern/lib_remap.c
|
2020-02-10 17:10:17 +01:00
|
|
|
intern/library.c
|
2019-02-27 12:34:56 +11:00
|
|
|
intern/light.c
|
2019-01-25 08:30:33 +11:00
|
|
|
intern/lightprobe.c
|
2013-03-23 03:00:37 +00:00
|
|
|
intern/linestyle.c
|
2018-11-07 16:06:36 +01:00
|
|
|
intern/main.c
|
2020-02-07 16:29:02 +01:00
|
|
|
intern/main_idmap.c
|
2012-12-15 15:31:50 +00:00
|
|
|
intern/mask.c
|
2012-12-11 22:00:22 +00:00
|
|
|
intern/mask_evaluate.c
|
|
|
|
|
intern/mask_rasterize.c
|
2010-10-23 04:05:55 +00:00
|
|
|
intern/material.c
|
|
|
|
|
intern/mball.c
|
2015-02-26 14:39:57 +11:00
|
|
|
intern/mball_tessellate.c
|
2010-10-23 04:05:55 +00:00
|
|
|
intern/mesh.c
|
2021-02-21 17:57:03 -05:00
|
|
|
intern/mesh_boolean_convert.cc
|
2018-05-08 17:44:54 +02:00
|
|
|
intern/mesh_convert.c
|
2013-09-09 02:11:44 +00:00
|
|
|
intern/mesh_evaluate.c
|
2020-12-14 17:22:20 +01:00
|
|
|
intern/mesh_fair.cc
|
2018-06-20 10:03:50 +02:00
|
|
|
intern/mesh_iterators.c
|
2014-01-23 22:34:56 +11:00
|
|
|
intern/mesh_mapping.c
|
2018-04-25 12:21:07 +02:00
|
|
|
intern/mesh_merge.c
|
2019-11-22 13:03:56 +11:00
|
|
|
intern/mesh_mirror.c
|
BKE: Add 'mesh remap' code.
This is the (big!) core of mesh transfer data, it defines a set of structures
to represent a mapping of mesh elements (verts, edges, polys of loops) between
two arbitrary meshes, and code to compute such mappings.
No similarity is required between source and destination meshes (though results
when using complete different meshes are rather unlikely to be useful!).
This code is not bound to data transfer, it is defined to be as generic as possible,
and easy to reuse or extend as needs arise.
Several methods of mapping generation are defined for each element type,
we probably will have to adjust that in future (remove useless ones, add
new ones...).
For loops, you can also define islands (for UVs e.g.) so that loops of a same
destination polygon do not 'spread' across several source islands.
Heavily reviewed and enhanced by Campbell, thanks a lot!
2015-01-09 18:23:17 +01:00
|
|
|
intern/mesh_remap.c
|
2019-08-15 04:46:10 +10:00
|
|
|
intern/mesh_remesh_voxel.c
|
2018-05-08 10:07:21 +02:00
|
|
|
intern/mesh_runtime.c
|
2021-04-21 17:02:19 +02:00
|
|
|
intern/mesh_sample.cc
|
2017-05-24 22:33:21 +10:00
|
|
|
intern/mesh_tangent.c
|
2011-02-09 02:28:11 +00:00
|
|
|
intern/mesh_validate.c
|
2020-10-09 11:56:12 +02:00
|
|
|
intern/mesh_validate.cc
|
2020-05-25 20:16:42 +10:00
|
|
|
intern/mesh_wrapper.c
|
2010-10-23 04:05:55 +00:00
|
|
|
intern/modifier.c
|
2011-11-07 12:55:18 +00:00
|
|
|
intern/movieclip.c
|
2010-10-23 04:05:55 +00:00
|
|
|
intern/multires.c
|
2020-03-03 12:35:51 +01:00
|
|
|
intern/multires_reshape.c
|
|
|
|
|
intern/multires_reshape_apply_base.c
|
|
|
|
|
intern/multires_reshape_ccg.c
|
|
|
|
|
intern/multires_reshape_smooth.c
|
2020-04-30 15:15:19 +02:00
|
|
|
intern/multires_reshape_subdivide.c
|
2020-03-03 12:35:51 +01:00
|
|
|
intern/multires_reshape_util.c
|
|
|
|
|
intern/multires_reshape_vertcos.c
|
2018-08-21 15:40:23 +02:00
|
|
|
intern/multires_subdiv.c
|
2020-04-30 16:47:23 +02:00
|
|
|
intern/multires_unsubdivide.c
|
2020-10-26 12:32:22 +01:00
|
|
|
intern/multires_versioning.c
|
2010-10-23 04:05:55 +00:00
|
|
|
intern/nla.c
|
2021-02-02 09:51:38 -06:00
|
|
|
intern/node.cc
|
2021-02-16 17:15:08 -06:00
|
|
|
intern/node_ui_storage.cc
|
2010-10-23 04:05:55 +00:00
|
|
|
intern/object.c
|
2012-09-05 02:51:55 +00:00
|
|
|
intern/object_deform.c
|
2021-04-01 15:54:48 -05:00
|
|
|
intern/object_dupli.cc
|
2019-01-25 08:30:33 +11:00
|
|
|
intern/object_facemap.c
|
2015-05-12 12:50:24 +05:00
|
|
|
intern/object_update.c
|
2012-03-08 03:25:53 +00:00
|
|
|
intern/ocean.c
|
2020-03-12 13:35:22 +11:00
|
|
|
intern/ocean_spectrum.c
|
2015-04-07 11:01:47 +10:00
|
|
|
intern/outliner_treehash.c
|
2010-10-23 04:05:55 +00:00
|
|
|
intern/packedFile.c
|
|
|
|
|
intern/paint.c
|
2018-11-02 09:10:23 +11:00
|
|
|
intern/paint_toolslots.c
|
2016-12-28 17:30:58 +01:00
|
|
|
intern/particle.c
|
|
|
|
|
intern/particle_child.c
|
|
|
|
|
intern/particle_distribute.c
|
|
|
|
|
intern/particle_system.c
|
2012-12-15 15:59:25 +00:00
|
|
|
intern/pbvh.c
|
2012-12-30 18:28:36 +00:00
|
|
|
intern/pbvh_bmesh.c
|
2016-12-28 17:30:58 +01:00
|
|
|
intern/pointcache.c
|
2020-11-09 15:47:16 +01:00
|
|
|
intern/pointcloud.cc
|
2020-12-14 13:39:41 +01:00
|
|
|
intern/preferences.c
|
2010-10-23 04:05:55 +00:00
|
|
|
intern/report.c
|
2013-01-23 05:56:22 +00:00
|
|
|
intern/rigidbody.c
|
2010-10-23 04:05:55 +00:00
|
|
|
intern/scene.c
|
|
|
|
|
intern/screen.c
|
2018-07-31 10:22:19 +02:00
|
|
|
intern/shader_fx.c
|
2010-10-23 04:05:55 +00:00
|
|
|
intern/shrinkwrap.c
|
2020-04-20 10:37:38 +02:00
|
|
|
intern/simulation.cc
|
2010-10-23 04:05:55 +00:00
|
|
|
intern/softbody.c
|
|
|
|
|
intern/sound.c
|
2011-08-04 07:12:03 +00:00
|
|
|
intern/speaker.c
|
Geometry Nodes: Initial basic curve data support
This patch adds initial curve support to geometry nodes. Currently
there is only one node available, the "Curve to Mesh" node, T87428.
However, the aim of the changes here is larger than just supporting
curve data in nodes-- it also uses the opportunity to add better spline
data structures, intended to replace the existing curve evaluation code.
The curve code in Blender is quite old, and it's generally regarded as
some of the messiest, hardest-to-understand code as well. The classes
in `BKE_spline.hh` aim to be faster, more extensible, and much more
easily understandable. Further explanation can be found in comments in
that file.
Initial builtin spline attributes are supported-- reading and writing
from the `cyclic` and `resolution` attributes works with any of the
attribute nodes. Also, only Z-up normal calculation is implemented
at the moment, and tilts do not apply yet.
**Limitations**
- For now, you must bring curves into the node tree with an "Object
Info" node. Changes to the curve modifier stack will come later.
- Converting to a mesh is necessary to visualize the curve data.
Further progress can be tracked in: T87245
Higher level design document: https://wiki.blender.org/wiki/Modules/Physics_Nodes/Projects/EverythingNodes/CurveNodes
Differential Revision: https://developer.blender.org/D11091
2021-05-03 12:29:17 -05:00
|
|
|
intern/spline_base.cc
|
|
|
|
|
intern/spline_bezier.cc
|
|
|
|
|
intern/spline_nurbs.cc
|
|
|
|
|
intern/spline_poly.cc
|
2018-05-11 16:55:14 +02:00
|
|
|
intern/studiolight.c
|
2018-07-17 18:09:18 +02:00
|
|
|
intern/subdiv.c
|
2018-09-04 16:16:01 +02:00
|
|
|
intern/subdiv_ccg.c
|
2018-09-21 13:58:49 +02:00
|
|
|
intern/subdiv_ccg_mask.c
|
2019-02-22 16:56:54 +01:00
|
|
|
intern/subdiv_ccg_material.c
|
2018-07-17 18:09:18 +02:00
|
|
|
intern/subdiv_converter.c
|
|
|
|
|
intern/subdiv_converter_mesh.c
|
2019-09-11 11:09:39 +02:00
|
|
|
intern/subdiv_deform.c
|
2018-08-14 17:05:54 +02:00
|
|
|
intern/subdiv_displacement.c
|
|
|
|
|
intern/subdiv_displacement_multires.c
|
2018-07-17 18:09:18 +02:00
|
|
|
intern/subdiv_eval.c
|
2018-08-20 12:46:44 +02:00
|
|
|
intern/subdiv_foreach.c
|
2018-07-17 18:09:18 +02:00
|
|
|
intern/subdiv_mesh.c
|
2018-07-19 16:27:18 +02:00
|
|
|
intern/subdiv_stats.c
|
2019-09-18 15:56:46 +02:00
|
|
|
intern/subdiv_topology.c
|
2010-10-23 04:05:55 +00:00
|
|
|
intern/subsurf_ccg.c
|
|
|
|
|
intern/text.c
|
2019-11-22 13:29:25 +11:00
|
|
|
intern/text_suggestions.c
|
2010-10-23 04:05:55 +00:00
|
|
|
intern/texture.c
|
2011-11-07 12:55:18 +00:00
|
|
|
intern/tracking.c
|
2014-06-22 20:19:48 +06:00
|
|
|
intern/tracking_auto.c
|
2013-12-30 17:03:59 +06:00
|
|
|
intern/tracking_detect.c
|
|
|
|
|
intern/tracking_plane_tracker.c
|
|
|
|
|
intern/tracking_region_tracker.c
|
|
|
|
|
intern/tracking_solver.c
|
|
|
|
|
intern/tracking_stabilize.c
|
|
|
|
|
intern/tracking_util.c
|
2018-03-19 14:17:59 +01:00
|
|
|
intern/undo_system.c
|
2010-10-23 04:05:55 +00:00
|
|
|
intern/unit.c
|
2020-03-17 14:41:48 +01:00
|
|
|
intern/volume.cc
|
2020-03-17 16:27:08 +01:00
|
|
|
intern/volume_render.cc
|
2021-02-05 16:20:14 +01:00
|
|
|
intern/volume_to_mesh.cc
|
Main Workspace Integration
This commit does the main integration of workspaces, which is a design we agreed on during the 2.8 UI workshop (see https://wiki.blender.org/index.php/Dev:2.8/UI/Workshop_Writeup)
Workspaces should generally be stable, I'm not aware of any remaining bugs (or I've forgotten them :) ). If you find any, let me know!
(Exception: mode switching button might get out of sync with actual mode in some cases, would consider that a limitation/ToDo. Needs to be resolved at some point.)
== Main Changes/Features
* Introduces the new Workspaces as data-blocks.
* Allow storing a number of custom workspaces as part of the user configuration. Needs further work to allow adding and deleting individual workspaces.
* Bundle a default workspace configuration with Blender (current screen-layouts converted to workspaces).
* Pressing button to add a workspace spawns a menu to select between "Duplicate Current" and the workspaces from the user configuration. If no workspaces are stored in the user configuration, the default workspaces are listed instead.
* Store screen-layouts (`bScreen`) per workspace.
* Store an active screen-layout per workspace. Changing the workspace will enable this layout.
* Store active mode in workspace. Changing the workspace will also enter the mode of the new workspace. (Note that we still store the active mode in the object, moving this completely to workspaces is a separate project.)
* Store an active render layer per workspace.
* Moved mode switch from 3D View header to Info Editor header.
* Store active scene in window (not directly workspace related, but overlaps quite a bit).
* Removed 'Use Global Scene' User Preference option.
* Compatibility with old files - a new workspace is created for every screen-layout of old files. Old Blender versions should be able to read files saved with workspace support as well.
* Default .blend only contains one workspace ("General").
* Support appending workspaces.
Opening files without UI and commandline rendering should work fine.
Note that the UI is temporary! We plan to introduce a new global topbar
that contains the workspace options and tabs for switching workspaces.
== Technical Notes
* Workspaces are data-blocks.
* Adding and removing `bScreen`s should be done through `ED_workspace_layout` API now.
* A workspace can be active in multiple windows at the same time.
* The mode menu (which is now in the Info Editor header) doesn't display "Grease Pencil Edit" mode anymore since its availability depends on the active editor. Will be fixed by making Grease Pencil an own object type (as planned).
* The button to change the active workspace object mode may get out of sync with the mode of the active object. Will either be resolved by moving mode out of object data, or we'll disable workspace modes again (there's a `#define USE_WORKSPACE_MODE` for that).
* Screen-layouts (`bScreen`) are IDs and thus stored in a main list-base. Had to add a wrapper `WorkSpaceLayout` so we can store them in a list-base within workspaces, too. On the long run we could completely replace `bScreen` by workspace structs.
* `WorkSpace` types use some special compiler trickery to allow marking structs and struct members as private. BKE_workspace API should be used for accessing those.
* Added scene operators `SCENE_OT_`. Was previously done through screen operators.
== BPY API Changes
* Removed `Screen.scene`, added `Window.scene`
* Removed `UserPreferencesView.use_global_scene`
* Added `Context.workspace`, `Window.workspace` and `BlendData.workspaces`
* Added `bpy.types.WorkSpace` containing `screens`, `object_mode` and `render_layer`
* Added Screen.layout_name for the layout name that'll be displayed in the UI (may differ from internal name)
== What's left?
* There are a few open design questions (T50521). We should find the needed answers and implement them.
* Allow adding and removing individual workspaces from workspace configuration (needs UI design).
* Get the override system ready and support overrides per workspace.
* Support custom UI setups as part of workspaces (hidden panels, hidden buttons, customizable toolbars, etc).
* Allow enabling add-ons per workspace.
* Support custom workspace keymaps.
* Remove special exception for workspaces in linking code (so they're always appended, never linked). Depends on a few things, so best to solve later.
* Get the topbar done.
* Workspaces need a proper icon, current one is just a placeholder :)
Reviewed By: campbellbarton, mont29
Tags: #user_interface, #bf_blender_2.8
Maniphest Tasks: T50521
Differential Revision: https://developer.blender.org/D2451
2017-06-01 19:56:58 +02:00
|
|
|
intern/workspace.c
|
2010-10-23 04:05:55 +00:00
|
|
|
intern/world.c
|
|
|
|
|
intern/writeavi.c
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2010-11-29 04:35:56 +00:00
|
|
|
BKE_DerivedMesh.h
|
|
|
|
|
BKE_action.h
|
2012-12-29 10:24:42 +00:00
|
|
|
BKE_addon.h
|
2020-04-03 13:07:36 +02:00
|
|
|
BKE_anim_data.h
|
2020-04-03 11:35:04 +02:00
|
|
|
BKE_anim_path.h
|
|
|
|
|
BKE_anim_visualization.h
|
2010-11-29 04:35:56 +00:00
|
|
|
BKE_animsys.h
|
2014-11-23 14:37:13 +01:00
|
|
|
BKE_appdir.h
|
2010-11-29 04:35:56 +00:00
|
|
|
BKE_armature.h
|
2021-01-04 13:16:17 +11:00
|
|
|
BKE_asset.h
|
2020-07-03 15:30:04 +02:00
|
|
|
BKE_attribute.h
|
2020-12-02 13:25:25 +01:00
|
|
|
BKE_attribute_access.hh
|
2021-01-15 12:00:30 +01:00
|
|
|
BKE_attribute_math.hh
|
2013-06-18 18:11:52 +00:00
|
|
|
BKE_autoexec.h
|
2010-11-29 04:35:56 +00:00
|
|
|
BKE_blender.h
|
2016-04-24 22:42:41 +10:00
|
|
|
BKE_blender_copybuffer.h
|
|
|
|
|
BKE_blender_undo.h
|
2018-09-06 21:23:25 +10:00
|
|
|
BKE_blender_user_menu.h
|
2016-04-24 22:42:41 +10:00
|
|
|
BKE_blender_version.h
|
|
|
|
|
BKE_blendfile.h
|
2016-12-28 17:30:58 +01:00
|
|
|
BKE_boids.h
|
2012-12-15 15:59:25 +00:00
|
|
|
BKE_bpath.h
|
2010-11-29 04:35:56 +00:00
|
|
|
BKE_brush.h
|
|
|
|
|
BKE_bvhutils.h
|
Basic Alembic support
All in all, this patch adds an Alembic importer, an Alembic exporter,
and a new CacheFile data block which, for now, wraps around an Alembic
archive. This data block is made available through a new modifier ("Mesh
Sequence Cache") as well as a new constraint ("Transform Cache") to
somewhat properly support respectively geometric and transformation data
streaming from alembic caches.
A more in-depth documentation is to be found on the wiki, as well as a
guide to compile alembic: https://wiki.blender.org/index.php/
User:Kevindietrich/AlembicBasicIo.
Many thanks to everyone involved in this little project, and huge shout
out to "cgstrive" for the thorough testings with Maya, 3ds Max, Houdini
and Realflow as well as @fjuhec, @jensverwiebe and @jasperge for the
custom builds and compile fixes.
Reviewers: sergey, campbellbarton, mont29
Reviewed By: sergey, campbellbarton, mont29
Differential Revision: https://developer.blender.org/D2060
2016-08-06 06:20:37 +02:00
|
|
|
BKE_cachefile.h
|
2019-09-05 15:52:38 +02:00
|
|
|
BKE_callbacks.h
|
2011-11-05 13:00:39 +00:00
|
|
|
BKE_camera.h
|
2012-05-17 23:12:15 +00:00
|
|
|
BKE_ccg.h
|
2010-11-29 04:35:56 +00:00
|
|
|
BKE_cdderivedmesh.h
|
|
|
|
|
BKE_cloth.h
|
Render Layers and Collections (merge from render-layers)
Design Documents
----------------
* https://wiki.blender.org/index.php/Dev:2.8/Source/Layers
* https://wiki.blender.org/index.php/Dev:2.8/Source/DataDesignRevised
User Commit Log
---------------
* New Layer and Collection system to replace render layers and viewport layers.
* A layer is a set of collections of objects (and their drawing options) required for specific tasks.
* A collection is a set of objects, equivalent of the old layers in Blender. A collection can be shared across multiple layers.
* All Scenes have a master collection that all other collections are children of.
* New collection "context" tab (in Properties Editor)
* New temporary viewport "collections" panel to control per-collection
visibility
Missing User Features
---------------------
* Collection "Filter"
Option to add objects based on their names
* Collection Manager operators
The existing buttons are placeholders
* Collection Manager drawing
The editor main region is empty
* Collection Override
* Per-Collection engine settings
This will come as a separate commit, as part of the clay-engine branch
Dev Commit Log
--------------
* New DNA file (DNA_layer_types.h) with the new structs
We are replacing Base by a new extended Base while keeping it backward
compatible with some legacy settings (i.e., lay, flag_legacy).
Renamed all Base to BaseLegacy to make it clear the areas of code that
still need to be converted
Note: manual changes were required on - deg_builder_nodes.h, rna_object.c, KX_Light.cpp
* Unittesting for main syncronization requirements
- read, write, add/copy/remove objects, copy scene, collection
link/unlinking, context)
* New Editor: Collection Manager
Based on patch by Julian Eisel
This is extracted from the layer-manager branch. With the following changes:
- Renamed references of layer manager to collections manager
- I doesn't include the editors/space_collections/ draw and util files
- The drawing code itself will be implemented separately by Julian
* Base / Object:
A little note about them. Original Blender code would try to keep them
in sync through the code, juggling flags back and forth. This will now
be handled by Depsgraph, keeping Object and Bases more separated
throughout the non-rendering code.
Scene.base is being cleared in doversion, and the old viewport drawing
code was poorly converted to use the new bases while the new viewport
code doesn't get merged and replace the old one.
Python API Changes
------------------
```
- scene.layers
+ # no longer exists
- scene.objects
+ scene.scene_layers.active.objects
- scene.objects.active
+ scene.render_layers.active.objects.active
- bpy.context.scene.objects.link()
+ bpy.context.scene_collection.objects.link()
- bpy_extras.object_utils.object_data_add(context, obdata, operator=None, use_active_layer=True, name=None)
+ bpy_extras.object_utils.object_data_add(context, obdata, operator=None, name=None)
- bpy.context.object.select
+ bpy.context.object.select = True
+ bpy.context.object.select = False
+ bpy.context.object.select_get()
+ bpy.context.object.select_set(action='SELECT')
+ bpy.context.object.select_set(action='DESELECT')
-AddObjectHelper.layers
+ # no longer exists
```
2017-02-07 10:18:38 +01:00
|
|
|
BKE_collection.h
|
2010-11-29 04:35:56 +00:00
|
|
|
BKE_collision.h
|
2017-12-07 15:36:26 +11:00
|
|
|
BKE_colorband.h
|
2010-11-29 04:35:56 +00:00
|
|
|
BKE_colortools.h
|
|
|
|
|
BKE_constraint.h
|
|
|
|
|
BKE_context.h
|
2014-09-09 01:43:25 +10:00
|
|
|
BKE_crazyspace.h
|
2021-01-20 16:08:52 +11:00
|
|
|
BKE_cryptomatte.h
|
|
|
|
|
BKE_cryptomatte.hh
|
2010-11-29 04:35:56 +00:00
|
|
|
BKE_curve.h
|
2019-11-22 13:03:56 +11:00
|
|
|
BKE_curveprofile.h
|
2010-11-29 04:35:56 +00:00
|
|
|
BKE_customdata.h
|
|
|
|
|
BKE_customdata_file.h
|
2015-01-12 12:03:28 +01:00
|
|
|
BKE_data_transfer.h
|
2010-11-29 04:35:56 +00:00
|
|
|
BKE_deform.h
|
Geometry Nodes: Initial basic curve data support
This patch adds initial curve support to geometry nodes. Currently
there is only one node available, the "Curve to Mesh" node, T87428.
However, the aim of the changes here is larger than just supporting
curve data in nodes-- it also uses the opportunity to add better spline
data structures, intended to replace the existing curve evaluation code.
The curve code in Blender is quite old, and it's generally regarded as
some of the messiest, hardest-to-understand code as well. The classes
in `BKE_spline.hh` aim to be faster, more extensible, and much more
easily understandable. Further explanation can be found in comments in
that file.
Initial builtin spline attributes are supported-- reading and writing
from the `cyclic` and `resolution` attributes works with any of the
attribute nodes. Also, only Z-up normal calculation is implemented
at the moment, and tilts do not apply yet.
**Limitations**
- For now, you must bring curves into the node tree with an "Object
Info" node. Changes to the curve modifier stack will come later.
- Converting to a mesh is necessary to visualize the curve data.
Further progress can be tracked in: T87245
Higher level design document: https://wiki.blender.org/wiki/Modules/Physics_Nodes/Projects/EverythingNodes/CurveNodes
Differential Revision: https://developer.blender.org/D11091
2021-05-03 12:29:17 -05:00
|
|
|
BKE_spline.hh
|
2010-11-29 04:35:56 +00:00
|
|
|
BKE_displist.h
|
2020-01-30 02:44:56 +01:00
|
|
|
BKE_displist_tangent.h
|
2020-04-03 11:35:04 +02:00
|
|
|
BKE_duplilist.h
|
2011-11-10 13:00:27 +00:00
|
|
|
BKE_dynamicpaint.h
|
2018-03-19 14:49:59 +01:00
|
|
|
BKE_editlattice.h
|
2015-04-07 11:01:47 +10:00
|
|
|
BKE_editmesh.h
|
|
|
|
|
BKE_editmesh_bvh.h
|
2018-10-08 11:35:01 +11:00
|
|
|
BKE_editmesh_cache.h
|
2017-05-09 08:50:45 +10:00
|
|
|
BKE_editmesh_tangent.h
|
2010-11-29 04:35:56 +00:00
|
|
|
BKE_effect.h
|
|
|
|
|
BKE_fcurve.h
|
2020-05-01 12:43:12 +02:00
|
|
|
BKE_fcurve_driver.h
|
2019-12-17 10:07:44 +11:00
|
|
|
BKE_fluid.h
|
2010-11-29 04:35:56 +00:00
|
|
|
BKE_font.h
|
2013-03-23 03:00:37 +00:00
|
|
|
BKE_freestyle.h
|
2020-12-02 13:25:25 +01:00
|
|
|
BKE_geometry_set.h
|
|
|
|
|
BKE_geometry_set.hh
|
2021-02-16 12:07:10 +01:00
|
|
|
BKE_geometry_set_instances.hh
|
2010-11-29 04:35:56 +00:00
|
|
|
BKE_global.h
|
|
|
|
|
BKE_gpencil.h
|
2020-05-06 18:13:59 +02:00
|
|
|
BKE_gpencil_curve.h
|
2020-03-19 11:35:17 +01:00
|
|
|
BKE_gpencil_geom.h
|
2018-07-31 10:22:19 +02:00
|
|
|
BKE_gpencil_modifier.h
|
2020-03-17 14:41:48 +01:00
|
|
|
BKE_hair.h
|
2010-11-29 04:35:56 +00:00
|
|
|
BKE_icons.h
|
|
|
|
|
BKE_idprop.h
|
2020-03-05 10:54:00 +01:00
|
|
|
BKE_idtype.h
|
2010-11-29 04:35:56 +00:00
|
|
|
BKE_image.h
|
2020-07-16 13:17:31 +10:00
|
|
|
BKE_image_save.h
|
2010-11-29 04:35:56 +00:00
|
|
|
BKE_ipo.h
|
2019-11-26 18:43:44 +01:00
|
|
|
BKE_kelvinlet.h
|
2010-11-29 04:35:56 +00:00
|
|
|
BKE_key.h
|
2018-11-16 11:24:49 +11:00
|
|
|
BKE_keyconfig.h
|
2010-11-29 04:35:56 +00:00
|
|
|
BKE_lattice.h
|
2019-01-25 08:30:33 +11:00
|
|
|
BKE_layer.h
|
2020-02-10 12:58:59 +01:00
|
|
|
BKE_lib_id.h
|
|
|
|
|
BKE_lib_override.h
|
|
|
|
|
BKE_lib_query.h
|
|
|
|
|
BKE_lib_remap.h
|
2020-02-10 17:10:17 +01:00
|
|
|
BKE_library.h
|
2019-02-27 12:34:56 +11:00
|
|
|
BKE_light.h
|
2019-01-25 08:30:33 +11:00
|
|
|
BKE_lightprobe.h
|
2013-03-23 03:00:37 +00:00
|
|
|
BKE_linestyle.h
|
2010-11-29 04:35:56 +00:00
|
|
|
BKE_main.h
|
2020-02-07 16:29:02 +01:00
|
|
|
BKE_main_idmap.h
|
2012-10-14 13:08:19 +00:00
|
|
|
BKE_mask.h
|
2010-11-29 04:35:56 +00:00
|
|
|
BKE_material.h
|
|
|
|
|
BKE_mball.h
|
2015-02-26 14:39:57 +11:00
|
|
|
BKE_mball_tessellate.h
|
2010-11-29 04:35:56 +00:00
|
|
|
BKE_mesh.h
|
2021-04-02 00:16:01 -05:00
|
|
|
BKE_mesh_boolean_convert.hh
|
2020-12-14 17:22:20 +01:00
|
|
|
BKE_mesh_fair.h
|
2021-01-04 13:16:17 +11:00
|
|
|
BKE_mesh_iterators.h
|
2014-01-23 22:34:56 +11:00
|
|
|
BKE_mesh_mapping.h
|
2019-11-22 13:03:56 +11:00
|
|
|
BKE_mesh_mirror.h
|
BKE: Add 'mesh remap' code.
This is the (big!) core of mesh transfer data, it defines a set of structures
to represent a mapping of mesh elements (verts, edges, polys of loops) between
two arbitrary meshes, and code to compute such mappings.
No similarity is required between source and destination meshes (though results
when using complete different meshes are rather unlikely to be useful!).
This code is not bound to data transfer, it is defined to be as generic as possible,
and easy to reuse or extend as needs arise.
Several methods of mapping generation are defined for each element type,
we probably will have to adjust that in future (remove useless ones, add
new ones...).
For loops, you can also define islands (for UVs e.g.) so that loops of a same
destination polygon do not 'spread' across several source islands.
Heavily reviewed and enhanced by Campbell, thanks a lot!
2015-01-09 18:23:17 +01:00
|
|
|
BKE_mesh_remap.h
|
2019-08-15 04:46:10 +10:00
|
|
|
BKE_mesh_remesh_voxel.h
|
2018-07-04 12:09:35 +02:00
|
|
|
BKE_mesh_runtime.h
|
2021-04-21 17:02:19 +02:00
|
|
|
BKE_mesh_sample.hh
|
2017-05-24 22:33:21 +10:00
|
|
|
BKE_mesh_tangent.h
|
2021-01-20 16:08:52 +11:00
|
|
|
BKE_mesh_types.h
|
2020-06-10 22:32:06 +10:00
|
|
|
BKE_mesh_wrapper.h
|
2010-11-29 04:35:56 +00:00
|
|
|
BKE_modifier.h
|
2011-11-07 12:55:18 +00:00
|
|
|
BKE_movieclip.h
|
2010-11-29 04:35:56 +00:00
|
|
|
BKE_multires.h
|
|
|
|
|
BKE_nla.h
|
|
|
|
|
BKE_node.h
|
2021-03-26 12:23:21 +11:00
|
|
|
BKE_node_ui_storage.hh
|
2010-11-29 04:35:56 +00:00
|
|
|
BKE_object.h
|
2012-09-05 02:51:55 +00:00
|
|
|
BKE_object_deform.h
|
2019-01-25 08:30:33 +11:00
|
|
|
BKE_object_facemap.h
|
2012-03-08 03:25:53 +00:00
|
|
|
BKE_ocean.h
|
2015-04-07 11:01:47 +10:00
|
|
|
BKE_outliner_treehash.h
|
2010-11-29 04:35:56 +00:00
|
|
|
BKE_packedFile.h
|
|
|
|
|
BKE_paint.h
|
2016-12-28 17:30:58 +01:00
|
|
|
BKE_particle.h
|
2012-12-15 15:59:25 +00:00
|
|
|
BKE_pbvh.h
|
2016-12-28 17:30:58 +01:00
|
|
|
BKE_pointcache.h
|
2020-03-17 14:41:48 +01:00
|
|
|
BKE_pointcloud.h
|
2020-12-14 13:39:41 +01:00
|
|
|
BKE_preferences.h
|
2010-11-29 04:35:56 +00:00
|
|
|
BKE_report.h
|
2013-01-23 05:56:22 +00:00
|
|
|
BKE_rigidbody.h
|
2010-11-29 04:35:56 +00:00
|
|
|
BKE_scene.h
|
|
|
|
|
BKE_screen.h
|
2020-07-16 13:17:31 +10:00
|
|
|
BKE_sequencer_offscreen.h
|
2018-07-31 10:22:19 +02:00
|
|
|
BKE_shader_fx.h
|
2010-11-29 04:35:56 +00:00
|
|
|
BKE_shrinkwrap.h
|
2020-04-20 10:37:38 +02:00
|
|
|
BKE_simulation.h
|
2010-11-29 04:35:56 +00:00
|
|
|
BKE_softbody.h
|
|
|
|
|
BKE_sound.h
|
2011-08-04 07:12:03 +00:00
|
|
|
BKE_speaker.h
|
2018-05-11 16:55:14 +02:00
|
|
|
BKE_studiolight.h
|
2018-07-17 18:09:18 +02:00
|
|
|
BKE_subdiv.h
|
2018-09-04 16:16:01 +02:00
|
|
|
BKE_subdiv_ccg.h
|
2019-09-11 11:09:39 +02:00
|
|
|
BKE_subdiv_deform.h
|
2018-09-04 15:26:58 +02:00
|
|
|
BKE_subdiv_eval.h
|
2018-09-04 15:22:36 +02:00
|
|
|
BKE_subdiv_foreach.h
|
2018-09-04 15:32:01 +02:00
|
|
|
BKE_subdiv_mesh.h
|
2019-09-18 15:56:46 +02:00
|
|
|
BKE_subdiv_topology.h
|
2010-11-29 04:35:56 +00:00
|
|
|
BKE_subsurf.h
|
|
|
|
|
BKE_text.h
|
2019-11-22 13:29:25 +11:00
|
|
|
BKE_text_suggestions.h
|
2010-11-29 04:35:56 +00:00
|
|
|
BKE_texture.h
|
2011-11-07 12:55:18 +00:00
|
|
|
BKE_tracking.h
|
2018-03-19 14:17:59 +01:00
|
|
|
BKE_undo_system.h
|
2010-11-29 04:35:56 +00:00
|
|
|
BKE_unit.h
|
2020-03-17 14:41:48 +01:00
|
|
|
BKE_volume.h
|
2020-03-17 16:27:08 +01:00
|
|
|
BKE_volume_render.h
|
2021-02-05 16:20:14 +01:00
|
|
|
BKE_volume_to_mesh.hh
|
Main Workspace Integration
This commit does the main integration of workspaces, which is a design we agreed on during the 2.8 UI workshop (see https://wiki.blender.org/index.php/Dev:2.8/UI/Workshop_Writeup)
Workspaces should generally be stable, I'm not aware of any remaining bugs (or I've forgotten them :) ). If you find any, let me know!
(Exception: mode switching button might get out of sync with actual mode in some cases, would consider that a limitation/ToDo. Needs to be resolved at some point.)
== Main Changes/Features
* Introduces the new Workspaces as data-blocks.
* Allow storing a number of custom workspaces as part of the user configuration. Needs further work to allow adding and deleting individual workspaces.
* Bundle a default workspace configuration with Blender (current screen-layouts converted to workspaces).
* Pressing button to add a workspace spawns a menu to select between "Duplicate Current" and the workspaces from the user configuration. If no workspaces are stored in the user configuration, the default workspaces are listed instead.
* Store screen-layouts (`bScreen`) per workspace.
* Store an active screen-layout per workspace. Changing the workspace will enable this layout.
* Store active mode in workspace. Changing the workspace will also enter the mode of the new workspace. (Note that we still store the active mode in the object, moving this completely to workspaces is a separate project.)
* Store an active render layer per workspace.
* Moved mode switch from 3D View header to Info Editor header.
* Store active scene in window (not directly workspace related, but overlaps quite a bit).
* Removed 'Use Global Scene' User Preference option.
* Compatibility with old files - a new workspace is created for every screen-layout of old files. Old Blender versions should be able to read files saved with workspace support as well.
* Default .blend only contains one workspace ("General").
* Support appending workspaces.
Opening files without UI and commandline rendering should work fine.
Note that the UI is temporary! We plan to introduce a new global topbar
that contains the workspace options and tabs for switching workspaces.
== Technical Notes
* Workspaces are data-blocks.
* Adding and removing `bScreen`s should be done through `ED_workspace_layout` API now.
* A workspace can be active in multiple windows at the same time.
* The mode menu (which is now in the Info Editor header) doesn't display "Grease Pencil Edit" mode anymore since its availability depends on the active editor. Will be fixed by making Grease Pencil an own object type (as planned).
* The button to change the active workspace object mode may get out of sync with the mode of the active object. Will either be resolved by moving mode out of object data, or we'll disable workspace modes again (there's a `#define USE_WORKSPACE_MODE` for that).
* Screen-layouts (`bScreen`) are IDs and thus stored in a main list-base. Had to add a wrapper `WorkSpaceLayout` so we can store them in a list-base within workspaces, too. On the long run we could completely replace `bScreen` by workspace structs.
* `WorkSpace` types use some special compiler trickery to allow marking structs and struct members as private. BKE_workspace API should be used for accessing those.
* Added scene operators `SCENE_OT_`. Was previously done through screen operators.
== BPY API Changes
* Removed `Screen.scene`, added `Window.scene`
* Removed `UserPreferencesView.use_global_scene`
* Added `Context.workspace`, `Window.workspace` and `BlendData.workspaces`
* Added `bpy.types.WorkSpace` containing `screens`, `object_mode` and `render_layer`
* Added Screen.layout_name for the layout name that'll be displayed in the UI (may differ from internal name)
== What's left?
* There are a few open design questions (T50521). We should find the needed answers and implement them.
* Allow adding and removing individual workspaces from workspace configuration (needs UI design).
* Get the override system ready and support overrides per workspace.
* Support custom UI setups as part of workspaces (hidden panels, hidden buttons, customizable toolbars, etc).
* Allow enabling add-ons per workspace.
* Support custom workspace keymaps.
* Remove special exception for workspaces in linking code (so they're always appended, never linked). Depends on a few things, so best to solve later.
* Get the topbar done.
* Workspaces need a proper icon, current one is just a placeholder :)
Reviewed By: campbellbarton, mont29
Tags: #user_interface, #bf_blender_2.8
Maniphest Tasks: T50521
Differential Revision: https://developer.blender.org/D2451
2017-06-01 19:56:58 +02:00
|
|
|
BKE_workspace.h
|
2010-11-29 04:35:56 +00:00
|
|
|
BKE_world.h
|
|
|
|
|
BKE_writeavi.h
|
2019-04-17 06:17:24 +02:00
|
|
|
|
2010-11-29 04:35:56 +00:00
|
|
|
nla_private.h
|
2018-02-14 11:52:58 +01:00
|
|
|
particle_private.h
|
2018-11-29 09:01:03 +11:00
|
|
|
tracking_private.h
|
2012-03-08 03:25:53 +00:00
|
|
|
intern/CCGSubSurf.h
|
2015-07-20 15:05:16 +02:00
|
|
|
intern/CCGSubSurf_inline.h
|
|
|
|
|
intern/CCGSubSurf_intern.h
|
2021-03-26 12:23:21 +11:00
|
|
|
intern/attribute_access_intern.hh
|
Transfer Data: add main core code and operators.
This add code needed to map a CD data layout from source mesh towards destination one,
and code needed to actually transfer data, using BKE's mesh remap generated data.
This allows to transfer most CD layers (vgroups, vcols, uvs...) as well as fake, boolean ones
(like smooth/sharp edges/faces, etc.). Some types are not yet transferable, mainly
shape keys, this is known TODO.
Data transfer can also use some advanced mixing in some cases (mostly, vgroups and vcols).
Notes:
* New transfer operators transfer data from active object towards selected ones.
* Modifier will be committed separately.
* Old weight transfer code (for vgroups) is kept for now, mostly because it is the only
usable one in weightpaint mode (it transfers from selected object to active one,
this is not sensible in Object mode, but needed in WeightPaint one). This will be addressed soon.
Again, heavily reviewed and enhanced by Campbell, thanks!
2015-01-09 19:11:40 +01:00
|
|
|
intern/data_transfer_intern.h
|
2020-02-10 15:55:43 +01:00
|
|
|
intern/lib_intern.h
|
2018-11-29 09:01:03 +11:00
|
|
|
intern/multires_inline.h
|
2020-03-03 12:35:51 +01:00
|
|
|
intern/multires_reshape.h
|
2020-04-30 16:47:23 +02:00
|
|
|
intern/multires_unsubdivide.h
|
2020-07-16 13:17:31 +10:00
|
|
|
intern/ocean_intern.h
|
2018-07-17 18:09:18 +02:00
|
|
|
intern/pbvh_intern.h
|
|
|
|
|
intern/subdiv_converter.h
|
2018-11-29 09:01:03 +11:00
|
|
|
intern/subdiv_inline.h
|
2010-10-23 04:05:55 +00:00
|
|
|
)
|
2010-04-11 22:12:30 +00:00
|
|
|
|
2019-04-14 15:18:44 +02:00
|
|
|
set(LIB
|
2019-04-16 06:18:52 +02:00
|
|
|
bf_blenfont
|
|
|
|
|
bf_blenlib
|
|
|
|
|
bf_blenloader
|
|
|
|
|
bf_blentranslation
|
|
|
|
|
bf_bmesh
|
|
|
|
|
bf_depsgraph
|
|
|
|
|
bf_draw
|
2020-07-07 18:23:33 +02:00
|
|
|
bf_functions
|
2019-04-16 06:18:52 +02:00
|
|
|
bf_gpencil_modifiers
|
|
|
|
|
bf_gpu
|
|
|
|
|
bf_ikplugin
|
|
|
|
|
bf_imbuf
|
2019-04-16 08:07:01 +02:00
|
|
|
bf_intern_clog
|
2019-04-16 06:18:52 +02:00
|
|
|
bf_intern_ghost
|
|
|
|
|
bf_intern_guardedalloc
|
|
|
|
|
bf_intern_libmv # Uses stub when disabled.
|
|
|
|
|
bf_intern_mikktspace
|
|
|
|
|
bf_intern_opensubdiv # Uses stub when disabled.
|
|
|
|
|
bf_modifiers
|
|
|
|
|
bf_nodes
|
|
|
|
|
bf_rna
|
|
|
|
|
bf_shader_fx
|
2020-08-17 12:40:03 +10:00
|
|
|
bf_simulation
|
2019-04-14 15:18:44 +02:00
|
|
|
)
|
|
|
|
|
|
2014-12-07 13:21:02 +01:00
|
|
|
if(WITH_BINRELOC)
|
|
|
|
|
list(APPEND INC_SYS
|
|
|
|
|
${BINRELOC_INCLUDE_DIRS}
|
|
|
|
|
)
|
2019-04-16 08:07:01 +02:00
|
|
|
list(APPEND LIB
|
|
|
|
|
extern_binreloc
|
|
|
|
|
)
|
2014-12-07 13:21:02 +01:00
|
|
|
add_definitions(-DWITH_BINRELOC)
|
|
|
|
|
endif()
|
|
|
|
|
|
2009-11-21 20:36:03 +00:00
|
|
|
|
2014-11-23 14:37:13 +01:00
|
|
|
if(WIN32)
|
|
|
|
|
list(APPEND INC
|
|
|
|
|
../../../intern/utfconv
|
|
|
|
|
)
|
|
|
|
|
endif()
|
|
|
|
|
|
2011-06-23 09:27:56 +00:00
|
|
|
if(WITH_AUDASPACE)
|
2017-08-18 08:24:12 +02:00
|
|
|
add_definitions(-DWITH_AUDASPACE)
|
2014-03-04 13:44:15 +01:00
|
|
|
|
2015-06-16 10:03:35 +02:00
|
|
|
list(APPEND INC_SYS
|
|
|
|
|
${AUDASPACE_C_INCLUDE_DIRS}
|
|
|
|
|
)
|
CMake: Refactor external dependencies handling
This is a more correct fix to the issue Brecht was fixing in D6600.
While the fix in that patch worked fine for linking it broke ASAN
runtime under some circumstances.
For example, `make full debug developer` would compile, but trying
to start blender will cause assert failure in ASAN (related on check
that ASAN is not running already).
Top-level idea: leave it to CMake to keep track of dependency graph.
The root of the issue comes to the fact that target like "blender" is
configured to use a lot of static libraries coming from Blender sources
and to use external static libraries. There is nothing which ensures
order between blender's and external libraries. Only order of blender
libraries is guaranteed.
It was possible that due to a cycle or other circumstances some of
blender libraries would have been passed to linker after libraries
it uses, causing linker errors.
For example, this order will likely fail:
libbf_blenfont.a libfreetype6.a libbf_blenfont.a
This change makes it so blender libraries are explicitly provided
their dependencies to an external libraries, which allows CMake to
ensure they are always linked against them.
General rule here: if bf_foo depends on an external library it is
to be provided to LIBS for bf_foo.
For example, if bf_blenkernel depends on opensubdiv then LIBS in
blenkernel's CMakeLists.txt is to include OPENSUBDIB_LIBRARIES.
The change is made based on searching for used include folders
such as OPENSUBDIV_INCLUDE_DIRS and adding corresponding libraries
to LIBS ion that CMakeLists.txt. Transitive dependencies are not
simplified by this approach, but I am not aware of any downside of
this: CMake should be smart enough to simplify them on its side.
And even if not, this shouldn't affect linking time.
Benefit of not relying on transitive dependencies is that build
system is more robust towards future changes. For example, if
bf_intern_opensubiv is no longer depends on OPENSUBDIV_LIBRARIES
and all such code is moved to bf_blenkernel this will not break
linking.
The not-so-trivial part is change to blender_add_lib (and its
version in Cycles). The complexity is caused by libraries being
provided as a single list argument which doesn't allow to use
different release and debug libraries on Windows. The idea is:
- Have every library prefixed as "optimized" or "debug" if
separation is needed (non-prefixed libraries will be considered
"generic").
- Loop through libraries passed to function and do simple parsing
which will look for "optimized" and "debug" words and specify
following library to corresponding category.
This isn't something particularly great. Alternative would be to
use target_link_libraries() directly, which sounds like more code
but which is more explicit and allows to have more flexibility
and control comparing to wrapper approach.
Tested the following configurations on Linux, macOS and Windows:
- make full debug developer
- make full release developer
- make lite debug developer
- make lite release developer
NOTE: Linux libraries needs to be compiled with D6641 applied,
otherwise, depending on configuration, it's possible to run into
duplicated zlib symbols error.
Differential Revision: https://developer.blender.org/D6642
2020-01-20 18:36:19 +01:00
|
|
|
list(APPEND LIB
|
|
|
|
|
${AUDASPACE_C_LIBRARIES}
|
|
|
|
|
${AUDASPACE_PY_LIBRARIES}
|
|
|
|
|
)
|
2011-06-23 09:27:56 +00:00
|
|
|
endif()
|
|
|
|
|
|
2009-08-18 03:24:46 +00:00
|
|
|
if(WITH_BULLET)
|
2012-10-14 08:49:01 +00:00
|
|
|
list(APPEND INC_SYS
|
2013-01-03 00:23:52 +00:00
|
|
|
${BULLET_INCLUDE_DIRS}
|
2011-07-16 23:01:14 +00:00
|
|
|
)
|
2013-01-23 07:26:39 +00:00
|
|
|
list(APPEND INC
|
2013-02-01 06:24:49 +00:00
|
|
|
../../../intern/rigidbody
|
2013-01-23 07:26:39 +00:00
|
|
|
)
|
2020-09-02 14:14:47 +02:00
|
|
|
|
|
|
|
|
if(NOT WITH_SYSTEM_BULLET)
|
|
|
|
|
list(APPEND LIB
|
|
|
|
|
extern_bullet
|
|
|
|
|
)
|
|
|
|
|
endif()
|
|
|
|
|
|
2019-04-16 06:18:52 +02:00
|
|
|
list(APPEND LIB
|
|
|
|
|
bf_intern_rigidbody
|
CMake: Refactor external dependencies handling
This is a more correct fix to the issue Brecht was fixing in D6600.
While the fix in that patch worked fine for linking it broke ASAN
runtime under some circumstances.
For example, `make full debug developer` would compile, but trying
to start blender will cause assert failure in ASAN (related on check
that ASAN is not running already).
Top-level idea: leave it to CMake to keep track of dependency graph.
The root of the issue comes to the fact that target like "blender" is
configured to use a lot of static libraries coming from Blender sources
and to use external static libraries. There is nothing which ensures
order between blender's and external libraries. Only order of blender
libraries is guaranteed.
It was possible that due to a cycle or other circumstances some of
blender libraries would have been passed to linker after libraries
it uses, causing linker errors.
For example, this order will likely fail:
libbf_blenfont.a libfreetype6.a libbf_blenfont.a
This change makes it so blender libraries are explicitly provided
their dependencies to an external libraries, which allows CMake to
ensure they are always linked against them.
General rule here: if bf_foo depends on an external library it is
to be provided to LIBS for bf_foo.
For example, if bf_blenkernel depends on opensubdiv then LIBS in
blenkernel's CMakeLists.txt is to include OPENSUBDIB_LIBRARIES.
The change is made based on searching for used include folders
such as OPENSUBDIV_INCLUDE_DIRS and adding corresponding libraries
to LIBS ion that CMakeLists.txt. Transitive dependencies are not
simplified by this approach, but I am not aware of any downside of
this: CMake should be smart enough to simplify them on its side.
And even if not, this shouldn't affect linking time.
Benefit of not relying on transitive dependencies is that build
system is more robust towards future changes. For example, if
bf_intern_opensubiv is no longer depends on OPENSUBDIV_LIBRARIES
and all such code is moved to bf_blenkernel this will not break
linking.
The not-so-trivial part is change to blender_add_lib (and its
version in Cycles). The complexity is caused by libraries being
provided as a single list argument which doesn't allow to use
different release and debug libraries on Windows. The idea is:
- Have every library prefixed as "optimized" or "debug" if
separation is needed (non-prefixed libraries will be considered
"generic").
- Loop through libraries passed to function and do simple parsing
which will look for "optimized" and "debug" words and specify
following library to corresponding category.
This isn't something particularly great. Alternative would be to
use target_link_libraries() directly, which sounds like more code
but which is more explicit and allows to have more flexibility
and control comparing to wrapper approach.
Tested the following configurations on Linux, macOS and Windows:
- make full debug developer
- make full release developer
- make lite debug developer
- make lite release developer
NOTE: Linux libraries needs to be compiled with D6641 applied,
otherwise, depending on configuration, it's possible to run into
duplicated zlib symbols error.
Differential Revision: https://developer.blender.org/D6642
2020-01-20 18:36:19 +01:00
|
|
|
|
|
|
|
|
${BULLET_LIBRARIES}
|
2019-04-16 06:18:52 +02:00
|
|
|
)
|
2013-01-23 07:26:39 +00:00
|
|
|
add_definitions(-DWITH_BULLET)
|
2009-08-18 03:24:46 +00:00
|
|
|
endif()
|
2006-11-17 02:27:12 +00:00
|
|
|
|
2010-08-03 11:25:34 +00:00
|
|
|
if(WITH_IMAGE_OPENEXR)
|
2006-11-17 02:27:12 +00:00
|
|
|
add_definitions(-DWITH_OPENEXR)
|
2010-08-03 11:25:34 +00:00
|
|
|
endif()
|
2006-11-17 02:27:12 +00:00
|
|
|
|
2010-08-03 11:25:34 +00:00
|
|
|
if(WITH_IMAGE_TIFF)
|
2010-05-21 03:25:38 +00:00
|
|
|
add_definitions(-DWITH_TIFF)
|
2010-08-03 11:25:34 +00:00
|
|
|
endif()
|
2010-05-21 03:25:38 +00:00
|
|
|
|
2014-09-09 01:43:25 +10:00
|
|
|
if(WITH_OPENIMAGEIO)
|
|
|
|
|
add_definitions(-DWITH_OPENIMAGEIO)
|
|
|
|
|
endif()
|
|
|
|
|
|
2010-08-03 11:25:34 +00:00
|
|
|
if(WITH_IMAGE_OPENJPEG)
|
2009-03-06 15:46:13 +00:00
|
|
|
add_definitions(-DWITH_OPENJPEG)
|
2010-08-03 11:25:34 +00:00
|
|
|
endif()
|
2009-09-18 22:25:49 +00:00
|
|
|
|
2010-08-03 11:25:34 +00:00
|
|
|
if(WITH_IMAGE_DDS)
|
2008-10-28 18:33:34 +00:00
|
|
|
add_definitions(-DWITH_DDS)
|
2010-08-03 11:25:34 +00:00
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
if(WITH_IMAGE_CINEON)
|
|
|
|
|
add_definitions(-DWITH_CINEON)
|
|
|
|
|
endif()
|
|
|
|
|
|
2011-07-21 23:06:51 +00:00
|
|
|
if(WITH_IMAGE_FRAMESERVER)
|
|
|
|
|
add_definitions(-DWITH_FRAMESERVER)
|
|
|
|
|
endif()
|
|
|
|
|
|
2010-08-03 11:25:34 +00:00
|
|
|
if(WITH_IMAGE_HDR)
|
|
|
|
|
add_definitions(-DWITH_HDR)
|
|
|
|
|
endif()
|
2008-10-28 18:33:34 +00:00
|
|
|
|
2012-10-08 02:51:42 +00:00
|
|
|
if(WITH_CODEC_AVI)
|
|
|
|
|
list(APPEND INC
|
2020-03-06 16:19:35 +01:00
|
|
|
../io/avi
|
2012-10-08 02:51:42 +00:00
|
|
|
)
|
|
|
|
|
add_definitions(-DWITH_AVI)
|
|
|
|
|
endif()
|
|
|
|
|
|
2010-11-30 18:52:39 +00:00
|
|
|
if(WITH_CODEC_FFMPEG)
|
2012-03-20 22:00:21 +00:00
|
|
|
list(APPEND SRC
|
|
|
|
|
intern/writeffmpeg.c
|
|
|
|
|
BKE_writeffmpeg.h
|
|
|
|
|
)
|
2011-07-16 23:01:14 +00:00
|
|
|
list(APPEND INC
|
|
|
|
|
../../../intern/ffmpeg
|
|
|
|
|
)
|
|
|
|
|
list(APPEND INC_SYS
|
|
|
|
|
${FFMPEG_INCLUDE_DIRS}
|
|
|
|
|
)
|
CMake: Refactor external dependencies handling
This is a more correct fix to the issue Brecht was fixing in D6600.
While the fix in that patch worked fine for linking it broke ASAN
runtime under some circumstances.
For example, `make full debug developer` would compile, but trying
to start blender will cause assert failure in ASAN (related on check
that ASAN is not running already).
Top-level idea: leave it to CMake to keep track of dependency graph.
The root of the issue comes to the fact that target like "blender" is
configured to use a lot of static libraries coming from Blender sources
and to use external static libraries. There is nothing which ensures
order between blender's and external libraries. Only order of blender
libraries is guaranteed.
It was possible that due to a cycle or other circumstances some of
blender libraries would have been passed to linker after libraries
it uses, causing linker errors.
For example, this order will likely fail:
libbf_blenfont.a libfreetype6.a libbf_blenfont.a
This change makes it so blender libraries are explicitly provided
their dependencies to an external libraries, which allows CMake to
ensure they are always linked against them.
General rule here: if bf_foo depends on an external library it is
to be provided to LIBS for bf_foo.
For example, if bf_blenkernel depends on opensubdiv then LIBS in
blenkernel's CMakeLists.txt is to include OPENSUBDIB_LIBRARIES.
The change is made based on searching for used include folders
such as OPENSUBDIV_INCLUDE_DIRS and adding corresponding libraries
to LIBS ion that CMakeLists.txt. Transitive dependencies are not
simplified by this approach, but I am not aware of any downside of
this: CMake should be smart enough to simplify them on its side.
And even if not, this shouldn't affect linking time.
Benefit of not relying on transitive dependencies is that build
system is more robust towards future changes. For example, if
bf_intern_opensubiv is no longer depends on OPENSUBDIV_LIBRARIES
and all such code is moved to bf_blenkernel this will not break
linking.
The not-so-trivial part is change to blender_add_lib (and its
version in Cycles). The complexity is caused by libraries being
provided as a single list argument which doesn't allow to use
different release and debug libraries on Windows. The idea is:
- Have every library prefixed as "optimized" or "debug" if
separation is needed (non-prefixed libraries will be considered
"generic").
- Loop through libraries passed to function and do simple parsing
which will look for "optimized" and "debug" words and specify
following library to corresponding category.
This isn't something particularly great. Alternative would be to
use target_link_libraries() directly, which sounds like more code
but which is more explicit and allows to have more flexibility
and control comparing to wrapper approach.
Tested the following configurations on Linux, macOS and Windows:
- make full debug developer
- make full release developer
- make lite debug developer
- make lite release developer
NOTE: Linux libraries needs to be compiled with D6641 applied,
otherwise, depending on configuration, it's possible to run into
duplicated zlib symbols error.
Differential Revision: https://developer.blender.org/D6642
2020-01-20 18:36:19 +01:00
|
|
|
list(APPEND LIB
|
|
|
|
|
${FFMPEG_LIBRARIES}
|
|
|
|
|
)
|
2006-11-17 02:27:12 +00:00
|
|
|
add_definitions(-DWITH_FFMPEG)
|
2010-11-30 18:52:39 +00:00
|
|
|
endif()
|
2006-11-17 02:27:12 +00:00
|
|
|
|
2008-12-31 05:20:35 +00:00
|
|
|
if(WITH_PYTHON)
|
2011-07-16 23:01:14 +00:00
|
|
|
list(APPEND INC
|
|
|
|
|
../python
|
|
|
|
|
)
|
2019-11-25 15:45:03 +11:00
|
|
|
list(APPEND LIB
|
|
|
|
|
bf_python
|
|
|
|
|
bf_python_bmesh
|
|
|
|
|
)
|
2010-10-31 04:11:39 +00:00
|
|
|
add_definitions(-DWITH_PYTHON)
|
2011-04-28 06:20:47 +00:00
|
|
|
|
2017-07-27 02:12:40 +10:00
|
|
|
if(WITH_PYTHON_SAFETY)
|
|
|
|
|
add_definitions(-DWITH_PYTHON_SAFETY)
|
|
|
|
|
endif()
|
|
|
|
|
|
2011-04-28 06:20:47 +00:00
|
|
|
if(WITH_PYTHON_SECURITY)
|
|
|
|
|
add_definitions(-DWITH_PYTHON_SECURITY)
|
|
|
|
|
endif()
|
2016-02-15 19:01:28 +11:00
|
|
|
|
|
|
|
|
|
2016-04-24 00:16:15 +10:00
|
|
|
if(PYTHON_EXECUTABLE)
|
2016-02-15 19:01:28 +11:00
|
|
|
get_filename_component(_python_exe_name ${PYTHON_EXECUTABLE} NAME)
|
|
|
|
|
add_definitions(-DPYTHON_EXECUTABLE_NAME=${_python_exe_name})
|
|
|
|
|
unset(_python_exe_name)
|
|
|
|
|
endif()
|
2008-12-31 05:20:35 +00:00
|
|
|
endif()
|
2006-11-17 02:27:12 +00:00
|
|
|
|
2011-10-29 23:56:07 +00:00
|
|
|
if(WITH_MOD_FLUID)
|
2019-04-16 06:18:52 +02:00
|
|
|
list(APPEND LIB
|
2019-12-16 15:50:14 +01:00
|
|
|
bf_intern_mantaflow
|
2019-04-16 06:18:52 +02:00
|
|
|
)
|
2019-12-16 15:50:14 +01:00
|
|
|
add_definitions(-DWITH_FLUID)
|
2011-07-13 18:40:21 +00:00
|
|
|
endif()
|
|
|
|
|
|
2011-11-13 14:16:43 +00:00
|
|
|
if(WITH_MOD_OCEANSIM)
|
2011-11-13 12:17:27 +00:00
|
|
|
add_definitions(-DWITH_OCEANSIM)
|
|
|
|
|
endif()
|
|
|
|
|
|
2010-10-02 15:27:55 +00:00
|
|
|
if(WITH_JACK)
|
|
|
|
|
add_definitions(-DWITH_JACK)
|
2010-10-02 16:29:58 +00:00
|
|
|
endif()
|
2010-10-02 15:27:55 +00:00
|
|
|
|
2009-09-25 02:40:10 +00:00
|
|
|
if(WITH_LZO)
|
2015-03-13 22:33:31 +11:00
|
|
|
if(WITH_SYSTEM_LZO)
|
|
|
|
|
list(APPEND INC_SYS
|
|
|
|
|
${LZO_INCLUDE_DIR}
|
|
|
|
|
)
|
CMake: Refactor external dependencies handling
This is a more correct fix to the issue Brecht was fixing in D6600.
While the fix in that patch worked fine for linking it broke ASAN
runtime under some circumstances.
For example, `make full debug developer` would compile, but trying
to start blender will cause assert failure in ASAN (related on check
that ASAN is not running already).
Top-level idea: leave it to CMake to keep track of dependency graph.
The root of the issue comes to the fact that target like "blender" is
configured to use a lot of static libraries coming from Blender sources
and to use external static libraries. There is nothing which ensures
order between blender's and external libraries. Only order of blender
libraries is guaranteed.
It was possible that due to a cycle or other circumstances some of
blender libraries would have been passed to linker after libraries
it uses, causing linker errors.
For example, this order will likely fail:
libbf_blenfont.a libfreetype6.a libbf_blenfont.a
This change makes it so blender libraries are explicitly provided
their dependencies to an external libraries, which allows CMake to
ensure they are always linked against them.
General rule here: if bf_foo depends on an external library it is
to be provided to LIBS for bf_foo.
For example, if bf_blenkernel depends on opensubdiv then LIBS in
blenkernel's CMakeLists.txt is to include OPENSUBDIB_LIBRARIES.
The change is made based on searching for used include folders
such as OPENSUBDIV_INCLUDE_DIRS and adding corresponding libraries
to LIBS ion that CMakeLists.txt. Transitive dependencies are not
simplified by this approach, but I am not aware of any downside of
this: CMake should be smart enough to simplify them on its side.
And even if not, this shouldn't affect linking time.
Benefit of not relying on transitive dependencies is that build
system is more robust towards future changes. For example, if
bf_intern_opensubiv is no longer depends on OPENSUBDIV_LIBRARIES
and all such code is moved to bf_blenkernel this will not break
linking.
The not-so-trivial part is change to blender_add_lib (and its
version in Cycles). The complexity is caused by libraries being
provided as a single list argument which doesn't allow to use
different release and debug libraries on Windows. The idea is:
- Have every library prefixed as "optimized" or "debug" if
separation is needed (non-prefixed libraries will be considered
"generic").
- Loop through libraries passed to function and do simple parsing
which will look for "optimized" and "debug" words and specify
following library to corresponding category.
This isn't something particularly great. Alternative would be to
use target_link_libraries() directly, which sounds like more code
but which is more explicit and allows to have more flexibility
and control comparing to wrapper approach.
Tested the following configurations on Linux, macOS and Windows:
- make full debug developer
- make full release developer
- make lite debug developer
- make lite release developer
NOTE: Linux libraries needs to be compiled with D6641 applied,
otherwise, depending on configuration, it's possible to run into
duplicated zlib symbols error.
Differential Revision: https://developer.blender.org/D6642
2020-01-20 18:36:19 +01:00
|
|
|
list(APPEND LIB
|
|
|
|
|
${LZO_LIBRARIES}
|
|
|
|
|
)
|
2015-03-13 22:33:31 +11:00
|
|
|
add_definitions(-DWITH_SYSTEM_LZO)
|
|
|
|
|
else()
|
|
|
|
|
list(APPEND INC_SYS
|
|
|
|
|
../../../extern/lzo/minilzo
|
|
|
|
|
)
|
2019-04-16 06:18:52 +02:00
|
|
|
list(APPEND LIB
|
|
|
|
|
extern_minilzo
|
|
|
|
|
)
|
2015-03-13 22:33:31 +11:00
|
|
|
endif()
|
2009-09-25 02:40:10 +00:00
|
|
|
add_definitions(-DWITH_LZO)
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
if(WITH_LZMA)
|
2011-07-16 23:01:14 +00:00
|
|
|
list(APPEND INC_SYS
|
|
|
|
|
../../../extern/lzma
|
|
|
|
|
)
|
2019-04-16 06:18:52 +02:00
|
|
|
list(APPEND LIB
|
|
|
|
|
extern_lzma
|
|
|
|
|
)
|
2009-09-25 02:40:10 +00:00
|
|
|
add_definitions(-DWITH_LZMA)
|
|
|
|
|
endif()
|
|
|
|
|
|
2011-11-07 12:55:18 +00:00
|
|
|
if(WITH_LIBMV)
|
|
|
|
|
add_definitions(-DWITH_LIBMV)
|
|
|
|
|
endif()
|
|
|
|
|
|
2011-11-13 12:17:27 +00:00
|
|
|
if(WITH_FFTW3)
|
2011-11-13 15:17:24 +00:00
|
|
|
list(APPEND INC_SYS
|
|
|
|
|
${FFTW3_INCLUDE_DIRS}
|
|
|
|
|
)
|
CMake: Refactor external dependencies handling
This is a more correct fix to the issue Brecht was fixing in D6600.
While the fix in that patch worked fine for linking it broke ASAN
runtime under some circumstances.
For example, `make full debug developer` would compile, but trying
to start blender will cause assert failure in ASAN (related on check
that ASAN is not running already).
Top-level idea: leave it to CMake to keep track of dependency graph.
The root of the issue comes to the fact that target like "blender" is
configured to use a lot of static libraries coming from Blender sources
and to use external static libraries. There is nothing which ensures
order between blender's and external libraries. Only order of blender
libraries is guaranteed.
It was possible that due to a cycle or other circumstances some of
blender libraries would have been passed to linker after libraries
it uses, causing linker errors.
For example, this order will likely fail:
libbf_blenfont.a libfreetype6.a libbf_blenfont.a
This change makes it so blender libraries are explicitly provided
their dependencies to an external libraries, which allows CMake to
ensure they are always linked against them.
General rule here: if bf_foo depends on an external library it is
to be provided to LIBS for bf_foo.
For example, if bf_blenkernel depends on opensubdiv then LIBS in
blenkernel's CMakeLists.txt is to include OPENSUBDIB_LIBRARIES.
The change is made based on searching for used include folders
such as OPENSUBDIV_INCLUDE_DIRS and adding corresponding libraries
to LIBS ion that CMakeLists.txt. Transitive dependencies are not
simplified by this approach, but I am not aware of any downside of
this: CMake should be smart enough to simplify them on its side.
And even if not, this shouldn't affect linking time.
Benefit of not relying on transitive dependencies is that build
system is more robust towards future changes. For example, if
bf_intern_opensubiv is no longer depends on OPENSUBDIV_LIBRARIES
and all such code is moved to bf_blenkernel this will not break
linking.
The not-so-trivial part is change to blender_add_lib (and its
version in Cycles). The complexity is caused by libraries being
provided as a single list argument which doesn't allow to use
different release and debug libraries on Windows. The idea is:
- Have every library prefixed as "optimized" or "debug" if
separation is needed (non-prefixed libraries will be considered
"generic").
- Loop through libraries passed to function and do simple parsing
which will look for "optimized" and "debug" words and specify
following library to corresponding category.
This isn't something particularly great. Alternative would be to
use target_link_libraries() directly, which sounds like more code
but which is more explicit and allows to have more flexibility
and control comparing to wrapper approach.
Tested the following configurations on Linux, macOS and Windows:
- make full debug developer
- make full release developer
- make lite debug developer
- make lite release developer
NOTE: Linux libraries needs to be compiled with D6641 applied,
otherwise, depending on configuration, it's possible to run into
duplicated zlib symbols error.
Differential Revision: https://developer.blender.org/D6642
2020-01-20 18:36:19 +01:00
|
|
|
list(APPEND LIB
|
|
|
|
|
${FFTW3_LIBRARIES}
|
|
|
|
|
)
|
2011-11-13 12:17:27 +00:00
|
|
|
add_definitions(-DFFTW3=1)
|
|
|
|
|
endif()
|
|
|
|
|
|
2012-03-17 12:07:58 +00:00
|
|
|
if(WITH_INTERNATIONAL)
|
|
|
|
|
add_definitions(-DWITH_INTERNATIONAL)
|
|
|
|
|
endif()
|
|
|
|
|
|
2012-12-20 07:57:26 +00:00
|
|
|
if(WITH_FREESTYLE)
|
|
|
|
|
add_definitions(-DWITH_FREESTYLE)
|
|
|
|
|
endif()
|
|
|
|
|
|
Basic Alembic support
All in all, this patch adds an Alembic importer, an Alembic exporter,
and a new CacheFile data block which, for now, wraps around an Alembic
archive. This data block is made available through a new modifier ("Mesh
Sequence Cache") as well as a new constraint ("Transform Cache") to
somewhat properly support respectively geometric and transformation data
streaming from alembic caches.
A more in-depth documentation is to be found on the wiki, as well as a
guide to compile alembic: https://wiki.blender.org/index.php/
User:Kevindietrich/AlembicBasicIo.
Many thanks to everyone involved in this little project, and huge shout
out to "cgstrive" for the thorough testings with Maya, 3ds Max, Houdini
and Realflow as well as @fjuhec, @jensverwiebe and @jasperge for the
custom builds and compile fixes.
Reviewers: sergey, campbellbarton, mont29
Reviewed By: sergey, campbellbarton, mont29
Differential Revision: https://developer.blender.org/D2060
2016-08-06 06:20:37 +02:00
|
|
|
if(WITH_ALEMBIC)
|
|
|
|
|
list(APPEND INC
|
2020-03-06 16:19:35 +01:00
|
|
|
../io/alembic
|
Basic Alembic support
All in all, this patch adds an Alembic importer, an Alembic exporter,
and a new CacheFile data block which, for now, wraps around an Alembic
archive. This data block is made available through a new modifier ("Mesh
Sequence Cache") as well as a new constraint ("Transform Cache") to
somewhat properly support respectively geometric and transformation data
streaming from alembic caches.
A more in-depth documentation is to be found on the wiki, as well as a
guide to compile alembic: https://wiki.blender.org/index.php/
User:Kevindietrich/AlembicBasicIo.
Many thanks to everyone involved in this little project, and huge shout
out to "cgstrive" for the thorough testings with Maya, 3ds Max, Houdini
and Realflow as well as @fjuhec, @jensverwiebe and @jasperge for the
custom builds and compile fixes.
Reviewers: sergey, campbellbarton, mont29
Reviewed By: sergey, campbellbarton, mont29
Differential Revision: https://developer.blender.org/D2060
2016-08-06 06:20:37 +02:00
|
|
|
)
|
|
|
|
|
add_definitions(-DWITH_ALEMBIC)
|
|
|
|
|
endif()
|
|
|
|
|
|
2015-07-20 16:08:06 +02:00
|
|
|
if(WITH_OPENSUBDIV)
|
|
|
|
|
list(APPEND INC_SYS
|
|
|
|
|
${OPENSUBDIV_INCLUDE_DIRS}
|
|
|
|
|
)
|
CMake: Refactor external dependencies handling
This is a more correct fix to the issue Brecht was fixing in D6600.
While the fix in that patch worked fine for linking it broke ASAN
runtime under some circumstances.
For example, `make full debug developer` would compile, but trying
to start blender will cause assert failure in ASAN (related on check
that ASAN is not running already).
Top-level idea: leave it to CMake to keep track of dependency graph.
The root of the issue comes to the fact that target like "blender" is
configured to use a lot of static libraries coming from Blender sources
and to use external static libraries. There is nothing which ensures
order between blender's and external libraries. Only order of blender
libraries is guaranteed.
It was possible that due to a cycle or other circumstances some of
blender libraries would have been passed to linker after libraries
it uses, causing linker errors.
For example, this order will likely fail:
libbf_blenfont.a libfreetype6.a libbf_blenfont.a
This change makes it so blender libraries are explicitly provided
their dependencies to an external libraries, which allows CMake to
ensure they are always linked against them.
General rule here: if bf_foo depends on an external library it is
to be provided to LIBS for bf_foo.
For example, if bf_blenkernel depends on opensubdiv then LIBS in
blenkernel's CMakeLists.txt is to include OPENSUBDIB_LIBRARIES.
The change is made based on searching for used include folders
such as OPENSUBDIV_INCLUDE_DIRS and adding corresponding libraries
to LIBS ion that CMakeLists.txt. Transitive dependencies are not
simplified by this approach, but I am not aware of any downside of
this: CMake should be smart enough to simplify them on its side.
And even if not, this shouldn't affect linking time.
Benefit of not relying on transitive dependencies is that build
system is more robust towards future changes. For example, if
bf_intern_opensubiv is no longer depends on OPENSUBDIV_LIBRARIES
and all such code is moved to bf_blenkernel this will not break
linking.
The not-so-trivial part is change to blender_add_lib (and its
version in Cycles). The complexity is caused by libraries being
provided as a single list argument which doesn't allow to use
different release and debug libraries on Windows. The idea is:
- Have every library prefixed as "optimized" or "debug" if
separation is needed (non-prefixed libraries will be considered
"generic").
- Loop through libraries passed to function and do simple parsing
which will look for "optimized" and "debug" words and specify
following library to corresponding category.
This isn't something particularly great. Alternative would be to
use target_link_libraries() directly, which sounds like more code
but which is more explicit and allows to have more flexibility
and control comparing to wrapper approach.
Tested the following configurations on Linux, macOS and Windows:
- make full debug developer
- make full release developer
- make lite debug developer
- make lite release developer
NOTE: Linux libraries needs to be compiled with D6641 applied,
otherwise, depending on configuration, it's possible to run into
duplicated zlib symbols error.
Differential Revision: https://developer.blender.org/D6642
2020-01-20 18:36:19 +01:00
|
|
|
list(APPEND LIB
|
|
|
|
|
${OPENSUBDIV_LIBRARIES}
|
|
|
|
|
)
|
2019-04-16 06:11:27 +02:00
|
|
|
add_definitions(-DWITH_OPENSUBDIV)
|
2015-07-20 16:08:06 +02:00
|
|
|
endif()
|
|
|
|
|
|
Implementation of OpenVDB as a possible cache format for smoke
simulations.
This commits implements OpenVDB as an extra cache format in the Point
Cache system for smoke simulations. Compilation with the library is
turned off by default for now, and shall be enabled when the library is
present.
A documentation of its doings is available here: http://
wiki.blender.org/index.php/User:Kevindietrich/OpenVDBSmokeExport.
A guide to compile OpenVDB can be found here (Linux): http://
wiki.blender.org/index.php?title=Dev:Doc/Building_Blender/Linux/
Dependencies_From_Source#OpenVDB
Reviewers: sergey, lukastoenne, brecht, campbellbarton
Reviewed By: brecht, campbellbarton
Subscribers: galenb, Blendify, robocyte, Lapineige, bliblubli,
jtheninja, lukasstockner97, dingto, brecht
Differential Revision: https://developer.blender.org/D1721
2016-01-23 08:39:29 +01:00
|
|
|
if(WITH_OPENVDB)
|
|
|
|
|
list(APPEND INC
|
2021-02-05 09:45:16 +11:00
|
|
|
../../../intern/openvdb
|
Implementation of OpenVDB as a possible cache format for smoke
simulations.
This commits implements OpenVDB as an extra cache format in the Point
Cache system for smoke simulations. Compilation with the library is
turned off by default for now, and shall be enabled when the library is
present.
A documentation of its doings is available here: http://
wiki.blender.org/index.php/User:Kevindietrich/OpenVDBSmokeExport.
A guide to compile OpenVDB can be found here (Linux): http://
wiki.blender.org/index.php?title=Dev:Doc/Building_Blender/Linux/
Dependencies_From_Source#OpenVDB
Reviewers: sergey, lukastoenne, brecht, campbellbarton
Reviewed By: brecht, campbellbarton
Subscribers: galenb, Blendify, robocyte, Lapineige, bliblubli,
jtheninja, lukasstockner97, dingto, brecht
Differential Revision: https://developer.blender.org/D1721
2016-01-23 08:39:29 +01:00
|
|
|
)
|
2020-03-17 14:41:48 +01:00
|
|
|
list(APPEND INC_SYS
|
|
|
|
|
${OPENVDB_INCLUDE_DIRS}
|
|
|
|
|
)
|
2019-04-16 06:18:52 +02:00
|
|
|
list(APPEND LIB
|
2020-03-17 14:41:48 +01:00
|
|
|
bf_intern_openvdb
|
|
|
|
|
${OPENVDB_LIBRARIES}
|
2019-04-16 06:18:52 +02:00
|
|
|
)
|
2020-03-17 14:41:48 +01:00
|
|
|
add_definitions(-DWITH_OPENVDB ${OPENVDB_DEFINITIONS})
|
Implementation of OpenVDB as a possible cache format for smoke
simulations.
This commits implements OpenVDB as an extra cache format in the Point
Cache system for smoke simulations. Compilation with the library is
turned off by default for now, and shall be enabled when the library is
present.
A documentation of its doings is available here: http://
wiki.blender.org/index.php/User:Kevindietrich/OpenVDBSmokeExport.
A guide to compile OpenVDB can be found here (Linux): http://
wiki.blender.org/index.php?title=Dev:Doc/Building_Blender/Linux/
Dependencies_From_Source#OpenVDB
Reviewers: sergey, lukastoenne, brecht, campbellbarton
Reviewed By: brecht, campbellbarton
Subscribers: galenb, Blendify, robocyte, Lapineige, bliblubli,
jtheninja, lukasstockner97, dingto, brecht
Differential Revision: https://developer.blender.org/D1721
2016-01-23 08:39:29 +01:00
|
|
|
endif()
|
|
|
|
|
|
2019-08-26 18:34:11 +02:00
|
|
|
if(WITH_QUADRIFLOW)
|
|
|
|
|
list(APPEND INC
|
2021-02-05 09:45:16 +11:00
|
|
|
../../../intern/quadriflow
|
2019-08-26 18:34:11 +02:00
|
|
|
)
|
|
|
|
|
list(APPEND LIB
|
2021-02-05 09:45:16 +11:00
|
|
|
bf_intern_quadriflow
|
2019-08-26 18:34:11 +02:00
|
|
|
)
|
|
|
|
|
add_definitions(-DWITH_QUADRIFLOW)
|
|
|
|
|
endif()
|
|
|
|
|
|
VR: Initial Virtual Reality support - Milestone 1, Scene Inspection
NOTE: While most of the milestone 1 goals are there, a few smaller features and
improvements are still to be done.
Big picture of this milestone: Initial, OpenXR-based virtual reality support
for users and foundation for advanced use cases.
Maniphest Task: https://developer.blender.org/T71347
The tasks contains more information about this milestone.
To be clear: This is not a feature rich VR implementation, it's focused on the
initial scene inspection use case. We intentionally focused on that, further
features like controller support are part of the next milestone.
- How to use?
Instructions on how to use this are here:
https://wiki.blender.org/wiki/User:Severin/GSoC-2019/How_to_Test
These will be updated and moved to a more official place (likely the manual) soon.
Currently Windows Mixed Reality and Oculus devices are usable. Valve/HTC
headsets don't support the OpenXR standard yet and hence, do not work with this
implementation.
---------------
This is the C-side implementation of the features added for initial VR
support as per milestone 1. A "VR Scene Inspection" Add-on will be
committed separately, to expose the VR functionality in the UI. It also
adds some further features for milestone 1, namely a landmarking system
(stored view locations in the VR space)
Main additions/features:
* Support for rendering viewports to an HMD, with good performance.
* Option to sync the VR view perspective with a fully interactive,
regular 3D View (VR-Mirror).
* Option to disable positional tracking. Keeps the current position (calculated
based on the VR eye center pose) when enabled while a VR session is running.
* Some regular viewport settings for the VR view
* RNA/Python-API to query and set VR session state information.
* WM-XR: Layer tying Ghost-XR to the Blender specific APIs/data
* wmSurface API: drawable, non-window container (manages Ghost-OpenGL and GPU
context)
* DNA/RNA for management of VR session settings
* `--debug-xr` and `--debug-xr-time` commandline options
* Utility batch & config file for using the Oculus runtime on Windows.
* Most VR data is runtime only. The exception is user settings which are saved
to files (`XrSessionSettings`).
* VR support can be disabled through the `WITH_XR_OPENXR` compiler flag.
For architecture and code documentation, see
https://wiki.blender.org/wiki/Source/Interface/XR.
---------------
A few thank you's:
* A huge shoutout to Ray Molenkamp for his help during the project - it would
have not been that successful without him!
* Sebastian Koenig and Simeon Conzendorf for testing and feedback!
* The reviewers, especially Brecht Van Lommel!
* Dalai Felinto for pushing and managing me to get this done ;)
* The OpenXR working group for providing an open standard. I think we're the
first bigger application to adopt OpenXR. Congratulations to them and
ourselves :)
This project started as a Google Summer of Code 2019 project - "Core Support of
Virtual Reality Headsets through OpenXR" (see
https://wiki.blender.org/wiki/User:Severin/GSoC-2019/).
Some further information, including ideas for further improvements can be found
in the final GSoC report:
https://wiki.blender.org/wiki/User:Severin/GSoC-2019/Final_Report
Differential Revisions: D6193, D7098
Reviewed by: Brecht Van Lommel, Jeroen Bakker
2020-03-17 20:20:55 +01:00
|
|
|
if(WITH_XR_OPENXR)
|
|
|
|
|
add_definitions(-DWITH_XR_OPENXR)
|
|
|
|
|
endif()
|
|
|
|
|
|
2020-10-09 11:56:12 +02:00
|
|
|
if(WITH_TBB)
|
|
|
|
|
add_definitions(-DWITH_TBB)
|
|
|
|
|
|
|
|
|
|
list(APPEND INC_SYS
|
|
|
|
|
${TBB_INCLUDE_DIRS}
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
list(APPEND LIB
|
|
|
|
|
${TBB_LIBRARIES}
|
|
|
|
|
)
|
|
|
|
|
endif()
|
|
|
|
|
|
2021-02-21 17:57:03 -05:00
|
|
|
if(WITH_GMP)
|
|
|
|
|
add_definitions(-DWITH_GMP)
|
|
|
|
|
|
|
|
|
|
list(APPEND INC_SYS
|
|
|
|
|
${GMP_INCLUDE_DIRS}
|
|
|
|
|
)
|
2021-03-26 12:23:21 +11:00
|
|
|
endif()
|
2021-02-21 17:57:03 -05:00
|
|
|
|
2019-10-29 01:32:33 +11:00
|
|
|
# # Warnings as errors, this is too strict!
|
|
|
|
|
# if(MSVC)
|
2020-11-06 10:29:04 +11:00
|
|
|
# string(APPEND CMAKE_C_FLAGS " /WX")
|
2019-10-29 01:32:33 +11:00
|
|
|
# endif()
|
2009-01-23 20:36:47 +00:00
|
|
|
|
2019-04-14 15:18:44 +02:00
|
|
|
blender_add_lib(bf_blenkernel "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")
|
2019-09-09 19:08:32 +02:00
|
|
|
|
|
|
|
|
# Needed so we can use dna_type_offsets.h for defaults initialization.
|
|
|
|
|
add_dependencies(bf_blenkernel bf_dna)
|
2020-07-16 12:58:49 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
if(WITH_GTESTS)
|
|
|
|
|
set(TEST_SRC
|
|
|
|
|
intern/armature_test.cc
|
2021-01-12 16:19:54 +01:00
|
|
|
intern/cryptomatte_test.cc
|
2020-07-16 12:58:49 +02:00
|
|
|
intern/fcurve_test.cc
|
2020-10-26 11:01:18 +01:00
|
|
|
intern/lattice_deform_test.cc
|
2020-12-04 08:13:54 +01:00
|
|
|
intern/layer_test.cc
|
2021-05-19 16:55:52 +02:00
|
|
|
intern/lib_id_test.cc
|
2020-12-11 15:00:22 +11:00
|
|
|
intern/tracking_test.cc
|
2020-07-16 12:58:49 +02:00
|
|
|
)
|
|
|
|
|
set(TEST_INC
|
|
|
|
|
../editors/include
|
|
|
|
|
)
|
|
|
|
|
include(GTestTesting)
|
|
|
|
|
blender_add_test_lib(bf_blenkernel_tests "${TEST_SRC}" "${INC};${TEST_INC}" "${INC_SYS}" "${LIB}")
|
|
|
|
|
endif()
|