1
1

Compare commits

...

1100 Commits

Author SHA1 Message Date
Dalai Felinto
fbaf6e6fb3 Merge remote-tracking branch 'origin/blender2.8' into temp-dynamic-overrides 2018-06-26 16:07:39 +02:00
Dalai Felinto
c07f2bc891 Fix T55628: Crash when creating new material slots
We need to update the geometry when resizing the object material slots.
2018-06-26 16:00:04 +02:00
Vuk Gardašević
43d27095a3 UI: Make Mesh shading menu consistent with the other menus 2018-06-26 14:29:21 +02:00
William Reynish
25caedc4ba UI: Tweaks to Cycles Bake panel
-Correctly aligns bake options in the column
-Updated Metadata panel with right-aligned checkboxes for consistency
2018-06-26 14:17:02 +02:00
c1459a1e7f Fix T55630: update issue between Object and TexPaint modes.
Need to flush mesh DEG COW here, for some reason...
2018-06-26 12:36:38 +02:00
cdd915e9e9 UI: status bar cursor keymap display
Show mouse button actions in status bar, based on context,
modifiers and active tool.

See: T54861
2018-06-26 12:18:54 +02:00
4adf19e80b Icons: mouse buttons & drag
Monochrome icons from jendryzch
2018-06-26 12:15:39 +02:00
e17285a381 Tweak: Try to make the purpose of the collection/search fields clearer
Note: The labels in this panel are still WIP. There are probably clearer
names for some of these, including maybe even omitting some.
2018-06-26 21:44:14 +12:00
c0a8a29ae6 AnimEditors: Remove the toggles to enable name/collection-based filtering
Now the name/collection filters run when there's some text,
and don't run when the box is empty, thus reducing an extra
step that was needed before these options could be used.
2018-06-26 21:44:14 +12:00
5f545dbde8 AnimEditors UI: Move less frequently used filtering options to a "Filters" popovers
This commit is an experiment in using popovers as a place to house some
of the filtering options for animation editors, in line with what's taking
place in the Outliner with the filtering popover there too.

Right now, the most frequently used/changed options are still available
on the headers (i.e. the "Only Selected"/"Hidden"/search fields), while
everything else (i.e. the per-datablock filters, which were already hidden
behind a collapsed-toggle button before) now live in the popover.
2018-06-26 21:44:14 +12:00
c795505a2c Cleanup: dyntopo sculpt draw update: use same BM_face_as_array_vert_tri for indexbuf generation.
It's cleaner, and actually assert that BMFace is a triangle. Same code
as when generating vertexbuf for flat shading!
2018-06-26 11:43:17 +02:00
dad4703ec5 Fix T55320: Sculpt Mode with dyntopo and smooth shading drawing bug.
We have to discard the batch in smooth case, because we are modifying
the index buffer (flat shading don't need it, only changes vertex buffer
on redraw, which is safe).

Many thanks to @fclem for his help on debuging/understanding what was
wrong here!
2018-06-26 11:43:17 +02:00
42fde5d32b Fix memory leak when duplicating particles 2018-06-26 11:31:28 +02:00
a9ab0c1a7c Depsgraph: Tag relations for update when particle dupli-collection changes 2018-06-26 11:27:41 +02:00
Dalai Felinto
d6ac293bd4 Cleanup: comment 2018-06-26 11:07:29 +02:00
cfb50463be Free crash when freeing object caches from duplicator 2018-06-26 10:53:05 +02:00
ea339dc62c Merge branch 'master' into blender2.8 2018-06-26 09:34:13 +02:00
df237b964b PyAPI: add ImBuf.copy
DD348 by @kilon w/ edits.
2018-06-26 09:31:57 +02:00
a69f985f40 PyAPI: move deep-copy args check to py_capi_utils 2018-06-26 09:31:57 +02:00
e6825946d0 Cleanup: style, pep8 2018-06-26 08:45:13 +02:00
29182dd570 Cleanup: style 2018-06-26 08:35:35 +02:00
87f598fd3f Cycles: Fix wrong row count for World MIS CDF calculation 2018-06-26 05:35:30 +02:00
Stefan Werner
d53093953f Turned off clang warnings in third party includes.
The latest clang compiler (at least the one in Xcode 9.4.1) warns about the register keyword and macro expansions using defined().
Since these warnings come from third party code, we can't address them directly in Blender. Silencing them via #pramgas will
at least keep the warnings during a build down to the ones that are relevant to Blender code.
2018-06-25 23:02:01 +02:00
4aee554345 Fix crash with files saved with missing render slots. 2018-06-25 20:29:51 +02:00
9e88892f8f UI: Use background color for reports
At the moment it's using a hardcoded gray color that conflicts with
themes using gray for the header text. Instead use a slightly brighter
background color to make it stand, yet still use a theme setting.
2018-06-25 18:57:51 +02:00
25a223c3bd Draw: Use more proper particles index lookup 2018-06-25 18:22:27 +02:00
540b99bd28 Cycles: Free evaluated meshed when we are done with object 2018-06-25 17:28:46 +02:00
7cd86cd1fe Cycles: Fix memory leak with session
We didn't check for sync object being already allocated.
In fact, we simply need to use proper function to free
session.
2018-06-25 17:28:46 +02:00
c2110213ca Physics: update softbody and dynamic paint to get colliders from depsgraph.
Because looping over the scene is unsafe and slow.
2018-06-25 17:15:07 +02:00
2c9b32949b Cleanup: refactor depsgraph physics API functions. 2018-06-25 17:15:07 +02:00
William Reynish
26251282e0 UI: Single-column layout for Force Fields and Particles
Force Fields and Falloff are now simpler and more compact
by removing unnecesary labels (there was a text label just for one option)

Particle Force Fields Falloff is now a sub-panel of each effector type,
rather than just as a section with label.
2018-06-25 17:04:40 +02:00
William Reynish
51e077c5c0 UI: Single-column layout for View Layer, passes and World 2018-06-25 17:02:50 +02:00
William Reynish
153195da22 UI: Single-column layout for Texture Color 2018-06-25 17:01:54 +02:00
William Reynish
5ddba52029 UI: Single-column layout for Shape Keys and Geometry Data 2018-06-25 17:00:00 +02:00
eefe878660 Fix T55360: marker-based Camera switch focal length bug.
Scene was missing DEG tag update when its camera was changed based on
active 'camera marker'.
2018-06-25 16:21:24 +02:00
476b4c415c Fix T55493: Sculpting on smooth shaded bug.
Undo was not tagging PBVH to update normals too...
2018-06-25 14:15:08 +02:00
38d6e82d1a Fix use of non-evaluated collision and effector objects.
Only enabled objects in the view layer should be used, while temporarily
hidden objects should still have an effect.
2018-06-25 14:11:55 +02:00
817bf582c2 Cleanup: rename object base flags to be more clear. 2018-06-25 14:09:17 +02:00
a99dcab148 Depsgraph: cache collision relations, for performance and stability.
Same reasoning as effector relations in earlier commit.
2018-06-25 13:35:41 +02:00
5b3ff9f7d8 Cleanup: Move colorband handling from DM to mesh_runtime universe. 2018-06-25 13:04:24 +02:00
e10eb5bcb8 UI: In user preferences group Developers Extra and Python Tooltips
Move Navigation Manipulator toggle next to Mini Axis as they are related
(and in the future merged into one pulldown) and rename Manipulator
to "Transform Manipulator" to make it clear they're different kinds
of manipulators. Also move to the first column next to other viewport settings.
2018-06-25 12:58:28 +02:00
e97237892c Merge branch 'master' into blender2.8
Conflicts:
	source/blender/editors/sculpt_paint/paint_image.c
	source/blender/editors/space_view3d/view3d_draw.c
	source/blender/editors/space_view3d/view3d_view.c
	source/blender/gpu/GPU_draw.h
	source/blender/gpu/GPU_material.h
	source/blender/gpu/intern/gpu_draw.c
	source/blender/gpu/intern/gpu_material.c
	source/blender/makesrna/intern/rna_userdef.c
	source/blender/windowmanager/intern/wm_files_link.c
	source/blender/windowmanager/intern/wm_init_exit.c
	source/creator/creator_args.c
	source/gameengine/GamePlayer/ghost/GPG_ghost.cpp
	source/gameengine/Ketsji/KX_PythonInit.cpp
	source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
2018-06-25 12:50:32 +02:00
cdee53edfc Cycles: Cleanup, indentation 2018-06-25 12:39:44 +02:00
8a7f317666 Cleanup: Nuke most of G.main from GPU code. 2018-06-25 12:32:48 +02:00
Dalai Felinto
0145daa09b Outliner: Make search always work
This was a flag in early 2.8 to allow users to hide the entire search prop.
Now since we want it fully expanded at all times, it makes no more sense.
2018-06-25 12:15:12 +02:00
861b0ec417 UI: Right align check-box for extra text space
See: T54951
2018-06-25 12:06:51 +02:00
29c1069244 Cleanup: code style 2018-06-25 12:06:51 +02:00
f33cb522dd Cleanup: Few more validation of G_MAIN usages... 2018-06-25 12:02:20 +02:00
7a4d5b78ea Depsgraph: Add missing nodes and relations for speaker 2018-06-25 11:54:12 +02:00
c448c0a67f RigidBody: Replaced 'if' with 'switch' 2018-06-25 11:24:55 +02:00
eb56ca3119 Rigid body: compute looptris on original mesh instead of CoW copy 2018-06-25 11:20:06 +02:00
Dalai Felinto
1099ac1ed9 Silence warning for release builds 2018-06-25 11:02:19 +02:00
d864332085 Merge branch 'master' into blender2.8 2018-06-25 09:48:10 +02:00
b09387c388 Add back header needed win32 2018-06-25 09:46:03 +02:00
d32e4ca701 Merge branch 'master' into blender2.8 2018-06-25 07:43:51 +02:00
f3b9fa5393 CMake: correct remove_strict_cxx_flags_file
Was still using C-flags.
2018-06-25 07:30:00 +02:00
a5b7f1ef53 UI: internal changes to user-menu storage
- Use per context menu lists to support menu editing.
- Support for different kinds of menu items since this may be needed
  in the future. Only use operator types for now.
2018-06-24 20:06:30 +02:00
a59d7374ea Nuke DM out of collada code.
Also, now use out-of-main temp copy of mesh for export, and fixed a
potential memleak (return without freeing temp copy of mesh, tsst).
2018-06-24 18:40:52 +02:00
d0856d1d54 Fix most of 'disappearing' first letter in right-aligned labels.
BLF' blf_font_width_to_strlen() could easily generate strings with up to
nearly two pixels length over requested limit!

Note that the fiddling between floats and ints values make things really
confusing here... :/

There is still a few limit cases where, even though computed str length
is now always below reauested limit, we still get first letter
disappearing, no idea why currently.
2018-06-24 17:51:13 +02:00
6454319033 Lamps: Make default size more usable
This way the area light shapes are more visible (and usable) by default.

Changes were discussed with @venomgfx
2018-06-24 15:03:10 +02:00
a9bc880cf8 Object Mode: Add Shape visual for spot and point lamps
Since Eevee and Cycles both use lamp size for point lamps, displaying
the shape is now more relevant than before.
2018-06-24 15:03:10 +02:00
574c716f2d Cycles: change AO node color default to 1.0. 2018-06-24 12:24:30 +02:00
8f85cf033c Merge branch 'master' into blender2.8 2018-06-24 11:08:14 +02:00
e61bbc00b7 Cleanup: move UI context menus into own file 2018-06-24 10:43:09 +02:00
a3cb9c8238 Wireframe Overlay: Add back the per edge hiding
This method is a bit more optimized than the very first one
because it does not rely on the adjacent faces properties.

That said it's still a bit slower than the per vertex method.
2018-06-24 00:01:02 +02:00
12bd80fefd Eevee: Fix wrong depth test in main shading pass. 2018-06-23 21:26:21 +02:00
acb94b6c78 Typo in last commit 2018-06-23 20:57:09 +02:00
85c1e61375 UI: Add user defined context menu
- Add/Remove from RMB context menu.
- Stored in user preferences.
- Access from Q key.

See T55027.
2018-06-23 20:52:47 +02:00
2fa231a86b Ghost: Fix F12 render on windows.
createOffscreenContext left the new context bound to the calling thread
causing a race condition with the background thread doing the actual
rendering. see T55555 for a more detailed description of the problem.

this patch changes the behavior of createOffscreenContext to restore the
context to the calling context.

Reviewers: fclem

Differential Revision: https://developer.blender.org/D3499
2018-06-23 11:37:35 -06:00
4ddb03ba79 Keymap: Add F3 key back for search
Keeping tilder, adding back F3 since some platforms
still don't have hardware scan-codes for tilder key on non-US keyboards.
2018-06-23 16:25:29 +02:00
6328214ec8 Manipulator: fix issue refreshing transform tool
Changing manipulator types failed.
2018-06-23 15:02:27 +02:00
43872124f7 Merge branch 'master' into blender2.8 2018-06-23 10:46:09 +02:00
f8a3636374 UI: alternate fix for empty context menu
block and layout could be NULL and checking this everywhere
wasn't practical.

Instead of lazy initializing, add UI_popup_menu_end_or_cancel
which cancels empty popup menus.
2018-06-23 10:31:10 +02:00
0511cded25 UI: naming of cursor options 2018-06-23 09:46:18 +02:00
575c71b670 Blenfont: Fix texture not being initialized in recent refactor.
Caused some gpus to have issues with the font shadows.

thanks @fclem for helping tracking this one down.
2018-06-22 14:35:32 -06:00
2d7606daa5 Missed last commit 2018-06-22 19:25:38 +02:00
a997b5d17b Tool System: transform can now toggle loc/rot/scale 2018-06-22 19:23:27 +02:00
cc4dc2dce2 Depsgraph: cache effector relations, for performance and stability.
To find all effectors in the scene, we need to loop over all objects.
Doing this during depsgraph evaluation caused crashes because not all
objects are guaranteed to be evaluated yet.

To fix this, we now cache the relations as part of the dependency graph
build. As a bonus this also makes evaluation faster for big scenes,
since looping over all objects for each particle system is slow.

Fixes T55156.
2018-06-22 17:57:22 +02:00
79615c5adb Cleanup: nuke (nearly) all remaining usages of DM from RNA.
Only case remaining is a nasty ccgdm/opensubdiv update case, TBD once
subsurf case is addressed.
2018-06-22 17:55:48 +02:00
122e0105e2 Port DM_debug stuf to BKE_mesh_runtime. 2018-06-22 17:55:48 +02:00
8286cc8cd4 Fix crash reading toolsettings 2018-06-22 17:22:06 +02:00
bf0dc7ee19 Cleanup: use standard BKE_object_free_derived_caches in BKE_mesh_to_curve.
...Instead of doing own dirty/risky version of the same thing!
2018-06-22 16:59:38 +02:00
b1e86ff385 Cleanup: misc DrivedMesh stuff. 2018-06-22 16:59:38 +02:00
befd87ac62 StudioLights: API
- get spherical harmonics coefficients
2018-06-22 16:23:30 +02:00
6bfc961424 Cleanup: Moar DM busting from editor code area. 2018-06-22 16:10:29 +02:00
ccbe3bdd08 Cleanup: nuke another DM usage in paint code. 2018-06-22 16:03:16 +02:00
f51661fb66 Cleanup: useless BKE_cdderivedmesh includes... 2018-06-22 15:52:14 +02:00
c850fcc2c0 Modifiers: port shapekey modifier, some cleanup. 2018-06-22 15:45:46 +02:00
97c99fb034 Modifiers: port UV_unwarp from DM to Mesh.
Pretty trivial...
2018-06-22 15:32:41 +02:00
48e70ab848 Add depth and orientation options to 3D cursor tool 2018-06-22 15:23:56 +02:00
3c828c29b3 Cleanup: unused value 2018-06-22 15:23:56 +02:00
888fb065a4 Modifiers: Remove remaining parts of md->scene 2018-06-22 15:12:03 +02:00
a7ca8fe1dd Modifiers: Remove lots of usages of md->scene 2018-06-22 15:12:03 +02:00
7a4b784909 Subsurf: Move away from using scene from modifier data 2018-06-22 15:12:03 +02:00
fffe34531d Cloth: Move away from scene stored in cloth modifier data 2018-06-22 15:12:03 +02:00
c2fa82e7a4 Multires: Move away from using scene from modifier data 2018-06-22 15:12:03 +02:00
dfca352294 StudioLight: Better API
In stead of a single refresh function that re-init the whole system. The
API now supports adding and removing. Which will be much faster and less
flickering of missing icons when adding/removing lights
2018-06-22 14:49:49 +02:00
f4d6e66b25 Merge branch 'master' into blender2.8 2018-06-22 14:42:25 +02:00
6cd0484de8 CMake: Make language explicit for per-file strict flags removal 2018-06-22 14:40:00 +02:00
ec27776d8e CMake: Cleanup, add_cc_flag -> add_c_flag 2018-06-22 14:29:13 +02:00
38247fc80b CMake: Cleanup, rename CC_REMOVE_STRICT_FLAGS to C_REMOVE_STRICT_FLAGS 2018-06-22 14:25:42 +02:00
0d7e758c91 CMake: Tweaks to removal of strict flags
Silences the following strict flags from external libraries:

- -Wclass-memaccess
- -Wswitch
- -Wtype-limits
- -Wint-in-bool-context

Needed to tweak macro a bit, since the old logic was wrong:
we can not use CXX flags for C compiler, need way more strict
separation between what goes where.
2018-06-22 14:25:42 +02:00
6528310543 Cleanup: move cursor rotation into own function 2018-06-22 13:59:56 +02:00
Dalai Felinto
f4f6e5b665 Outliner: Aggregate ID types and object types together with numbers
We draw small numbers over the icon of multiple objects of the same type.
Also, we make all inlined elements to be non-clickabled.

For modifiers we still do it the old way. In this case it is more important
to see the order then the ammount.

Reviewers: brecht, campbellbarton
Subscribers: billreynish, venomgfx

Design task and mockup: T54707
Differential Revision: https://developer.blender.org/D3497
2018-06-22 13:57:04 +02:00
42344adcd4 Update theme Flatty Dark Blueberry 2018-06-22 13:45:36 +02:00
0b9cd0c88d Merge branch 'master' into blender2.8 2018-06-22 12:58:29 +02:00
a5f046f449 Cleanup: rename 3D cursor calculation vars 2018-06-22 12:55:15 +02:00
88158e4116 Cleanup: 2.8-new G.main in RNA code.
Again, essentially validating them, and adding assert check if needed.
2018-06-22 12:50:26 +02:00
646412004b Merge branch 'master' into blender2.8
Conflicts:
	source/blender/makesrna/intern/rna_image.c
	source/blender/makesrna/intern/rna_object.c
	source/blender/makesrna/intern/rna_object_force.c
	source/blender/makesrna/intern/rna_screen.c
	source/blender/makesrna/intern/rna_sculpt_paint.c
	source/blender/makesrna/intern/rna_space.c
	source/blender/python/bmesh/bmesh_py_types.c
	source/blender/python/generic/bpy_internal_import.h
	source/blender/python/intern/bpy_rna_anim.c
	source/blender/python/intern/gpu_offscreen.c
2018-06-22 12:46:16 +02:00
b6b7c83dd8 StudioLight: Only apply windowing when SH level is 2
It does not make much sense for the other levels
2018-06-22 12:37:03 +02:00
2fe528424d Cleanup: remove last G.main from RNA.
Again, we cannot actually get rid of G_MAIN global access here, so in
most case just 'marked' them as valid, and added assert checks to ensure
we do only work with IDs in G_MAIN in those cases.
2018-06-22 12:35:41 +02:00
0427eca2a6 StudioLight: remove caches when removing studiolight
Cache files were not deleted and when uploading a new file with the same
name resulted in using the old cache file.
2018-06-22 12:31:20 +02:00
e402c36388 Studiolight: Spherical Harmonics Windowing
Apply Windowing on the Spherical Harmonics result. This would lead to
better results.
2018-06-22 12:31:19 +02:00
101fd7ec06 Tweak new BKE_id_is_in_global_main to accept NULL pointer (and consider them as valid). 2018-06-22 12:26:45 +02:00
bcdec63570 Fix harmless use of unintialized memory
Still nbice to avoid such access to keep valgrind output more sane.
2018-06-22 12:08:18 +02:00
e6e2e9c246 Cleanup, spelling 2018-06-22 12:08:18 +02:00
9921e10583 Math: Set matrix to zero when inversion fails
Avoids usage of uninitialized memory when inversion fails.

That uninitialized memory can cause object to become visible when
it is supposed not to or other artifacts like that.

Longer term solution would be to check every instance of invert_m#
function and to explicit fallback when needed (possibly, using
extra utility functions).
2018-06-22 12:08:18 +02:00
cbf5c738d6 Cleanup: get rid of last G.main's in bpy area.
Essentially 'validating' them as G_MAIN, and adding some asserts in
dubious places, that handled IDs are actually in G_MAIN.
2018-06-22 11:37:47 +02:00
1870a1adc7 BKE_library: Add func to check an ID is actually in G_MAIN database. 2018-06-22 11:37:08 +02:00
f3501a00e2 PaintMode: Full Shading Boolean => Slider
There was a Full Shading bool that was shared across the WP, VP and TP
modes. This commit makes some changes:

- Replace the bool with a factor. This gives the user more control on
the visibility.
- Also draw it on top of the Material and Rendered mode so the user can
control what he needs. In certain cases you don't want to see the final
rendered material, but the actual texture.
- Removed the skipping of objects when in paint modes. As now the paint
modes are blended.
2018-06-22 10:43:03 +02:00
c517778a8b Cleanup: style 2018-06-22 08:18:02 +02:00
61bed8768d Cleanup: suppress assert in recent GPU refactor 2018-06-22 08:11:17 +02:00
2e80279a75 Fix T55547: "Fit camera to selected" fails 2018-06-22 07:55:49 +02:00
84ae0fe3a5 GLRefactor: Refactor bf_blenfont to use GPUTexture instead of raw GL calls and types.
In an effort to centralize all opengl calls in the codebase, this patch replaces
the raw opengl calls in bf_blenfont with GPUTexture so it's no longer depended
on opengl headers.

reviewer: Brecht

Differential Revision: https://developer.blender.org/D3483
2018-06-21 18:36:05 -06:00
a0dce6810d Edit Mode: Bevel Op: Offset Soft Max to 100
This is consistent with the modifier
2018-06-21 13:46:11 -04:00
4f83fd4cf8 Merge branch 'master' into blender2.8 2018-06-21 19:29:22 +02:00
68f4a4641e Fix T55568: second click event ignored 2018-06-21 19:26:21 +02:00
51f6b25afd Revert "Fix T55568: second click event ignored"
This reverts commit 52aa963f0e.

Fixed for keyboards, broke mouse buttons.
2018-06-21 19:24:53 +02:00
c111eb0e99 Cleanup: get rid of dual DM/Mesh versions of mirror topology code.
Easy to switch to only use (evaluated) mesh instead!
2018-06-21 19:05:10 +02:00
d6eac9d787 Cleanup: ED_mesh_pick_vert: DM -> me_eval. 2018-06-21 18:38:37 +02:00
31d916210c Cleanup: remove DM from 'join as shape' operator.
Also deduplicated the 'mesh as shapekey' code, we had kind of two funcs
doing the same thing here...
2018-06-21 18:26:12 +02:00
6046d9f715 Fix own error making outliner rename not emboss 2018-06-21 18:15:17 +02:00
6427141f7b Modifiers: Stop using md->scene in isDisabled() callback
This is first commit in series of changes to get rid of md->scene.
2018-06-21 18:04:05 +02:00
991d4f1c6b Fix incorrect use of G.is_rendering for particles in some places. 2018-06-21 17:08:42 +02:00
318ad705ad Cleanup: nuke useless BKE_DerivedMesh.h includes. 2018-06-21 16:45:54 +02:00
78653cfb8c Merge branch 'master' into blender2.8 2018-06-21 16:43:39 +02:00
84dbf949d7 UI: don't show empty button context menu 2018-06-21 16:37:19 +02:00
c45a3b80e2 Fix T55555: Crash when select material properties
This error is only in Windows and Mac when select in properties the material tab.

This commit revert dc856be839 Preview: Add own opengl context to render preview images.
2018-06-21 16:11:29 +02:00
b350edc207 Depsgraph: Add missing relation from proxy group
Transform evaluation does depend on that matrix, but relation was never
in dependency graph. It was not even in the old dependency graph, which
makes me wonder how this thing worked reliably to begin with.

Should fix flickering issue in the render farm.
2018-06-21 15:57:24 +02:00
a0f1bd8ed1 Depsgraph: Re-hook duplicgroup relation to final transform operation
Transform evaluation doesn't not depend on objects which are being duplicated,
so should not be any regressions here.

The whole relation should probably be gone as it's kind of rooting back to
legacy times, but that would need more clear research and investigation and
regression testing.
2018-06-21 15:57:24 +02:00
ad42c358f8 Depsgraph: Walk into dupli_group object
That will help with cases when dupli_group object is not linked
directly to the scene.
2018-06-21 15:57:24 +02:00
b80cce2053 Cleanup: names: data transfer/mesh remap: dm -> me/mesh.
That area is now officially purged from the Devil.. errr... DerivedMesh!
2018-06-21 15:33:10 +02:00
ef90a8e12c Cleanup: data transfer: get rid of dual destination mesh.
Not needed anymore, we only actually need to know wether it's orig mesh
or eval one in a few places...
2018-06-21 15:33:10 +02:00
1859215576 Cleanup: some potentially critical changes in data transfer.
Removing that stuff should be valid with new depsgraph/modifiers stack
evaluation system... BUT it might not be, so rather have those in
separate own well-isolated commit.
2018-06-21 15:33:10 +02:00
fffff5a993 Cleanup: nuke DM out of data transfer code.
This was actually rather hairy, this code is huge and complicated, easy
to make mistakes...

Good thing is, it will allow for significant simplification and more
(name) cleanup in following commits ;)
2018-06-21 15:33:10 +02:00
cd6cb55ff3 Fix Cycles incorrect versioning for automatic sample world resolution. 2018-06-21 15:28:59 +02:00
4904eadc0f Fix T55525: "Only Keyframes from Selected Channels" option in Timeline was being ignored
I was originally going to just expose the filtering options fo the timeline
too (via popover), to provide full access to the filtering options here too.
However, investigating further, that would've caused problems when trying to
use the Next/Prev Keyframe operators in other editors (see comment in code).
For now, the simpler solution is to just sync the scene-level flag (used for
this option) back to the dopesheet settings (used for generating the summary
channel used for displaying keyframes), to buy some time to investigate more
carefully.
2018-06-22 01:26:06 +12:00
526392ab16 Workbench: Remove warning
When in forward rendering and Object outline was disabled every render
call created one console warning (uniform objectId not found)

this commit removes this warning
2018-06-21 15:17:05 +02:00
8534ce9384 Revert "Objects: when active object gets hidden, make it inactive."
This reverts commit fec97ec949, it's useful to be able to edit object
properties for hidden objects. The issue with mode locking that this
was meant to solve will be handled in another way.
2018-06-21 15:04:33 +02:00
c054a1a848 Merge branch 'master' into blender2.8 2018-06-21 15:02:38 +02:00
d5552a6d4b T55570: Moved Texture drawtype as to shading popover
the use of the texture drawtype is limited. so who should we have it
this prominent on the screen. By adding it as a shading.color_type
option we should save some screenspace.
2018-06-21 14:58:00 +02:00
a4f08297ed UI: preference for developer extras
Currently only used for "Edit Source" feature.
2018-06-21 14:54:21 +02:00
52aa963f0e Fix T55568: second click event ignored
Double-click handling caused the second click to be ignored
for keymaps that only handle click.
2018-06-21 14:04:43 +02:00
3584810fdd Python/BLF: add blf.color(r, g, b, a) method.
This is needed now that glColor() no longer works.
2018-06-21 13:37:02 +02:00
8d1ea6a767 Fix T55573: Mode rotate on local axis crashes 2018-06-21 12:53:58 +02:00
William Reynish
244cb8410e UI: Single column for Rigid Body World 2018-06-21 12:41:01 +02:00
a283333cd8 Fix Cycles CUDA render errors with CUDA 9.2.
Work around what might be a compiler bug.
2018-06-21 12:32:32 +02:00
d6313f47af Fix T55564: Cycles OpenCL build error on some scenes. 2018-06-21 11:46:52 +02:00
9b91e727be Merge branch 'master' into blender2.8 2018-06-21 11:10:37 +02:00
b681461c84 Fix T55568: second click event ignored
Double-click handling caused the second click to be ignored
for keymaps that only handle click.
2018-06-21 11:07:52 +02:00
66263905ae Merge branch 'master' into blender2.8 2018-06-21 10:32:16 +02:00
f1bc9331b1 Fix T55491: Double click fail in menu popups 2018-06-21 10:07:18 +02:00
3995b33a42 WM: don't make LMB a special case for double click 2018-06-21 09:49:30 +02:00
00d52376f7 CodeStyle: Comments 2018-06-21 09:22:34 +02:00
e60d4d6a0c Code cleanup: Added newline 2018-06-21 09:05:31 +02:00
54c4a107b1 Missed warning is previous commit 2018-06-21 09:04:03 +02:00
032c741214 Studiolight: Calculation of irradiance buffer
The calculation of the irradiance buffer was slow. Now it is only
calculated when it is being used (background_alpha > 0.0)
this solves the freeze when switching to LookDev mode.

Also changed the default calculation to use the Spherical Harmonics
calculation. This is able to generate the irradiance buffer fast, but is
less accurate. As the irradiance buffer is only used for visual
guidance speed is more important than accuracy.

Added compile directive to switch between the implementations.
(see STUDIOLIGHT_IRRADIANCE_METHOD)

Disabled caching the irradiance buffer when
STUDIOLIGHT_IRRADIANCE_METHOD_SPHERICAL_HARMONICS is used as it is not
needed.
2018-06-21 09:02:12 +02:00
636a690eb1 Fix: Ensure that summary channel is enabled when creating timeline 2018-06-21 17:56:11 +12:00
b081436d1c Graph Editor: Changing the display mode to "Drivers" mode now runs the Drivers-Editor UI setup code
This is a step towards being able to just choose the "Drivers Editor"
from the editor selector, and have everything displayed, ready to use.

Currently there are a few problems to resolve still:
1) This update callback doesn't run when changing the mode via the
   editors selector in the UI. (Note: This problem also affects the
   Timeline vs Dopesheet, causing a lot of initialisation work to be
   skipped)

2) There's some missing redraw/refresh here to cause the properties
   region to actually show. You need to resize the window for that to
   happen now.
2018-06-21 17:15:45 +12:00
876c73c9af Cleanup: Move logic for initialising a new Drivers editor into its own function
This shouldn't really be part of the windowmanager code. Pulling it out
now, so that we can reuse in RNA when switching display modes,
(and perhaps other places later)
2018-06-21 16:58:14 +12:00
3777918e5c Remove debug prints 2018-06-21 16:08:52 +12:00
417856dae5 Fix: Incorrect submodes being set in Dopesheet/Action Editor when changing modes
This commit fixes a number of problematic corner cases when switching between
editors after 2b5050a4cd

The root cause of these issues was that mode_prev was not being set in
many cases, resulting in mode changes to the Timeline and back (via other
editors) causing Dopesheet Editors to reset back to "Action Editor" mode.

1) Creating new Dopesheet Editors (e.g. change the default 3D view to
   a Dopesheet editor) would default to displaying the "Action Editor",
   since mode/mode_prev == 0 represents the "Action Editor" (for backwards
   compatability reasons), while mode == 3 is for the "Dopesheet"

2) If you set the Dopesheet Editor to another mode (e.g. "Grease Pencil" mode),
   change to another editor (e.g. Shaders), then come back, the mode would
   get reset to "Action Editor".
2018-06-21 16:07:47 +12:00
ed428b2c04 UI: Use Collection icon for New Collection in Outliner
Also temporarily bring back the toggle to search, since it's off by default.
2018-06-21 01:01:02 +02:00
f3bd5da7fc UI: button to create new collection in the Outliner
Expose search like in 2.7, we could make it pop on Ctrl+F to save space if needed.
Align Filter and the less used View menu to the right.

Based on mockups and feedback session with William
2018-06-21 00:37:57 +02:00
0b7edf105d UI: Icons for Outliner display modes
We need a better icon for Orphan Data
2018-06-21 00:32:56 +02:00
4cfc54a5cb UI: adjust menu triangle
Was not centered for single icon buttons.
2018-06-20 21:34:27 +02:00
8d00d6d0bf UI: rename "NLA Editor" -> "Nonlinear Animation"
See: T54744
2018-06-20 20:16:47 +02:00
2b5050a4cd UI: expose Timeline as a space type
See: T54744
2018-06-20 20:11:41 +02:00
6991b477d7 UI: expose Driver as a space type
See: T54744
2018-06-20 18:46:48 +02:00
Dalai Felinto
2e66e5faca Silence warning in greasepencil-object branch
We don't have warnings in 2.8 because of include order.
But headers shouldn't depend on that for warnings, really.
2018-06-20 18:44:17 +02:00
7d3589e660 Cleanup: pep8, single quotes for enums 2018-06-20 18:22:52 +02:00
40e1e8ebed Despgraph: don't tag for transform/geometry update on relations rebuild.
This should already be happening elsewhere and was causing depsgraph
rebuild to be slower than it should.
2018-06-20 18:12:48 +02:00
e1dff01e29 Depsgraph: add some missing depsgraph tags when relations change. 2018-06-20 18:12:48 +02:00
0d0d8935a5 Fix outliner mixed collection/object visibility drag toggle not working. 2018-06-20 18:12:48 +02:00
73d0a3f142 Fix hide object operator to do nothing if no object is selected. 2018-06-20 18:12:48 +02:00
82dc5f91e8 UI: Style locks in Object Transform panel 2018-06-20 17:01:40 +02:00
54a0247f59 Cleanup: whitespace 2018-06-20 16:42:19 +02:00
William Reynish
b998ccefee UI: Single column, flow and sub-panel for collision physics 2018-06-20 16:34:27 +02:00
ab9e2dccd3 Cleanup: follow naming conventions
Using panels for presets printed warnings for classes named as menus.
2018-06-20 16:32:31 +02:00
1ccd70b7c1 Icons: update generation script 2018-06-20 16:15:58 +02:00
William Reynish
00fd2b57d1 UI: Single column layout for Force Fields 2018-06-20 16:11:18 +02:00
William Reynish
a8e132768a UI: Dynamic Paint panels into sub-panels 2018-06-20 16:11:18 +02:00
a3428131b6 Studiolight: Spherical harmonics
Compile time option to reduce the level of the SH
2018-06-20 16:08:11 +02:00
3414a16705 Merge branch 'master' into blender2.8 2018-06-20 16:01:30 +02:00
d312dbea2d Cleanup: naming (make it clear vars are squared) 2018-06-20 15:58:46 +02:00
e6609deba2 Merge branch 'master' into blender2.8 2018-06-20 15:50:54 +02:00
12e926781a Merge branch 'master' into blender2.8 2018-06-20 15:40:14 +02:00
372754c164 Screen: split ED_area_actionzone_find_xy
Add ED_area_actionzone_refresh_xy which can tag redraw
find no longer changes changes to the action zone.
2018-06-20 15:34:20 +02:00
5cad6afac6 Cleanup: rename is_in_area_actionzone 2018-06-20 15:34:20 +02:00
daaf315bf2 Cleanup: quiet warning 2018-06-20 15:34:20 +02:00
3df5625ae7 Cleanup: remove some useless Derivedmesh struct declarations. 2018-06-20 15:17:35 +02:00
b13585e782 Cleanup: remove last DM usages from datatransfer code. 2018-06-20 15:17:35 +02:00
0fb1093b14 Studiolight: fixed diffuse lighting
- Orientation of the cubemap were not conform cycles and eevee
- one side of the cubemap was flipped, so one side was overlit and the
other side was to dark.
2018-06-20 15:00:23 +02:00
c6ab911744 Merge branch 'master' into blender2.8 2018-06-20 14:16:22 +02:00
984a78e763 Fix crash opening some files, after recent changes. 2018-06-20 13:42:23 +02:00
4234cddda9 Objects: support for hiding all objects in a collection.
In the outliner there are now icons for it, Ctrl+Click isolates a
single collections.

In the 3D view, Ctrl+H key opens a menu that is more or less the
equivalent of the old layer buttons in the header. Regular Click isolates
the collection, Shift+Click toggle the collection visibility. Pressing
number keys and letters works in this menu, which can help for quickly
selecting a specific collection.

Shortcuts for quick switching by just pressing 1/2/3/.. keys are available
again. The order can be confusing with nested collections, but that seems
unavoidable. The first numbers control the top level collections, and then
sub collections if numbers are left.

Remaining design issues:

* The 3D view menu needs to be improved: support for sub collections,
  staying open on shift+click, access from the 3D view header somewhere,
  shortcut key display.
* Currently collection hiding just controls per-object hiding, we plan
  to separate this state still so alt+H doesn't affect collection hiding.
2018-06-20 13:04:51 +02:00
5e968a996a Objects: restore per object restrict view/render/select.
Note this is now separate from H key hiding, and meant for more persistent
ways to define which objects are relevant to the viewport or render.

This avoids some cases where you'd have to create collection specifically
to hide objects for viewport/render.
2018-06-20 12:35:25 +02:00
0619f960c2 Objects: restore H key per object hiding.
H hides selected objects, Shift+H hides unselected objects, and Alt+H
reveals hidden objects.

This hiding state is distinct from restrict viewport and render, and
meant for temporarily hiding objects without affecting more persistent
collection hiding.

Object hiding is per view-layer, same as selection. It affects the
viewport and any preview renders in there, but not final renders.

In the outliner, different icons are now used for temporary hiding, and
restrict viewport and render. Hidden objects are greyed out.

Remaining design issues:

* For lamps we probably still want to keep their effect on the scene,
  currently they are fully disabled by hiding. Arguably mesh lights or
  even objects being reflected or casting shadows are not that different
  but perhaps the special lamp exception from local view should remain.
* We need a feature still to disabled this hiding for specific viewports,
  for render or animation preview where you want to see the entire scene
  while working in another view.
* We need a new icon for restrict viewport, for now it uses a grid similar
  to the 2.4 icon.
* Hiding objects does not preserve selection state as it did in 2.7,
  it's probably convenient to support this again?
2018-06-20 12:35:25 +02:00
c17ba4a903 T55550: Workbench Shadows are incorrect in first draw cycle
Shadows uses the old location for light_direction. Maybe a merge
conflict.
2018-06-20 12:29:09 +02:00
fd48e685c3 Cleanup: remove some G.main from BKE's node.c
Validate some cases using G_MAIN instead (I don't think we want to work
on any other Main than G.main one when registering/unregistering nodes
etc.).

And when freeing, all ID not in Main shall now be tagged accordingly, so
we *should* not need to do that stupi search over all ntrees in G.main
to check wether we have to free it ourself or not!
2018-06-20 12:27:26 +02:00
84c2ef0eaf UI: Use chevrons for number sliders, pulldowns and popovers
In the future popovers/pulldowns should have different indicators

Patch by William Reynish and Clement Foucault
2018-06-20 12:24:24 +02:00
20788e1747 Cleanup: moar G.main removal.
Nice trick from blender2.8, we now can get active scene from active
window of windowmanager!
2018-06-20 11:53:30 +02:00
edb80a801d Fix crash activating the HUD w/o an active region 2018-06-20 11:43:10 +02:00
8b673fc75f Cleanup: get rid of last non-thread-safe BLI_frand random generator func. 2018-06-20 11:30:25 +02:00
d97ee0b06a Cleanup: get rid of last BLI_frand usage. 2018-06-20 11:30:25 +02:00
1b2a2e0862 Cleanup: use new BKE_mesh_iterator foreach_mapped helpers in WPaint gradient code. 2018-06-20 11:30:25 +02:00
f58fa57b83 UI: fix "Edit Source" operator 2018-06-20 11:13:07 +02:00
6d21450a61 Revert "UI: fix "Edit Source" operator"
This reverts commit 109dbab593.

Accidental changes applied
2018-06-20 11:12:18 +02:00
109dbab593 UI: fix "Edit Source" operator 2018-06-20 11:10:08 +02:00
b661a4d663 Merge branch 'master' into blender2.8 2018-06-20 11:09:07 +02:00
8763a8fd4b Particle edit: Fix missing hair in edit mode for new particle systems
Need to get away from thosae update flags in original datablocks.
2018-06-20 11:05:52 +02:00
bba0ad903c Cleanup: De-duplicate overrides properties apply loop 2018-06-20 10:50:18 +02:00
d4519f54b3 UI: only show "Edit Translations" when addon used 2018-06-20 10:45:03 +02:00
2acf4ace51 Cleanup: Create ID property only once
Avoids refining ID pointer for every property which is being applied.
2018-06-20 10:29:49 +02:00
570f3e6719 Object Mode: enable mode locking by default
This is meant to be default behavior for 2.8, see T55246
2018-06-20 10:18:53 +02:00
d8f5a68f63 Merge branch 'blender2.8' into temp-dynamic-overrides 2018-06-20 10:18:19 +02:00
df2d05b203 Outliner: add object mode switching to RMB menu 2018-06-20 10:14:04 +02:00
9f9756ec35 Cleanup: strip space 2018-06-20 10:14:04 +02:00
8b9712faeb Fix T55540 Add foreachMappedXXX equivalent API for evaluated meshes 2018-06-20 10:03:50 +02:00
e3052ecb0d Studiolight: removed raise condition
Happened when deleting many studiolights at the same time when the
previews were still beging calculated in the background.

Added a free function callback that is filled when the preview is being
generated. This free function will then kill the preview job

This patch also removes icons that are not valid anymore so the user
cannot accidentally render an icon where the studiolight is invalid.

In the end we should use a add/remove function in the studiolight as
currently icons are recalculated too much.
2018-06-20 09:29:40 +02:00
91c0f17a47 Missed last commit 2018-06-20 07:27:35 +02:00
dc13e0d7dc Cleanup: default emboss=off for outliner buttons
Also use use braces for code blocks and reduce right-shift.
2018-06-20 07:14:19 +02:00
d44c40d91c Cleanup: some more valid G.main usages moved to G_MAIN. 2018-06-19 19:30:47 +02:00
9c20de8998 Merge branch 'master' into blender2.8 2018-06-19 19:25:44 +02:00
0a8af46707 Final cleanup of G.mains in render area. 2018-06-19 19:25:06 +02:00
29d7358ff6 UI: fix ctrl wheel while over the opposite side 2018-06-19 19:22:23 +02:00
63f31e466a Cleanup: names of WPaint gradient data structs.
Those actually never had anything to do with DM... Just used WP prefix
instead!
2018-06-19 19:15:11 +02:00
cc3c91c27f Cleanup: remove DerivedMesh from WPaint Gradient tool code.
Name cleanup to follow.
2018-06-19 19:15:11 +02:00
db0563e995 Fix re-entrant calls in some cases of mesh_evaluated generation.
`mesh_get_eval_final` and friends could call `mesh_build_data`, which in
paint/sculpt mode would call `BKE_sculpt_update_mesh_elements` which
would call `mesh_get_eval_final`... ugly!
2018-06-19 19:15:11 +02:00
85f717fcda UI: tweak sequencer color space position, it's not related to display device. 2018-06-19 19:14:42 +02:00
44611ab860 UI: fix Ctrl-Wheel to change button values 2018-06-19 18:36:30 +02:00
1292aae5c0 Correction to previous commit.
There is no guarantee that given ob pointer is not also an evaluated one
here...
2018-06-19 18:29:40 +02:00
5372da0121 ModStack: Fix broken object_get_datamask helper.
Would compare evaluated ob pointer to original one...

Found while investigating some errors in incomming cleanup, but this was
probably generating lost of other issues in some cases...
2018-06-19 18:25:30 +02:00
5b227c420b Fix animation player drawing wrong size 2018-06-19 18:03:08 +02:00
61af6b83e6 Merge branch 'master' into blender2.8
Conflicts:
	source/blender/editors/sculpt_paint/paint_image_proj.c
2018-06-19 16:49:54 +02:00
750a78be9c 3D View: improve selection locking
Locked selection would still occlude with objects which could not be
selected.
2018-06-19 16:43:01 +02:00
0116c95d4c Studiolight: Temp Mutex issue
This is a temp fix for a better system.
Currently the studiolights can be referenced by a WM_job and being freed
via the API. This can happen when removing a studiolight via the
interface.

As the studiolight has no relation with the job, it is hard to detect if
it is still being used. I tried with a Mutex and a Thread Queue but they
were failing.

So the current temp fix is to keep the studiolights in memory until you
close blender. This Must be fixed ASAP! I added this fix so normal cases
can workish.
2018-06-19 16:37:23 +02:00
Stefan Werner
9ff135d85d Cycles: Fixed crash when the camera was inside 16 volumes or more. It still won't render those volumes correctly, but at least the crash is addressed. 2018-06-19 16:35:18 +02:00
b5893b1ba3 Fix (unreported) passing CDLayer 'ID' instead of bitflag to a cdlayer mask!
Probably harmless, since I bet CD_ORIGINDEX is nearly always generated,
but still...
2018-06-19 16:25:24 +02:00
a7e66d89d0 Merge branch 'master' into blender2.8 2018-06-19 16:21:35 +02:00
86c1cad1cf Fix missing render slots bugs after recent changes. 2018-06-19 16:19:49 +02:00
7c3ecbf040 Correct rigidbody stub 2018-06-19 16:18:23 +02:00
1c6ca9dc90 Fix animation player 2018-06-19 16:13:23 +02:00
e49f6bb208 UI: Smoke panels as sub-panels
Remove suffix from name since they are sub-panels now.

Display Settings -> Viewport Display, and two sub-panels as well for less used settings.
2018-06-19 16:01:35 +02:00
fbae373db5 Cleanup: remove ref to dm in names in projpaint struct. 2018-06-19 15:55:45 +02:00
650bc17c1e Remove derivedmesh from 3DView texture/projection paint.
Pretty straightforward changes. Name cleanup to follow in a separated
commit.
2018-06-19 15:55:45 +02:00
34d9e9837a UI: Fluid physics panels as sub-panels
Also remove suffix from name since they are sub-panels now.
2018-06-19 15:48:21 +02:00
a2b79a21e1 UI: Soft Body panels as sub-panels
Also remove suffix from name since they are sub-panels now.
2018-06-19 15:48:21 +02:00
71b25e75c3 UI: Rigid body panels as sub-panels
Also remove suffix from name since they are sub-panels now.
2018-06-19 15:48:21 +02:00
96e6fd3b60 Remove rigid body from rbw->group when deleting
I moved some code from ED_rigidbody_object_remove() to
BKE_rigidbody_remove_object(), so that calling the latter doesn't leave
the object in rbw->group (causing a crash later on when rebuilding the
depsgraph).
2018-06-19 15:40:25 +02:00
ab1beb9744 UI: Cloth panels as sub-panels
Also remove Cloth suffix from name since they are sub-panels now.
2018-06-19 15:33:38 +02:00
d8f9ec1547 Particles: Support changing modifiers during particle edit mode
The idea is to only use pointers to particles in original object when
creating an edit structure. The derived mesh we get from evaluated
object.

The rest of the commit is just keeping pointers in sync.
2018-06-19 15:28:33 +02:00
95306a4d19 Particles: Use utility function to copy particles 2018-06-19 15:28:33 +02:00
aa3f0b0998 Particles: Add utility function to copy particles from one system to another 2018-06-19 15:28:33 +02:00
92c519ff17 Blender Version Bump
Without this, render slots aren't added.
2018-06-19 14:50:39 +02:00
ce0a87a208 Revert: EditMode Inactive edge drawing
Did it manually as there was some refactoring done that has value
2018-06-19 14:32:52 +02:00
92823275af Fixed rigid body simulation randomly stopping
This was caused by a floating point comparison using ==, instead of using
compare_ff_relative().
2018-06-19 14:22:48 +02:00
4b5f3690bb Missed warning in previous commit 2018-06-19 14:07:21 +02:00
1b972a38fe Lookdev: Renamed RNA
studiolight_background => studiolight_background_alpha
Removed "Show" from the label
2018-06-19 14:04:51 +02:00
de748bbedf Studiolight: Background Generation of icons 2018-06-19 14:04:51 +02:00
c564d847ef Show cached frames in timeline at correct height
The line was covered by the horizontal scrollbar instead of drawn above
it.
2018-06-19 11:49:56 +02:00
8f922b30b0 RigidBodyWorld: copy ptcache from evaluated scene back to original scene
This makes it possible to perform re-evaluation of the scene without
having to re-run the simulation.

The CoW → Orig copy is only performed when the depsgraph is active, so
as to not influence the current scene while rendering in the background.

Alternatively, we could have the CoW copy share the cache with the
original to prevent too much copying of cache data. This will be faster,
but I'm not sure whether we can reliably check the DEG_is_active()
status at CoW copy creation time.
2018-06-19 11:49:56 +02:00
668f39519c Fix T55528: Cycles AO node should default to 1 if radius is 0. 2018-06-19 11:45:05 +02:00
caaf4e5a37 Merge branch 'master' into blender2.8
Conflicts:
	source/blender/editors/sculpt_paint/paint_image_proj.c
2018-06-19 10:52:01 +02:00
b09a8203e9 Cleanup DM generation code for ProjPaint.
Two branches were actually doing essentially the same thing here, no
need to artificially complicate things. ;)
2018-06-19 10:48:37 +02:00
64a2f98062 Fix (unreported) unauthorized relesing of derived_final DM in paint projection code.
NEVER free yourself DM returned by mesh_get_derived_final(), it's always
to one assigned to ob->derived_final!
2018-06-19 10:43:54 +02:00
816817011f Cleanup: rename mode -> object.mode in Py UI
Keep 'mode' only for 'context.mode'.
2018-06-19 09:25:05 +02:00
9025841a0a Error in last commit 2018-06-19 09:20:38 +02:00
2d2db18f0b UI: move object-mode lock out of the 3D header
Avoid obscure options here.
Move to the edit menu, although this may be temporary.
2018-06-19 09:14:31 +02:00
65b3c7b72c Studiolight: Add SH2 cache
- the result of the SH2-coeffiecients are stored in a bin file (3*9
floats). As the file is a local file we do not care about the
architecture.
- solved issue that also for internal lights the irradiance file were
stored. We don't want that as it could be in a not accessible location
2018-06-19 09:06:35 +02:00
7a3e037dc0 Merge branch 'master' into blender2.8 2018-06-19 08:56:45 +02:00
751189e9d6 Vertex Paint: set sculpt object mode immediately
SculptSession.mode_type wasn't initialized until painting,
making it unreliable for checks in other parts of the code.

Also remove unnecessary initialization,
matching sculpt mode more closely.
2018-06-19 08:50:35 +02:00
bd3fe54b0d Merge branch 'master' into blender2.8 2018-06-19 08:15:03 +02:00
f0c6f5ee77 editorconfig: correct C/C++ using space 2018-06-19 07:48:12 +02:00
8c77c36539 Ghost: Fix offline OGL render on windows.
rBe0c088f8fb5a introduced offline rendering support on windows, sadly it was trying to use the desktop window for getting a context, which given SetPixelFormat can only be called once for any given HDC was an unfortunate choice.

This patch uses a temporary hidden window for getting the opengl context.

Reviewers: mano-wii

Differential Revision: https://developer.blender.org/D3481
2018-06-18 18:10:45 -06:00
30c383fd35 Merge remote-tracking branch 'origin/master' into blender2.8 2018-06-18 13:40:39 -06:00
38b72fb64b make.bat: Fix msvc-2017 detection.
D3485 by @manung

Differential Revision: https://developer.blender.org/D3485
2018-06-18 13:39:12 -06:00
643370b10f Cleanup: code-style 2018-06-18 20:58:08 +02:00
0d8b92267d Object Mode: make mode locking optional
Design from T55246 is kept while allowing 2.7x behavior.
2018-06-18 20:43:26 +02:00
9fb5924446 Fix a very nasty and sneaky bug in lib remap / static override code.
Not sure why remap call for static override reference ID pointer was put
there, probably a mistake during some merge back in the days...

But this ended up with self_id of libquery data struct still being set
to previous ID pointer, which could randomly generate crap like falsly
reporting indirect data and such, leading to lost reference datablock at
writefile time...
2018-06-18 20:20:55 +02:00
176bbe3466 Merge branch 'master' into blender2.8 2018-06-18 18:55:12 +02:00
ab59f9e65d editorconfig: add rst 2018-06-18 18:53:49 +02:00
594bcf934e Cleanup: use DEG tag flags, instead of old OB ones.
Having those two in parallel is ratehr confusing... :/
2018-06-18 18:43:21 +02:00
4efe8fc806 Fix crash when making static override of an object from a collection.
Since we free collection caches when we remap one of their objects, we
also need to tell depsgraph to flush this into the COWs of that
collection, otherwise things like draw code can access freed memory...
2018-06-18 18:43:21 +02:00
e92d61797b 3D View: don't show manipulators when overlay is disabled 2018-06-18 18:33:02 +02:00
f0245a18d1 Merge branch 'master' into blender2.8 2018-06-18 18:22:06 +02:00
b7b7468bef editorconfig: add line length, glsl 2018-06-18 18:21:35 +02:00
b2fa20f6c9 Merge branch 'master' into blender2.8 2018-06-18 18:12:04 +02:00
ce7c87fbda Add .editorconfig file
This is a fairly well supported file-type configuration
for indentation and trailing space stripping.

See editorconfig.org for details.
2018-06-18 18:09:45 +02:00
f828355cd6 Avoid assert on startup 2018-06-18 17:39:51 +02:00
d7122825ec Cleanup: redundant greater than 2018-06-18 17:39:50 +02:00
bea779fd78 Particle: Add missing field initializaiton 2018-06-18 16:01:29 +02:00
762dec21f6 UI: decorators hid non-array buttons
Error in last commit.
2018-06-18 15:50:21 +02:00
7356cec0c6 Studiolights: Radiance icons were inverted. 2018-06-18 15:45:55 +02:00
7747d4cecf Workbench: increased Quality of the diffuse lighting model
- implemented Spherical Harmonics L2 for diffuse shading.

TODO: caching the precalculated harmonics so it won't take soo long to
open the popover
2018-06-18 15:32:53 +02:00
fec97ec949 Objects: when active object gets hidden, make it inactive. 2018-06-18 15:20:06 +02:00
7c836ac30a Cleanup: simplify some view layer code. 2018-06-18 15:20:06 +02:00
0365079676 Particles: Remove obsolete code for child particles in edit mode 2018-06-18 15:14:03 +02:00
55623368b4 UI: decorators weren't showing icon-only buttons 2018-06-18 15:11:10 +02:00
de4c81c153 Fix merge error in bpy_driver.c 2018-06-18 15:09:55 +02:00
c655c65987 UI: No decorators on render engine picker 2018-06-18 12:41:39 +02:00
088691254e Merge branch 'blender2.8' into temp-dynamic-overrides 2018-06-18 12:37:50 +02:00
324e10e76a Merge branch 'master' into blender2.8
Conflicts:
	source/blender/makesrna/intern/rna_space.c
2018-06-18 12:32:12 +02:00
579631819f Fix T55503: File browser filter not working correctly.
There were two issues here, introduced by rB66aa4af836:
* Forgot to change length of some filter_glob var deep in filebrowser code.
* Truncating filter_glob in general can be dangerous, generating
unexpected patterns.

Last point was the root of the issue here, truncating to 63 chars string
left last group as 'match everything' `*` pattern.

To fix that to some extent, added a new BLI_path_extension_glob_validate
helper to BLI_path_util, which ensures we do not have last
wildcards-only group in our pattern, when there are more than one group.
2018-06-18 12:26:47 +02:00
5e47f365e1 UI: Start UIList with 2 rows for materials/particles
There is room for it anyway because of the 3 buttons on the right.
2018-06-18 12:21:17 +02:00
d5ec62a0c3 Multires: Remove unused function
It uses derived mesh, and relies on scene stored in modifier data.
So port is needed anyway.
2018-06-18 11:14:00 +02:00
4330027895 Depsgraph: Cleamup, reduce indentation level 2018-06-18 10:23:03 +02:00
35c02c08b8 3D View: support outline overlay option 2018-06-18 09:23:25 +02:00
04e2a5cef4 Refactor: Put ViewportAA as UserPref
By default users want AA in the viewport. For slower systems you want to
be able to turn it off. As in the future we would also like to support
TAA in the viewport we introduced it as a Max Viewport AA settings.

Also removed the drawoption to enable/disable AA per viewport
When rendering the AA is always turned on.
2018-06-18 08:54:08 +02:00
79546a4eb6 ShadingMenu: Splitted in SubPanels 2018-06-18 08:54:08 +02:00
b2f0803b5b Fix T55511: Decorator drag makes many undo steps
Each keyframe made a separate undo step.
2018-06-18 08:25:05 +02:00
af51ec3214 Cleanup: indentation 2018-06-18 08:10:23 +02:00
0d45074768 Cleanup: whitespace 2018-06-18 08:08:08 +02:00
a794da5200 Fix T55517: Property-split fails w/ expanded enum 2018-06-18 08:05:46 +02:00
05b99b763e UI: disable decorators for render output 2018-06-18 07:38:06 +02:00
9d57b5aa44 Merge branch 'master' into blender2.8 2018-06-18 07:34:31 +02:00
b66ae8259e RNA: disable animation for file output options 2018-06-18 07:31:21 +02:00
05dc109553 Merge branch 'master' into blender2.8 2018-06-17 20:37:10 +02:00
86e20a2e63 Cleanup: trailing space cmake, make.bat 2018-06-17 20:18:09 +02:00
e7a68ef843 Cleanup: trailing space in CMake files 2018-06-17 20:15:24 +02:00
195879a50d Edit Mesh: Fix buggy occlusion when in xray mode.
This mimics the behaviour of the old wireframe mode. When in Xray mode,
don't use the limit selection to visible option.

Also hide the option if Xray is enabled.
2018-06-17 20:11:37 +02:00
2ceff8bd63 Python: Allow untrusted py-drivers to run limited expressions
Limit to a restricted set of built-ins, as well as the math module.
Also restrict of op-codes, disallowing imports and attribute access.

This allows most math expressions to run
without any performance cost once the initial check is done.

See: D1862 for details.
2018-06-17 20:01:05 +02:00
06a1a66a9b Merge branch 'master' into blender2.8 2018-06-17 17:10:19 +02:00
a24b4e6090 Cleanup: trailing space for remaining source/ 2018-06-17 17:06:28 +02:00
76c2203f9c Cleanup: trailing space for blenloader 2018-06-17 17:06:07 +02:00
6fc8a74886 Cleanup: trailing space for blenkernel 2018-06-17 17:05:51 +02:00
a262ea8c47 Cleanup: trailing space for compositor 2018-06-17 17:05:29 +02:00
410880552b Cleanup: trailing space for freestyle 2018-06-17 17:05:14 +02:00
e74bd46ede Cleanup: trailing space for imbuf module 2018-06-17 17:04:54 +02:00
1eed46c788 Cleanup: trailing space for modifiers 2018-06-17 17:04:27 +02:00
78fbd146f3 Cleanup: trailing space for DNA headers 2018-06-17 17:04:09 +02:00
4be752a93c Cleanup: trailing space in source/gameengine/ 2018-06-17 17:03:10 +02:00
61d27db359 Merge branch 'master' into blender2.8 2018-06-17 16:36:30 +02:00
5513da65b2 Cleanup: trailing space for BLI 2018-06-17 16:32:54 +02:00
f19ecdeec6 Cleanup: remove unused BLI_rebase_path 2018-06-17 16:26:47 +02:00
56173e512c Merge branch 'master' into blender2.8 2018-06-17 16:18:15 +02:00
a0a1fc8938 Cleanup: BLI path extension API
Use BLI_path_extension_* prefix.
2018-06-17 16:13:24 +02:00
6855d537e3 Merge branch 'master' into blender2.8 2018-06-17 15:52:32 +02:00
6453814ec0 BLI_path: add string size debug define
Off by default, only for debugging.
2018-06-17 15:35:00 +02:00
c7ae7ccfb8 Driver: trailing zeros from expression 2018-06-17 14:50:42 +02:00
547e962bf6 3D View: 3D Cursor was not restoring GL state
Caused camera frame to be double width.
2018-06-17 14:43:31 +02:00
446a646551 UI: hide decorators in panels w/o animated buttons 2018-06-17 12:38:28 +02:00
529669fde7 Edit Mesh: tweak active face edge width
This rewinds a change from own commit e3d88b021c
The only took edge overlay into account (crease, seam.. etc)
Currently active-face also uses this width.

While the difference is subtle,
this makes the active-face stand out more clearly.
2018-06-17 12:31:01 +02:00
d53d78ac45 UI: correct decorator buttons 'enabled' flag 2018-06-17 12:15:32 +02:00
e960920f2f UI: decorator color button assert
Also set 'all' argument based on the RNA-index
(even though it worked, better set to correct value).
2018-06-17 12:15:32 +02:00
ab20901c9e Cleanup: codestyle 2018-06-17 12:03:22 +02:00
43ce201125 Merge branch 'master' into blender2.8 2018-06-17 11:57:49 +02:00
42103a3eb8 CMake: add missing headers 2018-06-17 11:56:20 +02:00
2f1e34cfcc Cleanup: use clamp_* from BLI_math (replace macro) 2018-06-17 11:50:56 +02:00
75188552a1 Merge branch 'blender2.8' of git.blender.org:blender into blender2.8 2018-06-16 21:49:40 -06:00
0a08c5cd36 Fix : Build error with uchar in intern_gawain.
error introduced by  D3483, intern_gawain has no access to bli_systypes.h
2018-06-16 21:49:11 -06:00
fe98124a98 Custom Hdri: Use same AntiAliasing as Matcaps 2018-06-16 23:28:39 +02:00
b503dd7747 StudioLights: Fix preview icon.
Use same antialiasing method as the matcaps and fix the normal computation.
2018-06-16 23:28:39 +02:00
48adf90367 Matcap: Make matcap preview the same size as the other StudioLights 2018-06-16 23:28:39 +02:00
224daf55ac Matcaps: Add AntiAlias alpha mask to icon preview. 2018-06-16 23:28:39 +02:00
0332d338ea Studio Light: Fix typo 2018-06-16 23:28:39 +02:00
4a2c58e077 Outlines: Don't draw Xray mode outlines in material or render mode 2018-06-16 23:28:39 +02:00
45591cc0df GLRefactor: Remove all GL types from gawains public headers.
In preparation for possible alternative back-ends, the dependency on glew.h needs to be confined to as few libraries as possible. This patch removes all gl types from the public gawain headers.

It'll need some more refactoring later on, but for now this will suffice.

Reviewer: brecht, fclem

Differential Revision: https://developer.blender.org/D3482
2018-06-16 12:44:20 -06:00
c90d348e04 Merge remote-tracking branch 'origin/master' into blender2.8 2018-06-16 12:30:56 -06:00
36e82b7759 make.bat: Fix make showhashes not working.
broke in recent refactor.
2018-06-16 12:29:38 -06:00
c21499ba4a UI: show decorator icon for static-override 2018-06-16 18:27:04 +02:00
3b7f630a54 Merge branch 'master' into blender2.8 2018-06-16 18:02:50 +02:00
dc1c820b2b Cleanup: remove BLI_frand from GreasePencil code. 2018-06-16 18:02:23 +02:00
0a8e6b48c4 Correct assert in recent changes 2018-06-16 17:31:37 +02:00
3cf239ccfa UI: support dragging to key-frame 2018-06-16 16:29:05 +02:00
d8c2c63c00 UI: Add property decorator buttons
When use_property_split is enabled, this template adds
buttons to set keyframes, (Alternative to showing color).

See: T54951
2018-06-16 16:28:42 +02:00
ace8ad861d Fix T55427: Removing Vertex Group used by Data Transfer Modifier results in crash.
Only fixing crash, proper handling (a.k.a remapping) of all
possible cases here, for all possible data layers, is rather involved...
2018-06-16 16:22:00 +02:00
8f2acda7d7 Merge branch 'master' into blender2.8 2018-06-16 16:16:53 +02:00
35c71aed25 UI: refactor drag-toggle for other button types 2018-06-16 16:04:26 +02:00
ce80e00a7c Edit Mesh: Simplify the overlay shader.
Remove all the clip cases and just pass the vertices screen position to the
fragment shader.

This does put a bit more pressure on the fragment shader but it seems to be
faster than before. And it simplify the code a lot.

It seems to fix some long standing issue on some intel GPU.
2018-06-16 15:49:16 +02:00
d45d094378 Edit Mode: Fix bad display of edges when limit selection mode is Off. 2018-06-16 15:49:16 +02:00
73abca1da0 UI: minor changes from 2.8
- Option to skip multi-data edits.
- Open hold buttons on drag.
- Utility function to set default value.
2018-06-16 15:44:13 +02:00
5600296c9d Merge branch 'master' into blender2.8 2018-06-16 15:28:57 +02:00
b955747875 Cycles Cleanup: Remove unneccessary color management call 2018-06-16 13:47:49 +02:00
9d876960e8 This option limits visibility of the glew.h header to just bf_gpu and intern_gawain
this is to highlight areas in the code that still directly do opengl calls or use
opengl types.

This is in preparation for supporting alternative rendering back-ends.

Reviewers: brecht, fclem

Differential Revision: https://developer.blender.org/D3304
2018-06-15 20:17:16 -06:00
01f576e87b Merge branch 'master' into blender2.8
The Eevee AO node supports the new Normal socket, but ignores Distance,
Samples, Inside and Only Local settings.
2018-06-15 23:16:49 +02:00
799779d432 Cycles: change Ambient Occlusion shader to output colors.
This means the shader can now be used for procedural texturing. New
settings on the node are Samples, Inside, Local Only and Distance.

Original patch by Lukas with further changes by Brecht.

Differential Revision: https://developer.blender.org/D3479
2018-06-15 22:16:06 +02:00
469408de72 UI: fix redundant scrolling in the redo panel 2018-06-15 21:05:49 +02:00
0ff87e3a60 Cleanup: code style 2018-06-15 20:55:37 +02:00
e3d88b021c Edit Mesh: tweak vertex size & edge width
- Vertex size now matches the theme setting.
- Edge width is closer to a single pixel line.
- Face dot was scaled up to be drawn as a circle,
  but is currently a square.
2018-06-15 20:11:35 +02:00
2291ce9f1f Merge branch 'master' into blender2.8 2018-06-15 19:12:44 +02:00
2b9edbc98b WM: suppress drag events if motion is handled 2018-06-15 19:09:43 +02:00
ecc57e7524 Merge branch 'master' into blender2.8 2018-06-15 17:43:18 +02:00
d645b1a78a Cleanup: some more G.main removal.
We are really starting to scratch the last bits here...
2018-06-15 17:42:17 +02:00
9c629b06bf Workbench OpenGL render: always render alpha on 1.0
Old implementation rendered alpha to 0.0 for background, but only during
deferred rendering. We should attach this to an DNA setting and also let
the forward shading respect this. But for now this is a better default
2018-06-15 17:42:11 +02:00
49915e3241 Cleanup: validate G.main's in creator code.
Using G_MAIN here is valid!
2018-06-15 17:36:44 +02:00
3e4bf31327 Cleanup: G.main removal from 2.8-only code. 2018-06-15 17:33:24 +02:00
5b6ae0523e Merge branch 'master' into blender2.8 2018-06-15 17:25:41 +02:00
ca2be6912d Hair editing: Use original object's particles for drawing
This allows to rely on brush to update children positions,
and avoid tag of object. Makes it way faster to comb with
children enabled.
2018-06-15 17:23:49 +02:00
5ac7068c5f Hair editing: Multi-thread various parts
Currently focused on making parts which are a bottleneck for Spring,
to make things fast as possible. There are surely lots of places
where threading is not currently done, but we can keep doing this,
maybe even with help from the community :)
2018-06-15 17:23:49 +02:00
acdbf71578 Hair editing: Only tag Copy-on-Write when children are enabled
Without children we only need to update batch cache. This way
we don't re-evaluate the whole modifier stack just to perform
child particles redistribution.
2018-06-15 17:23:49 +02:00
da9b1b14ed Cleanup: some more G.main removal/validation... 2018-06-15 17:21:07 +02:00
ed3d693cb1 Dependency graph fixes for RigidBodyWorld
- rbw->group added to the depsgraph.
- Mesh evaluation added when necessary.
- Prevent of double-free by freeing the scene before objects.
2018-06-15 17:15:42 +02:00
43d22d80e7 Keymap: use click event for tab-key
Checking release events would toggle edit-mode during alt-tab
cycling on X11.

Now both press and release events are needed.
2018-06-15 17:10:40 +02:00
d148514821 Workbench: Disable AA when doing opengl render.
- OpenGL uses linear space and has its own AA. So we don't calculate
when doing opengl rendering.
2018-06-15 16:50:34 +02:00
23b3901057 Merge branch 'master' into blender2.8 2018-06-15 16:32:31 +02:00
2e25a48b05 Fix more Cycles CUDA errors after recent changes. 2018-06-15 16:28:09 +02:00
Dalai Felinto
badb700161 Fix T55443: Manipulators not refreshing 2018-06-15 15:45:21 +02:00
0b8c2eed75 Merge branch 'master' into blender28 2018-06-15 15:42:42 +02:00
8166d0affd Cleanup: warning 2018-06-15 15:42:31 +02:00
e552247489 MeshEditMode: refactor
- added a lib for shaded functions
- decreased active face inner size
2018-06-15 15:37:13 +02:00
Dalai Felinto
86a2f4a34a Fix crash with x-ray and redo panel
Code was assuming any area with region data was the main one.
This is no longer the case.
2018-06-15 15:01:28 +02:00
b84fad2ba3 Fix T55490, intersect two triangles fails.
Need to use the 'use_partial_connect' option in island connect,
so changed signatures of various functions to pass that into and
then down from BM_mesh_intersect (making true for intersect, false
for boolean).
Then fix bm_face_split_edgenet_partial_connect to work when
input edges are not necessarily wire, but at least not in the
face they are being connected in. That caused generalization
of core BM_vert_separate_hflag_wire (which is only used in
this one place in all Blender).
2018-06-15 08:48:45 -04:00
6ee25c9d55 Fix broken multi-threaded concurrent access to same data.
Note that later we do can cache the non-data version of this path (i.e.
list of propnames), this will still save us the full RNA path parsing.

But the data side of path resolution has to be fully local, no way to
cache that since a same override can be applied to several objects!
2018-06-15 14:44:48 +02:00
84c91a87a9 Converted Rigid Body from DerivedMesh to Mesh 2018-06-15 14:33:11 +02:00
Dalai Felinto
a54079eecd Update DNA comment 2018-06-15 14:11:45 +02:00
5073ee0bb2 Workbench: FXAA
- do the FXAA pass after the color management. Be aware that during
rendering this is still being done in linear space
2018-06-15 14:05:49 +02:00
0276abbcf7 Workbench: FXAA
FXAA implementation in the deferred renderpass of the workbench.
Can be enabled per 3dview. Eventually this will also be a user setting
as it is more a system/performance setting than a scene setting.
2018-06-15 13:02:16 +02:00
15c340293f T55486: use GPU_R11F_G11F_B10F for target of Xray compo 2018-06-15 13:02:15 +02:00
64bfa4b300 T55486: use GPU_R11F_G11F_B10F for Matcaps 2018-06-15 13:02:15 +02:00
Dalai Felinto
20d5fd36a1 Depsgraph: Link scene cow with object cow
For dynamic override we need to be sure the object cow is not updated before
the scene cow.

In fact we need this to any datablock that is potentially dynamic overridable.

That said this patch makes the relationship (fix the arrows) yet it doesn't
fix the underlying problem.
2018-06-15 12:58:47 +02:00
b7338463a7 Tool System: workaround click conflicting w/ add brush 2018-06-15 12:29:30 +02:00
Dalai Felinto
344c2d4674 Merge remote-tracking branch 'origin/blender2.8' into temp-dynamic-overrides 2018-06-15 12:18:36 +02:00
995a1815f5 Fix T55408: Double transforms on parents/children.
object.base_flag was not synced back from evaluated ID to original one.
Similar thing as copying back to original transform matrix, avoids
having to get data from evaluated one in lots of cases.
2018-06-15 12:17:26 +02:00
76bc8669a0 Merge branch 'master' into blender2.8 2018-06-15 10:44:33 +02:00
284e0ea756 Fix (unreported) Text Editor: scrollbar exiting early
caused by recent clickdrag changes
2018-06-15 10:27:30 +02:00
8148d549bb Fix Cycles CUDA error after recent changes. 2018-06-15 10:26:28 +02:00
3a2a10e3a6 Merge branch 'master' into blender2.8 2018-06-15 10:25:41 +02:00
cbc7ee28d7 WM: 2.8 screen compatibility
Without these minor changes loading files from 2.8 will crash.

Manually applied edits from 26786a2b87
2018-06-15 10:24:53 +02:00
7c16739c75 Fix mouse input overwriting transform redo values
Redo trackball rotate and edge slide weren't working.

Caused by re-ordering of initialization 47de0321bf
2018-06-15 08:48:53 +02:00
e2c87c7e94 Cleanup: unused var 2018-06-15 08:03:19 +02:00
27de412ca8 Merge remote-tracking branch 'origin/master' into blender2.8 2018-06-14 22:54:42 +02:00
525be2f579 Image: Refactor render slots to a dynamic list
Previously, render slots were hardcoded to a fixed amount.

With this change, render slots now are stored in a list. Therefore, users can add and/or remove as many slots as they want.

Credit to brecht for the UI part.

Reviewers: brecht, sergey

Differential Revision: https://developer.blender.org/D3474
2018-06-14 22:46:30 +02:00
51f1ed8221 Cleanup: style 2018-06-14 22:44:53 +02:00
928d31d94a WM: fix redo region setting the context 2018-06-14 22:32:01 +02:00
26786a2b87 WM: add support for temporary region data 2018-06-14 22:27:58 +02:00
3ee606621c Cycles: Query XYZ to/from Scene Linear conversion from OCIO instead of assuming sRGB
I've limited it to just the RGB<->XYZ stuff for now, correct image handling is the next step.

Reviewers: brecht, sergey

Differential Revision: https://developer.blender.org/D3478
2018-06-14 22:21:37 +02:00
064e701472 Cycles: Connect value inputs to Strength instead of Color when inserting an Emission node
Same result, but saves an additional ConvertNode.
2018-06-14 22:16:42 +02:00
716e138a1b Cycles: Automatically detect HDRI resolution by default and use non-square sampling map
The automatic mode checks all Enviroment Texture nodes and picks the largest image's resolution.
If there are no Enviroment Textures, it just uses the old default.

Also, the sampling map now isn't limited to square shapes. The automatic detection uses the exact image size,
the manual UI option now halves the value to get the height.

A default aspect ratio of 2:1 makes sense since this is what most HDRIs use.

Reviewers: brecht, sergey

Differential Revision: https://developer.blender.org/D3477
2018-06-14 22:07:07 +02:00
1adfabc8c6 WM: revert part of Top-Bar inclusion
This removes OperatorRepeatContextHandle, from 5f6c45498c
since we now only have redo in the area an operator is executed in.

These values could be invalid and crashed in some cases.
2018-06-14 21:58:11 +02:00
7afa59e37a Edit Mesh: Fix blending function of edges
This fix the ugly (usually) dark outline that was around selected edges.
2018-06-14 21:45:16 +02:00
dc25e69c2d Fix motion paths not updating correctly for bones in some cases.
Sometimes the evaluated pose channel pointers can change during depsgraph
evaluation, so we can't store them ahead of time. The object pointer
should be ok since evaluated ID memory is reused.
2018-06-14 20:58:14 +02:00
2e09b277d5 Revert "GHOST: GLX: Remove XInitThreads"
This reverts commit 7529690df3.

I tried to put manually add threading protection to GHOST around
Xlib calls but that did not fix the crashes. So reverting that
for now despite the performance implication on some system.
2018-06-14 18:17:28 +02:00
dc856be839 Preview: Add own opengl context to render preview images. 2018-06-14 18:17:28 +02:00
a8e8808d58 Give RigidBodyWorld collection a fake user
This prevents it from disappearing when the blend file is saved.
2018-06-14 17:35:46 +02:00
8dc883052c UI: redo panel would still start zoomed in at times 2018-06-14 16:48:31 +02:00
59bb5d3a89 Cleanup: some remaining G.main's in COllada in 2.8... 2018-06-14 16:43:11 +02:00
a03fb42841 Workbench: Code cleanup: Double assignment 2018-06-14 16:28:16 +02:00
b9c9b87fa6 Cleanup: remove BLI_frand ugly global random generator usage from compositor. 2018-06-14 16:25:39 +02:00
3a36cbdfde Transform: Suppress assert w/ vertex paint 2018-06-14 16:14:51 +02:00
00eeb05f4c Depsgraph: Make certain components NOT tag copy-on-write when they are tagged
Currently done for mesh batch cache update, and for base flags sync.
Those components do not need anything from original object, and hence
can skip CoW tag and have faster update after them used.
2018-06-14 16:04:09 +02:00
42d8872014 Depsgraph: Use dedicated ocmponent for object's base flags flush 2018-06-14 16:04:09 +02:00
87b2444270 Merge branch 'master' into blender2.8
Conflicts:
	source/blender/collada/AnimationExporter.cpp
	source/blender/collada/AnimationExporter.h
	source/blender/collada/ArmatureImporter.cpp
	source/blender/collada/ArmatureImporter.h
	source/blender/collada/ControllerExporter.cpp
	source/blender/collada/ControllerExporter.h
	source/blender/collada/DocumentExporter.cpp
	source/blender/collada/DocumentImporter.cpp
	source/blender/collada/GeometryExporter.cpp
	source/blender/collada/GeometryExporter.h
	source/blender/collada/MeshImporter.cpp
	source/blender/collada/MeshImporter.h
	source/blender/collada/SkinInfo.cpp
	source/blender/collada/SkinInfo.h
	source/blender/collada/collada_utils.cpp
	source/blender/collada/collada_utils.h
2018-06-14 15:55:51 +02:00
0626de2033 GPU: consistenly use mipmap on/off in all draw modes.
This is important for good texture paint performance.
2018-06-14 15:50:22 +02:00
14db989e73 Cleanup: remove legacy GPU pass binding code. 2018-06-14 15:46:43 +02:00
39142103d9 T55479: Tag for update when active texture changes 2018-06-14 15:30:06 +02:00
fd19069999 Cleanup: remove last G.main's from Collada code. 2018-06-14 15:15:51 +02:00
277d901274 T55456 EditMeshMode
- see the face selection color when face is active
- test different masks for active face, finally chosen for no mask at
all.
2018-06-14 14:18:52 +02:00
158930228d Improved two tooltips
Tooltips shouldn't just repeat the information from the label.
2018-06-14 13:55:24 +02:00
f4dc4bd275 Fix crash on startup in after recent G.main changes. 2018-06-14 13:45:15 +02:00
3eba5c0079 Cleanup: remove last G.main's in WM code of 2.8.
Again, just validating ther usage and using G_MAIN instead.
2018-06-14 12:42:30 +02:00
4bf751be70 Merge branch 'master' into blender2.8
Conflicts:
	source/blender/modifiers/intern/MOD_normal_edit.c
	source/blender/windowmanager/intern/wm_files.c
2018-06-14 12:39:52 +02:00
66407e15cb Cleanup: Remove last G.main's from WM code.
Was mostly validating valid usages of G.main -> G_MAIN actually.
2018-06-14 12:34:13 +02:00
a671aa922a Workbench: Material colors + settings during sculpting 2018-06-14 12:12:27 +02:00
d64cd6f7ee Move call to drw_state_ensure_not_reused() inside the region locked by DST.gl_context_mutex.
Currently with a debug build there is a race condition where the mutex is released before the DST structure is reset to 0xFF, meaning when multiple threads are using the DRWManager it can get cleared when the main thread is using it, causing crashes.

Reviewers: fclem, brecht

Reviewed By: fclem

Tags: #bf_blender_2.8

Differential Revision: https://developer.blender.org/D3476
2018-06-14 12:03:40 +02:00
17b029d80e T55406: Flip Matcap
- Icon represent the flipped matcap in the shading menu
- Added template_icon to display any icon in scale.
2018-06-14 11:44:36 +02:00
0eb3246713 Fix T55470: Add option to not fix polygons' winding to Edit Normals modifier.
this is actually adding option to add buggy behavior, but.. NPR often
expects buggy behaviors, and its one of the main targets for normal editing.
So think it's reasonable to add that option (disabled by default of
course).

Note that am not really happy with UI, but:
* Not sure where to put it, it's kind of own self-contained area option.
* Don't to make it too much visible, using this should be the exception!
2018-06-14 11:41:12 +02:00
fecec7dd68 3D View: Show view-aligned rotation manipulators 2018-06-14 11:37:47 +02:00
f35572ae9e Cleanup: style 2018-06-14 11:37:47 +02:00
62f594ca7b UI: Make spacers align blocks on area divisions
This solves the problem of blocks jumping around when changing modes and
center them to the area (in case of only 2 spacers).
Which is (in my own opinion) more aestetically pleasing.
2018-06-14 11:29:44 +02:00
7449dc8d13 3D View: Tweak transform plane manipulator fading
The threshold to fade out and hide was too small.
2018-06-14 10:39:36 +02:00
4ee97c9a1c WM: increase hot-spot of 3D manipulators
Larger hot-spot was disabled for performance,
however without this - clicking on them is too difficult.
2018-06-14 09:55:58 +02:00
ba2c10c1f7 3D View: increase size of view aligned rotation
Minor changes based on user feedback.

- View aligned rotation manipulator overlapped too often
  with axis aligned widgets. Increase size (matching 2.79)
- Offset arrow-heads when combining rotate & translate,
  don't draw the stem since it overlaps with scale.
2018-06-14 09:46:11 +02:00
22ac20a705 WM: option not to draw arrow manipulator stem 2018-06-14 09:25:55 +02:00
eeca206e76 Cleanup: rename arrow manipulator 'draw_options'
Rename to 'transform' since this controls interaction.
2018-06-14 09:17:03 +02:00
b839d67f3e UI: correct HUD zoom resetting 2018-06-14 08:30:46 +02:00
2f3e890b94 DRW: Fix crash caused by hair transform feedback
Seem to be cause by the lack of proper FBO bound.
2018-06-13 22:20:48 +02:00
8d2309f94f 3D View: make navigation buttons smaller
Keep orbit large, other buttons are now closer to other icons buttons.
2018-06-13 21:00:05 +02:00
711a50c5ea Merge branch 'master' into blender2.8
This includes making Eevee match Cycles behavior of inserting an emission
node when linking colors to closures.
2018-06-13 19:26:52 +02:00
4d58fac1b4 Fix undo group to use human readable name, since this shows in the UI. 2018-06-13 18:39:30 +02:00
3102833962 Fix undo of transform after frame change undoing too much.
For grouped undo we should not skip the undo push, rather replace the
previous undo push. This way undo goes back to the state after the last
operation in the group.
2018-06-13 18:39:30 +02:00
90e6323ed8 Cycles: auto insert emission node when linking color to closure.
This is convenient for previewing the output of a node, and we agreed
to support this behavior in both Eevee and Cycles.
2018-06-13 18:39:30 +02:00
a3c630aebb Merge branch 'master' into blender2.8 2018-06-13 18:25:23 +02:00
57cd52a4ab WM: check release event for particle edit mode
Caused by drag event.
2018-06-13 18:23:09 +02:00
2e23385c35 T55456: EditDrawMode
reorganized shader compilation
2018-06-13 16:47:38 +02:00
645c918825 T55456: EditDrawMode
use darker defaults for not active selection mode elements
2018-06-13 16:47:38 +02:00
4943739b89 Merge branch 'master' into blender2.8
Conflicts:
	source/blender/blenloader/intern/readfile.c
	source/blender/editors/mesh/editmesh_utils.c
	source/blenderplayer/bad_level_call_stubs/stubs.c
2018-06-13 16:42:56 +02:00
b8015ece51 Revert "T55456: EditDrawMode"
This reverts commit da6ed54569.
2018-06-13 16:34:20 +02:00
f61c30f804 Cleanup: get rid of last G.main in BMesh code. 2018-06-13 16:29:12 +02:00
cd0a4836d4 Cleanup: unused var 2018-06-13 16:17:07 +02:00
9c65227061 Tag object/scene for selection update from operators
Before that depsgraph tagging was done from inside notifier listener in
viewport. This had the following issues:

- If there are no viewports, selection tag was not done. Causing possible
  issues when object becomes visible.

- Required special trickery to detect which data to tag for update.

- Was causing crash when transforming/selecting markers in clip editor.
  This is because selecting marker needed to poke viewport to redraw, since
  selected bundles will be displayed differently in viewport.
2018-06-13 16:07:55 +02:00
Dalai Felinto
c1e503e89a Silence false positive warning on boolean modifier 2018-06-13 16:04:31 +02:00
1bcf9217eb Merge branch 'master' into blender2.8
Conflicts:
	source/blender/blenkernel/BKE_pointcache.h
	source/blender/blenkernel/intern/object.c
	source/blender/blenkernel/intern/pointcache.c
	source/blender/editors/include/ED_particle.h
	source/blender/editors/physics/particle_edit.c
	source/blender/editors/physics/particle_edit_undo.c
	source/blender/editors/physics/particle_object.c
	source/blender/editors/physics/physics_intern.h
	source/blender/editors/physics/physics_pointcache.c
	source/blender/editors/space_time/space_time.c
	source/blender/editors/space_view3d/drawobject.c
	source/blender/editors/space_view3d/view3d_edit.c
	source/blender/editors/transform/transform_conversions.c
	source/blender/editors/transform/transform_generics.c
	source/blender/editors/transform/transform_manipulator.c
	source/blender/makesrna/intern/rna_object.c
	source/blender/makesrna/intern/rna_object_force.c
	source/blender/makesrna/intern/rna_sculpt_paint.c
	source/blenderplayer/bad_level_call_stubs/stubs.c
2018-06-13 15:36:24 +02:00
7a10cfe7fe UI: preset popover buttons in panel headers.
Moves the preset into a menu for the panel header, so it can be changed
without opening the panel and takes up less space. Two remaining issues:

* For long lists the add new preset button can be scrolled off screen.
* We should support showing the name of the chosen preset in the panel
  header, but the current preset system does not support detecting which
  preset is used.

Differential Revision: https://developer.blender.org/D3366
2018-06-13 15:22:34 +02:00
Dalai Felinto
1664ccb675 Fix flexible spacer distance
Introduced on 0bce173bc7.
2018-06-13 15:17:56 +02:00
Dalai Felinto
8f8205584d UI: Make NLA header consistent with dopesheet 2018-06-13 15:07:25 +02:00
1a6b2650fa Cleanup: double quotes for non-enum strings 2018-06-13 15:06:58 +02:00
eed9458c22 UI: center align 3D view header snap, pivot etc 2018-06-13 15:04:13 +02:00
Dalai Felinto
6b6c86d1f7 UI: Fix clip editor double text-less icon situation 2018-06-13 15:04:07 +02:00
5ff1d845ea Cleanup: moar ugly G.main removal...
Note that due to RNA get/setters issue, that one may actually add some
G.main usages to the total... But at least it's not hidden anymore in a
very low-level, dark corner of BKE pointcache code!
2018-06-13 14:28:05 +02:00
da6ed54569 T55456: EditDrawMode
- removed the dithering from the active face
2018-06-13 14:21:38 +02:00
57fe9767f4 Merge branch 'master' into blender2.8 2018-06-13 14:19:57 +02:00
f7083b00ee Cleanup: tool settings access 2018-06-13 14:12:21 +02:00
2002fe27d9 Fix T55467: nodes cant be resized after recent clickdrag change 2018-06-13 14:03:46 +02:00
Dalai Felinto
64ecd3d2e7 Set minimum blender version as 2.80
Technically we probably need to do for the current subversion (17).
But the entirely 2.80 series is known to be experimental.

The most important part is to notify people that if they open the 2.80
file in master it will loose data.
2018-06-13 13:01:16 +02:00
710f1f2232 UI: add back pivot point
Was accidentally removed after recent changes.
2018-06-13 12:55:57 +02:00
23c24cead5 T55456: EditMode Drawing
- Hide facedots, except when in V3D_ZBUF_SELECT mode
`use_occluded_geometry`
- Different theme (wire_inactive) when not in edge selection mode
2018-06-13 12:38:53 +02:00
c0926d536f Manipulator: Skip redundant transform updates
Partially address T55458
2018-06-13 11:59:48 +02:00
ca7a93953a Error in recent popover width 2018-06-13 11:57:52 +02:00
0bce173bc7 UI: remove empty space at the end of headers, tweak start/end spacing. 2018-06-13 11:43:10 +02:00
dcf70dc181 Fix 3D view header panning not working with region overlap. 2018-06-13 11:43:09 +02:00
e4ab04b8bb Fix pop-over buttons always getting space for icon 2018-06-13 11:22:15 +02:00
2a5d4d7573 Merge branch 'master' into blender2.8 2018-06-13 11:11:23 +02:00
5788f24337 Cleanup: swapped X/Y UI_UNIT 2018-06-13 11:10:55 +02:00
1a79c6d360 Merge branch 'master' into blender2.8
Conflicts:
	source/blender/blenkernel/intern/blendfile.c
	source/blender/blenkernel/intern/node.c
	source/blender/blenkernel/intern/particle.c
2018-06-13 11:02:48 +02:00
67e8c1e1c7 Cleanup: remove more G.main from BKE area. 2018-06-13 10:57:10 +02:00
f234adf65c UI: adjust view navigation layout
Button layout now matches T54723.
2018-06-13 10:57:09 +02:00
edd0522e8f UI: HUD now follows region theming 2018-06-13 09:50:41 +02:00
64aadc7c7d Depsgraph: Avoid use of 0 tag flag on build finish
Use all the explicit tagging. Solves characters being in T-pose after
opening specific scene files.
2018-06-13 09:49:14 +02:00
813a538a57 UI: show HUD when region overlap is disabled 2018-06-13 09:27:40 +02:00
0ab8f9c74a UI: fix hud panel refresh glitch 2018-06-13 09:21:09 +02:00
679eefae74 UI: shorten proportional edit name
Didn't fit in panel.
2018-06-13 09:16:26 +02:00
a03eadaec8 UI: redo panel layout tweaks
- Don't use compact layout (enum titles were hidden).
- Split-properties to use less vertical space.
- Make panel wider, half width when collapsed.
2018-06-13 08:26:16 +02:00
fc0b21ff73 Fix region expanding on refresh 2018-06-13 00:30:16 +02:00
0c0811829f UI: adjust header alignment
- User preferences header at the bottom.
- Action header at the top.

Now all editors accessible from the menu have their header at the top,
default layout for the timeline remains at the bottom.
2018-06-12 22:59:15 +02:00
958d24ae0f UI: Name N-Key toggle to Sidebar 2018-06-12 22:57:03 +02:00
77879ac038 Fix T55376: instanced collection render visibility ignored.
For physics simulation it's still fuzzy though, but this needs bigger
design for how it works with view layers and visibility.
2018-06-12 22:36:43 +02:00
6700c02e53 WM: don't show redo hud when unsupported 2018-06-12 22:33:58 +02:00
98e0bd90f4 WM: hide internal operator settings
These are set in the interface and aren't useful to show to users.

Other minor changes

- Rename 'Ruler/Protractor' -> 'Ruler'
- Rename Subdivide 'Quad/Tri Mode' -> 'Create N-Gons' (and invert).
2018-06-12 22:00:22 +02:00
94e0abda75 UI: move auto-merge option to mesh options panel
This can be used even w/o snap.
2018-06-12 21:16:50 +02:00
81f24dd781 UI: re-arrange object mode and 3D view buttons
After some consideration we're moving 3D view settings
that impact the 3D view back.

See T55386 for details.
2018-06-12 21:10:31 +02:00
18cc8809c3 Fix T55457: Crash after merge faces 2018-06-12 20:43:46 +02:00
e65d20e7dc Cleanup: add ED_region_panels_layout
Only had the '_ex' (extended) version.
2018-06-12 18:39:18 +02:00
9b9b943e0c Merge branch 'master' into blender2.8
Conflicts:
	source/blender/blenkernel/BKE_anim.h
	source/blender/blenkernel/intern/anim.c
	source/blender/blenkernel/intern/scene.c
	source/blender/editors/armature/pose_edit.c
	source/blender/editors/armature/pose_transform.c
	source/blender/editors/armature/pose_utils.c
	source/blender/editors/include/ED_armature.h
	source/blender/editors/object/object_edit.c
	source/blender/editors/transform/transform_conversions.c
2018-06-12 18:26:50 +02:00
2788202417 Cleanup: moar G.main removal from BKE area. 2018-06-12 17:57:24 +02:00
f27ecd56ef Cleanup: BKE_scene_free should not have to worry about cleaning its usages.
This is supposed to be handled by calling code! Henceforce, no need to
call BKE_sequencer_clear_scene_in_allseqs() here, and... no need for
that ugly G.main case. ;)
2018-06-12 17:46:16 +02:00
a76cfe2c22 Cleanup: no need for extra HUD type check now 2018-06-12 17:38:04 +02:00
031416c559 Merge branch 'master' into blender2.8 2018-06-12 17:36:24 +02:00
b00d840359 WM: remove sloppy region type access
Avoid accidentally operating on the wrong region type.
2018-06-12 17:34:44 +02:00
760e79d809 WM: rename BKE_regiontype_from_id
This returns the first as a fallback, causing confusing usage.
Renamed and added a version of the function that doesn't.
2018-06-12 17:26:38 +02:00
e8dd4cd9ca Cleanup: warning, spaces 2018-06-12 17:20:12 +02:00
2af7c38682 Cleanup: get rid of global RNG usage in paint stroke code. 2018-06-12 17:13:47 +02:00
376bc88dc0 Fix leak of manipulator tooltip timers.
This was causing performance degradation over time in posing, as the
manipulator recomputes the center locations for every event.

Ref T55442.
2018-06-12 17:07:18 +02:00
3801736b89 Depsgraph: remove object tagging hack for render.
With copy-on-write it should now all be evaluated correctly in render
resolution, without needing to switch the original data resoluton.
2018-06-12 17:07:18 +02:00
a9cfd8c910 Cleanup: get rid of global RNG usage in transform code. 2018-06-12 17:00:31 +02:00
8826a00482 WM: HUD was disappearing on redo 2018-06-12 16:59:37 +02:00
97cac69739 Fix redo panels being added to non-hud regions 2018-06-12 16:55:00 +02:00
2a3e7fe656 UI: improve HUD ensure/clear logic
Running operators w/o redo now clears the HUD immediately.
2018-06-12 16:50:27 +02:00
deb3d73eea Particle: Use loclaized RNG for physics simulation
Avoids threading conflicts between multiple particle systems being simulated.
2018-06-12 16:37:40 +02:00
7d36408b82 Merge branch 'master' into blender2.8
Conflicts:
	source/blender/editors/include/ED_view3d.h
	source/blender/editors/space_view3d/view3d_draw.c
	source/blender/python/intern/gpu_offscreen.c
2018-06-12 16:29:07 +02:00
866127d9f2 StudioLight: Use texel size as input size
Bettter light distribution for diffuse shading
2018-06-12 16:18:50 +02:00
ec4ce908db Fix T55452: Crash on saving with visible particle system.
Missing Main pointer in recent refactor/cleanup of G.main usages...
2018-06-12 16:17:05 +02:00
b236400ff5 Math: Remove unused functions which are not safe for threading
All areas are toy use "local" number generator, in order to keep
behavior predictable and threadable. This is what BLI_rng_() API
is for.

There are still lots of usages of BLI_frand(), which are to be
ported to BLI_rng_get_float(). but that is somewhat involved.

For the time being, remove unsafe API, so new areas have zero
chance using it.
2018-06-12 15:51:43 +02:00
6231a077ac Merge branch 'master' into blender2.8
Conflicts:
	source/blender/blenkernel/BKE_group.h
	source/blender/blenkernel/BKE_object.h
	source/blender/blenkernel/intern/group.c
	source/blender/blenkernel/intern/library_remap.c
	source/blender/blenkernel/intern/object.c
	source/blender/blenloader/intern/readfile.c
	source/blender/editors/object/object_group.c
	source/blender/editors/object/object_relations.c
	source/blender/editors/physics/rigidbody_constraint.c
	source/blender/editors/physics/rigidbody_object.c
	source/blender/makesrna/intern/rna_group.c
2018-06-12 15:41:32 +02:00
1b5e3e1c01 Use evaluated objects in Alembic unit tests
This at least makes sure the tests don't fail any more. Possibly there
should be more evaluation happening there.
2018-06-12 15:39:54 +02:00
39e050af40 Fix T55409: Can't animated keyframed material node value after moving keyframe on timeline
Completely ignore animation for legacy zero update tag.

If one needs animation to be evaluated, tag with proper update tag, stop relying
on direct assignment of adt->>recalc with zero update tag for DEG.

This commit might cause missing updates when needed, those needs to be looked
into once they happen.
2018-06-12 15:39:11 +02:00
8204261ede Particle: Remove global RNG usage from distribution 2018-06-12 15:38:29 +02:00
53a9cde038 Particle: Use local RNG during initialization 2018-06-12 15:38:29 +02:00
46cb64917d Render: Remove global RNG usage
We shouldn't be using BI textures anyway. But in any case, adding noise
texture to compositor is doing proper seed updates already, so probably
was already ported to a proper RNG usage.
2018-06-12 15:38:29 +02:00
b6b1e0f56c T55454: removal of clay engine
The ClayEngine was introduced to test the blender2.8 architecture during
development. As currently we have the wanted features implemented with
matcaps we are going to remove the clay engine as it was never intended
to be an official releasable engine

Note: The test cases are never run. But when enabled will be skipped as
they were implemented over the Clay Engine
2018-06-12 15:32:31 +02:00
d72ddb81ae Studiolight: add rim lighting to the default light setup 2018-06-12 15:17:01 +02:00
a6585fa4b1 Cleanup: moar removal of G.main in BKE area... 2018-06-12 15:16:45 +02:00
1d8279fd8d Alembic: made bl_alembic_import_test.py run again
Two tests are still failing, but at least the API changes in 2.8 have been
applied now.
2018-06-12 15:10:15 +02:00
d617a6c85b Cleanup/simplify G.main usages.
Using G.main only to get main bled filepath, or built-in fonts, is OK.
So now using the 'valid' G_MAIN macro here instead.
2018-06-12 15:03:51 +02:00
4bfc7b9e7d Fix crahs using ndof 2018-06-12 14:50:57 +02:00
18ae64858b Cleanup: Indentation 2018-06-12 14:43:40 +02:00
c2abb6d3fc Particles: Use local RNG
Currently only obvious cases, but is already a progress.
2018-06-12 14:30:50 +02:00
49b39ea851 Duplication: Use local RNG
Makes generation safe for threading.
2018-06-12 14:30:50 +02:00
cb409bb219 Add utility function to help debugging concurrent usage of global RNG
Checks are disabled by default, but we need to make them enabled by
porting all required areas, or by removing API which uses global RNG.
2018-06-12 14:30:50 +02:00
3b2e19cb4c Depsgraph: Ensure modifiers evaluation doesn't happen on top evaluated mesh 2018-06-12 14:30:50 +02:00
c279592123 Depsgraph: Don't update derived mesh for particles on render
Render depsgraph is evaluated from scratch, so it should not be needed
to do such a call.

This also prevents modifier stack from being evaluated on top of already
evaluated mesh
2018-06-12 14:30:50 +02:00
0d817e68ef Depsgraph: Add debug option to invalidate data tagged for update
See comment for INVALIDATE_ON_FLUSH.
2018-06-12 14:30:50 +02:00
3263e5e881 Depsgraph: Set temp object to invalid state as soon as it becomes inaccessible 2018-06-12 14:30:50 +02:00
abdea5754e Depsgraph: Cleanup, wrap private functions to an anonymous namespace 2018-06-12 14:30:50 +02:00
Dalai Felinto
c303f2a19b Use proper UI name 2018-06-12 14:26:43 +02:00
Dalai Felinto
b173b96c09 Merge remote-tracking branch 'origin/blender2.8' into temp-dynamic-overrides 2018-06-12 14:17:35 +02:00
43eebdfebd Merge branch 'master' into blender2.8
Conflicts:
	source/blender/collada/DocumentImporter.cpp
	source/blender/editors/include/ED_object.h
	source/blender/editors/object/object_modifier.c
2018-06-12 12:58:31 +02:00
be57cf9b2a Cleanup: remove moar G.main from BKE area. 2018-06-12 12:53:27 +02:00
c98b2e74df Merge branch 'master' into blender2.8
Conflicts:
	source/blender/editors/object/object_add.c
	source/blender/editors/object/object_relations.c
2018-06-12 12:38:54 +02:00
5508b572ea Cleanup: remove some G.main from ED's animsys.
The easy ones - there some much, much trickier to tackle there...
2018-06-12 12:28:14 +02:00
fdd26faa49 LookDev: Move lookdev balls when menu switches 2018-06-12 12:24:05 +02:00
ab0daa1866 Studiolight: Disabled irradiance icons 2018-06-12 11:53:34 +02:00
8cca1abcb1 Studiolight: Bumped the radiance buffer to RGBA16F
Fixes issue reported at
https://devtalk.blender.org/t/lookdev-ibl-result/890/3
2018-06-12 11:51:04 +02:00
e1f24a8615 Studiolight: cache irradiance buffer 2018-06-12 11:51:04 +02:00
75bcb70c60 Cleanup: remove some G.main from BKE area. 2018-06-12 11:21:54 +02:00
d2e691b91a UI: fix crash with HUD panel size
There can be no panels in the region.
2018-06-12 11:18:52 +02:00
Dalai Felinto
f30056d512 Update the UI to use bl_parent_id
Also remove the DNA/RNA settings that were added for that.
2018-06-12 11:11:13 +02:00
b06deeca25 Merge branch 'blender2.8' into temp-dynamic-overrides
Conflicts:
	source/blender/makesrna/intern/rna_access.c
2018-06-12 11:00:50 +02:00
6d152c5997 UI: remove redo popover from topbar
See: T55039
2018-06-12 10:52:27 +02:00
7bf4023689 Fix T55448: Typo in Cycles CUDA debug output
Reviewers: sergey, lukasstockner97

Reviewed By: lukasstockner97

Tags: #cycles, #bf_blender

Differential Revision: https://developer.blender.org/D3472
2018-06-12 10:45:32 +02:00
4bf331c0fc UI: Initial persistent floating redo panel
This is the first step to moving redo out of the top-bar, see: T55039

- Support for floating panels in the ScrArea has been added.
- A new region type RGN_TYPE_HUD is used for floating settings input.
- Only one HUD should be visible at a time.
- Currently HUD regions are only visible
  for 3D view and image space types.
- There are currently some remaining glitches with hide/show
  that need further investigation.
2018-06-12 10:42:49 +02:00
3937e8fbc3 UI: non editable template_icon_views are rendered as label
This is also a way to render an large preview icon without the selection
control. This is used by the studiolights in the userprefs that only
displays the preview of the light.
2018-06-12 08:45:38 +02:00
a2027c6587 UI: replace ui_draw_search_back w/ general code
Useful for drawing any kind of region-background.
2018-06-12 08:14:13 +02:00
35da1afa09 Cleanup: remove unused context args 2018-06-12 07:59:27 +02:00
1dc93f90a0 Cleanup: remove image->bindcode, always wrap in GPUTexture.
This simplifies code, and will hopefully make UDIM usage of GPUTexture
a little easier.
2018-06-11 23:24:04 +02:00
1d111cd046 Revert "Cleanup: remove image->bindcode, always wrap in GPUTexture."
This reverts commit 8242a5bc85. This isn't
quite ready to use yet.
2018-06-11 22:35:09 +02:00
8242a5bc85 Cleanup: remove image->bindcode, always wrap in GPUTexture. 2018-06-11 22:30:59 +02:00
0054dff67e Fix part of T55439: don't add indirectly linked objects to the scene on link. 2018-06-11 21:51:21 +02:00
3816502b7c Drivers: ensure Python expressions are cached with copy-on-write.
Store the compiled expressions on the original driver.

Ref T55442.
2018-06-11 21:34:21 +02:00
2bbe0c4ef4 Cleanup: fix compiler warnings. 2018-06-11 21:21:41 +02:00
76c7c66b02 Fix accidental addons submodule change in previous commit. 2018-06-11 21:13:02 +02:00
Edmund Kapusniak
c08716d3ee Fix crash with OpenGL rendering in multiple threads on macOS.
On macOS we must always go through BLI_thread_local_get/set().

Differential Revision: https://developer.blender.org/D3470
2018-06-11 21:10:24 +02:00
9520fc0ff7 Pose: optimize pose rebuild for copy-on-write.
Ref T55442.
2018-06-11 20:48:18 +02:00
691471fe22 Cleanup: add simplified panel callbacks 2018-06-11 19:31:56 +02:00
d4b4504260 Improve/partially fix overriding of Object material pointers.
Basic workflow shall now work, still lots to do in the UI (ID template
needs some love to reflect overriden status ;) ).
2018-06-11 19:29:15 +02:00
aca403c819 GHOST: Fix uninitialized values. 2018-06-11 17:07:52 +02:00
4ffd153dbf Fix crash when doing Sculpt->Edit->Sculpt switch.
We actually get fully rid of BKE_object_free_derived_mesh_caches usages,
now always using BKE_object_free_derived_caches (bad name, btw, should
be 'evaluated_caches ;) )...
2018-06-11 18:58:21 +02:00
3df809958b WM: use layout/draw callbacks for buttons space 2018-06-11 18:39:46 +02:00
3e1f83a1dc WM: split panel drawing into layout and draw
This matches changes made to the header.
2018-06-11 18:39:46 +02:00
1f1ca74476 Outlines: Make Xray outlines 2px thick instead of 3px 2018-06-11 18:04:00 +02:00
638590078c Outlines: Make outlines in xray mode not occluded.
This is visually too distracting (flickering). Until we have a better
solution, just disable occlusion fading.
2018-06-11 18:04:00 +02:00
c31bc465ea Revert previous commit and do proper fix for missing typeinfo in nodes. 2018-06-11 17:39:39 +02:00
7529690df3 GHOST: GLX: Remove XInitThreads
This was needed because we were sharing opengl contexts across multiple
threads. With the recent refactor this should be no longer needed.
2018-06-11 17:23:06 +02:00
faf7453b45 Fix crash in loading/applying static overrides of some nodal material.
No real idea why node's typeinfo is NULL here... but think we do not
care much in that case, so just adding some NULL checks for now.
2018-06-11 17:12:47 +02:00
05111d79d0 Cleanup: remove unused DAG_EVAL_PREVIEW mode. 2018-06-11 17:06:28 +02:00
2abb156b9f Cleanup: remove object.is_visible.
Depsgraph already iterates over visible objects, and since this was only
valid for objects evaluated with the depsgraph it was confusing.
2018-06-11 17:06:28 +02:00
73b9531dcf Fix incorrect object selection test in outliner and rigid body. 2018-06-11 17:06:28 +02:00
0461f45e5e Fix T55436: crash with point density and shader tweaking.
With copy-on-write we can no longer assumes the point density data is
available after Cycles synchronization with Blender data is done. So
force it to be loaded earlier, even if it's not great for interactivity.
2018-06-11 17:06:28 +02:00
84692844a3 Fix merge error in 908b696, removed files were accidentally added back. 2018-06-11 17:06:28 +02:00
27b6734022 GHOST: Fix uninitialized var
Was causing crash on startup.
2018-06-11 17:04:59 +02:00
a753c6e11a UI: split left/right header buttons
- Added flexible separators to
  Clip, Graph, Dopesheet, Image, Node, Timeline, 3D View.
- Added graying out for Proportional Editing
  menus to avoid popping when right-aligned.
- Slightly re-arranged some controls,
  so they can be on correct side of the separators.

Patch by @billreynish
2018-06-11 17:01:10 +02:00
17ee4836ab Fix: Remove UI_BLOCK_MOVEMOUSE_QUIT from popovers
This was causing driver editing popovers to just keep disappearing
whenever you accidentally moved the mouse away, making the popovers
there nearly useless.

After testing with the other popovers we have in other places, I don't
really see why we needed this flag enabled in the first place. You can
still switch between popovers in the topbar by mousing over the others,
and if you want to dismiss without clicking to escape, you can go over a
standard menu instead OR just move back towards the button that spawned it.

Let's just test this out for a while and see how it goes. Maybe we don't
need a more invasive solution here...
2018-06-12 02:49:12 +12:00
204c167c72 Merge branch 'master' into blender2.8
Conflicts:
	source/blender/blenkernel/BKE_mesh.h
	source/blender/blenkernel/intern/mesh_convert.c
	source/blender/editors/interface/interface_eyedropper_color.c
	source/blender/editors/object/object_add.c
	source/blender/editors/space_image/image_ops.c
	source/blender/makesrna/intern/rna_image.c
	source/blender/windowmanager/intern/wm_draw.c
2018-06-11 16:02:46 +02:00
9e439197ed Workbench: API Changes
- merged matcap and studioLight api
2018-06-11 15:54:24 +02:00
78a8d3685b Cleanup: remove moar ugly G.main usages...
BKE_image was an ugly nest, could fix all but the ones from compositor,
so moved ugly G.main there, at least we know where the Evil is that way ;)
2018-06-11 15:40:37 +02:00
Dalai Felinto
9b39a5142f Fix T55440: Pose Mode Crash 2018-06-11 15:29:13 +02:00
800c3c5ca5 GHOST: WGL: Delay context initialization for offscreen contexts.
Same as 128926a41b but for windows.
2018-06-11 13:06:54 +02:00
b763c34e80 Cycles: Cleanup, silence strict compiler warning
There is one legit place in the code where memcpy was used as an
optimization trick. Was needed for older version of GCC, but now
it should be re-evaluated and checked if it still helps to have
that trick.

In other places it's somewhat lazy programming to zero out all
object members. That is absolutely unsafe, at the moment when
less trivial class is used as a member in that object things
will break.

Other cases were using memcpy into an object which comes from
an external library. We don't control that object, and we can
not guarantee it will always be safe for such memory tricks
and debugging bugs caused by such low level access is far fun.

Ideally we need to use more proper C++, but needs to be done with
big care, including benchmarks of each change, For now do
annoying but simple cast to void*.
2018-06-11 13:02:10 +02:00
a6e582164f Libmv: Cleanup, make strict compiler more happy
In C++ it is not really safe to memcpy objects, and newer GCC will warn
about this. However, we don't use our vector for unsafe-to-memcpy objects,
so just explicitly silence that warning.
2018-06-11 13:02:10 +02:00
5ad7bda45f Render: Fix build problem with missing GL/glew.h 2018-06-11 13:00:21 +02:00
Dalai Felinto
070830c62d Fix separator element for headers with multiple directions 2018-06-11 14:54:04 +02:00
Dalai Felinto
d90fc119c2 UI: Separator spacer
This support layout.separator_spacer() to be used by headers as a way to
dynamically separate the ui buttons.

Right now no UI file is changed, though we can use this right away in the
timeline, and shortly after in the viewport header (moving settings from
the topbar to it).

Original design by William Reynish.

Review: Campbell Barton
D3468
2018-06-11 14:46:35 +02:00
74051111eb Merge branch 'master' into blender2.8 2018-06-11 14:44:03 +02:00
160cb9a284 Merge branch 'master' into blender2.8
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-11 14:39:38 +02:00
b7bf8b3757 Render: Create a separate gl context for rendering.
This should take care of all the threading stability issues some people
are reporting.
2018-06-11 13:55:02 +02:00
128926a41b GHOST: Delay opengl context initialization
This way they can be init in their owner thread. Contexts should not be
shared accross threads. Once you make a context active on a thread it is
owned by the thread.

This commit only have the GLX backend updated but should not break orther
platform.
2018-06-11 13:55:02 +02:00
1463ec6896 DRW: Rename ogl_context to gl_context
We might not use opengl forever :)
2018-06-11 13:55:02 +02:00
228ba8475a DRW: Add cache reset.
This is a temporary solution to the use of the shared cache.

Ideally this cache should be per gl drawing context.
2018-06-11 13:55:02 +02:00
0ec2e7ad53 Shading: Change icon of userpreference in Shading popover 2018-06-11 12:48:01 +02:00
d0956e9cb3 Cleanup: Moar G.main removal of Hell.
This commit actually adds some G.main... but at much, much higher level
than the ones it removes, so should still be better ;)
2018-06-11 12:15:14 +02:00
8055ed2741 Cleanup: remove some G.main usages... 2018-06-11 12:15:14 +02:00
a67cc72232 MetaBall support for Workbench + EEVEE
Note: Metaballs only support the first material slot. Splicing it per
material would create empty Batches. In order to overcome this we set
the batch for other materials to NULL. We added extra checks in EEVEE
and Workbench to not draw when the geom is NULL.
2018-06-11 11:52:41 +02:00
5aa8d981ec Workbench: Flipping MatCaps for forward shading 2018-06-11 11:52:41 +02:00
f2e60b53a7 Fix pchan head/tail original values not being set 2018-06-11 11:37:22 +02:00
13d238729b Fix bad level stubs 2018-06-11 11:36:22 +02:00
Dalai Felinto
df72101631 Revert unintended changes to depsgraph
This partially reverts f8d7df6f16.
I committed this bit by mistake.
2018-06-11 11:33:09 +02:00
4ac87d58eb Merge branch 'master' into blender2.8 2018-06-11 11:06:43 +02:00
28c34ae7e2 Cleanup: Use BLI_strncpy
It has behavior which we expect, and silences strict compiler warning.
2018-06-11 11:06:15 +02:00
4d339f56fe Fix T55278: Lightmap Pack > New Image broken when active object is None
thanx bblanimation (Christopher Gearhart) for spotting the issue and
providing the fix!

Reviewed By: brecht

Differential Revision: https://developer.blender.org/D3449
2018-06-11 11:02:07 +02:00
b6be8c0394 Merge branch 'master' into blender2.8 2018-06-11 10:46:33 +02:00
9e8bd3a072 path_util: avoid overflow w/ strtoll use
Also style cleanup.
2018-06-11 10:46:02 +02:00
ca36364a6a 3D View: move screen overlays to the top
- Frame & object name now top left.
- Axis now top right (when view navigation disabled).

This is needed so we can use the lower area for redo popup, see T55386.
2018-06-11 10:37:56 +02:00
91958436fb Merge branch 'master' into blender2.8 2018-06-11 10:28:36 +02:00
1d8d4e03f5 Fix PyConsole: Drag events finished early in modal text selection 2018-06-11 10:18:51 +02:00
0ec6196ae3 Merge branch 'master' into blender2.8 2018-06-11 10:03:42 +02:00
7ac0272b77 Fix T55140: opened image doesn't show up in movie clip editor
atoi usage in BLI_stringdec could overflow, use strtoll instead and
check
valid range with INT_MIN and INT_MAX

Reviewed By: campbellbarton

Differential Revision: https://developer.blender.org/D3452
2018-06-11 09:57:16 +02:00
05e7802a97 WIP: Add driver eyedropper operator button beside the "add input" button
This doesn't work currently. Needs more investigation why.
2018-06-11 19:43:28 +12:00
21c24c0423 Drivers UI: Introduce more whitespace, to make the sections clearer 2018-06-11 19:43:28 +12:00
5843de3251 Merge branch 'master' into blender2.8 2018-06-11 09:34:04 +02:00
7c10ed7e72 Cleanup: Remove the "all" parameter from "ANIM_OT_driver_button_edit"
This won't ever be used for this operator, as the "edit" operator should
only ever be used for dealign with a single driver - the one under the
cursor.
2018-06-11 19:27:53 +12:00
3122366b28 Overlays: Reserve space for a "Onion Skins" overlay
While we probably won't be getting a general purpose "Onion Skinning"
overlay anytime soon for meshes, etc. (at least not before the
depsgraph stabilises, and we also get geometry caching working),
for the Grease Pencil integration at least, it makes sense to move
GP objects to using a more general/future-proof solution, instead
of continuing to use a special/dedicated button in the header.

Currently the UI part of this is commented out. Also, the GP branch
doesn't need to move to this pre-merge. But, since 2.8 changes move
fast, it's better to reserve the space now to have it next to motionpaths,
than introduce it later.
2018-06-11 19:15:05 +12:00
4d67655348 Drivers UI: Don't show the Copy/Paste driver dvars buttons in the popovers
The copy/paste driver variables buttons currently only work when used in the
Graph Editor as they rely on being able to have the "active F-Curve" context
info that's only present in the Graph Editor (in Drivers Editor mode).
Instead of having them constantly greyed out in the popover, it's easier
to just hide them for now. Besides, this is probably more of an "advanced"
feature that we don't need to expose in the simple UI.
2018-06-11 19:15:05 +12:00
474a145d78 Fix T55349: crash adding paint slot when object is on hidden layer
use better poll and get ob with 'ED_object_active_context' (instead of
'CTX_data_active_object')

Reviewed By: campbellbarton

Differential Revision: https://developer.blender.org/D3467
2018-06-11 09:12:29 +02:00
d7373f6c49 Cleanup: warnings 2018-06-11 09:03:39 +02:00
1ff28c2650 Drivers UI Fix: Use uiLayoutSetContextFromBut() so that operators will work in the panel
This fixes the problem where the "Show in Drivers Editor" button would
not actually select and highlight the driver under the mouse.

(TODO: The channels still aren't getting selected properly in the
channels list, but at least the properties show correctly)
2018-06-11 18:55:29 +12:00
9ab26bec27 Driver Workflow (T55145): Tweak to default expression used for new drivers created from UI
Previously, newly created drivers were set to "Scripted Expression"
mode and had their 'expression' field set to the pre-driver value of the
property, so that adding a driver didn't cause the property to immediately
lose its old value (and potentially causing havok in the scene).
However, this had the unintended consequence of making the driver setup
workflow more cumbersome, as you first had to replace that value with
the name of the driver variable before your driver would work.

This commit works around this issue by trying to combine the best of both
worlds (quite literally):  Now, the driver expression for drivers created
using Ctrl-D will be "var + <old value>".

Thus, in the simplest case, the driver will do something as soon as you fill
out the driver variable settings (e.g. just filling out the Target Object field
will do it), meaning you get your drivers working faster. Of course, it may now
be necessary to edit out the old-value, and/or it might be a bit more confusing
what/why it's there for newbies. However, the improved ease of setup, and/or
a more tangible example of how an expression may be constructed outweigh the
downsides IMO.
2018-06-11 17:44:08 +12:00
4605e57b0f Drivers Workflow (T55145): Improvements to "Add Driver" workflow
This commit implements a new behaviour for the "Add Driver" functionality
(invoked from the RMB menu on a property, or by pressing Ctrl-D).

Instead of spawning a context menu asking you to pick the way
you want to create a driver, it will now just create a driver on the
property under the mouse and then show the "Edit Drivers" popover so
that you can immediately start editing the properties of this driver.
This way, the whole process is more visual and feels less blocking /
constrained, with less upfront decisions needed immediately.

Notes:
* The new behaviour is equivalent to choosing the "Manually Create (Single)"
  and then doing a "Edit Driver" on the property
* Renamed the old "ANIM_OT_driver_button_add" operator to
  "ANIM_OT_driver_button_add_menu". It will probably go away
  in the near future, but it's better to keep it around for a
  while longer still until the new workflow settles down.
2018-06-11 17:35:13 +12:00
f1e3e50294 Sub-panels for Cycles Depth of Field 2018-06-10 21:27:43 +02:00
865acd9247 Sub-panel for camera DoF for EEVEE 2018-06-10 21:06:49 +02:00
5290882bd5 Workbench: Xray: Fix hairs with matcaps. 2018-06-10 20:28:04 +02:00
20b0194cd3 Workbench: Xray: Make dithered depth dependant on alpha.
The range is 0.25 to 0.75 opacity when the Xray opacity is between 0.0 to 1.0.

This is to avoid loosing completely the sense of occlusion when having no
other solid drawing than the wireframe and loosing the transparency when
xray alpha is at 1.0.

Also replace Bayer (checkerboard) method by interlieved gradient noise to
minimize the chance to loose an occluded line completely.

Other noise function could be tested in the future.
2018-06-10 20:06:26 +02:00
542462d35c Workbench: Xray: Add selected/active non-occluded outlines
This Fix the problem when multiple objects are selected and one of them
occlude the others. You cannot see clearly what is selected.

With this option, selection is more clear when Xray mode is enabled.
2018-06-10 20:06:26 +02:00
e321fc4a7c Workbench: Xray: Make nearest surfaces more clear
By using equation 7 from the paper, we make the surfaces nearest to the
viewpoint appear more "opaque". This gives better sense of ordering than
the previous weighting function that was really not doing anything.
2018-06-10 20:06:26 +02:00
15862e1990 Workbench: Xray: Lower hairs opacity
Since hairs are very likely to owerflow the weight buffer, we divide their
alpha value by 3.

This might become a particle system setting if needed.
2018-06-10 20:06:26 +02:00
95894421cb Workbench: Xray: Optimize and fix implementation.
There was a method explained in the Weighted Blended Order-Independent
Transparency paper to support hardware that does not support per render
target blending function.

So now only 2 geometry passes are required instead of 3 (one being the
outline/depth fill pass).

This also fix how the blending is done. There was some premult confusion
in the implementation.
2018-06-10 20:06:26 +02:00
b23d5132a9 UI: Add redo last to edit-menu 2018-06-10 17:15:40 +02:00
9129319647 Experimental Tweak: Only show relationship lines between objects when either the parent/child object is selected
As in Pose Mode, the idea here it to try to reduce viewport complexity
without requiring users to turn off the overlay completely all the time.
For example, a background prop (e.g. a tree with a tyre hanging off it,
or a branch with hand-placed leaves) won't be cluttering the viewport with
its relationship lines all the time, when you're trying to do something else.

When you really do need to see these lines, you can still select the object
in question, and you'll see the lines for which objects are its children
or what its parent is. And to see all lines, you can still always select all
objects.
2018-06-11 02:49:38 +12:00
ca16c74e87 Viewport: "Show Relationship Lines" overlay toggle is now respected by Object Mode & Armatures (Edit/Pose) 2018-06-11 02:49:38 +12:00
937e4fb49a UI: change toolbar icon size from 38 -> 32 2018-06-10 16:42:19 +02:00
a978654977 UI: use property split for UV mask panel 2018-06-10 16:29:55 +02:00
4d1193feb3 UI: correct jitter button 2018-06-10 16:08:19 +02:00
87a71f36fc UI: use split property for tool settings
Patch by @billreynish w/ edits
2018-06-10 15:58:39 +02:00
c10f1379cd UI: remove tab use in the tool-settings 2018-06-10 15:40:02 +02:00
e5a0cf730a UI: use two columns for the overlay popover
Also use sub-panels.

Patch by @billreynish w/ edits.
2018-06-10 15:24:04 +02:00
afa45fb858 UI: Use flow layout for object properties context
Mainly as a proof of concept and test to use in other contexts.
2018-06-10 13:56:28 +02:00
a68bed06f6 Merge branch 'master' into blender2.8 2018-06-10 12:11:16 +02:00
d0a16772ad WM: add macros to check mouse button/gesture/wheel
Use to check click/drag,
fixes issue with mouse wheel triggering pie menu.
2018-06-10 12:08:09 +02:00
8314be7c89 Fix T55423: GLSL compilation error Flat + XRay 2018-06-10 11:51:07 +02:00
a52152c59f Merge branch 'master' into blender2.8 2018-06-10 08:21:50 +02:00
ae01df5779 Cleanup: trailing space in CMake files 2018-06-10 08:19:03 +02:00
dd67d703a7 Workbench: Fix material compilation. 2018-06-09 21:11:03 +02:00
147eef9741 Eevee: Improve compilation time (reduce branching).
This patch reduce the branching in the lamp loop, improving compilation time
noticeably (2372ms to 1785ms for the default shader).

This should not change the appearance of the shader.

Performance impact is negligeable.
2018-06-09 21:11:03 +02:00
45a5ddb57b Merge branch 'master' into blender2.8 2018-06-09 18:58:14 +02:00
2e14b7fb97 RNA: remove Layout.introspect
This was added as an experiment to extract information for docs
but this was never all that useful for its intended purpose.
2018-06-09 18:55:51 +02:00
419a813938 Merge branch 'master' into blender2.8 2018-06-09 18:48:11 +02:00
83cb34ccd1 Cleanup: unused functions 2018-06-09 18:47:39 +02:00
726ed7244e UI: always show popover subpanel header text 2018-06-09 18:15:08 +02:00
2ae404252d UI: fix popover subpanel header display 2018-06-09 18:03:22 +02:00
7fdde7fd86 UI: use draw_header function for popover buttons
Add 'is_popover' for panel draw functions to check if they're in a popup.
This puts dyntopo toggle next to the popover.
2018-06-09 17:38:32 +02:00
ec8a20fec0 Add new GridFlow layout.
This mimics the 'spreadsheet' behavior. Columns and/or rows can have
equal sizes, or adapt to their content - but always in a grid way (i.e.
all items in a same column will always have same available width, and
all items in a same row will always have same available height).
Also, you can fill (order) the grid in a row- or column-major way.

Not used anywhere for now.

Differential: https://developer.blender.org/D2395
2018-06-09 16:54:26 +02:00
5159ce640f Cleanup: style 2018-06-09 16:39:40 +02:00
70f8eaf1b7 Merge branch 'master' into blender2.8
Conflicts:
	source/blender/editors/space_view3d/drawobject.c
2018-06-09 15:18:21 +02:00
638de72277 Cleanup: remove some G.main usages. 2018-06-09 15:17:04 +02:00
2ca8230f67 Merge branch 'master' into blender2.8 2018-06-09 14:43:01 +02:00
fb565ddb68 Cleanup: trailing space in RNA 2018-06-09 14:40:09 +02:00
56a47e58f4 Cleanup: style 2018-06-09 14:30:32 +02:00
09ce794dc8 UI: initial support for parent panels in popovers
Currently this just includes the panels, no support for collapsing yet.
2018-06-09 14:21:39 +02:00
8f40af6dcd RNA: revert object mode re-order
This was done so numbered shortcuts made sense.
Now order matches master.
2018-06-09 12:57:15 +02:00
964c5421df Merge branch 'master' into blender2.8 2018-06-09 12:56:37 +02:00
9bcced83ee GHOST/X11: Print the keycode w/ debug enabled 2018-06-09 12:53:39 +02:00
3bbef95747 Workbench: Fix xray normal not being normalized. 2018-06-09 12:44:56 +02:00
337aab59e9 Workbench: Matcaps: Fix matcap under perspective.
This fixes the problem that matcaps have when using a very larg FOV in
perspective view.

This was because it was stupidly using the normal direction which can not
aligned with the view vector under perspective.

So to workaround this problem we don't use the normal as is, but compute
how much it's facing the camera.

This changes how matcaps looks in perspective because they now always use
the full range of the matcap (which is expected).
2018-06-09 12:44:56 +02:00
a1b42b79b3 Workbench: Fix incident vector calculation.
This fixes specular in perspective view.
2018-06-09 12:44:56 +02:00
7ce81484f8 Merge branch 'master' into blender2.8 2018-06-09 12:06:33 +02:00
6f4c7f1f01 GHOST/X11: Correct non-latin kb workaround case
Harmless since this is always enabled,
only do this for easier troubleshooting when disabling the define.
2018-06-09 12:04:07 +02:00
b492a0e767 Merge branch 'master' into blender2.8 2018-06-09 11:27:22 +02:00
f3427cbc98 GHOST/X11: support accessing physical keycodes
This means we can check keys such as tilde in a generic way.
2018-06-09 11:23:41 +02:00
03f0ecca93 GHOST/X11: Map unknown us.intl key to accentgrave 2018-06-09 09:10:04 +02:00
86660aa294 Layout for materials closer to single column 2018-06-08 23:56:39 +02:00
dd2e187344 Audaspace: add support for latest ffmpeg. 2018-06-08 23:11:16 +02:00
528dc6440b Merge branch 'master' into blender2.8 2018-06-08 22:19:39 +02:00
5165d62931 WM: correct recent change to click/drag detection
fb1915d870 - caused click/drag events not to be detected.

Now check a key is a mouse or keyboard event.
2018-06-08 22:17:21 +02:00
d1ab958fd4 Merge branch 'master' into 28 2018-06-08 19:03:37 +02:00
4f2eac3b39 WM: fix panel drag event handling 2018-06-08 19:03:29 +02:00
bf77efb684 WM: fix node link & background drag 2018-06-08 19:03:29 +02:00
1857823839 WM: fix panel drag event handling 2018-06-08 18:58:41 +02:00
2dc7555522 WM: fix node link & background drag 2018-06-08 18:55:47 +02:00
Dalai Felinto
f8d7df6f16 Depsgraph: Remove no longer needed nodetree values copying on eval
Note: Depsgraph still calls the nodetree eval function that doesn't
nothing in turn. We can remove it, but it is harmless though.
2018-06-08 17:52:49 +02:00
f2fd5987d0 UI: clear properties color when empty 2018-06-08 17:30:00 +02:00
3e86bb2d0b Sculpt/Paint: move PBVH building to use evaluated mesh instead of deprecated Derivedmesh.
Pretty straightforward changes, merely mimicking dm-related code,
which was already essentially using either Mesh or BMesh data to
build the PBVH...

Note that we "lose" the subsurf (a.k.a. grid) PBVH case here, but that
one was already dead code in current blender2.8, since final dm is
always a cddm built from evaluated mesh.

Proper fix is pending new code for subsurf/multires area.
2018-06-08 17:23:25 +02:00
1ce55693f5 UI: remove tools space type, use properties context
We've decieded to use tools context in properties editor.
2018-06-08 16:35:05 +02:00
Dalai Felinto
9d59d20957 DRW: Fix animated material not refreshing
This introduces a garbage collection system similar to gpu_texture.
2018-06-08 16:29:33 +02:00
0417f205f5 Fix crash with wertex and weight modes
Similar to recent sculpt mode.
2018-06-08 16:24:07 +02:00
Dalai Felinto
f638ad61b8 Rename: GPU_material_get_uniform_buffer > GPU_material_uniform_buffer_get 2018-06-08 16:20:34 +02:00
Dalai Felinto
856a79e1fb Rename: GPU_texture_orphans 2018-06-08 16:20:34 +02:00
cbbf8bbbb4 Workbench: XFlip Matcap per 3D View
Note: Icons are not yet updated.
2018-06-08 16:13:49 +02:00
Julian Eisel
fc85096dc8 Fix T55387: Render fullscreen from top menu crashes Blender
Would try to use data from global area for the newly created fullscreen area.
This should not happen, so instead of a global area use first area from layout.
2018-06-08 15:59:34 +02:00
4df45e18dc Alembic: replaced BLI_assert() with comment why the assert is wrong
The comment also hints at what should be fixed, instead.
2018-06-08 15:51:49 +02:00
249a41bc7c Alembic: slight clarifications 2018-06-08 15:51:49 +02:00
ba31c4d684 Alembic export: get evaluated object when exporting shape 2018-06-08 15:51:49 +02:00
2a771cbc58 Alembic: Moved a BLI_assert
The assert should only be triggered when assigning a pointer, and not
simply when checking the pointer.
2018-06-08 15:51:49 +02:00
335e030753 mesh_get_eval_final() should check ob->runtime.mesh_eval
It has nothing to do with ob->derivedFinal, which it checked before.
2018-06-08 15:51:49 +02:00
934b9e80d0 Add check in BKE_pbvh_apply_vertCos that number of deforming cos matches number of pbvh vertices.
This shall help catching issues in future.
2018-06-08 15:43:57 +02:00
06357b23a2 Fix T55404: Auto key with only-available doesn't work 2018-06-08 15:43:04 +02:00
9f2447cbd8 Code cleanup 2018-06-08 15:35:25 +02:00
70b3fb3781 Workbench: Custom StudioLight UI 2018-06-08 15:34:46 +02:00
6739bb195e Merge branch 'master' into blender2.8 2018-06-08 15:22:28 +02:00
540e85d567 GHOST/X11: Map unknown es,dk keys to accentgrave 2018-06-08 15:21:20 +02:00
0dd9a9e66a Alembic: fixed MSVC incompatibility 2018-06-08 15:09:10 +02:00
f504306671 Workbench: Default specular settings when no materials are used 2018-06-08 15:07:30 +02:00
97e7d9f90b Merge branch 'master' into blender2.8 2018-06-08 14:57:17 +02:00
d97df0d0e6 Cleanup: unused var, trailing space 2018-06-08 14:56:09 +02:00
4127aeb7a5 GHOST/X11: Map unknown de,fr keys to accentgrave
This still uses the correct string when typing text,
it just allows the key to be used in keymaps.

We should eventually add scan-code support.
2018-06-08 14:53:03 +02:00
e36ecb8a66 Alembic unit tests: fixed compiler errors
This doesn't mean the code is correct, but at least it builds.
2018-06-08 14:48:50 +02:00
94aa4d1657 Merge branch 'master' into blender2.8
Conflicts:
	source/blender/blenkernel/BKE_sequencer.h
	source/blender/blenkernel/intern/sequencer.c
	source/blender/editors/curve/editcurve_paint.c
	source/blender/editors/gpencil/gpencil_edit.c
	source/blender/editors/gpencil/gpencil_paint.c
	source/blender/editors/gpencil/gpencil_utils.c
	source/blender/editors/include/ED_object.h
	source/blender/editors/include/ED_view3d.h
	source/blender/editors/interface/interface_eyedropper_depth.c
	source/blender/editors/render/render_opengl.c
	source/blender/editors/sculpt_paint/paint_image_proj.c
	source/blender/editors/sculpt_paint/sculpt.c
	source/blender/editors/space_view3d/drawobject.c
	source/blender/editors/space_view3d/view3d_draw.c
	source/blender/editors/space_view3d/view3d_edit.c
	source/blender/editors/space_view3d/view3d_intern.h
	source/blender/editors/space_view3d/view3d_select.c
	source/blender/editors/space_view3d/view3d_utils.c
	source/blender/editors/transform/transform_conversions.c
	source/blender/editors/transform/transform_snap.c
	source/blender/python/intern/gpu_offscreen.c
	source/blender/windowmanager/intern/wm_files.c
2018-06-08 14:38:57 +02:00
ae3e59fb61 Fix T55380: Crash when getting out of EditMode in some cases
Derived meshes are to be dead, so soon this code will be removed as well.
2018-06-08 14:38:01 +02:00
aff6cc9cf1 Workbench: Lights user pref 2018-06-08 14:30:32 +02:00
fb1915d870 Prevent wheel causing spurious click/drag events 2018-06-08 14:09:45 +02:00
33437719c1 Alembic import: fixed memory management for CoW copies of CacheFile blocks
When a CacheFile datablock is copied to an in-main datablock, it means that
the new copy should be independent of the old copy. In this case certain
properties are reset/duplicated. When it is copied to a no-main datablock,
we assume this is a copy-on-write copy that's used for evaluating things,
in which case the handle and object paths are referenced instead of
reset/ duplicated. This prevents us from re-opening the Alembic file every
time a new CoW copy is made.

The same approach is taken when freeing data (only when an in-main datablock
is freed do we actually free the data).
2018-06-08 13:52:53 +02:00
0c7fc3a961 Alembic import: assign cache_file handle to original datablock 2018-06-08 13:52:53 +02:00
7b6af843c2 Cleanup: getting rid of G.main.
Sometimes one needs a *lot* of changes for a single G.main... :/
2018-06-08 12:17:22 +02:00
c5904574cb Fix T55391: Anim render only shows scene state at current frame (no animation) 2018-06-08 12:12:52 +02:00
3926ec6aa1 Studiolight: Segment when using float based matcaps 2018-06-08 12:11:05 +02:00
1f1e26f1ab Depsgraph: Fix missing relations when camera has drivers 2018-06-08 12:04:53 +02:00
d38c7db5e1 Depsgraph: Cleanup, make conditions more clear and less indented 2018-06-08 11:57:16 +02:00
4017b48331 Depsgraph: Don't optimize out collections used by duplication system
This makes evaluated objects to point to a non-evaluated collection,
which is already really bad. What is even more worse, objects in those
collections are not evaluated either.

Proper solution would be to implement visibility flag for nodes, which
will be set to 0 for transform/geometry components, but which will be
1 for copy-on-write components.

This way we will guarantee consistency of dependency graph.

For now this change is good enough and unlocks production.

Fixes T55375: Crash when changing visibility of instanced collection
Fixes T55357: Particle geometry crash
2018-06-08 11:57:16 +02:00
378e42e119 Depsgraph: Cleanup, indentation 2018-06-08 11:57:16 +02:00
9600c7cb05 Depsgraph: Cleanup, make conditions more clear and less indented 2018-06-08 11:57:16 +02:00
691282e571 Alembic export: create render-evaluated depsgraph for exporting
Previously the context depsgraph was used, which (most likely) uses
viewport evaluation instead of render evaluation.
2018-06-08 11:53:03 +02:00
55606dbdbc CMake: disable WITH_COMPILER_ASAN for CMAKE_BUILD_TYPE Release 2018-06-08 11:45:53 +02:00
346a1d445e Cleanup: redundant check 2018-06-08 11:28:42 +02:00
0297274720 Merge branch 'master' into blender2.8 2018-06-08 10:54:51 +02:00
dff8a7db73 Fix regression in grease pencil drawing
Drag events finished drawing early.
2018-06-08 10:52:49 +02:00
b3c8ffcb3e Workbench: UI for custom studio lights/matcaps
- all known image types are supported
- BpyAPI for studiolights added
- added open user pref operator in shading menu
- possible to add multiple files in a single run

For now refreshing studio lights will free all studiolights and reinit
the whole mechanism. This can be improved by only freeing deleted, reset
updated and add new custom studiolights.

details to show currently only shows the path we perhaps want to add
other information also
2018-06-08 10:41:24 +02:00
4d16d00154 Keymap: continued testing/development (search key)
Use Accent/Grave for search, to be more convenient than F-Keys.

This sets F3 back to what it was before.
2018-06-08 10:07:41 +02:00
3d681108bf Merge branch 'master' into blender2.8 2018-06-08 08:50:13 +02:00
20367898fe Fix T55301: Transform confirm on release fails w/ MMB 2018-06-08 08:48:21 +02:00
e3fe8ce00b WM: backport event/keymap type util from 2.8 2018-06-08 08:46:31 +02:00
908b6960c0 Merge branch 'master' into blender2.8 2018-06-08 08:10:35 +02:00
a25c11fd8d Cleanup: trailing space
Remove from blender/nodes, collada, blenfont & render.
2018-06-08 08:07:48 +02:00
d352a0adc5 Merge branch 'master' into blender2.8 2018-06-08 08:02:50 +02:00
009c38df53 Fix recently added drag events closing menus 2018-06-08 08:01:43 +02:00
8b5ce6e843 Transform: fix non-3D view editmode assert 2018-06-08 06:31:40 +02:00
30cd35a37b Keymap: continued testing/development
After testing in the studio and extending the event system for
drag events, we've agreed on adjustments to the new keymap,
see: T55162

- Tab: Edit-mode toggle.
- Tab + Cursor Drag: mode switching pie menu.
- Accent/Grave: for 3D view pie menu.
- F3: Search
- 1..3, Shift-1..3: Edit mesh vertex/edge/face toggle.

Other minor changes were made, however they aren't part of the design.

- Ctrl-Shift-S: Image editor Save-As (was F3)
- Ctrl-Alt-R: Repeat history (was F3)
2018-06-07 20:46:12 +02:00
cfc4805455 Merge branch 'master' into blender2.8 2018-06-07 20:41:10 +02:00
8f49299134 WM: fix drag events applying after release 2018-06-07 20:39:17 +02:00
cfc1ddeff7 GHOST/X11: Xinput/XIM support caused double key-up
All keyboard events were sending double key events (including modifiers)
when xinput was enabled with gnome (causing much confusion!).

I cant test if XIM works,
but this isn't useful to send double events, so disabling for now.
2018-06-07 20:35:06 +02:00
Dalai Felinto
18e316bcb9 Uniform Buffer Objects: Simplification refactor
Since we are only creating this and never updating, there is no need for
the original approach with the individual data to be updated.

Note we only populate the GPU data when binding the UBO, so we can in the
future easily create the UBOs in a separate thread than the main drawing one.

Also at the moment animated materials are not working. To fix that we need
to free/tag for free the GPUMaterials in BKE_material_eval.
2018-06-07 20:34:00 +02:00
Dalai Felinto
57da454872 Uniform Buffer Object: No more dirty tagging calls/check 2018-06-07 19:42:03 +02:00
Dalai Felinto
1962ae69b1 Rename GPU_material_create_uniform_buffer > GPU_material_uniform_buffer_create 2018-06-07 19:40:47 +02:00
Dalai Felinto
56f2293a51 GLSL: No need to extract the UBO dynamic inputs 2018-06-07 19:40:08 +02:00
Dalai Felinto
e5bc37eb5e Don't tag UBO as dirty anymore otherwise it still crashes on render 2018-06-07 19:19:39 +02:00
Dalai Felinto
d17094b256 BKE_world_eval: cleanup 2018-06-07 19:16:26 +02:00
Dalai Felinto
85e2871382 No more need to tag sss as dirty for EEVEE
And for the records, this shoudn't have been added to the
GPU_material_uniform_buffer_tag_dirty function since they are unrelated.
2018-06-07 19:13:23 +02:00
d32b59fc18 Remove more printfs .... 2018-06-07 19:06:56 +02:00
630019d5f8 Alembic export: use depsgraph to get evaluated mesh/object 2018-06-07 19:01:45 +02:00
28817c82f1 Alembic export: no need to check particle's mesh_final on export
Hair writing is still not working properly, though, but at least now
samples are written at all.
2018-06-07 19:01:45 +02:00
9a873d0ab2 Alembic import: don't crash Blender when reading invalid samples 2018-06-07 19:01:45 +02:00
5852c66125 Alembic hair writer: avoid double-free 2018-06-07 19:01:45 +02:00
20d3ce57d0 Alembic export: cleaned up multiply-passed depsgraph & scene
Those can now solely be found in the ExportSettings object.
2018-06-07 19:01:45 +02:00
ef7b7efd11 Eevee: Fix hair not rendering. 2018-06-07 18:58:13 +02:00
3b556a477d Merge branch 'master' into blender2.8
Conflicts:
	source/blender/editors/sculpt_paint/paint_vertex.c
	source/blender/editors/sculpt_paint/sculpt.c
	source/blender/editors/sculpt_paint/sculpt_undo.c
2018-06-07 18:45:45 +02:00
5593baea1b Remove printfs
... it's getting late here.
2018-06-07 18:44:37 +02:00
0859492c75 Fix crash cause by SSS referencing Material Nodetree data. 2018-06-07 18:43:43 +02:00
a3773dcc4f Fix memleak with GPUhairs. 2018-06-07 18:43:10 +02:00
80dcb2ced8 Cleanup: typo, and 0 -> false for booleans. 2018-06-07 18:36:16 +02:00
00233f5f78 Wireframe: Fix edges or non manifold meshes not showing.
This will show the associated edges to the vertices but that's the only
workaround I can think of right now.
2018-06-07 18:01:36 +02:00
f9ca750bdf Wireframe: Change / Optimize the limited wireframe visibility option.
This make the limited wireframe not a performance problem anymore.

However, this does change the number of edges displayed as the threshold
is now computed per vertex instead of per edges.

For this reason we extended (internaly) the range of the slider so that the
users can hide more edge.
2018-06-07 18:01:36 +02:00
3823287179 Merge branch 'master' into blender2.8 2018-06-07 17:08:55 +02:00
d274c64d22 WM: add support for drag events
This allows for a single key to be mapped to both release and drag,
useful for pie menus to share a key with a different action.
2018-06-07 17:06:01 +02:00
8dc33a81b0 Merge branch 'master' into blender2.8 2018-06-07 16:53:31 +02:00
df4525d1d9 Fix key repeat events resetting the click timer 2018-06-07 16:52:40 +02:00
f0815b1322 Merge branch 'master' into blender2.8 2018-06-07 16:45:34 +02:00
863e395ad8 Cleanup: trailing space for windowmanager 2018-06-07 16:43:52 +02:00
fcc5d7c29e Draw: Fix crash when tryign to get procedural textures with modifier disabled
Maybe disabled modifier check should be done higher in the call hierarchy.
2018-06-07 16:40:15 +02:00
64e0ab6a00 Merge branch 'master' into blender2.8 2018-06-07 16:32:40 +02:00
86aaa3efba Fix T55126: COW problem: there is an active object even if unselectable 2018-06-07 16:31:10 +02:00
e19686a35a WM: check for release instead of not pressed
Makes reasoning about events more predictable.
2018-06-07 16:19:59 +02:00
819ad49d29 Cleanup: typo. 2018-06-07 16:02:55 +02:00
1e4722eeab Merge branch 'master' into blender2.8
Conflicts:
	source/blender/editors/transform/transform_generics.c
2018-06-07 15:41:57 +02:00
8a2db3ed21 Fix crash due to missing init of new bAnimContext bmain member in transform code.
From own previous G.main-busting commit.
2018-06-07 15:38:31 +02:00
d9d3e7778c Fix sculpt mode undo (COW update needed) 2018-06-07 15:15:54 +02:00
a3f520170c Merge branch 'master' into blender2.8 2018-06-07 14:58:57 +02:00
6242940639 Fix double free in dyntopo-sculpt mode undo 2018-06-07 14:54:09 +02:00
a16d835f7b Wireframe: Frustum cull them. 2018-06-07 14:50:01 +02:00
8366c3ecd8 Depsgraph: Ensure collections are up to date after modifications
Before that copied collection in copy-on-write were running out
of sync with original ones. This was causing crash with the
following scenario:

- Delete some objects from scene
- Add particle system to an object
- Change particle mode to Hair

Thanks Dalai for debug session! Pair programming ftw!
2018-06-07 14:41:29 +02:00
30ec94561c Depsgraph: Use more proper relations for scene relation 2018-06-07 14:41:29 +02:00
da8d33e2e3 Merge branch 'master' into blender2.8 2018-06-07 13:41:32 +02:00
5330f1c5d1 Fix sculpt assert on initialization 2018-06-07 13:39:49 +02:00
c63f804222 Armature: Fix flickering outline on planar custom bones. 2018-06-07 13:38:17 +02:00
508e34d0bf Merge branch 'master' into blender2.8
Conflicts:
	source/blender/editors/animation/anim_deps.c
	source/blender/editors/animation/keyframing.c
	source/blender/editors/animation/keyingsets.c
	source/blender/editors/armature/pose_edit.c
	source/blender/editors/armature/pose_transform.c
	source/blender/editors/gpencil/gpencil_convert.c
	source/blender/editors/include/ED_anim_api.h
	source/blender/editors/include/ED_keyframing.h
	source/blender/editors/interface/interface_anim.c
	source/blender/editors/space_action/action_edit.c
	source/blender/editors/space_graph/graph_edit.c
	source/blender/editors/space_outliner/outliner_draw.c
	source/blender/editors/transform/transform_conversions.c
	source/blender/makesrna/intern/rna_armature.c
	source/blender/makesrna/intern/rna_pose.c
	source/blender/python/intern/bpy_rna_anim.c
	source/blenderplayer/bad_level_call_stubs/stubs.c
	source/gameengine/Converter/KX_BlenderSceneConverter.cpp
2018-06-07 13:04:16 +02:00
4e014727f6 Armature: Fix missing loose edges on custom bone shapes. 2018-06-07 12:58:23 +02:00
Dalai Felinto
3126f85d26 Fix T55062: Depsgraph: Crash with COW with EEVEE viewport
We now remove the shader for every update.

So at the moment the whole point of UBO (Uniform Buffer Objects) is that they
are more efficient than individual uniforms.

Next steps is a harmless refactor to stopping UBO from referring to original
data in the UBO, and simply copying it.

It would also be interesting to make the final shader more granular as far as
the library and required functions are concerned. Even if this doesn't impact
performance, it should give us smaller easy to debug shaders
(a simple shader now has > 5k lines!).

If performance for animated values is measureable slower after this commit we
can port the shader creation CPU side to the depsgraph - localizing the tree,
hashing, lookup, ...

Additionally we can stick to update the UBO when the material changes but not
its topology. This is very trick because of localized trees. So we will only
re-visit this if profiling hints at any benefit from it.
2018-06-07 12:56:34 +02:00
b3a7a75a26 Cleanup: remove moar G.main usages.
Notes:
* Really need to address RNA setters case, end up adding way too much
G.main here these days... :/
* Added Main pointer into bAnimContext, helps a lot in anim code ;)
2018-06-07 12:48:29 +02:00
d1474371fa Fixed deadlock on viewlayer update when there are drivers
When calling the bpy.ops.poselib.apply_pose() operator from Python, Blender
would deadlock when the rig has drivers.

Similar BPy_{BEGIN,END}_ALLOW_THREADS calls were already in place in the
rna_Scene_update_tagged() function.
2018-06-07 12:37:55 +02:00
a867e63dd6 Rename "Viewport Display SSAO" sub-panel name to Screen Space Ambient Occlusion
Since it is already a sub-panel of Viewport Display anyway
2018-06-07 12:08:40 +02:00
cdbda1c3d8 GPUPass: Refactor gpupass caching system to allow fast gpumaterial creation.
This is part of the work needed to refactor the material parameters update.

Now the gpupass cache is polled before adding the gpumaterial to the
deferred compilation queue.

We store gpupasses in a single linked list grouped based on their hashes.
This is not the most efficient way but it can be improved upon later.
2018-06-07 12:02:42 +02:00
366ac88d68 Merge branch 'master' into blender2.8 2018-06-07 12:01:09 +02:00
16017178b2 Revert "Cycles: Cleanup: Don't use return on function returning void"
Not sure why exactly it is called a cleanup, the code was much more clear
and robust against possible missing return statements which are MANDATORY.

Missing return statement will:

- Cause two different BVH traversals to be run.

  Not is happening currently, but if more BVH layouts are added, it will
  become a problem.

- It is already causing assert() statements to fail, since functions are
  no longer returning when they are supposed to.

If there is any measurable reason to keep this change, let me know.
Otherwise just stick to reliable/tested/robust code.

This reverts commit ba65f7093b.
2018-06-07 11:57:57 +02:00
a54235e0c6 Particle mode: Support children drawing
The issue is that children drawing is done by object mode,
which operates with data from evaluated context. But that
data needs edit mode's cache to be properly updated first.
2018-06-07 11:31:56 +02:00
613faa0987 Draw: Don't take cache existence into account for draw type 2018-06-07 11:31:56 +02:00
72cfd5134b Draw: Use proper continue when psys is disabled 2018-06-07 11:31:56 +02:00
1aa89d9a1c Particle edit: Simplify code by benefiting from single edit context
Makes ADD brush to work.

At some point children particles draw got broken, children are not
visible for until first stroke is done. Still looking into it.
2018-06-07 11:31:56 +02:00
df0253be33 Merge branch 'master' into blender2.8
Conflicts:
	source/blender/collada/ArmatureExporter.cpp
	source/blender/collada/ArmatureExporter.h
	source/blender/collada/DocumentExporter.cpp
	source/blender/collada/DocumentExporter.h
	source/blender/collada/SceneExporter.cpp
	source/blender/collada/SceneExporter.h
	source/blender/collada/collada.cpp
	source/blender/collada/collada.h
	source/blender/editors/armature/armature_edit.c
	source/blender/editors/armature/pose_transform.c
	source/blender/editors/include/ED_armature.h
	source/blender/editors/include/ED_object.h
	source/blender/editors/include/ED_screen.h
	source/blender/editors/io/io_collada.c
	source/blender/editors/object/object_transform.c
	source/blender/editors/screen/screen_edit.c
	source/blender/editors/screen/screen_ops.c
	source/blender/windowmanager/intern/wm.c
	source/blender/windowmanager/intern/wm_files.c
	source/blender/windowmanager/intern/wm_window.c
	source/blenderplayer/bad_level_call_stubs/stubs.c
2018-06-07 11:23:26 +02:00
54f9cd5283 Cleanup: Nuke moar G.main usages... 2018-06-07 11:11:46 +02:00
e27759152a Minor comment on possible TODO while validating paint ops for CoW... 2018-06-07 10:59:21 +02:00
e43065596b Alembic export: CoW/Depsgraph fixes 2018-06-07 10:48:52 +02:00
d88314ee5b Alembic export: port DerivedMesh → Mesh 2018-06-07 10:48:52 +02:00
5b0f96f97c Alembic import: port DerivedMesh → Mesh 2018-06-07 10:48:52 +02:00
f447411a82 Bone selection: user control contrast
Experiment: let the user be in control of the alpha channel as some rigs
are hard too see during bone selection. Especially rigs that were
designed for 2.79 wireframe mode.
2018-06-07 09:26:06 +02:00
7fb216d800 Workbench: respect the duplication visibility flag 2018-06-07 09:26:06 +02:00
2d2f23de10 Fix T55348: Renaming a marker can't cancel
Regression in a14005c070
2018-06-07 08:54:47 +02:00
a60d4f33c6 Merge branch 'master' into blender2.8 2018-06-07 08:15:11 +02:00
409cfba1a3 Python API: Initial 'imbuf' API
Support only basic operations new/load/write & resize.

Add now so we can extend as needed & more easily accept patches.
2018-06-07 08:00:13 +02:00
ba80d8440f Cleanup: style 2018-06-06 22:17:06 +02:00
1c4b04f1fd Merge branch 'master' into blender2.8 2018-06-06 19:52:20 +02:00
0e68751b8a Fix BLI_ASSERT_UNIT macro w/ non-finite numbers 2018-06-06 19:49:27 +02:00
70b705b5fe UI: NLA: Influence should be a factor (RNA) 2018-06-06 12:09:13 -04:00
4165a57a66 Fix broken auto-keying after copy/paste of poses.
That bug was also likely affecting other cases - basically it was making
auto-keying always key from evaluated ('visual') values, never base,
data values... Added a flag, in some cases we do want evaluated values
here, obviously.
2018-06-06 17:19:13 +02:00
Dalai Felinto
f818ff411a Cycles: use viewport duplicator visibility on preview 2018-06-06 16:44:51 +02:00
Dalai Felinto
04dfca5b9d Depsgraph: Expose (evaluation) mode in rna 2018-06-06 16:44:51 +02:00
Dalai Felinto
4e213d4216 Depsgraph iterator: Remove explicit mode
We can get the mode from the depsgraph itself.
2018-06-06 16:44:51 +02:00
Dalai Felinto
9a0506ea18 Fix T55350: Cycles: instanced hair with hidden emitter is invisible when rendering 2018-06-06 16:44:07 +02:00
36000e6da3 Cleanup: unused function 2018-06-06 16:36:00 +02:00
c44acc7fb8 Fix view_layer update function
This was no longer working, now this works the same way as
scene.update(), only it applied to the current view layer.

Caused crash running alembic export from Python.
2018-06-06 16:33:34 +02:00
0ee4785675 Cleanup: get rid of just-added G.main usage.
Was just added to ease merging of master, proper code now!
2018-06-06 16:32:09 +02:00
bb7202495a Merge branch 'master' into blender2.8
Conflicts:
	source/blender/collada/ArmatureExporter.cpp
	source/blender/collada/ArmatureExporter.h
	source/blender/collada/DocumentExporter.cpp
	source/blender/collada/DocumentExporter.h
	source/blender/collada/SceneExporter.cpp
	source/blender/collada/SceneExporter.h
	source/blender/collada/collada.cpp
	source/blender/collada/collada.h
	source/blender/editors/armature/armature_edit.c
	source/blender/editors/armature/editarmature_retarget.c
	source/blender/editors/armature/pose_transform.c
	source/blender/editors/include/ED_armature.h
	source/blender/editors/include/ED_object.h
	source/blender/editors/include/ED_screen.h
	source/blender/editors/io/io_collada.c
	source/blender/editors/object/object_transform.c
	source/blender/editors/screen/screen_edit.c
	source/blender/editors/screen/screen_ops.c
	source/blender/windowmanager/intern/wm.c
	source/blender/windowmanager/intern/wm_files.c
	source/blender/windowmanager/intern/wm_window.c
	source/blenderplayer/bad_level_call_stubs/stubs.c
2018-06-06 16:25:28 +02:00
19d651ca9a View3DShading popover: Naming + alignment 2018-06-06 16:17:07 +02:00
d706101559 Depsgraph: remove legacy code for dupli group updates.
This caused crashes in some cases, and should be fully handled by
the depsgraph now.
2018-06-06 16:00:25 +02:00
bb09556be5 UI: sub panel titles draw smaller and indented. 2018-06-06 16:00:25 +02:00
f55f418867 Fix incorrect double checked lock in collection object cache. 2018-06-06 16:00:25 +02:00
f884ba02a2 Merge branch 'master' into blender2.8 2018-06-06 15:58:18 +02:00
de702a4803 Alembic export: only free duplilists when not NULL 2018-06-06 15:54:03 +02:00
48e871ab1d Cleanup: Nuke moar G.main usages... 2018-06-06 15:50:24 +02:00
fcf720a135 View3D: Shading Popup
- layout so cavity options are better visible
- fixed issues showing wrong options in Material mode
- added labels + seperators
2018-06-06 15:44:00 +02:00
89042f576e LookDev: When HDRI could not be reloaded we should switch to world
Thanks for reporting sergey!
2018-06-06 15:26:09 +02:00
7fee5f5643 Fix object-dupli selection w/ COW 2018-06-06 15:24:27 +02:00
f1fd5ed74f T55333 Workbench: Cavity Shader
A cavity shader based on SSAO. Works on all workbench deferred passes.

Per 3d viewport the cavity shader options can be set as different
shading needed different options. Some global options are in the
Viewport Display of the scene like num samples and distance.

Experimental: Naming of Ridges and Valleys
2018-06-06 14:51:18 +02:00
4a52531a11 Alembic: Fix double-free of mutex
The mutex was shared between CoW copies of the CacheFile datablock, and
as a result also freed multiple times. It is now only freed when the
original datablock is freed; the CoW copies share the same mutex.
2018-06-06 14:38:17 +02:00
4c4fa3d49b Fix double-free of custom data
This causes a temporary spike in memory usage when creating a copy; the
entire copy will be removed anyway when DerivedMesh is removed.
2018-06-06 14:38:17 +02:00
3b8ae85e3d Move Time Remapping into a sub-panel 2018-06-06 14:28:35 +02:00
a8ae68aa5c Fix crash when file is saved in particle edit mode
Depsgraph is not available on file load yet.
2018-06-06 14:13:46 +02:00
2088bb0d49 UI: add particle brush to topbar 2018-06-06 14:06:45 +02:00
b58e5d4f2c Particle edit: Fix missing hair with new oarticle system added 2018-06-06 13:54:39 +02:00
1295e85de0 Particle edit: Fix crash when trying to edit particles without cache
Particles in EMITTER mode needs to have cache.
2018-06-06 13:54:39 +02:00
528cdf9b50 Fix update issue in VPaint mode.
Need to flush the changes through DEG CoW, otherwise drawing code would
not see them in some cases...
2018-06-06 12:42:01 +02:00
e3324c3a8e Depsgraph: Silence relations builder errors
Were caused by depsgraph trying to create relations between objects
which are coming from restricted collection.
2018-06-06 12:36:52 +02:00
22370929fe Depsgraph: Expand object data datablocks for drivers
Drivers can reference object data datablock directly, and if there
was no object in the scene with that datablock, blender will crash.
2018-06-06 12:36:52 +02:00
7810c60fe3 Depsgraph: Handle key->object relations from object builder 2018-06-06 12:36:51 +02:00
695747aad1 Depsgraph: Object data separation, armature 2018-06-06 12:36:51 +02:00
5a14af62d0 Depsgraph: Object data separation, geometry 2018-06-06 12:36:51 +02:00
82ec06cbfa Depsgraph: Object data separation, camera 2018-06-06 12:36:51 +02:00
ca7de1ff22 Depsgraph: Object data separation, lamp 2018-06-06 12:36:51 +02:00
1a0cb28ae2 Depsgraph: Object data separation, light probes
This is a beginning of series of commits which will clearly separate
building IDs which are used as object data from object building.

The goal is to be able to always build whatever ID. Required to make
driver targets to work reliably with copy-on-write concept.
2018-06-06 12:36:51 +02:00
180e8f8bfb Depsgraph: Remove confusing metaball logic
DATA datablock must evaluation must never depend on object it is
used for. If there is something what depends on an object, it must
be done on object level.

At least the actual callback was empty.
2018-06-06 12:36:51 +02:00
9f255db4fe Wireframe: Fix do_version. 2018-06-06 12:32:30 +02:00
7a76223f1f Ensure BKE_mesh_new_nomain_from_template() always has valid mxxx pointers
When the source mesh doesn't have the primary layers (CD_VERT for vdata,
etc.) the returned mesh also didn't have those layers, even when non-zero
elements were requested (for example requesting 4 vertices would still
result in mvert = NULL).
2018-06-06 12:27:25 +02:00
8a0e6a3143 Consolidated custom data layer initialisation
Code shared between BKE_mesh_new_nomain() and
BKE_mesh_new_nomain_from_template() is now in separate functions, instead
of copy-pasted.
2018-06-06 12:27:25 +02:00
5e180ebffc Set mesh->totface in nomain-mesh creation
The totxxx fields should match the number of elements in their respective
custom data layers.
2018-06-06 12:27:25 +02:00
c4ce4034e6 Fix T55344: linked collection instance has user count 0. 2018-06-06 11:22:17 +02:00
3e87c039ba UI: tweak for Cycles panels. 2018-06-06 11:22:17 +02:00
1d86bdf16b Cleanup: fix compiler warning. 2018-06-06 11:22:17 +02:00
03b8e4f608 Fix importing temporary screens
Apparently Blender 2.79 could save temporary screens; those should not be
converted to workspaces.
2018-06-06 11:13:11 +02:00
23db3a5ade Renamed BKE_nomain_mesh_xxx → BKE_mesh_nomain_xxx
This maintains the `BKE_mesh_` prefix for the mesh-related BKE functions.
2018-06-06 10:30:24 +02:00
783d31c3a3 DerivedMesh deprecation: Removed some functions in displist.c
Those functions were using DerivedMesh but are not called from anywhere.
As a result, they cannot be tested after porting DerivedMesh to Mesh.
2018-06-06 10:11:31 +02:00
abccde4d68 DerivedMesh deprecation: marked no-longer-in-use function
Functions that are no longer in use can be marked as such, so that later
we can easily remove them.
2018-06-06 10:11:31 +02:00
5f543915e8 Modifiers: ported curve_calc_modifiers_post() internals from DerivedMesh → Mesh
The function still returns a DerivedMesh, but internally it uses Mesh
now.
2018-06-06 10:11:31 +02:00
274453ef73 Error in recent popover keep_open option 2018-06-06 09:43:03 +02:00
a9f9236670 Merge branch 'master' into blender2.8 2018-06-06 09:39:35 +02:00
bfbd85e9d6 Fix error using freed bmain
Regression in 481cdb08ed
2018-06-06 09:36:50 +02:00
ab375079df Cleanup: rename WITH -> USE for internal defines 2018-06-06 09:29:54 +02:00
6ff89166a8 Cleanup: USE_UI_* prefix for UI defines
Otherwise there is no quick way to see where this comes from.
2018-06-06 09:27:23 +02:00
52502ad0a4 UI: WM_OT_call_panel option to keep popovers open 2018-06-06 09:24:51 +02:00
14251d4615 Workbench: Speed up fo scene with many duplis
The ObjectID pass was generating per material per dupli a specific
number for the outline what results in a GPU context switch. In spring scene
01-050 a scene with many trees (duplis) generated 28000 GPU materials.

Now only new materials are created when objectid pass is enabled. Also
added a hard limit to the number of objects for the objectid pass (255)
Basically the outline between objects will not be drawn, but it will be
very hard to detect them also.

Also fixed for XRay mode.
2018-06-06 08:50:12 +02:00
1889eec918 UI: use regular size icons for toolbar popup
Test this since the popup feels disruptive/flashing when its too large
when set smaller it looks closer to a menu w/ key-accelerators which is
the intention in this case.

It's also more likely the active tool can be placed under the cursor.
2018-06-06 08:32:25 +02:00
c1a880bc5e Fix object selection w/ COW 2018-06-06 08:20:05 +02:00
3c9e2e82fa Cleanup: style 2018-06-05 21:32:49 +02:00
851829c1fb Eevee: Improve load time.
Only generate shadow store shaders on demand and create a simpler shader
for small blur radius.
2018-06-05 21:02:57 +02:00
e394a78b4c Fix compilation issue due to last commit. 2018-06-05 19:49:12 +02:00
d5ce40a5ed Wireframe: Add slider to hide edges from coplanar faces
The default behaviour is to show the same amount of edges as 2.7.
The slider makes it possible to show all edges or even less.
2018-06-05 19:35:36 +02:00
713027b832 make.bat : move all experimental options to their own section in the help. 2018-06-05 11:29:03 -06:00
983811607d make.bat : bring the help up to date with recent additions to the build script. 2018-06-05 10:40:14 -06:00
cd58ce85c2 make.bat : check for existence of ninja before using it. 2018-06-05 10:39:39 -06:00
5e44324b79 make.bat: change the way the vs buildtools are detected.
The recent change also used the buildtools instead of the regular compiler, you now have to explicitly state what you want to use :

2017 - the standard msvc compiler
2017pre - the msvc compiler from the preview installation
2017b - the msvc compiler from the buildtools installation
2018-06-05 10:38:48 -06:00
7ff07ddd01 Merge branch 'master' into blender2.8
Conflicts:
	source/blender/windowmanager/intern/wm_files.c
2018-06-05 17:56:18 +02:00
1628a6858e Fix crash in owmn previous commit. 2018-06-05 17:54:53 +02:00
f0d9dbae0d Merge branch 'master' into blender2.8
Conflicts:
	source/blender/blenkernel/intern/blendfile.c
	source/blender/blenloader/intern/readfile.h
	source/blender/blenloader/intern/versioning_250.c
	source/blender/blenloader/intern/versioning_260.c
	source/blender/blenloader/intern/versioning_270.c
	source/blender/blenloader/intern/versioning_legacy.c
	source/blender/editors/render/render_shading.c
	source/blender/makesrna/intern/rna_movieclip.c
	source/blender/render/intern/source/pipeline.c
	source/blender/render/intern/source/voxeldata.c
2018-06-05 17:02:50 +02:00
ce6db959c7 Moved function declarations from BKE_DerivedMesh.h to BKE_mesh_runtime.h
The function definitions still reside in DerivedMesh.c. Once we're done
porting all the DerivedMesh use to Mesh, we'll move the still-relevant
functions to mesh_runtime.c. This move is now cumbersome due to shared
statically-declared utility functions in DerivedMesh.c
2018-06-05 16:59:25 +02:00
a9ed50514c Moved function declarations from BKE_mesh.h → BKE_mesh_runtime.h 2018-06-05 16:59:18 +02:00
7436fb2ef1 Merge branch 'master' into 28 2018-06-05 16:36:13 +02:00
481cdb08ed Cleanup: use new accessors to blendfile path (Main.name). 2018-06-05 16:33:46 +02:00
1d97e948d2 Cleanup: add hleper functions to get filepath from Main.
This helps making things clearer and cleaner. Func returning filepath of
G.main is separate, so that we can easily track its usages, and
hopefully deprecate it at some point. Though that usage of G.main is
likely the less evil one, you nearly always want current blendfile path
in those cases anyway.
2018-06-05 16:33:46 +02:00
c68429bc03 Cleanup: pep8
Use 'autopep8 --ignore E721,E722' on our UI code, only minor changes.
2018-06-05 16:32:11 +02:00
d94df18550 Cleanup: doxy grouping for mesh runtime API 2018-06-05 15:55:16 +02:00
7a612c3799 LookDev: Fix crash when no world 2018-06-05 15:49:54 +02:00
60aee3943f UI: move 3D view display options into popover
- Moved Mesh Display, Mesh Analysis & Motion Tracking
  display panels to Overlays.
- Removed Item panel from sidebar (buttons available elsewhere).

Patch by @billreynish w/ edits
2018-06-05 15:35:57 +02:00
d860d23e1a make.bat: cache the vcredist directory.
When run from make.bat the environment is setup correctly and the VCToolsRedistDir environment variable exists, on later invocations of cmake this may no longer be the case and a warning was emitted about the missing runtime. we can't rely on InstallRequiredSystemLibraries.cmake here since it uses the compiler version to figure out the correct location and it doesn't know how to deal with clang.
2018-06-05 07:25:37 -06:00
2cc6e06bdb Error in last commit 2018-06-05 15:21:04 +02:00
b6d920bbd5 Depsgraph: Fix bug with broken tweak of animated node tree settings
With single editing context we can have expected and correct evaluation order
of animation and material update.
2018-06-05 15:11:34 +02:00
2891fb645b 3D View: disable manipulators & text w/o overlay
Manipulators which aren't explicitly activated via tools are now hidden.

Tool manipulators are kept because it doesn't make sense to interact
with a tool with hidden manipulators.
2018-06-05 14:54:52 +02:00
24bd483ee1 Object Modes: Flush COW on mode switching
Caused glitch w/ sculpt mode not updating.
2018-06-05 12:48:25 +02:00
09f780c1b0 Preserve unkeyed changes on undo and file open
This partially reverts 5975d6581c.

With single editing context it is more predictable what is unkeyed change is.
2018-06-05 12:35:19 +02:00
6d7327f607 Cleanup: simplify studiolight/matcap enum code, remove limit. 2018-06-05 12:23:55 +02:00
0d47a4d2fe T55291: Matcaps were reset when loading file 2018-06-05 12:21:41 +02:00
df1d319a79 Static Override: Fix order of operations issue in material slots.
*Really* not happy with that kind of constraint, but no choice for
now...
2018-06-05 12:08:18 +02:00
856d36e4b8 Static Override: progresses towards full support for material slots.
Material slots are a real pain to get working, due to all the black
magic they do to hide object vs. obdata storage of the material...

Currently hitting an order problem - we need to always set 'link' (to
object or obdata) property of the slot first, before we set its
material... *super-sigh*
2018-06-05 12:08:18 +02:00
cb42ad8c75 Fix compilation error after recent matcap changes 2018-06-05 12:02:08 +02:00
cd8613c6e7 Fix T55319: Keyframing issues
The issue was that keyframing from menu would tag object for animation
update, which was making object to loose unkeyed changes.
2018-06-05 11:56:46 +02:00
342dd5a771 Workbench: remove the soft limit for the xray_alpha 2018-06-05 11:45:22 +02:00
a3815f8777 Workbench: Matcaps T55291
- users can use their own matcaps
.config/blender/2.80/datafiles/studiolights/matcap/ folder
- upto 100 matcaps can be loaded
- color of the matcap is influenced by the color of the material/single
color etc. To show the plain matcap use single color at 1.0
- chosing a matcap is at lighting level (flat/studio/matcap)
- matcap only possible in solid mode
- also works for X-Ray mode

As the old matcaps are still in used by the clay engine I didn't remove
it yet.
2018-06-05 11:38:33 +02:00
ade710500d UI: set cursor line width 2018-06-05 11:37:30 +02:00
f1a3b68e76 Transform: avoid assert in wpaint mode 2018-06-05 11:31:17 +02:00
b9db470636 Fix stupid mistake in previous commit. 2018-06-05 11:22:43 +02:00
0be9d8db65 RNA/Override: Move override-related property flags to own variable.
We are already running out of available flags in main, generic int, and
everytime I work on static override I find new special cases that will
need new specific propflag, so...
2018-06-05 11:11:43 +02:00
99dd3b0156 Baby step towards making overridable materials for objects.
Naughty Collections RNACollection of objects is still to be tamed, but
for individual objects should work now....
2018-06-05 11:11:42 +02:00
5d628c519b Transform: improve pose trans/rot/scale guessing
Switching the mode was being done per object,
where it should first check all pose bones from all objects.

This also removes code that changes the transform mode
from within the counting function.
This was only needed on transform initialization.
2018-06-05 11:04:12 +02:00
0941b8b672 Missing from last commit 2018-06-05 10:13:55 +02:00
83db7a0070 Transform: revert use of evaluated objects
This is no longer needed.
2018-06-05 09:48:38 +02:00
1df228a416 UI: context menu for other editor types
D3458 by @billreynish w/ edits.

- Context menu for dope-sheet, graph, image & node editors.
- Add type to contenxt menu header.
- Access with W-Key.
- Change UV-editor weld key binding to Shift-W.
2018-06-05 09:18:00 +02:00
80d86f303a UI: support property split for 'prop_search' 2018-06-05 08:56:14 +02:00
88b46a6ce9 make.bat : Fix clang+asan msbuild project generation 2018-06-04 22:35:57 -06:00
Dalai Felinto
17e9870221 DRW: Fix crashes with instanced data
Problem introduced on 101c277e3d.
2018-06-04 19:17:29 +02:00
6fee105943 Cleanup: correct menu name 2018-06-04 19:09:52 +02:00
da53c3f020 Merge branch 'master' into blender2.8 2018-06-04 18:50:14 +02:00
58e8c71cbd Cleanup: strip ghost trailing space 2018-06-04 18:47:57 +02:00
f6740993f7 Cleanup: strip tests trailing space 2018-06-04 18:47:31 +02:00
c8af234f85 Fix T55325: Revert "Always get a reference point when snapping with the projected elements option enabled."
This reverts commit 0864a4c1ea.

That way it's best for retopology.
2018-06-04 13:33:19 -03:00
84becb870f Merge branch 'master' into blender2.8 2018-06-04 17:58:07 +02:00
747534af00 Particle System: move data creation into RNA update
Relying on evaluation to initialize data causes issues w/ 2.8.
2018-06-04 17:55:19 +02:00
William Reynish
2b4d2de253 UI: more subpanels for Cycles and Eevee. 2018-06-04 17:36:03 +02:00
ce5e9b599c Fix Python UI error with Eevee and hemi lamps. 2018-06-04 17:36:02 +02:00
784a3ccf79 Fix hang rendering with motion blur. 2018-06-04 17:36:02 +02:00
101c277e3d Workbench: Shadows: Fix cap being clipped by far plane.
This was the last remaining problem with shadow volumes (that I know of).

Only extrude until we hit the far plane.
2018-06-04 17:33:34 +02:00
349d416949 Tool System: refresh tools after undo 2018-06-04 16:41:03 +02:00
18e8350cd1 Cleanup: Hopefully more clear name 2018-06-04 16:22:36 +02:00
bda0175984 DRW: Fix leak from the wireframe drawing. 2018-06-04 16:04:18 +02:00
570804882d Wireframe: Lower line thickness and front color blending. 2018-06-04 16:04:18 +02:00
4b5670ac11 Cleanup: redundant headers 2018-06-04 16:03:52 +02:00
3b4c7a8c9b Weight paint: Use helper function to get original mesh
Makes it one line to get needed mesh, no code duplication. And can easily
update asserts and tighten the nuts.
2018-06-04 15:49:11 +02:00
0e8edbbc01 Add utility functions to get different "levels" of evaluated/original mesh 2018-06-04 15:48:37 +02:00
2b22a61152 Depsgraph: Only store original mesh pointer for mesh object 2018-06-04 15:24:41 +02:00
52f9023fbf Fix weight paint crash
The PBVH was referencing runtime custom data which was freed on refresh.
2018-06-04 15:18:48 +02:00
07f0046203 Fix crash when making objects to share same mesh
Make it more reliable and predictable way of getting pointer to
an original mesh which came from copy-on-write engine.

Related change: made it (hopefully) more clear name for flags.
2018-06-04 15:17:16 +02:00
1dc31f5b98 GPU: Fix missing case of new radeon on xorg.
This was causing issue with shader compilation.
2018-06-04 15:15:00 +02:00
e47e60a9b9 Workbench: Shadows: Fix the remaining fail case.
Non-manifold geom was producing inverted result when the camera was inside
the shadow volume.

When rendering non manifold geometry with the depth fail method, we need to
emit the cap as if it was the same geometry with a virtual thickness.

Another way to view it is to imagine having a set of non-manifold geometry
all facing the light.

So for every tri we emit a front cap oriented toward the light and the
back cap pointing away from it (whatever the actual orientation of the tri).

Extrusion pass stay the same as the depth pass method (double the increment
if it's a manifold edge).
2018-06-04 15:15:00 +02:00
736a84ec66 Cleanup: Use proper type for original ID pointer
Helps debugging, no need to cast in a debugger.
2018-06-04 14:14:14 +02:00
William Reynish
acb5bbf9b2 UI: use subpanels for Cycles, render, scene, object, particle, curves. 2018-06-04 13:44:23 +02:00
a46ced5076 Fix missing collection instance motion blur settings. 2018-06-04 13:41:27 +02:00
f430f14df4 Merge branch 'master' into blender2.8 2018-06-04 12:48:03 +02:00
7277f8973b Fix T55260: load Text File with Python from GUI Button results in 0 User
Let's just always ensure user_one when loading text from operator...
2018-06-04 12:46:59 +02:00
c2ff37455e Fix selecting bones
Own error w/ recent USE_OBJECT_MODE_STRICT
2018-06-04 12:39:10 +02:00
95011f6d48 Merge branch 'master' into blender2.8 2018-06-04 09:39:04 +02:00
44505b38df Cleanup: strip trailing space in editors 2018-06-04 09:31:30 +02:00
0911acb5cf Merge branch 'master' into blender2.8 2018-06-04 09:11:45 +02:00
6654e109df Cleanup: strip trailing space in GPU module 2018-06-04 09:09:12 +02:00
5b64301834 Merge branch 'master' into blender2.8 2018-06-04 09:06:14 +02:00
2d3d76693a Cleanup: newlines at EOF for Python modules 2018-06-04 08:54:40 +02:00
7719c11006 Cleanup: strip trailing space in Python module 2018-06-04 08:54:40 +02:00
854db8951b Cleanup: strip trailing space in bmesh module 2018-06-04 08:49:47 +02:00
ba65f7093b Cycles: Cleanup: Don't use return on function returning void 2018-06-04 00:07:17 +02:00
f6743fcaa4 UI: use subpanel for particle emission source, as an example. 2018-06-03 21:36:12 +02:00
d7c2b78822 UI: add subpanel support.
In the Python API, any panel becomes a subpanel by setting bl_parent_id
to the name of the parent panel. These subpanels can contain advanced or
less commonly used settings.
2018-06-03 21:30:35 +02:00
9b01e7bc27 UI: move Cycles device to Performance panel. 2018-06-03 19:01:18 +02:00
81dbf08eb4 Merge branch 'master' into blender2.8 2018-06-03 17:09:07 +02:00
38eb91c848 Cleanup: correct variable name, doxy sections 2018-06-03 17:06:13 +02:00
25ff7a4f2a DRW: Hair: Add additionnal subdivision smoothing support.
Only use catmull-rom interpolation for now. It's smoother and does not
exhibit artifacts.
2018-06-03 16:45:03 +02:00
06dd89b0ca GPUTexture: Fix memleak in orphaned texture management. 2018-06-03 16:45:03 +02:00
e657a4af13 Merge branch 'master' into blender2.8 2018-06-03 15:20:11 +02:00
4c4eb1ce20 Workbench: Fix memleaks. 2018-06-03 15:26:53 +02:00
d0f7ab27a8 Wireframe: Optimization for intel GPUs.
Intel GPU take more advantage of the geometry shader than other vendors.

Using a simple geom shader approach in this case is more performant.
2018-06-03 15:26:37 +02:00
335b193336 Cleanup: add argument names to screen callbacks 2018-06-03 15:11:31 +02:00
778a19a13a DRW: Fix hair disapearing if emitter is culled. 2018-06-03 12:36:03 +02:00
32c5972653 Workbench: Rework hair support.
Now hairs are shaded properly in workbench and support texturing.

I also added a 10% random normal direction per hair to have a bit more
variation in the shading. This is hardcoded for now.
2018-06-03 12:36:03 +02:00
38bf3b8d23 Merge branch 'master' into blender2.8 2018-06-03 11:24:57 +02:00
6221180963 Cleanup: remove blockscale & handler
Replace with link_flag, currently unused,
needed for dynamic space types which is planned.
2018-06-03 11:12:50 +02:00
18a4553838 Edit menu: add Repeat Last and Repeat History 2018-06-02 23:13:03 +02:00
815b1f24fa build_environment: support for msvc2017 and newer cmake.
-expanded build_deps.cmd with 2017 support, it can't locate msvc2017 so needs to be run from developer prompt.
-Newer cmake was unhappy with openal's cmakelists.txt
-collada has warning as error on and errored out on new msvc2017 warnings.
2018-06-02 13:59:56 -06:00
04d9316cf3 UI: use single column layout for particles
Also minor changes to other panels.

Patch by @billreynish
2018-06-02 21:52:52 +02:00
c55e90da4c Cleanup: -Wswitch warning 2018-06-02 21:38:31 +02:00
2ef695fabf build_environment: fix paths in osl.diff 2018-06-02 13:18:22 -06:00
6c6c4da718 GPU: Fix texture being freed in threads without ogl context bound.
This is a dirty fix. A bit more cleaner approach would be to check if a
context is bound and delay the deletion only in this case.
Also we may want to do this orphan deletion at some other places than
wm_window_swap_buffers.
2018-06-02 21:16:40 +02:00
bc6358a580 DRW: Add uniform name recording in debug mode. 2018-06-02 21:16:40 +02:00
f25e459f8f DRW: Make the Procedural hair update part of the drawmanager.
Instead of relying on the engine integration which is redundant.
2018-06-02 21:16:40 +02:00
98e4d548a1 Eevee: Hair: Make SSR works with hairs. 2018-06-02 21:16:40 +02:00
119423b252 Eevee: Cleanup unused Ghash 2018-06-02 21:16:40 +02:00
8ace49dedc Eevee: Add shadow support for hairs. 2018-06-02 21:16:40 +02:00
1de73fc6c3 Eevee: Hair: Make hairs visible even if the show emitter option is disabled. 2018-06-02 21:16:40 +02:00
08a2c5f224 Eevee: Add support for hair random property.
Do note that it does not match cycles implementation.

Also we could precompute the hash per strand before rendering but that would
suggest it's not per engine specific.

If we make the random value internal to blender then it won't be a matter
because other renderers will have access to the same value.
2018-06-02 21:16:40 +02:00
4430bd3644 Eevee: CodeStyle: Fix naming and confusion about the hairs vectors. 2018-06-02 21:16:40 +02:00
Dalai Felinto
0736460dfb Merge remote-tracking branch 'origin/master' into blender2.8 2018-06-02 20:34:25 +02:00
Dalai Felinto
fec317de8d --debug-gpu-shader: Dump GLSL shaders to disk
This is really convenient for development. Either for profiling the
generated shaders or to check if the generated code is correct.

It writes the shaders to the temporary blender session folder.

(ported over from blender2.8)
2018-06-02 20:29:27 +02:00
Dalai Felinto
07bf151062 Merge remote-tracking branch 'origin/blender2.8' into temp-dynamic-overrides 2018-05-31 21:44:21 +02:00
Dalai Felinto
d341b62351 Merge remote-tracking branch 'origin/blender2.8' into temp-dynamic-overrides 2018-05-31 00:01:48 +02:00
Dalai Felinto
55d611ad5e Merge remote-tracking branch 'origin/blender2.8' into temp-dynamic-overrides 2018-05-28 21:57:02 +02:00
Dalai Felinto
dd5f69e251 Fix readfile for affected collections 2018-05-28 21:56:32 +02:00
Dalai Felinto
e20ec83765 Fixup for LinkData > AffectedCollection 2018-05-28 01:58:27 +02:00
Dalai Felinto
3e946a6f13 Tag COW when link/unlinking collections
In theory we can tag only the objects that are in the corresponding colletction
and its children.
2018-05-28 01:48:14 +02:00
Dalai Felinto
fc4c3fc35c Use affected collections to determine objects to override
Note: It is done now as a cache system, although right now
this runs for all the objects.

But the logic should be decoupable once we integrate this with
the depsgraph properly.

Note: I seem to be getting a crash on saving/writing because
AffectedCollection->collection is NULL sometimes.
2018-05-28 01:37:53 +02:00
Dalai Felinto
83e068f5df New Affected Collection struct
No point in using anonymous LinkData structs.
2018-05-28 00:42:17 +02:00
Dalai Felinto
f319e0081b Cleanup 2018-05-27 21:39:40 +02:00
Dalai Felinto
8655ed28fe Update the viewport when changing dynamic override properties 2018-05-27 19:23:46 +02:00
Dalai Felinto
c9172b65db Util function to find view layer by dynamic property 2018-05-27 19:23:20 +02:00
Dalai Felinto
dcb18ab6c9 Extra make sure view3d updates for dynamic override
Without this we do not get updates when deleting/adding override
sets and affected collections.

We should probably replace this by manually publishin RNA updates though.
2018-05-27 19:22:27 +02:00
Dalai Felinto
f7301293b9 Make sure viewport updates on dynamic override and override set changes 2018-05-27 19:21:18 +02:00
Dalai Felinto
7265f6c25c Depsgraph: Tag depsgraph id based on id type 2018-05-27 19:20:32 +02:00
Dalai Felinto
8fb93aebe7 BKE_idtype_to_main_data
Function to map ID_Type to bmain-> listbases.
2018-05-27 18:33:08 +02:00
bab887fbfe Fix 'broken' Multiply operation for Dynamic Overrides.
No reason to store operands of Multiply op in a separate property! Let's
keep things simple ;)
2018-05-27 18:23:14 +02:00
e7e792f0f4 Fix broken RNA override apply in Dynamic case.
Was accessing some pointers it should not access in Dynamic case.
Typical stupid mistakes that happen when you code without being able to
test your changes... ;)

Also made code a bit clear by using a global bool is_dynamic_override,
instead of using crappy NULL-pointer check.
2018-05-27 16:34:14 +02:00
Dalai Felinto
a5ca6d752e Hacky code just to try RNA_struct_dynamic_override_apply
It is crashing now, I tried either adding a scene setting (EEVEE AO), or
object settings (ob.color).

This also shows a few problems:
* We can't simply tag Scene to update when changing an override set, we need
  the tagging to flush down to the scene objects.

* For scene settings we may want to do at this moment in COW evaluation, however
  for objects the implementation is a bit more tricky. Because we need to change
  the data owned by the object as well. For example, the material.

* In this case it is almost as if we want a cow-cow ID (the OVERRIDEN id should be
  shared by all the objects that are being overridden.

* Also the affected collections thing is to be handled somehow.
2018-05-25 20:59:04 +02:00
Dalai Felinto
e6128bd177 Tag depsgraph COW for update when changing dynamic overrides 2018-05-25 20:40:09 +02:00
Dalai Felinto
f837bd1f76 Merge remote-tracking branch 'origin/blender2.8' into temp-dynamic-overrides 2018-05-25 19:52:10 +02:00
Dalai Felinto
7bd6590594 Merge remote-tracking branch 'origin/blender2.8' into temp-dynamic-overrides
Big merge, this addresses all the conflicts due to the Group > Collection change.
2018-05-25 18:03:45 +02:00
5165ab5877 Dynamic override: add RNA callback to apply an override.
Theoritical code for now, since we still miss the depsgraph part to hook
it up to actual evaluation.
2018-05-17 18:11:52 +02:00
35716a8f46 Merge branch 'blender2.8' into temp-dynamic-overrides
Conflicts:
	source/blender/makesrna/intern/rna_rna.c
2018-05-17 17:14:48 +02:00
f1b10fa29d Initial step to support dynoverride eval in RNA code.
Using as much as possible static override code. Againm ideally we'll
merge back both into a fully single system after everything is working.

Also found a way to reduce a bit verbosity of code here...
2018-05-17 16:43:26 +02:00
f5cada3f7d Dynamic Override: Add support for arrays of bools and ints, check array size! 2018-05-17 14:16:47 +02:00
e3d6d9d3ac Dynamic Override: Share a tiny bit more code betzeen dynamic and static overrides.
Renamed dynamic's override_mode to 'operation' (same as with static) and
made it use same enum values.

Note that ultimately/ideally both would only use one data structure,
this should be manageable and will simplify RNA apply code (which is to
be shared by both), but that kind of cleanup/refactor we can do once we
have a working system, just before merging into blender2.8.
2018-05-17 12:56:32 +02:00
c69ed97473 Merge branch 'blender2.8' into temp-dynamic-overrides 2018-05-17 11:38:08 +02:00
Dalai Felinto
68e861059f Merge remote-tracking branch 'origin/blender2.8' into temp-dynamic-overrides 2018-05-16 23:21:45 +02:00
Dalai Felinto
50771589a7 Fix building
It was broken since rB666a3b6161af, shame on me.
2018-05-16 23:20:40 +02:00
Dalai Felinto
814fc6aafc Merge remote-tracking branch 'origin/blender2.8' into temp-dynamic-overrides 2018-05-16 15:26:27 +02:00
Dalai Felinto
666a3b6161 Fix warning + cleanup 2018-05-16 15:26:21 +02:00
Dalai Felinto
a278a97232 Dynamic length for color arrays 2018-05-16 00:43:24 +02:00
Dalai Felinto
0441110c86 Split dynamic override into its own rna file 2018-05-16 00:29:06 +02:00
Dalai Felinto
612d78712c Merge remote-tracking branch 'origin/blender2.8' into temp-dynamic-overrides 2018-05-15 23:50:02 +02:00
Dalai Felinto
ba1d1a6923 Hard-coded support for arrays, color works 2018-05-14 22:21:34 +02:00
Dalai Felinto
2b92e40e03 UI: Show override mode only for compatible properties 2018-05-14 11:59:40 +02:00
42f6406d4f Dynamic overrides: Add support to retrieve type of property from rna path.
Also added proper value accessor for booleans, so now
Object.display.show_shadows shall work nicely.
2018-05-13 19:14:05 +02:00
17a209ea02 Fix 'add new dynamic override' func, could store NULL rna path string.
Do not generate the dynamic override data in case a valid RNA path
cannot be built.
2018-05-13 19:14:05 +02:00
ddbfe00827 New no-data RNA path sover: add another helper func.
That one is more helpful, allows to directly build the runtime list of
RNA items.
2018-05-13 19:14:05 +02:00
35bdc45bbd Fix missing path callback for new Object.display struct. 2018-05-13 19:14:05 +02:00
70673c6a6b Fix issue w/ recent tool name use
Use the context space type, not the workspace.
Broke setting tools for the first time.
2018-05-13 19:14:05 +02:00
c046771ecb Icons: updated transform icons 2018-05-13 19:14:05 +02:00
1ec126887e UI: fix popovers not properly working with scroll arrows for long menus. 2018-05-13 19:14:05 +02:00
05f8453496 Build deps: avoid ffmpeg external crystalhd library dependency. 2018-05-13 19:14:05 +02:00
df32088b95 Fix typo in previous commit. 2018-05-13 19:14:05 +02:00
5d6950a49a Icons: fix z-sorting
Was depth sorting per mesh.
2018-05-13 19:14:05 +02:00
Julian Eisel
bba8f86558 Fix/workaround crash when appending workspace in edit mode
Linking/appending in edit mode currently isn't supported. For workspaces it
should probably be, but we can look into supporting this later.

For now gray out buttons in "Add Workspace" menu while in edit mode.
2018-05-13 19:14:05 +02:00
Julian Eisel
2d82574494 Fix invisible scroll-bars after file read
Own mistake from 51efeb6834.
2018-05-13 19:14:05 +02:00
2e802e56c5 Icons: optionally use material color
The RGB node is used if it exists,
this is multiplied by the vertex color.
2018-05-13 19:14:05 +02:00
Nick Milios
0b3200cb43 Fix build error with Visual Studio / Windows.
Differential Revision: https://developer.blender.org/D3363
2018-05-13 19:14:05 +02:00
ffee223857 Attempt to make limited resolution of RNA paths possible without any data.
Note that while code is essentially the same with or without a valid
PointerRNA, 'public' API is clearly separated. Existing code should
hence exhibit no change in behaviour.

Also, no-data case is essentially not tested yet.
2018-05-13 17:06:13 +02:00
61dc857877 Merge branch 'blender2.8' into temp-dynamic-overrides 2018-05-13 15:45:01 +02:00
Dalai Felinto
c532c4fc25 Expose root ID* to rna
Note: We should only store root when relevante (e.g., modifiers).
And remove this dyn property when root is deleted in these cases.
2018-05-11 16:07:21 +02:00
Dalai Felinto
7e9d2fd984 ID Type needs to be stored 2018-05-11 16:06:40 +02:00
Dalai Felinto
543bed5b85 Merge remote-tracking branch 'origin/blender2.8' into temp-dynamic-overrides 2018-05-11 10:32:00 +02:00
Dalai Felinto
4b40ed48c2 Implement copy_data for dynamic properties 2018-05-11 10:25:28 +02:00
Dalai Felinto
107a457891 Add multiplication factor
Also tagged a few TODOs in the UI.
2018-05-10 14:00:56 +02:00
Dalai Felinto
8a27c1c8a6 Merge remote-tracking branch 'origin/blender2.8' into temp-dynamic-overrides 2018-05-10 13:34:34 +02:00
Dalai Felinto
b0332b8490 Finish the operator to add overrides
You now can create a new override set, or pick an existent one.
2018-05-10 13:07:28 +02:00
Dalai Felinto
cd52967d1c Set new override set as the active one 2018-05-10 11:44:30 +02:00
Dalai Felinto
1dd9396ced Handle library query for dynamic overrides 2018-05-10 10:45:14 +02:00
Dalai Felinto
e2346f7378 Dynamic Override Property: Mode
ID props won't have these options showing in the UI, but there is no need
to have them stored in the DNA since we need to know the prop type to know
which rna prop to show in the UI.

Also more UI changes.
2018-05-10 00:56:40 +02:00
Dalai Felinto
76c9d4db2e Dynamic Override Property: Remove Operator 2018-05-10 00:20:46 +02:00
Dalai Felinto
a4a5f4b1e5 Merge remote-tracking branch 'origin/blender2.8' into temp-dynamic-overrides 2018-05-09 18:55:38 +02:00
Dalai Felinto
33c3e293be Dynamic Override Properties
TODO:
 * Final UI
 * Operator to delete them.
 * Depsgraph.
 * Copy properties (copy data).
 * Handle arrays (e.g., ob.color).
 * Data path.
 * Create default override set or let user pick existent one.
 * Get name from data path (rna).
 * Get icon.
 * Set different override_modes based on property type.

Done together with Bastien Montagne.
2018-05-09 18:55:03 +02:00
Dalai Felinto
5978102ec5 Merge remote-tracking branch 'origin/blender2.8' into temp-dynamic-overrides 2018-05-09 16:18:24 +02:00
Dalai Felinto
fc54b5034a Merge remote-tracking branch 'origin/blender2.8' into temp-dynamic-overrides 2018-05-09 15:58:38 +02:00
Dalai Felinto
7f808eb601 No need to store the name of the Dynamic Properties 2018-05-09 09:51:47 +02:00
Dalai Felinto
189b31c937 View Layer overrides
TODO:
* Properties (all)

Notes:
* UI settings, stored per scene so it does not change based on view layer
* Link collection menu can leak memory (like Move to Collection).

The design for this task is: T54792
2018-05-08 20:10:21 +02:00
1913 changed files with 62511 additions and 47125 deletions

44
.editorconfig Normal file
View File

@@ -0,0 +1,44 @@
# C/C++
[*.{c,cc,h,hh,inl,glsl}]
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
indent_style = tab
indent_size = 4
max_line_length = 120
# CMake & Text
[*.{cmake,txt}]
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
indent_style = tab
indent_size = 4
max_line_length = 120
# Python
[*.py]
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
indent_style = space
indent_size = 4
max_line_length = 120
# Shell
[*.sh]
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
indent_style = tab
indent_size = 4
max_line_length = 120
# reStructuredText
[*.rst]
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
indent_style = space
indent_size = 3
max_line_length = 120

View File

@@ -196,7 +196,7 @@ mark_as_advanced(WITH_BLENDER)
option(WITH_INTERNATIONAL "Enable I18N (International fonts and text)" ON)
option(WITH_PYTHON "Enable Embedded Python API (only disable for development)" ON)
option(WITH_PYTHON_SECURITY "Disables execution of scripts within blend files by default" ON)
option(WITH_PYTHON_SECURITY "Disables execution of scripts within blend files by default" ON)
mark_as_advanced(WITH_PYTHON) # dont want people disabling this unless they really know what they are doing.
mark_as_advanced(WITH_PYTHON_SECURITY) # some distributions see this as a security issue, rather than have them patch it, make a build option.
@@ -227,8 +227,6 @@ option(WITH_SYSTEM_BULLET "Use the systems bullet library (currently unsupported
mark_as_advanced(WITH_SYSTEM_BULLET)
option(WITH_OPENCOLORIO "Enable OpenColorIO color management" ${_init_OPENCOLORIO})
option(WITH_CLAY_ENGINE "Enable Clay engine" ON)
# Compositor
option(WITH_COMPOSITOR "Enable the tile based nodal compositor" ON)
@@ -460,11 +458,13 @@ endif()
# OpenGL
option(WITH_OPENGL "When off limits visibility of the opengl headers to just bf_gpu and gawain (temporary option for development purposes)" ON)
option(WITH_GLEW_ES "Switches to experimental copy of GLEW that has support for OpenGL ES. (temporary option for development purposes)" OFF)
option(WITH_GL_EGL "Use the EGL OpenGL system library instead of the platform specific OpenGL system library (CGL, glX, or WGL)" OFF)
option(WITH_GL_PROFILE_ES20 "Support using OpenGL ES 2.0. (thru either EGL or the AGL/WGL/XGL 'es20' profile)" OFF)
mark_as_advanced(
WITH_OPENGL
WITH_GLEW_ES
WITH_GL_EGL
WITH_GL_PROFILE_ES20
@@ -545,10 +545,11 @@ if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
find_library(COMPILER_ASAN_LIBRARY asan ${CMAKE_C_IMPLICIT_LINK_DIRECTORIES})
else()
find_library( COMPILER_ASAN_LIBRARY NAMES clang_rt.asan-x86_64
PATHS [HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\LLVM\\LLVM;]/lib/clang/7.0.0/lib/windows
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\LLVM\\LLVM;]/lib/clang/6.0.0/lib/windows
)
endif()
PATHS
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\LLVM\\LLVM;]/lib/clang/7.0.0/lib/windows
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\LLVM\\LLVM;]/lib/clang/6.0.0/lib/windows
)
endif()
mark_as_advanced(COMPILER_ASAN_LIBRARY)
endif()
endif()
@@ -805,7 +806,8 @@ set(C_WARNINGS)
set(CXX_WARNINGS)
# for gcc -Wno-blah-blah
set(CC_REMOVE_STRICT_FLAGS)
set(C_REMOVE_STRICT_FLAGS)
set(CXX_REMOVE_STRICT_FLAGS)
# libraries to link the binary with passed to target_link_libraries()
# known as LLIBS to scons
@@ -817,18 +819,20 @@ set(PLATFORM_LINKLIBS "")
set(PLATFORM_LINKFLAGS "")
set(PLATFORM_LINKFLAGS_DEBUG "")
if(WITH_COMPILER_ASAN)
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${COMPILER_ASAN_CFLAGS}")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} ${COMPILER_ASAN_CFLAGS}")
if (NOT CMAKE_BUILD_TYPE MATCHES "Release")
if(WITH_COMPILER_ASAN)
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${COMPILER_ASAN_CFLAGS}")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} ${COMPILER_ASAN_CFLAGS}")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${COMPILER_ASAN_CXXFLAGS}")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} ${COMPILER_ASAN_CXXFLAGS}")
if(MSVC)
set(COMPILER_ASAN_LINKER_FLAGS "/FUNCTIONPADMIN:6")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${COMPILER_ASAN_CXXFLAGS}")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} ${COMPILER_ASAN_CXXFLAGS}")
if(MSVC)
set(COMPILER_ASAN_LINKER_FLAGS "/FUNCTIONPADMIN:6")
endif()
set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS};${COMPILER_ASAN_LIBRARY}")
set(PLATFORM_LINKFLAGS "${COMPILER_ASAN_LIBRARY} ${COMPILER_ASAN_LINKER_FLAGS}")
set(PLATFORM_LINKFLAGS_DEBUG "${COMPILER_ASAN_LIBRARY} ${COMPILER_ASAN_LINKER_FLAGS}")
endif()
set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS};${COMPILER_ASAN_LIBRARY}")
set(PLATFORM_LINKFLAGS "${COMPILER_ASAN_LIBRARY} ${COMPILER_ASAN_LINKER_FLAGS}")
set(PLATFORM_LINKFLAGS_DEBUG "${COMPILER_ASAN_LIBRARY} ${COMPILER_ASAN_LINKER_FLAGS}")
endif()
#-----------------------------------------------------------------------------
@@ -1002,6 +1006,10 @@ endif()
find_package(OpenGL)
blender_include_dirs_sys("${OPENGL_INCLUDE_DIR}")
if(WITH_OPENGL)
add_definitions(-DWITH_OPENGL)
endif()
if(WITH_SYSTEM_GLES)
find_package_wrapper(OpenGLES)
endif()
@@ -1204,7 +1212,7 @@ else()
list(APPEND GL_DEFINITIONS -DGLEW_STATIC)
# This won't affect the non-experimental glew library,
# This won't affect the non-experimental glew library,
# but is used for conditional compilation elsewhere.
list(APPEND GL_DEFINITIONS -DGLEW_NO_ES)
@@ -1408,16 +1416,22 @@ if(CMAKE_COMPILER_IS_GNUCC)
endif()
# flags to undo strict flags
ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_DEPRECATED_DECLARATIONS -Wno-deprecated-declarations)
ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_PARAMETER -Wno-unused-parameter)
ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_FUNCTION -Wno-unused-function)
ADD_CHECK_C_COMPILER_FLAG(C_REMOVE_STRICT_FLAGS C_WARN_NO_DEPRECATED_DECLARATIONS -Wno-deprecated-declarations)
ADD_CHECK_C_COMPILER_FLAG(C_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_PARAMETER -Wno-unused-parameter)
ADD_CHECK_C_COMPILER_FLAG(C_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_FUNCTION -Wno-unused-function)
ADD_CHECK_C_COMPILER_FLAG(C_REMOVE_STRICT_FLAGS C_WARN_NO_TYPE_LIMITS -Wno-type-limits)
ADD_CHECK_C_COMPILER_FLAG(C_REMOVE_STRICT_FLAGS C_WARN_NO_INT_IN_BOOL_CONTEXT -Wno-int-in-bool-context)
ADD_CHECK_C_COMPILER_FLAG(C_REMOVE_STRICT_FLAGS C_WARN_NO_FORMAT -Wno-format)
ADD_CHECK_C_COMPILER_FLAG(C_REMOVE_STRICT_FLAGS C_WARN_NO_SWITCH -Wno-switch)
ADD_CHECK_CXX_COMPILER_FLAG(CXX_REMOVE_STRICT_FLAGS CXX_WARN_NO_CLASS_MEMACCESS -Wno-class-memaccess)
if(CMAKE_COMPILER_IS_GNUCC AND (NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "7.0"))
ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_IMPLICIT_FALLTHROUGH -Wno-implicit-fallthrough)
ADD_CHECK_C_COMPILER_FLAG(C_REMOVE_STRICT_FLAGS C_WARN_NO_IMPLICIT_FALLTHROUGH -Wno-implicit-fallthrough)
endif()
if(NOT APPLE)
ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_ERROR_UNUSED_BUT_SET_VARIABLE -Wno-error=unused-but-set-variable)
ADD_CHECK_C_COMPILER_FLAG(C_REMOVE_STRICT_FLAGS C_WARN_NO_ERROR_UNUSED_BUT_SET_VARIABLE -Wno-error=unused-but-set-variable)
endif()
elseif(CMAKE_C_COMPILER_ID MATCHES "Clang")
@@ -1446,23 +1460,23 @@ elseif(CMAKE_C_COMPILER_ID MATCHES "Clang")
# ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNUSED_MACROS -Wunused-macros)
# flags to undo strict flags
ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_PARAMETER -Wno-unused-parameter)
ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_MACROS -Wno-unused-macros)
ADD_CHECK_C_COMPILER_FLAG(C_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_PARAMETER -Wno-unused-parameter)
ADD_CHECK_C_COMPILER_FLAG(C_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_MACROS -Wno-unused-macros)
ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_MISSING_VARIABLE_DECLARATIONS -Wno-missing-variable-declarations)
ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_INCOMPAT_PTR_DISCARD_QUAL -Wno-incompatible-pointer-types-discards-qualifiers)
ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_FUNCTION -Wno-unused-function)
ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_INT_TO_VOID_POINTER_CAST -Wno-int-to-void-pointer-cast)
ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_MISSING_PROTOTYPES -Wno-missing-prototypes)
ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_DUPLICATE_ENUM -Wno-duplicate-enum)
ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNDEF -Wno-undef)
ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_MISSING_NORETURN -Wno-missing-noreturn)
ADD_CHECK_C_COMPILER_FLAG(C_REMOVE_STRICT_FLAGS C_WARN_NO_MISSING_VARIABLE_DECLARATIONS -Wno-missing-variable-declarations)
ADD_CHECK_C_COMPILER_FLAG(C_REMOVE_STRICT_FLAGS C_WARN_NO_INCOMPAT_PTR_DISCARD_QUAL -Wno-incompatible-pointer-types-discards-qualifiers)
ADD_CHECK_C_COMPILER_FLAG(C_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_FUNCTION -Wno-unused-function)
ADD_CHECK_C_COMPILER_FLAG(C_REMOVE_STRICT_FLAGS C_WARN_NO_INT_TO_VOID_POINTER_CAST -Wno-int-to-void-pointer-cast)
ADD_CHECK_C_COMPILER_FLAG(C_REMOVE_STRICT_FLAGS C_WARN_NO_MISSING_PROTOTYPES -Wno-missing-prototypes)
ADD_CHECK_C_COMPILER_FLAG(C_REMOVE_STRICT_FLAGS C_WARN_NO_DUPLICATE_ENUM -Wno-duplicate-enum)
ADD_CHECK_C_COMPILER_FLAG(C_REMOVE_STRICT_FLAGS C_WARN_NO_UNDEF -Wno-undef)
ADD_CHECK_C_COMPILER_FLAG(C_REMOVE_STRICT_FLAGS C_WARN_NO_MISSING_NORETURN -Wno-missing-noreturn)
ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_UNUSED_PRIVATE_FIELD -Wno-unused-private-field)
ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_CXX11_NARROWING -Wno-c++11-narrowing)
ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_NON_VIRTUAL_DTOR -Wno-non-virtual-dtor)
ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_UNUSED_MACROS -Wno-unused-macros)
ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_REORDER -Wno-reorder)
ADD_CHECK_CXX_COMPILER_FLAG(CXX_REMOVE_STRICT_FLAGS CXX_WARN_NO_UNUSED_PRIVATE_FIELD -Wno-unused-private-field)
ADD_CHECK_CXX_COMPILER_FLAG(CXX_REMOVE_STRICT_FLAGS CXX_WARN_NO_CXX11_NARROWING -Wno-c++11-narrowing)
ADD_CHECK_CXX_COMPILER_FLAG(CXX_REMOVE_STRICT_FLAGS CXX_WARN_NO_NON_VIRTUAL_DTOR -Wno-non-virtual-dtor)
ADD_CHECK_CXX_COMPILER_FLAG(CXX_REMOVE_STRICT_FLAGS CXX_WARN_NO_UNUSED_MACROS -Wno-unused-macros)
ADD_CHECK_CXX_COMPILER_FLAG(CXX_REMOVE_STRICT_FLAGS CXX_WARN_NO_REORDER -Wno-reorder)
elseif(CMAKE_C_COMPILER_ID MATCHES "Intel")
@@ -1494,7 +1508,7 @@ elseif(CMAKE_C_COMPILER_ID MATCHES "MSVC")
"/wd4267" # conversion from 'size_t' to 'type', possible loss of data
"/wd4305" # truncation from 'type1' to 'type2'
"/wd4800" # forcing value to bool 'true' or 'false'
"/wd4828" # The file contains a character that is illegal
"/wd4828" # The file contains a character that is illegal
# errors:
"/we4013" # 'function' undefined; assuming extern returning int
"/we4133" # incompatible pointer types

View File

@@ -33,8 +33,8 @@ set(NUMPY_POSTFIX)
if(WIN32)
set(NUMPY_INSTALL
${CMAKE_COMMAND} -E copy_directory "${BUILD_DIR}/python/src/external_python/run/lib/site-packages/numpy/core/include/numpy" "${LIBDIR}/python/include/python${PYTHON_SHORT_VERSION}/numpy" &&
${CMAKE_COMMAND} -E chdir "${BUILD_DIR}/numpy/src/external_numpy/build/lib.${PYTHON_ARCH2}-${PYTHON_SHORT_VERSION}${NUMPY_DIR_POSTFIX}"
${CMAKE_COMMAND} -E tar "cfvz" "${LIBDIR}/python${PYTHON_SHORT_VERSION_NO_DOTS}_numpy_${NUMPY_SHORT_VERSION}${NUMPY_ARCHIVE_POSTFIX}.tar.gz" "."
${CMAKE_COMMAND} -E chdir "${BUILD_DIR}/numpy/src/external_numpy/build/lib.${PYTHON_ARCH2}-${PYTHON_SHORT_VERSION}${NUMPY_DIR_POSTFIX}"
${CMAKE_COMMAND} -E tar "cfvz" "${LIBDIR}/python${PYTHON_SHORT_VERSION_NO_DOTS}_numpy_${NUMPY_SHORT_VERSION}${NUMPY_ARCHIVE_POSTFIX}.tar.gz" "."
)
set(NUMPY_PATCH ${PATCH_CMD} --verbose -p 1 -N -d ${BUILD_DIR}/numpy/src/external_numpy < ${PATCH_DIR}/numpy.diff )
else()

View File

@@ -39,5 +39,6 @@ if(BUILD_MODE STREQUAL Release)
PREFIX ${BUILD_DIR}/openal
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/openal ${DEFAULT_CMAKE_FLAGS} ${OPENAL_EXTRA_ARGS}
INSTALL_DIR ${LIBDIR}/openal
PATCH_COMMAND ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/openal/src/external_openal < ${PATCH_DIR}/openal.diff
)
endif()

View File

@@ -46,7 +46,7 @@ if(MSVC)
DOWNLOAD_DIR ${DOWNLOAD_DIR}
URL_HASH SHA256=${OPENJPEG_HASH}
PREFIX ${BUILD_DIR}/openjpeg_msvc
CMAKE_ARGS ${OPENJPEG_EXTRA_ARGS} -DCMAKE_INSTALL_PREFIX=${LIBDIR}/openjpeg_msvc -DBUILD_SHARED_LIBS=Off -DBUILD_THIRDPARTY=OFF
CMAKE_ARGS ${OPENJPEG_EXTRA_ARGS} -DCMAKE_INSTALL_PREFIX=${LIBDIR}/openjpeg_msvc -DBUILD_SHARED_LIBS=Off -DBUILD_THIRDPARTY=OFF
INSTALL_DIR ${LIBDIR}/openjpeg_msvc
)
if(BUILD_MODE STREQUAL Release)

View File

@@ -56,24 +56,27 @@ if(WIN32)
# For OIIO and OSL
set(COMMON_DEFINES /DPSAPI_VERSION=1 /DOIIO_STATIC_BUILD /DTINYFORMAT_ALLOW_WCHAR_STRINGS)
# TODO FIXME highly MSVC specific
if(WITH_OPTIMIZED_DEBUG)
set(BLENDER_CMAKE_C_FLAGS_DEBUG "/MTd /O2 /Ob2 /DNDEBUG /DPSAPI_VERSION=1 /DOIIO_STATIC_BUILD /DTINYFORMAT_ALLOW_WCHAR_STRINGS")
else()
set(BLENDER_CMAKE_C_FLAGS_DEBUG "/MTd /Zi /Ob0 /Od /RTC1 /D_DEBUG /DPSAPI_VERSION=1 /DOIIO_STATIC_BUILD /DTINYFORMAT_ALLOW_WCHAR_STRINGS")
if(MSVC_VERSION GREATER 1909)
set(COMMON_MSVC_FLAGS "/Wv:18") #some deps with warnings as error aren't quite ready for dealing with the new 2017 warnings.
endif()
set(BLENDER_CMAKE_C_FLAGS_MINSIZEREL "/MT /O1 /Ob1 /D NDEBUG /DPSAPI_VERSION=1 /DOIIO_STATIC_BUILD /DTINYFORMAT_ALLOW_WCHAR_STRINGS")
set(BLENDER_CMAKE_C_FLAGS_RELEASE "/MT /O2 /Ob2 /DNDEBUG /DPSAPI_VERSION=1 /DOIIO_STATIC_BUILD /DTINYFORMAT_ALLOW_WCHAR_STRINGS")
set(BLENDER_CMAKE_C_FLAGS_RELWITHDEBINFO "/MT /Zi /O2 /Ob1 /D NDEBUG /DPSAPI_VERSION=1 /DOIIO_STATIC_BUILD /DTINYFORMAT_ALLOW_WCHAR_STRINGS")
if(WITH_OPTIMIZED_DEBUG)
set(BLENDER_CMAKE_CXX_FLAGS_DEBUG "/MTd /O2 /Ob2 /D NDEBUG /D PLATFORM_WINDOWS /DPSAPI_VERSION=1 /DOIIO_STATIC_BUILD /DTINYFORMAT_ALLOW_WCHAR_STRINGS")
set(BLENDER_CMAKE_C_FLAGS_DEBUG "/MTd ${COMMON_MSVC_FLAGS} /O2 /Ob2 /DNDEBUG /DPSAPI_VERSION=1 /DOIIO_STATIC_BUILD /DTINYFORMAT_ALLOW_WCHAR_STRINGS")
else()
set(BLENDER_CMAKE_CXX_FLAGS_DEBUG "/D_DEBUG /D PLATFORM_WINDOWS /MTd /Zi /Ob0 /Od /RTC1 /DPSAPI_VERSION=1 /DOIIO_STATIC_BUILD /DTINYFORMAT_ALLOW_WCHAR_STRINGS")
set(BLENDER_CMAKE_C_FLAGS_DEBUG "/MTd ${COMMON_MSVC_FLAGS} /Zi /Ob0 /Od /RTC1 /D_DEBUG /DPSAPI_VERSION=1 /DOIIO_STATIC_BUILD /DTINYFORMAT_ALLOW_WCHAR_STRINGS")
endif()
set(BLENDER_CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O1 /Ob1 /D NDEBUG /D PLATFORM_WINDOWS /DPSAPI_VERSION=1 /DOIIO_STATIC_BUILD /DTINYFORMAT_ALLOW_WCHAR_STRINGS")
set(BLENDER_CMAKE_CXX_FLAGS_RELEASE "/MT /O2 /Ob2 /D NDEBUG /D PLATFORM_WINDOWS /DPSAPI_VERSION=1 /DOIIO_STATIC_BUILD /DTINYFORMAT_ALLOW_WCHAR_STRINGS")
set(BLENDER_CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MT /Zi /O2 /Ob1 /D NDEBUG /D PLATFORM_WINDOWS /DPSAPI_VERSION=1 /DOIIO_STATIC_BUILD /DTINYFORMAT_ALLOW_WCHAR_STRINGS")
set(BLENDER_CMAKE_C_FLAGS_MINSIZEREL "/MT ${COMMON_MSVC_FLAGS} /O1 /Ob1 /D NDEBUG /DPSAPI_VERSION=1 /DOIIO_STATIC_BUILD /DTINYFORMAT_ALLOW_WCHAR_STRINGS")
set(BLENDER_CMAKE_C_FLAGS_RELEASE "/MT ${COMMON_MSVC_FLAGS} /O2 /Ob2 /DNDEBUG /DPSAPI_VERSION=1 /DOIIO_STATIC_BUILD /DTINYFORMAT_ALLOW_WCHAR_STRINGS")
set(BLENDER_CMAKE_C_FLAGS_RELWITHDEBINFO "/MT ${COMMON_MSVC_FLAGS} /Zi /O2 /Ob1 /D NDEBUG /DPSAPI_VERSION=1 /DOIIO_STATIC_BUILD /DTINYFORMAT_ALLOW_WCHAR_STRINGS")
if(WITH_OPTIMIZED_DEBUG)
set(BLENDER_CMAKE_CXX_FLAGS_DEBUG "/MTd ${COMMON_MSVC_FLAGS} /O2 /Ob2 /D NDEBUG /D PLATFORM_WINDOWS /DPSAPI_VERSION=1 /DOIIO_STATIC_BUILD /DTINYFORMAT_ALLOW_WCHAR_STRINGS")
else()
set(BLENDER_CMAKE_CXX_FLAGS_DEBUG "/D_DEBUG /D PLATFORM_WINDOWS /MTd ${COMMON_MSVC_FLAGS} /Zi /Ob0 /Od /RTC1 /DPSAPI_VERSION=1 /DOIIO_STATIC_BUILD /DTINYFORMAT_ALLOW_WCHAR_STRINGS")
endif()
set(BLENDER_CMAKE_CXX_FLAGS_MINSIZEREL "/MT /${COMMON_MSVC_FLAGS} /O1 /Ob1 /D NDEBUG /D PLATFORM_WINDOWS /DPSAPI_VERSION=1 /DOIIO_STATIC_BUILD /DTINYFORMAT_ALLOW_WCHAR_STRINGS")
set(BLENDER_CMAKE_CXX_FLAGS_RELEASE "/MT ${COMMON_MSVC_FLAGS} /O2 /Ob2 /D NDEBUG /D PLATFORM_WINDOWS /DPSAPI_VERSION=1 /DOIIO_STATIC_BUILD /DTINYFORMAT_ALLOW_WCHAR_STRINGS")
set(BLENDER_CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MT ${COMMON_MSVC_FLAGS} /Zi /O2 /Ob1 /D NDEBUG /D PLATFORM_WINDOWS /DPSAPI_VERSION=1 /DOIIO_STATIC_BUILD /DTINYFORMAT_ALLOW_WCHAR_STRINGS")
set(PLATFORM_FLAGS)
set(PLATFORM_CXX_FLAGS)

View File

@@ -25,7 +25,7 @@ ExternalProject_Add(external_x264
DOWNLOAD_DIR ${DOWNLOAD_DIR}
URL_HASH SHA256=${X264_HASH}
PREFIX ${BUILD_DIR}/x264
CONFIGURE_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/x264/src/external_x264/ && ${CONFIGURE_COMMAND} --prefix=${LIBDIR}/x264
CONFIGURE_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/x264/src/external_x264/ && ${CONFIGURE_COMMAND} --prefix=${LIBDIR}/x264
--enable-static
--enable-pic
--disable-lavf

View File

@@ -75,7 +75,7 @@ macro(PREFIX_FIND_LIB prefix libname libpath_var liblist_var cachelist_var)
# Handle new library names for OpenEXR 2.1 build via cmake
string(REPLACE "." "_" _ILMBASE_VERSION ${ILMBASE_VERSION})
string(SUBSTRING ${_ILMBASE_VERSION} 0 3 _ILMBASE_VERSION )
find_library(${tmp_prefix}_LIBRARY_RELEASE
NAMES ${libname} ${libname}-${_ILMBASE_VERSION}
HINTS ${${libpath_var}}
@@ -177,7 +177,7 @@ if(ILMBASE_INCLUDE_DIR)
"\\1" XYZ ${ILMBASE_BUILD_SPECIFICATION})
set("ILMBASE_VERSION" ${XYZ} CACHE STRING "Version of ILMBase lib")
else()
# Old versions (before 2.0?) do not have any version string, just assuming 2.0 should be fine though.
# Old versions (before 2.0?) do not have any version string, just assuming 2.0 should be fine though.
message(WARNING "Could not determine ILMBase library version, assuming 2.0.")
set("ILMBASE_VERSION" "2.0" CACHE STRING "Version of ILMBase lib")
endif()

View File

@@ -175,7 +175,7 @@ if(OPENEXR_INCLUDE_DIR)
"\\1" XYZ ${OPENEXR_BUILD_SPECIFICATION})
set("OPENEXR_VERSION" ${XYZ} CACHE STRING "Version of OpenEXR lib")
else()
# Old versions (before 2.0?) do not have any version string, just assuming 2.0 should be fine though.
# Old versions (before 2.0?) do not have any version string, just assuming 2.0 should be fine though.
message(WARNING "Could not determine ILMBase library version, assuming 2.0.")
set("OPENEXR_VERSION" "2.0" CACHE STRING "Version of OpenEXR lib")
endif()

View File

@@ -6,7 +6,7 @@
# basename_LIBRARY_RELEASE is defined, basename_LIBRARY, basename_LIBRARY_DEBUG,
# and basename_LIBRARY_RELEASE will be set to the release value. If only
# basename_LIBRARY_DEBUG is defined, then basename_LIBRARY,
# basename_LIBRARY_DEBUG and basename_LIBRARY_RELEASE will take the debug value.
# basename_LIBRARY_DEBUG and basename_LIBRARY_RELEASE will take the debug value.
#
# If the generator supports configuration types, then basename_LIBRARY and
# basename_LIBRARIES will be set with debug and optimized flags specifying the
@@ -53,10 +53,10 @@ macro( select_library_configurations basename )
# if the generator supports configuration types or CMAKE_BUILD_TYPE
# is set, then set optimized and debug options.
if( CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE )
set( ${basename}_LIBRARY
set( ${basename}_LIBRARY
optimized ${${basename}_LIBRARY_RELEASE}
debug ${${basename}_LIBRARY_DEBUG} )
set( ${basename}_LIBRARIES
set( ${basename}_LIBRARIES
optimized ${${basename}_LIBRARY_RELEASE}
debug ${${basename}_LIBRARY_DEBUG} )
else( CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE )
@@ -67,14 +67,14 @@ macro( select_library_configurations basename )
endif( CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE )
endif( ${basename}_LIBRARY_DEBUG AND ${basename}_LIBRARY_RELEASE )
set( ${basename}_LIBRARY ${${basename}_LIBRARY} CACHE FILEPATH
set( ${basename}_LIBRARY ${${basename}_LIBRARY} CACHE FILEPATH
"The ${basename} library" )
if( ${basename}_LIBRARY )
set( ${basename}_FOUND TRUE )
endif( ${basename}_LIBRARY )
mark_as_advanced( ${basename}_LIBRARY
mark_as_advanced( ${basename}_LIBRARY
${basename}_LIBRARY_RELEASE
${basename}_LIBRARY_DEBUG
)

View File

@@ -0,0 +1,13 @@
diff -Naur external_openal_original/CMakeLists.txt external_openal/CMakeLists.txt
--- external_openal_original/CMakeLists.txt 2016-01-24 20:12:39 -0700
+++ external_openal/CMakeLists.txt 2018-06-02 12:16:52 -0600
@@ -885,7 +885,8 @@
OPTION(ALSOFT_REQUIRE_MMDEVAPI "Require MMDevApi backend" OFF)
IF(HAVE_WINDOWS_H)
# Check MMSystem backend
- CHECK_INCLUDE_FILES("windows.h;mmsystem.h" HAVE_MMSYSTEM_H -D_WIN32_WINNT=0x0502)
+ set(CMAKE_REQUIRED_FLAGS "-D_WIN32_WINNT=0x0502")
+ CHECK_INCLUDE_FILES("windows.h;mmsystem.h" HAVE_MMSYSTEM_H)
IF(HAVE_MMSYSTEM_H)
CHECK_SHARED_FUNCTION_EXISTS(waveOutOpen "windows.h;mmsystem.h" winmm "" HAVE_LIBWINMM)
IF(HAVE_LIBWINMM)

View File

@@ -10,8 +10,8 @@ diff -Naur osl/src/external_osl/src/cmake/flexbison.cmake osl_bak/src/external_o
MAIN_DEPENDENCY ${flexsrc}
DEPENDS ${${compiler_headers}}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} )
--- a/src/include/OSL/oslconfig.h 2016-10-31 16:48:19 -0600
+++ b/src/include/OSL/oslconfig.h 2018-05-27 11:18:08 -0600
--- osl/src/external_osl/src/include/OSL/oslconfig.h 2016-10-31 16:48:19 -0600
+++ osl/src/external_osl/src/include/OSL/oslconfig.h 2018-05-27 11:18:08 -0600
@@ -44,12 +44,18 @@
// same if another packages is compiling against OSL and using these headers
// (OSL may be C++11 but the client package may be older, or vice versa --

View File

@@ -14,10 +14,18 @@ if NOT "%1" == "" (
set BuildDir=VS14
goto par2
)
if "%1" == "2017" (
echo "Building for VS2017"
set VSVER=15.0
set VSVER_SHORT=15
set BuildDir=VS15
goto par2
)
)
:usage
Echo Usage build_deps 2013/2015 x64/x86
Echo Usage build_deps 2013/2015/2017 x64/x86
goto exit
:par2
if NOT "%2" == "" (
@@ -31,6 +39,10 @@ if NOT "%2" == "" (
if "%1" == "2015" (
set CMAKE_BUILDER=Visual Studio 14 2015
)
if "%1" == "2017" (
set CMAKE_BUILDER=Visual Studio 15 2017
)
goto start
)
if "%2" == "x64" (
@@ -43,6 +55,10 @@ if NOT "%2" == "" (
if "%1" == "2015" (
set CMAKE_BUILDER=Visual Studio 14 2015 Win64
)
if "%1" == "2017" (
set CMAKE_BUILDER=Visual Studio 15 2017 Win64
)
goto start
)
)

View File

@@ -51,7 +51,7 @@ FIND_LIBRARY(ALEMBIC_LIBRARY
lib64 lib lib/static
)
# handle the QUIETLY and REQUIRED arguments and set ALEMBIC_FOUND to TRUE if
# handle the QUIETLY and REQUIRED arguments and set ALEMBIC_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(ALEMBIC DEFAULT_MSG ALEMBIC_LIBRARY ALEMBIC_INCLUDE_DIR)

View File

@@ -40,7 +40,7 @@ FIND_PATH(EIGEN3_INCLUDE_DIR
include/eigen3
)
# handle the QUIETLY and REQUIRED arguments and set EIGEN3_FOUND to TRUE if
# handle the QUIETLY and REQUIRED arguments and set EIGEN3_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Eigen3 DEFAULT_MSG

View File

@@ -52,7 +52,7 @@ FIND_LIBRARY(FFTW3_LIBRARY
lib64 lib
)
# handle the QUIETLY and REQUIRED arguments and set FFTW3_FOUND to TRUE if
# handle the QUIETLY and REQUIRED arguments and set FFTW3_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Fftw3 DEFAULT_MSG

View File

@@ -49,7 +49,7 @@ FIND_LIBRARY(GLEW_LIBRARY
lib64 lib
)
# handle the QUIETLY and REQUIRED arguments and set GLEW_FOUND to TRUE if
# handle the QUIETLY and REQUIRED arguments and set GLEW_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Glew DEFAULT_MSG

View File

@@ -115,7 +115,7 @@ if(Boost_USE_STATIC_LIBS)
set(CMAKE_FIND_LIBRARY_SUFFIXES ${_icu_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES})
endif()
# handle the QUIETLY and REQUIRED arguments and set ICU_FOUND to TRUE if
# handle the QUIETLY and REQUIRED arguments and set ICU_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Icu DEFAULT_MSG

View File

@@ -52,7 +52,7 @@ FIND_LIBRARY(JACK_LIBRARY
lib64 lib
)
# handle the QUIETLY and REQUIRED arguments and set JACK_FOUND to TRUE if
# handle the QUIETLY and REQUIRED arguments and set JACK_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Jack DEFAULT_MSG

View File

@@ -53,7 +53,7 @@ FIND_LIBRARY(JEMALLOC_LIBRARY
lib64 lib
)
# handle the QUIETLY and REQUIRED arguments and set JEMALLOC_FOUND to TRUE if
# handle the QUIETLY and REQUIRED arguments and set JEMALLOC_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(JeMalloc DEFAULT_MSG

View File

@@ -50,7 +50,7 @@ FIND_LIBRARY(LZO_LIBRARY
lib64 lib
)
# handle the QUIETLY and REQUIRED arguments and set LZO_FOUND to TRUE if
# handle the QUIETLY and REQUIRED arguments and set LZO_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(LZO DEFAULT_MSG

View File

@@ -1,7 +1,7 @@
# - Find OpenCOLLADA library
# Find the native OpenCOLLADA includes and library
# This module defines
# OPENCOLLADA_INCLUDE_DIRS, where to find COLLADABaseUtils/ and
# OPENCOLLADA_INCLUDE_DIRS, where to find COLLADABaseUtils/ and
# COLLADAFramework/, Set when OPENCOLLADA_INCLUDE_DIR is found.
# OPENCOLLADA_LIBRARIES, libraries to link against to use OpenCOLLADA.
# OPENCOLLADA_ROOT_DIR, The base directory to search for OpenCOLLADA.
@@ -129,7 +129,7 @@ FOREACH(COMPONENT ${_opencollada_FIND_STATIC_COMPONENTS})
ENDFOREACH()
# handle the QUIETLY and REQUIRED arguments and set OPENCOLLADA_FOUND to TRUE if
# handle the QUIETLY and REQUIRED arguments and set OPENCOLLADA_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenCOLLADA DEFAULT_MSG

View File

@@ -68,7 +68,7 @@ FOREACH(COMPONENT ${_opencolorio_FIND_COMPONENTS})
ENDFOREACH()
# handle the QUIETLY and REQUIRED arguments and set OPENCOLORIO_FOUND to TRUE if
# handle the QUIETLY and REQUIRED arguments and set OPENCOLORIO_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenColorIO DEFAULT_MSG

View File

@@ -106,7 +106,7 @@ FOREACH(COMPONENT ${_openexr_FIND_COMPONENTS})
FIND_LIBRARY(OPENEXR_${UPPERCOMPONENT}_LIBRARY
NAMES
${COMPONENT}-${_openexr_libs_ver} ${COMPONENT}
${COMPONENT}-${_openexr_libs_ver} ${COMPONENT}
HINTS
${_openexr_SEARCH_DIRS}
PATH_SUFFIXES
@@ -117,7 +117,7 @@ ENDFOREACH()
UNSET(_openexr_libs_ver)
# handle the QUIETLY and REQUIRED arguments and set OPENEXR_FOUND to TRUE if
# handle the QUIETLY and REQUIRED arguments and set OPENEXR_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenEXR DEFAULT_MSG

View File

@@ -64,7 +64,7 @@ FIND_FILE(OPENIMAGEIO_IDIFF
bin
)
# handle the QUIETLY and REQUIRED arguments and set OPENIMAGEIO_FOUND to TRUE if
# handle the QUIETLY and REQUIRED arguments and set OPENIMAGEIO_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenImageIO DEFAULT_MSG

View File

@@ -53,7 +53,7 @@ FIND_LIBRARY(OPENJPEG_LIBRARY
lib64 lib
)
# handle the QUIETLY and REQUIRED arguments and set OPENJPEG_FOUND to TRUE if
# handle the QUIETLY and REQUIRED arguments and set OPENJPEG_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenJPEG DEFAULT_MSG

View File

@@ -50,7 +50,7 @@ FIND_LIBRARY(PCRE_LIBRARY
lib64 lib
)
# handle the QUIETLY and REQUIRED arguments and set PCRE_FOUND to TRUE if
# handle the QUIETLY and REQUIRED arguments and set PCRE_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(PCRE DEFAULT_MSG

View File

@@ -53,7 +53,7 @@ FIND_LIBRARY(PUGIXML_LIBRARY
lib64 lib
)
# handle the QUIETLY and REQUIRED arguments and set PUGIXML_FOUND to TRUE if
# handle the QUIETLY and REQUIRED arguments and set PUGIXML_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(PUGIXML DEFAULT_MSG

View File

@@ -175,7 +175,7 @@ UNSET(_IS_INC_CONF_DEF)
UNSET(_IS_LIB_DEF)
UNSET(_IS_LIB_PATH_DEF)
# handle the QUIETLY and REQUIRED arguments and SET PYTHONLIBSUNIX_FOUND to TRUE IF
# handle the QUIETLY and REQUIRED arguments and SET PYTHONLIBSUNIX_FOUND to TRUE IF
# all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(PythonLibsUnix DEFAULT_MSG

View File

@@ -50,7 +50,7 @@ FIND_LIBRARY(LIBSNDFILE_LIBRARY
lib64 lib
)
# handle the QUIETLY and REQUIRED arguments and set LIBSNDFILE_FOUND to TRUE if
# handle the QUIETLY and REQUIRED arguments and set LIBSNDFILE_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SndFile DEFAULT_MSG

View File

@@ -52,7 +52,7 @@ FIND_LIBRARY(SPACENAV_LIBRARY
lib64 lib
)
# handle the QUIETLY and REQUIRED arguments and set SPACENAV_FOUND to TRUE if
# handle the QUIETLY and REQUIRED arguments and set SPACENAV_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Spacenav DEFAULT_MSG

View File

@@ -50,7 +50,7 @@ FIND_LIBRARY(XML2_LIBRARY
lib64 lib
)
# handle the QUIETLY and REQUIRED arguments and set XML2_FOUND to TRUE if
# handle the QUIETLY and REQUIRED arguments and set XML2_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(XML2 DEFAULT_MSG

View File

@@ -13,7 +13,7 @@ if(NOT DEFINED RPMBUILD)
if(RPMBUILD)
message(STATUS "RPM Build Found: ${RPMBUILD}")
else()
else()
message(STATUS "RPM Build Not Found (rpmbuild). RPM generation will not be available")
endif()
@@ -21,6 +21,6 @@ endif()
if(RPMBUILD)
set(RPMBUILD_FOUND TRUE)
else()
else()
set(RPMBUILD_FOUND FALSE)
endif()
endif()

View File

@@ -5,7 +5,7 @@
# cmake -C../blender/build_files/cmake/config/blender_headless.cmake ../blender
#
set(WITH_HEADLESS ON CACHE BOOL "" FORCE)
set(WITH_HEADLESS ON CACHE BOOL "" FORCE)
# disable audio, its possible some devs may want this but for now disable
# so the python module doesnt hold the audio device and loads quickly.

View File

@@ -51,7 +51,7 @@ endmacro()
function(list_assert_duplicates
list_id
)
# message(STATUS "list data: ${list_id}")
list(LENGTH list_id _len_before)
@@ -242,7 +242,7 @@ function(blender_add_lib__impl
# listed is helpful for IDE's (QtCreator/MSVC)
blender_source_group("${sources}")
#if enabled, set the FOLDER property for visual studio projects
#if enabled, set the FOLDER property for visual studio projects
if(WINDOWS_USE_VISUAL_STUDIO_FOLDERS)
get_filename_component(FolderDir ${CMAKE_CURRENT_SOURCE_DIR} DIRECTORY)
string(REPLACE ${CMAKE_SOURCE_DIR} "" FolderDir ${FolderDir})
@@ -1054,13 +1054,19 @@ macro(remove_cc_flag
endmacro()
macro(add_cc_flag
macro(add_c_flag
flag)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${flag}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
endmacro()
macro(add_cxx_flag
flag)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
endmacro()
macro(remove_strict_flags)
if(CMAKE_COMPILER_IS_GNUCC)
@@ -1083,7 +1089,8 @@ macro(remove_strict_flags)
)
# negate flags implied by '-Wall'
add_cc_flag("${CC_REMOVE_STRICT_FLAGS}")
add_c_flag("${C_REMOVE_STRICT_FLAGS}")
add_cxx_flag("${CXX_REMOVE_STRICT_FLAGS}")
endif()
if(CMAKE_C_COMPILER_ID MATCHES "Clang")
@@ -1095,7 +1102,8 @@ macro(remove_strict_flags)
)
# negate flags implied by '-Wall'
add_cc_flag("${CC_REMOVE_STRICT_FLAGS}")
add_c_flag("${C_REMOVE_STRICT_FLAGS}")
add_cxx_flag("${CXX_REMOVE_STRICT_FLAGS}")
endif()
if(MSVC)
@@ -1125,28 +1133,39 @@ endmacro()
# note, we can only append flags on a single file so we need to negate the options.
# at the moment we cant shut up ffmpeg deprecations, so use this, but will
# probably add more removals here.
macro(remove_strict_flags_file
macro(remove_strict_c_flags_file
filenames)
foreach(_SOURCE ${ARGV})
if(CMAKE_COMPILER_IS_GNUCC OR
(CMAKE_C_COMPILER_ID MATCHES "Clang"))
(CMAKE_C_COMPILER_ID MATCHES "Clang"))
set_source_files_properties(${_SOURCE}
PROPERTIES
COMPILE_FLAGS "${CC_REMOVE_STRICT_FLAGS}"
COMPILE_FLAGS "${C_REMOVE_STRICT_FLAGS}"
)
endif()
if(MSVC)
# TODO
endif()
endforeach()
unset(_SOURCE)
endmacro()
macro(remove_strict_cxx_flags_file
filenames)
remove_strict_c_flags_file(${filenames} ${ARHV})
foreach(_SOURCE ${ARGV})
if(CMAKE_COMPILER_IS_GNUCC OR
(CMAKE_CXX_COMPILER_ID MATCHES "Clang"))
set_source_files_properties(${_SOURCE}
PROPERTIES
COMPILE_FLAGS "${CXX_REMOVE_STRICT_FLAGS}"
)
endif()
if(MSVC)
# TODO
endif()
endforeach()
unset(_SOURCE)
endmacro()
# External libs may need 'signed char' to be default.

View File

@@ -51,9 +51,9 @@ string(REPLACE "/Contents/Developer" "" XCODE_BUNDLE ${XCODE_CHECK}) # truncate
if(${CMAKE_GENERATOR} MATCHES "Xcode")
# earlier xcode has no bundled developer dir, no sense in getting xcode path from
if(${XCODE_VERSION} VERSION_GREATER 4.2)
if(${XCODE_VERSION} VERSION_GREATER 4.2)
# reduce to XCode name without dp extension
string(SUBSTRING "${XCODE_CHECK}" 14 6 DP_NAME)
string(SUBSTRING "${XCODE_CHECK}" 14 6 DP_NAME)
if(${DP_NAME} MATCHES Xcode5)
set(XCODE_VERSION 5)
endif()
@@ -64,7 +64,7 @@ if(${CMAKE_GENERATOR} MATCHES "Xcode")
message(FATAL_ERROR "Xcode 4.3 and higher must be used with cmake 2.8-8 or higher")
endif()
### end cmake incompatibility with xcode 4.3 and higher ###
if(${XCODE_VERSION} VERSION_EQUAL 4 OR ${XCODE_VERSION} VERSION_GREATER 4 AND ${XCODE_VERSION} VERSION_LESS 4.3)
# Xcode 4 defaults to the Apple LLVM Compiler.
# Override the default compiler selection because Blender only compiles with gcc up to xcode 4.2
@@ -85,7 +85,7 @@ if(${XCODE_VERSION} VERSION_LESS 4.3)
else()
# note: xcode-select path could be ambigous,
# cause /Applications/Xcode.app/Contents/Developer or /Applications/Xcode.app would be allowed
# so i use a selfcomposed bundlepath here
# so i use a selfcomposed bundlepath here
set(OSX_SYSROOT_PREFIX ${XCODE_BUNDLE}/Contents/Developer/Platforms/MacOSX.platform)
message(STATUS "OSX_SYSROOT_PREFIX: " ${OSX_SYSROOT_PREFIX})
set(OSX_DEVELOPER_PREFIX /Developer/SDKs/MacOSX${OSX_SYSTEM}.sdk) # use guaranteed existing sdk

View File

@@ -31,7 +31,8 @@ endif()
if(CMAKE_C_COMPILER_ID MATCHES "Clang")
set(MSVC_CLANG On)
set(MSVC_REDIST_DIR $ENV{VCToolsRedistDir})
set(VC_TOOLS_DIR $ENV{VCToolsRedistDir} CACHE STRING "Location of the msvc redistributables")
set(MSVC_REDIST_DIR ${VC_TOOLS_DIR})
if (DEFINED MSVC_REDIST_DIR)
file(TO_CMAKE_PATH ${MSVC_REDIST_DIR} MSVC_REDIST_DIR)
else()
@@ -129,8 +130,8 @@ include(InstallRequiredSystemLibraries)
remove_cc_flag("/MDd" "/MD")
if(MSVC_CLANG) # Clangs version of cl doesn't support all flags
if(NOT WITH_CXX11) # C++11 is on by default in clang-cl and can't be turned off, if c++11 is not enabled in blender repress some c++11 related warnings.
if(MSVC_CLANG) # Clangs version of cl doesn't support all flags
if(NOT WITH_CXX11) # C++11 is on by default in clang-cl and can't be turned off, if c++11 is not enabled in blender repress some c++11 related warnings.
set(CXX_WARN_FLAGS "-Wno-inconsistent-missing-override")
endif()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX_WARN_FLAGS} /nologo /J /Gd /EHsc -Wno-unused-command-line-argument -Wno-microsoft-enum-forward-reference ")
@@ -424,7 +425,7 @@ if(WITH_OPENIMAGEIO)
set(OIIO_OPTIMIZED optimized ${OPENIMAGEIO_LIBPATH}/OpenImageIO.lib optimized ${OPENIMAGEIO_LIBPATH}/OpenImageIO_Util.lib)
set(OIIO_DEBUG debug ${OPENIMAGEIO_LIBPATH}/OpenImageIO_d.lib debug ${OPENIMAGEIO_LIBPATH}/OpenImageIO_Util_d.lib)
set(OPENIMAGEIO_LIBRARIES ${OIIO_OPTIMIZED} ${OIIO_DEBUG})
set(OPENIMAGEIO_DEFINITIONS "-DUSE_TBB=0")
set(OPENCOLORIO_DEFINITIONS "-DOCIO_STATIC_BUILD")
set(OPENIMAGEIO_IDIFF "${OPENIMAGEIO}/bin/idiff.exe")
@@ -473,7 +474,7 @@ if(WITH_OPENVDB)
set(OPENVDB_LIBPATH ${LIBDIR}/openvdb/lib)
set(OPENVDB_INCLUDE_DIRS ${OPENVDB}/include ${TBB_INCLUDE_DIR})
set(OPENVDB_LIBRARIES optimized ${OPENVDB_LIBPATH}/openvdb.lib debug ${OPENVDB_LIBPATH}/openvdb_d.lib ${TBB_LIBRARIES} ${BLOSC_LIBRARIES})
endif()
if(WITH_ALEMBIC)

View File

@@ -1,5 +1,3 @@
set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% -G "Visual Studio %BUILD_VS_VER% %BUILD_VS_YEAR%%WINDOWS_ARCH%" %TESTS_CMAKE_ARGS%
if "%BUILD_ARCH%"=="x64" (
set MSBUILD_PLATFORM=x64
) else if "%BUILD_ARCH%"=="x86" (
@@ -11,9 +9,9 @@ if "%BUILD_ARCH%"=="x64" (
)
if "%WITH_CLANG%"=="1" (
set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% -T"LLVM-vs2017"
set CLANG_CMAKE_ARGS=-T"LLVM-vs2017"
if "%WITH_ASAN%"=="1" (
set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% -DWITH_COMPILER_ASAN=On
set ASAN_CMAKE_ARGS=-DWITH_COMPILER_ASAN=On
)
) else (
if "%WITH_ASAN%"=="1" (
@@ -21,6 +19,7 @@ if "%WITH_CLANG%"=="1" (
exit /b 1
)
)
set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% -G "Visual Studio %BUILD_VS_VER% %BUILD_VS_YEAR%%WINDOWS_ARCH%" %TESTS_CMAKE_ARGS% %CLANG_CMAKE_ARGS% %ASAN_CMAKE_ARGS%
if NOT EXIST %BUILD_DIR%\nul (
mkdir %BUILD_DIR%

View File

@@ -1,3 +1,9 @@
ninja --version 1>NUL 2>&1
if %ERRORLEVEL% NEQ 0 (
echo "Ninja not detected in the path"
exit /b 1
)
set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% -G "Ninja" %TESTS_CMAKE_ARGS% -DCMAKE_BUILD_TYPE=%BUILD_TYPE%
if "%WITH_CLANG%" == "1" (

View File

@@ -2,6 +2,7 @@ if NOT "%verbose%" == "" (
echo Detecting msvc 2017
)
set BUILD_VS_VER=15
set BUILD_VS_YEAR=2017
set ProgramFilesX86=%ProgramFiles(x86)%
if not exist "%ProgramFilesX86%" set ProgramFilesX86=%ProgramFiles%
@@ -12,7 +13,12 @@ if not exist "%vs_where%" (
goto FAIL
)
)
for /f "usebackq tokens=1* delims=: " %%i in (`"%vs_where%" -products * -latest %VSWHERE_ARGS% -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64`) do (
if NOT "%verbose%" == "" (
echo "%vs_where%" -latest %VSWHERE_ARGS% -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64`
)
for /f "usebackq tokens=1* delims=: " %%i in (`"%vs_where%" -latest %VSWHERE_ARGS% -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64`) do (
if /i "%%i"=="installationPath" set VS_InstallDir=%%j
)

View File

@@ -53,6 +53,10 @@ if NOT "%1" == "" (
) else if "%1" == "2017pre" (
set BUILD_VS_YEAR=2017
set VSWHERE_ARGS=-prerelease
set BUILD_VS_YEAR=2017
) else if "%1" == "2017b" (
set BUILD_VS_YEAR=2017
set VSWHERE_ARGS=-products Microsoft.VisualStudio.Product.BuildTools
) else if "%1" == "2015" (
set BUILD_VS_YEAR=2015
) else if "%1" == "2013" (

View File

@@ -22,4 +22,6 @@ set BUILD_SHOW_HASHES=
set SHOW_HELP=
set BUILD_WITH_NINJA=
set WITH_CLANG=
set WITH_ASAN=
set WITH_ASAN=
set CLANG_CMAKE_ARGS=
set ASAN_CMAKE_ARGS=

View File

@@ -3,10 +3,10 @@ if "%GIT%" == "" (
goto EOF
)
cd "%BLENDER_DIR%"
for /f "delims=" %%i in ('%GIT% rev-parse HEAD') do echo Branch_hash=%%i
for /f "delims=" %%i in ('"%GIT%" rev-parse HEAD') do echo Branch_hash=%%i
cd "%BLENDER_DIR%/release/datafiles/locale"
for /f "delims=" %%i in ('%GIT% rev-parse HEAD') do echo Locale_hash=%%i
for /f "delims=" %%i in ('"%GIT%" rev-parse HEAD') do echo Locale_hash=%%i
cd "%BLENDER_DIR%/release/scripts/addons"
for /f "delims=" %%i in ('%GIT% rev-parse HEAD') do echo Addons_Hash=%%i
for /f "delims=" %%i in ('"%GIT%" rev-parse HEAD') do echo Addons_Hash=%%i
cd "%BLENDER_DIR%"
:EOF

View File

@@ -23,7 +23,13 @@ echo - buildir [newdir] ^(override default build folder^)
echo - x86 ^(override host auto-detect and build 32 bit code^)
echo - x64 ^(override host auto-detect and build 64 bit code^)
echo - 2013 ^(build with visual studio 2013^)
echo - 2015 ^(build with visual studio 2015^) [EXPERIMENTAL]
echo - 2017 ^(build with visual studio 2017^) [EXPERIMENTAL]
echo - 2017pre ^(build with visual studio 2017 pre-release^) [EXPERIMENTAL]
echo.
echo Experimental options
echo - 2015 ^(build with visual studio 2015^)
echo - 2017 ^(build with visual studio 2017^)
echo - 2017pre ^(build with visual studio 2017 pre-release^)
echo - 2017b ^(build with visual studio 2017 Build Tools^)
echo - clang ^(enable building with clang^)
echo - asan ^(enable asan when building with clang^)
echo - ninja ^(enable building with ninja instead of msbuild^)
echo.

View File

@@ -88,7 +88,7 @@ set(SRC
src/fx/Volume.cpp
src/fx/VolumeReader.cpp
src/fx/VolumeSound.cpp
src/fx/VolumeStorage.cpp
src/fx/VolumeStorage.cpp
src/generator/Sawtooth.cpp
src/generator/SawtoothReader.cpp
src/generator/Silence.cpp
@@ -729,8 +729,8 @@ set(LIB_DESTINATION "lib${LIB_SUFFIX}")
# library
add_library(audaspace ${LIBRARY_TYPE} ${SRC} ${HDR})
target_link_libraries(audaspace ${LIBRARIES})
set_target_properties(audaspace PROPERTIES SOVERSION ${AUDASPACE_VERSION})
target_link_libraries(audaspace ${LIBRARIES})
set_target_properties(audaspace PROPERTIES SOVERSION ${AUDASPACE_VERSION})
if(AUDASPACE_STANDALONE)
install(TARGETS audaspace

View File

@@ -23,7 +23,9 @@ AUD_NAMESPACE_BEGIN
FFMPEG::FFMPEG()
{
#if LIBAVCODEC_VERSION_MAJOR < 58
av_register_all();
#endif
}
void FFMPEG::registerPlugin()

View File

@@ -22,37 +22,37 @@
extern "C" {
#include <libavcodec/avcodec.h>
#include <libavformat/avio.h>
#include <libavutil/avutil.h>
}
AUD_NAMESPACE_BEGIN
#if LIBAVCODEC_VERSION_MAJOR < 58
#define FFMPEG_OLD_CODE
#endif
int FFMPEGReader::decode(AVPacket& packet, Buffer& buffer)
{
AVFrame* frame = nullptr;
int buf_size = buffer.getSize();
int buf_pos = 0;
#ifdef FFMPEG_OLD_CODE
int got_frame;
int read_length;
uint8_t* orig_data = packet.data;
int orig_size = packet.size;
int buf_size = buffer.getSize();
int buf_pos = 0;
while(packet.size > 0)
{
got_frame = 0;
if(!frame)
frame = av_frame_alloc();
else
av_frame_unref(frame);
read_length = avcodec_decode_audio4(m_codecCtx, frame, &got_frame, &packet);
read_length = avcodec_decode_audio4(m_codecCtx, m_frame, &got_frame, &packet);
if(read_length < 0)
break;
if(got_frame)
{
int data_size = av_samples_get_buffer_size(nullptr, m_codecCtx->channels, frame->nb_samples, m_codecCtx->sample_fmt, 1);
int data_size = av_samples_get_buffer_size(nullptr, m_codecCtx->channels, m_frame->nb_samples, m_codecCtx->sample_fmt, 1);
if(buf_size - buf_pos < data_size)
{
@@ -62,18 +62,18 @@ int FFMPEGReader::decode(AVPacket& packet, Buffer& buffer)
if(m_tointerleave)
{
int single_size = data_size / m_codecCtx->channels / frame->nb_samples;
int single_size = data_size / m_codecCtx->channels / m_frame->nb_samples;
for(int channel = 0; channel < m_codecCtx->channels; channel++)
{
for(int i = 0; i < frame->nb_samples; i++)
for(int i = 0; i < m_frame->nb_samples; i++)
{
std::memcpy(((data_t*)buffer.getBuffer()) + buf_pos + ((m_codecCtx->channels * i) + channel) * single_size,
frame->data[channel] + i * single_size, single_size);
m_frame->data[channel] + i * single_size, single_size);
}
}
}
else
std::memcpy(((data_t*)buffer.getBuffer()) + buf_pos, frame->data[0], data_size);
std::memcpy(((data_t*)buffer.getBuffer()) + buf_pos, m_frame->data[0], data_size);
buf_pos += data_size;
}
@@ -83,7 +83,42 @@ int FFMPEGReader::decode(AVPacket& packet, Buffer& buffer)
packet.data = orig_data;
packet.size = orig_size;
av_free(frame);
#else
avcodec_send_packet(m_codecCtx, &packet);
while(true)
{
auto ret = avcodec_receive_frame(m_codecCtx, m_frame);
if(ret != 0)
break;
int data_size = av_samples_get_buffer_size(nullptr, m_codecCtx->channels, m_frame->nb_samples, m_codecCtx->sample_fmt, 1);
if(buf_size - buf_pos < data_size)
{
buffer.resize(buf_size + data_size, true);
buf_size += data_size;
}
if(m_tointerleave)
{
int single_size = data_size / m_codecCtx->channels / m_frame->nb_samples;
for(int channel = 0; channel < m_codecCtx->channels; channel++)
{
for(int i = 0; i < m_frame->nb_samples; i++)
{
std::memcpy(((data_t*)buffer.getBuffer()) + buf_pos + ((m_codecCtx->channels * i) + channel) * single_size,
m_frame->data[channel] + i * single_size, single_size);
}
}
}
else
std::memcpy(((data_t*)buffer.getBuffer()) + buf_pos, m_frame->data[0], data_size);
buf_pos += data_size;
}
#endif
return buf_pos;
}
@@ -101,7 +136,11 @@ void FFMPEGReader::init()
for(unsigned int i = 0; i < m_formatCtx->nb_streams; i++)
{
#ifdef FFMPEG_OLD_CODE
if((m_formatCtx->streams[i]->codec->codec_type == AVMEDIA_TYPE_AUDIO)
#else
if((m_formatCtx->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_AUDIO)
#endif
&& (m_stream < 0))
{
m_stream=i;
@@ -112,12 +151,34 @@ void FFMPEGReader::init()
if(m_stream == -1)
AUD_THROW(FileException, "File couldn't be read, no audio stream found by ffmpeg.");
m_codecCtx = m_formatCtx->streams[m_stream]->codec;
// get a decoder and open it
AVCodec* aCodec = avcodec_find_decoder(m_codecCtx->codec_id);
#ifndef FFMPEG_OLD_CODE
AVCodec* aCodec = avcodec_find_decoder(m_formatCtx->streams[m_stream]->codecpar->codec_id);
if(!aCodec)
AUD_THROW(FileException, "File couldn't be read, no decoder found with ffmpeg.");
#endif
m_frame = av_frame_alloc();
if(!m_frame)
AUD_THROW(FileException, "File couldn't be read, ffmpeg frame couldn't be allocated.");
#ifdef FFMPEG_OLD_CODE
m_codecCtx = m_formatCtx->streams[m_stream]->codec;
AVCodec* aCodec = avcodec_find_decoder(m_codecCtx->codec_id);
#else
m_codecCtx = avcodec_alloc_context3(aCodec);
#endif
if(!m_codecCtx)
AUD_THROW(FileException, "File couldn't be read, ffmpeg context couldn't be allocated.");
#ifndef FFMPEG_OLD_CODE
if(avcodec_parameters_to_context(m_codecCtx, m_formatCtx->streams[m_stream]->codecpar) < 0)
AUD_THROW(FileException, "File couldn't be read, ffmpeg decoder parameters couldn't be copied to decoder context.");
#endif
if(avcodec_open2(m_codecCtx, aCodec, nullptr) < 0)
AUD_THROW(FileException, "File couldn't be read, ffmpeg codec couldn't be opened.");
@@ -157,6 +218,8 @@ void FFMPEGReader::init()
FFMPEGReader::FFMPEGReader(std::string filename) :
m_pkgbuf(),
m_formatCtx(nullptr),
m_codecCtx(nullptr),
m_frame(nullptr),
m_aviocontext(nullptr),
m_membuf(nullptr)
{
@@ -177,12 +240,14 @@ FFMPEGReader::FFMPEGReader(std::string filename) :
FFMPEGReader::FFMPEGReader(std::shared_ptr<Buffer> buffer) :
m_pkgbuf(),
m_codecCtx(nullptr),
m_frame(nullptr),
m_membuffer(buffer),
m_membufferpos(0)
{
m_membuf = reinterpret_cast<data_t*>(av_malloc(FF_MIN_BUFFER_SIZE + FF_INPUT_BUFFER_PADDING_SIZE));
m_membuf = reinterpret_cast<data_t*>(av_malloc(AV_INPUT_BUFFER_MIN_SIZE + AV_INPUT_BUFFER_PADDING_SIZE));
m_aviocontext = avio_alloc_context(m_membuf, FF_MIN_BUFFER_SIZE, 0, this, read_packet, nullptr, seek_packet);
m_aviocontext = avio_alloc_context(m_membuf, AV_INPUT_BUFFER_MIN_SIZE, 0, this, read_packet, nullptr, seek_packet);
if(!m_aviocontext)
{
@@ -212,7 +277,14 @@ FFMPEGReader::FFMPEGReader(std::shared_ptr<Buffer> buffer) :
FFMPEGReader::~FFMPEGReader()
{
if(m_frame)
av_frame_free(&m_frame);
#ifdef FFMPEG_OLD_CODE
avcodec_close(m_codecCtx);
#else
if(m_codecCtx)
avcodec_free_context(&m_codecCtx);
#endif
avformat_close_input(&m_formatCtx);
}
@@ -312,7 +384,7 @@ void FFMPEGReader::seek(int position)
}
}
}
av_free_packet(&packet);
av_packet_unref(&packet);
}
}
else
@@ -343,7 +415,7 @@ Specs FFMPEGReader::getSpecs() const
void FFMPEGReader::read(int& length, bool& eos, sample_t* buffer)
{
// read packages and decode them
AVPacket packet;
AVPacket packet = {};
int data_size = 0;
int pkgbuf_pos;
int left = length;
@@ -359,7 +431,7 @@ void FFMPEGReader::read(int& length, bool& eos, sample_t* buffer)
data_size = std::min(pkgbuf_pos, left * sample_size);
m_convert((data_t*) buf, (data_t*) m_pkgbuf.getBuffer(), data_size / AUD_FORMAT_SIZE(m_specs.format));
buf += data_size / AUD_FORMAT_SIZE(m_specs.format);
left -= data_size/sample_size;
left -= data_size / sample_size;
}
// for each frame read as long as there isn't enough data already
@@ -375,9 +447,9 @@ void FFMPEGReader::read(int& length, bool& eos, sample_t* buffer)
data_size = std::min(pkgbuf_pos, left * sample_size);
m_convert((data_t*) buf, (data_t*) m_pkgbuf.getBuffer(), data_size / AUD_FORMAT_SIZE(m_specs.format));
buf += data_size / AUD_FORMAT_SIZE(m_specs.format);
left -= data_size/sample_size;
left -= data_size / sample_size;
}
av_free_packet(&packet);
av_packet_unref(&packet);
}
// read more data than necessary?
if(pkgbuf_pos > data_size)

View File

@@ -79,6 +79,11 @@ private:
*/
AVCodecContext* m_codecCtx;
/**
* The AVFrame structure for using ffmpeg.
*/
AVFrame* m_frame;
/**
* The AVIOContext to read the data from.
*/

View File

@@ -27,6 +27,10 @@ extern "C" {
AUD_NAMESPACE_BEGIN
#if LIBAVCODEC_VERSION_MAJOR < 58
#define FFMPEG_OLD_CODE
#endif
void FFMPEGWriter::encode()
{
sample_t* data = m_input_buffer.getBuffer();
@@ -58,82 +62,106 @@ void FFMPEGWriter::encode()
if(m_input_size)
m_convert(reinterpret_cast<data_t*>(data), reinterpret_cast<data_t*>(data), m_input_samples * m_specs.channels);
AVPacket packet;
#ifdef FFMPEG_OLD_CODE
m_packet->data = nullptr;
m_packet->size = 0;
packet.data = nullptr;
packet.size = 0;
av_init_packet(m_packet);
av_init_packet(&packet);
AVFrame* frame = av_frame_alloc();
av_frame_unref(frame);
av_frame_unref(m_frame);
int got_packet;
#endif
frame->nb_samples = m_input_samples;
frame->format = m_codecCtx->sample_fmt;
frame->channel_layout = m_codecCtx->channel_layout;
m_frame->nb_samples = m_input_samples;
m_frame->format = m_codecCtx->sample_fmt;
m_frame->channel_layout = m_codecCtx->channel_layout;
if(avcodec_fill_audio_frame(frame, m_specs.channels, m_codecCtx->sample_fmt, reinterpret_cast<data_t*>(data), m_input_buffer.getSize(), 0) < 0)
if(avcodec_fill_audio_frame(m_frame, m_specs.channels, m_codecCtx->sample_fmt, reinterpret_cast<data_t*>(data), m_input_buffer.getSize(), 0) < 0)
AUD_THROW(FileException, "File couldn't be written, filling the audio frame failed with ffmpeg.");
AVRational sample_time = { 1, static_cast<int>(m_specs.rate) };
frame->pts = av_rescale_q(m_position - m_input_samples, m_codecCtx->time_base, sample_time);
m_frame->pts = av_rescale_q(m_position - m_input_samples, m_codecCtx->time_base, sample_time);
if(avcodec_encode_audio2(m_codecCtx, &packet, frame, &got_packet))
#ifdef FFMPEG_OLD_CODE
if(avcodec_encode_audio2(m_codecCtx, m_packet, m_frame, &got_packet))
{
av_frame_free(&frame);
AUD_THROW(FileException, "File couldn't be written, audio encoding failed with ffmpeg.");
}
if(got_packet)
{
packet.flags |= AV_PKT_FLAG_KEY;
packet.stream_index = m_stream->index;
if(av_write_frame(m_formatCtx, &packet) < 0)
m_packet->flags |= AV_PKT_FLAG_KEY;
m_packet->stream_index = m_stream->index;
if(av_write_frame(m_formatCtx, m_packet) < 0)
{
av_free_packet(&packet);
av_frame_free(&frame);
av_free_packet(m_packet);
AUD_THROW(FileException, "Frame couldn't be writen to the file with ffmpeg.");
}
av_free_packet(&packet);
av_free_packet(m_packet);
}
#else
if(avcodec_send_frame(m_codecCtx, m_frame) < 0)
AUD_THROW(FileException, "File couldn't be written, audio encoding failed with ffmpeg.");
av_frame_free(&frame);
while(avcodec_receive_packet(m_codecCtx, m_packet) == 0)
{
m_packet->stream_index = m_stream->index;
if(av_write_frame(m_formatCtx, m_packet) < 0)
AUD_THROW(FileException, "Frame couldn't be writen to the file with ffmpeg.");
}
#endif
}
void FFMPEGWriter::close()
{
#ifdef FFMPEG_OLD_CODE
int got_packet = true;
while(got_packet)
{
AVPacket packet;
m_packet->data = nullptr;
m_packet->size = 0;
packet.data = nullptr;
packet.size = 0;
av_init_packet(m_packet);
av_init_packet(&packet);
if(avcodec_encode_audio2(m_codecCtx, &packet, nullptr, &got_packet))
if(avcodec_encode_audio2(m_codecCtx, m_packet, nullptr, &got_packet))
AUD_THROW(FileException, "File end couldn't be written, audio encoding failed with ffmpeg.");
if(got_packet)
{
packet.flags |= AV_PKT_FLAG_KEY;
packet.stream_index = m_stream->index;
if(av_write_frame(m_formatCtx, &packet))
m_packet->flags |= AV_PKT_FLAG_KEY;
m_packet->stream_index = m_stream->index;
if(av_write_frame(m_formatCtx, m_packet))
{
av_free_packet(&packet);
av_free_packet(m_packet);
AUD_THROW(FileException, "Final frames couldn't be writen to the file with ffmpeg.");
}
av_free_packet(&packet);
av_free_packet(m_packet);
}
}
#else
if(avcodec_send_frame(m_codecCtx, nullptr) < 0)
AUD_THROW(FileException, "File couldn't be written, audio encoding failed with ffmpeg.");
while(avcodec_receive_packet(m_codecCtx, m_packet) == 0)
{
m_packet->stream_index = m_stream->index;
if(av_write_frame(m_formatCtx, m_packet) < 0)
AUD_THROW(FileException, "Frame couldn't be writen to the file with ffmpeg.");
}
#endif
}
FFMPEGWriter::FFMPEGWriter(std::string filename, DeviceSpecs specs, Container format, Codec codec, unsigned int bitrate) :
m_position(0),
m_specs(specs),
m_formatCtx(nullptr),
m_codecCtx(nullptr),
m_stream(nullptr),
m_packet(nullptr),
m_frame(nullptr),
m_input_samples(0),
m_deinterleave(false)
{
@@ -142,75 +170,105 @@ FFMPEGWriter::FFMPEGWriter(std::string filename, DeviceSpecs specs, Container fo
if(avformat_alloc_output_context2(&m_formatCtx, nullptr, formats[format], filename.c_str()) < 0)
AUD_THROW(FileException, "File couldn't be written, format couldn't be found with ffmpeg.");
m_outputFmt = m_formatCtx->oformat;
AVOutputFormat* outputFmt = m_formatCtx->oformat;
if(!m_outputFmt) {
if(!outputFmt) {
avformat_free_context(m_formatCtx);
AUD_THROW(FileException, "File couldn't be written, output format couldn't be found with ffmpeg.");
}
m_outputFmt->audio_codec = AV_CODEC_ID_NONE;
outputFmt->audio_codec = AV_CODEC_ID_NONE;
switch(codec)
{
case CODEC_AAC:
m_outputFmt->audio_codec = AV_CODEC_ID_AAC;
outputFmt->audio_codec = AV_CODEC_ID_AAC;
break;
case CODEC_AC3:
m_outputFmt->audio_codec = AV_CODEC_ID_AC3;
outputFmt->audio_codec = AV_CODEC_ID_AC3;
break;
case CODEC_FLAC:
m_outputFmt->audio_codec = AV_CODEC_ID_FLAC;
outputFmt->audio_codec = AV_CODEC_ID_FLAC;
break;
case CODEC_MP2:
m_outputFmt->audio_codec = AV_CODEC_ID_MP2;
outputFmt->audio_codec = AV_CODEC_ID_MP2;
break;
case CODEC_MP3:
m_outputFmt->audio_codec = AV_CODEC_ID_MP3;
outputFmt->audio_codec = AV_CODEC_ID_MP3;
break;
case CODEC_OPUS:
m_outputFmt->audio_codec = AV_CODEC_ID_OPUS;
outputFmt->audio_codec = AV_CODEC_ID_OPUS;
break;
case CODEC_PCM:
switch(specs.format)
{
case FORMAT_U8:
m_outputFmt->audio_codec = AV_CODEC_ID_PCM_U8;
outputFmt->audio_codec = AV_CODEC_ID_PCM_U8;
break;
case FORMAT_S16:
m_outputFmt->audio_codec = AV_CODEC_ID_PCM_S16LE;
outputFmt->audio_codec = AV_CODEC_ID_PCM_S16LE;
break;
case FORMAT_S24:
m_outputFmt->audio_codec = AV_CODEC_ID_PCM_S24LE;
outputFmt->audio_codec = AV_CODEC_ID_PCM_S24LE;
break;
case FORMAT_S32:
m_outputFmt->audio_codec = AV_CODEC_ID_PCM_S32LE;
outputFmt->audio_codec = AV_CODEC_ID_PCM_S32LE;
break;
case FORMAT_FLOAT32:
m_outputFmt->audio_codec = AV_CODEC_ID_PCM_F32LE;
outputFmt->audio_codec = AV_CODEC_ID_PCM_F32LE;
break;
case FORMAT_FLOAT64:
m_outputFmt->audio_codec = AV_CODEC_ID_PCM_F64LE;
outputFmt->audio_codec = AV_CODEC_ID_PCM_F64LE;
break;
default:
m_outputFmt->audio_codec = AV_CODEC_ID_NONE;
outputFmt->audio_codec = AV_CODEC_ID_NONE;
break;
}
break;
case CODEC_VORBIS:
m_outputFmt->audio_codec = AV_CODEC_ID_VORBIS;
outputFmt->audio_codec = AV_CODEC_ID_VORBIS;
break;
default:
m_outputFmt->audio_codec = AV_CODEC_ID_NONE;
outputFmt->audio_codec = AV_CODEC_ID_NONE;
break;
}
uint64_t channel_layout = 0;
switch(m_specs.channels)
{
case CHANNELS_MONO:
channel_layout = AV_CH_LAYOUT_MONO;
break;
case CHANNELS_STEREO:
channel_layout = AV_CH_LAYOUT_STEREO;
break;
case CHANNELS_STEREO_LFE:
channel_layout = AV_CH_LAYOUT_2POINT1;
break;
case CHANNELS_SURROUND4:
channel_layout = AV_CH_LAYOUT_QUAD;
break;
case CHANNELS_SURROUND5:
channel_layout = AV_CH_LAYOUT_5POINT0_BACK;
break;
case CHANNELS_SURROUND51:
channel_layout = AV_CH_LAYOUT_5POINT1_BACK;
break;
case CHANNELS_SURROUND61:
channel_layout = AV_CH_LAYOUT_6POINT1_BACK;
break;
case CHANNELS_SURROUND71:
channel_layout = AV_CH_LAYOUT_7POINT1;
break;
}
try
{
if(m_outputFmt->audio_codec == AV_CODEC_ID_NONE)
if(outputFmt->audio_codec == AV_CODEC_ID_NONE)
AUD_THROW(FileException, "File couldn't be written, audio codec not found with ffmpeg.");
AVCodec* codec = avcodec_find_encoder(m_outputFmt->audio_codec);
AVCodec* codec = avcodec_find_encoder(outputFmt->audio_codec);
if(!codec)
AUD_THROW(FileException, "File couldn't be written, audio encoder couldn't be found with ffmpeg.");
@@ -220,7 +278,14 @@ FFMPEGWriter::FFMPEGWriter(std::string filename, DeviceSpecs specs, Container fo
m_stream->id = m_formatCtx->nb_streams - 1;
#ifdef FFMPEG_OLD_CODE
m_codecCtx = m_stream->codec;
#else
m_codecCtx = avcodec_alloc_context3(codec);
#endif
if(!m_codecCtx)
AUD_THROW(FileException, "File couldn't be written, context creation failed with ffmpeg.");
switch(m_specs.format)
{
@@ -247,7 +312,7 @@ FFMPEGWriter::FFMPEGWriter(std::string filename, DeviceSpecs specs, Container fo
}
if(m_formatCtx->oformat->flags & AVFMT_GLOBALHEADER)
m_codecCtx->flags |= CODEC_FLAG_GLOBAL_HEADER;
m_codecCtx->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
bool format_supported = false;
@@ -328,9 +393,13 @@ FFMPEGWriter::FFMPEGWriter(std::string filename, DeviceSpecs specs, Container fo
m_specs.rate = m_codecCtx->sample_rate;
m_codecCtx->codec_id = m_outputFmt->audio_codec;
#ifdef FFMPEG_OLD_CODE
m_codecCtx->codec_id = outputFmt->audio_codec;
#endif
m_codecCtx->codec_type = AVMEDIA_TYPE_AUDIO;
m_codecCtx->bit_rate = bitrate;
m_codecCtx->channel_layout = channel_layout;
m_codecCtx->channels = m_specs.channels;
m_stream->time_base.num = m_codecCtx->time_base.num = 1;
m_stream->time_base.den = m_codecCtx->time_base.den = m_codecCtx->sample_rate;
@@ -338,6 +407,11 @@ FFMPEGWriter::FFMPEGWriter(std::string filename, DeviceSpecs specs, Container fo
if(avcodec_open2(m_codecCtx, codec, nullptr) < 0)
AUD_THROW(FileException, "File couldn't be written, encoder couldn't be opened with ffmpeg.");
#ifndef FFMPEG_OLD_CODE
if(avcodec_parameters_from_context(m_stream->codecpar, m_codecCtx) < 0)
AUD_THROW(FileException, "File couldn't be written, codec parameters couldn't be copied to the context.");
#endif
int samplesize = std::max(int(AUD_SAMPLE_SIZE(m_specs)), AUD_DEVICE_SAMPLE_SIZE(m_specs));
if((m_input_size = m_codecCtx->frame_size))
@@ -346,13 +420,26 @@ FFMPEGWriter::FFMPEGWriter(std::string filename, DeviceSpecs specs, Container fo
if(avio_open(&m_formatCtx->pb, filename.c_str(), AVIO_FLAG_WRITE))
AUD_THROW(FileException, "File couldn't be written, file opening failed with ffmpeg.");
avformat_write_header(m_formatCtx, nullptr);
if(avformat_write_header(m_formatCtx, nullptr) < 0)
AUD_THROW(FileException, "File couldn't be written, writing the header failed.");
}
catch(Exception&)
{
#ifndef FFMPEG_OLD_CODE
if(m_codecCtx)
avcodec_free_context(&m_codecCtx);
#endif
avformat_free_context(m_formatCtx);
throw;
}
#ifdef FFMPEG_OLD_CODE
m_packet = new AVPacket({});
#else
m_packet = av_packet_alloc();
#endif
m_frame = av_frame_alloc();
}
FFMPEGWriter::~FFMPEGWriter()
@@ -365,9 +452,26 @@ FFMPEGWriter::~FFMPEGWriter()
av_write_trailer(m_formatCtx);
avcodec_close(m_codecCtx);
if(m_frame)
av_frame_free(&m_frame);
avio_close(m_formatCtx->pb);
if(m_packet)
{
#ifdef FFMPEG_OLD_CODE
delete m_packet;
#else
av_packet_free(&m_packet);
#endif
}
#ifdef FFMPEG_OLD_CODE
avcodec_close(m_codecCtx);
#else
if(m_codecCtx)
avcodec_free_context(&m_codecCtx);
#endif
avio_closep(&m_formatCtx->pb);
avformat_free_context(m_formatCtx);
}

View File

@@ -65,16 +65,21 @@ private:
*/
AVCodecContext* m_codecCtx;
/**
* The AVOutputFormat structure for using ffmpeg.
*/
AVOutputFormat* m_outputFmt;
/**
* The AVStream structure for using ffmpeg.
*/
AVStream* m_stream;
/**
* The AVPacket structure for using ffmpeg.
*/
AVPacket* m_packet;
/**
* The AVFrame structure for using ffmpeg.
*/
AVFrame* m_frame;
/**
* The input buffer for the format converted data before encoding.
*/

8
extern/xdnd/xdnd.c vendored
View File

@@ -121,10 +121,10 @@ char *xdnd_debug_milliseconds (void)
#define dnd_debug3(a,b,c) printf("%s: %d: %s: " a "\n", __FILE__, __LINE__, xdnd_debug_milliseconds (), b, c)
#define dnd_debug4(a,b,c,d) printf("%s: %d: %s: " a "\n", __FILE__, __LINE__, xdnd_debug_milliseconds (), b, c, d)
#else
#define dnd_debug1(a)
#define dnd_debug2(a,b)
#define dnd_debug3(a,b,c)
#define dnd_debug4(a,b,c,d)
#define dnd_debug1(a) do {} while (0)
#define dnd_debug2(a,b) do {} while (0)
#define dnd_debug3(a,b,c) do {} while (0)
#define dnd_debug4(a,b,c,d) do {} while (0)
#endif
#define dnd_warning(a) fprintf (stderr, a)

View File

@@ -326,6 +326,14 @@ if(WITH_CYCLES_NETWORK)
add_definitions(-DWITH_NETWORK)
endif()
if(WITH_OPENCOLORIO)
add_definitions(-DWITH_OCIO)
include_directories(
SYSTEM
${OPENCOLORIO_INCLUDE_DIRS}
)
endif()
if(WITH_CYCLES_STANDALONE OR WITH_CYCLES_NETWORK OR WITH_CYCLES_CUBIN_COMPILER)
add_subdirectory(app)
endif()

View File

@@ -80,6 +80,10 @@ macro(cycles_target_link_libraries target)
if(WITH_CYCLES_OPENSUBDIV)
target_link_libraries(${target} ${OPENSUBDIV_LIBRARIES})
endif()
if(WITH_OPENCOLORIO)
link_directories(${OPENCOLORIO_LIBPATH})
target_link_libraries(${target} ${OPENCOLORIO_LIBRARIES})
endif()
target_link_libraries(
${target}
${OPENIMAGEIO_LIBRARIES}

View File

@@ -39,7 +39,7 @@ set(SRC
set(ADDON_FILES
addon/__init__.py
addon/engine.py
addon/engine.py
addon/osl.py
addon/presets.py
addon/properties.py

View File

@@ -128,6 +128,12 @@ enum_volume_interpolation = (
('CUBIC', "Cubic", "Smoothed high quality interpolation, but slower")
)
enum_world_mis = (
('NONE', "None", "Don't sample the background, faster but might cause noise for non-solid backgrounds"),
('AUTOMATIC', "Auto", "Automatically try to determine the best setting"),
('MANUAL', "Manual", "Manually set the resolution of the sampling map, higher values are slower and require more memory but reduce noise")
)
enum_device_type = (
('CPU', "CPU", "CPU", 0),
('CUDA', "CUDA", "CUDA", 1),
@@ -932,15 +938,15 @@ class CyclesWorldSettings(bpy.types.PropertyGroup):
description="Cycles world settings",
type=cls,
)
cls.sample_as_light = BoolProperty(
name="Multiple Importance Sample",
description="Use multiple importance sampling for the environment, "
"enabling for non-solid colors is recommended",
default=True,
cls.sampling_method = EnumProperty(
name="Sampling method",
description="How to sample the background light",
items=enum_world_mis,
default='AUTOMATIC',
)
cls.sample_map_resolution = IntProperty(
name="Map Resolution",
description="Importance map size is resolution x resolution; "
description="Importance map size is resolution x resolution/2; "
"higher values potentially produce less noise, at the cost of memory and speed",
min=4, max=8192,
default=1024,

File diff suppressed because it is too large Load Diff

View File

@@ -271,6 +271,40 @@ def custom_bake_remap(scene):
scene.render.bake.use_pass_indirect = False
def ambient_occlusion_node_relink(material, nodetree, traversed):
if nodetree in traversed:
return
traversed.add(nodetree)
for node in nodetree.nodes:
if node.bl_idname == 'ShaderNodeAmbientOcclusion':
node.samples = 1
node.only_local = False
node.inputs['Distance'].default_value = 0.0
elif node.bl_idname == 'ShaderNodeGroup':
ambient_occlusion_node_relink(material, node.node_tree, traversed)
# Gather links to replace
ao_links = []
for link in nodetree.links:
if link.from_node.bl_idname == 'ShaderNodeAmbientOcclusion':
ao_links.append(link)
# Replace links
for link in ao_links:
from_node = link.from_node
to_socket = link.to_socket
nodetree.links.remove(link)
nodetree.links.new(from_node.outputs['Color'], to_socket)
def ambient_occlusion_nodes_relink():
traversed = set()
for material in bpy.data.materials:
if check_is_new_shading_material(material):
ambient_occlusion_node_relink(material, material.node_tree, traversed)
@persistent
def do_versions(self):
if bpy.context.user_preferences.version <= (2, 78, 1):
@@ -377,10 +411,6 @@ def do_versions(self):
for world in bpy.data.worlds:
cworld = world.cycles
# World MIS
if not cworld.is_property_set("sample_as_light"):
cworld.sample_as_light = False
# World MIS Samples
if not cworld.is_property_set("samples"):
cworld.samples = 4
@@ -444,3 +474,16 @@ def do_versions(self):
part.tip_radius = cpart.get("tip_width", 0.0)
part.radius_scale = cpart.get("radius_scale", 0.01)
part.use_close_tip = cpart.get("use_closetip", True)
if bpy.data.version <= (2, 79, 4) or \
(bpy.data.version >= (2, 80, 0) and bpy.data.version <= (2, 80, 18)):
for world in bpy.data.worlds:
cworld = world.cycles
# World MIS
if not cworld.is_property_set("sampling_method"):
if cworld.get("sample_as_light", True):
cworld.sampling_method = 'MANUAL'
else:
cworld.sampling_method = 'NONE'
ambient_occlusion_nodes_relink()

View File

@@ -90,7 +90,7 @@ struct BlenderCamera {
static void blender_camera_init(BlenderCamera *bcam,
BL::RenderSettings& b_render)
{
memset(bcam, 0, sizeof(BlenderCamera));
memset((void *)bcam, 0, sizeof(BlenderCamera));
bcam->type = CAMERA_PERSPECTIVE;
bcam->zoom = 1.0f;

View File

@@ -770,17 +770,18 @@ static void ExportCurveTriangleVcol(ParticleCurveData *CData,
for(int curvekey = CData->curve_firstkey[curve]; curvekey < CData->curve_firstkey[curve] + CData->curve_keynum[curve] - 1; curvekey++) {
for(int section = 0; section < resol; section++) {
cdata[vertexindex] = color_float_to_byte(color_srgb_to_scene_linear_v3(CData->curve_vcol[curve]));
/* Encode vertex color using the sRGB curve. */
cdata[vertexindex] = color_float_to_byte(color_srgb_to_linear_v3(CData->curve_vcol[curve]));
vertexindex++;
cdata[vertexindex] = color_float_to_byte(color_srgb_to_scene_linear_v3(CData->curve_vcol[curve]));
cdata[vertexindex] = color_float_to_byte(color_srgb_to_linear_v3(CData->curve_vcol[curve]));
vertexindex++;
cdata[vertexindex] = color_float_to_byte(color_srgb_to_scene_linear_v3(CData->curve_vcol[curve]));
cdata[vertexindex] = color_float_to_byte(color_srgb_to_linear_v3(CData->curve_vcol[curve]));
vertexindex++;
cdata[vertexindex] = color_float_to_byte(color_srgb_to_scene_linear_v3(CData->curve_vcol[curve]));
cdata[vertexindex] = color_float_to_byte(color_srgb_to_linear_v3(CData->curve_vcol[curve]));
vertexindex++;
cdata[vertexindex] = color_float_to_byte(color_srgb_to_scene_linear_v3(CData->curve_vcol[curve]));
cdata[vertexindex] = color_float_to_byte(color_srgb_to_linear_v3(CData->curve_vcol[curve]));
vertexindex++;
cdata[vertexindex] = color_float_to_byte(color_srgb_to_scene_linear_v3(CData->curve_vcol[curve]));
cdata[vertexindex] = color_float_to_byte(color_srgb_to_linear_v3(CData->curve_vcol[curve]));
vertexindex++;
}
}
@@ -993,9 +994,10 @@ void BlenderSync::sync_curves(Mesh *mesh,
if(fdata) {
size_t i = 0;
/* Encode vertex color using the sRGB curve. */
for(size_t curve = 0; curve < CData.curve_vcol.size(); curve++)
if(!(CData.curve_keynum[curve] <= 1 || CData.curve_length[curve] == 0.0f))
fdata[i++] = color_srgb_to_scene_linear_v3(CData.curve_vcol[curve]);
fdata[i++] = color_srgb_to_linear_v3(CData.curve_vcol[curve]);
}
}
}

View File

@@ -401,7 +401,8 @@ static void attr_create_vertex_color(Scene *scene,
int n = p->loop_total();
for(int i = 0; i < n; i++) {
float3 color = get_float3(l->data[p->loop_start() + i].color());
*(cdata++) = color_float_to_byte(color_srgb_to_scene_linear_v3(color));
/* Encode vertex color using the sRGB curve. */
*(cdata++) = color_float_to_byte(color_srgb_to_linear_v3(color));
}
}
}
@@ -424,12 +425,13 @@ static void attr_create_vertex_color(Scene *scene,
int tri_a[3], tri_b[3];
face_split_tri_indices(face_flags[i], tri_a, tri_b);
/* Encode vertex color using the sRGB curve. */
uchar4 colors[4];
colors[0] = color_float_to_byte(color_srgb_to_scene_linear_v3(get_float3(c->color1())));
colors[1] = color_float_to_byte(color_srgb_to_scene_linear_v3(get_float3(c->color2())));
colors[2] = color_float_to_byte(color_srgb_to_scene_linear_v3(get_float3(c->color3())));
colors[0] = color_float_to_byte(color_srgb_to_linear_v3(get_float3(c->color1())));
colors[1] = color_float_to_byte(color_srgb_to_linear_v3(get_float3(c->color2())));
colors[2] = color_float_to_byte(color_srgb_to_linear_v3(get_float3(c->color3())));
if(nverts[i] == 4) {
colors[3] = color_float_to_byte(color_srgb_to_scene_linear_v3(get_float3(c->color4())));
colors[3] = color_float_to_byte(color_srgb_to_linear_v3(get_float3(c->color4())));
}
cdata[0] = colors[tri_a[0]];

View File

@@ -242,7 +242,15 @@ void BlenderSync::sync_background_light(bool use_portal)
if(b_world) {
PointerRNA cscene = RNA_pointer_get(&b_scene.ptr, "cycles");
PointerRNA cworld = RNA_pointer_get(&b_world.ptr, "cycles");
bool sample_as_light = get_boolean(cworld, "sample_as_light");
enum SamplingMethod {
SAMPLING_NONE = 0,
SAMPLING_AUTOMATIC,
SAMPLING_MANUAL,
SAMPLING_NUM
};
int sampling_method = get_enum(cworld, "sampling_method", SAMPLING_NUM, SAMPLING_AUTOMATIC);
bool sample_as_light = (sampling_method != SAMPLING_NONE);
if(sample_as_light || use_portal) {
/* test if we need to sync */
@@ -254,7 +262,12 @@ void BlenderSync::sync_background_light(bool use_portal)
b_world.ptr.data != world_map)
{
light->type = LIGHT_BACKGROUND;
light->map_resolution = get_int(cworld, "sample_map_resolution");
if(sampling_method == SAMPLING_MANUAL) {
light->map_resolution = get_int(cworld, "sample_map_resolution");
}
else {
light->map_resolution = 0;
}
light->shader = scene->default_background;
light->use_mis = sample_as_light;
light->max_bounces = get_int(cworld, "max_bounces");
@@ -482,7 +495,8 @@ static bool object_render_hide_original(BL::Object::type_enum ob_type,
static bool object_render_hide(BL::Object& b_ob,
bool top_level,
bool parent_hide,
bool& hide_triangles)
bool& hide_triangles,
BL::Depsgraph::mode_enum depsgraph_mode)
{
/* check if we should render or hide particle emitter */
BL::Object::particle_systems_iterator b_psys;
@@ -501,11 +515,16 @@ static bool object_render_hide(BL::Object& b_ob,
has_particles = true;
}
/* Both mode_PREVIEW and mode_VIEWPORT are treated the same here.*/
const bool show_duplicator = depsgraph_mode == BL::Depsgraph::mode_RENDER
? b_ob.show_duplicator_for_render()
: b_ob.show_duplicator_for_viewport();
if(has_particles) {
show_emitter = b_ob.show_duplicator_for_render();
show_emitter = show_duplicator;
hide_emitter = !show_emitter;
} else if(b_ob.is_duplicator()) {
if(top_level || b_ob.show_duplicator_for_render()) {
if(top_level || show_duplicator) {
hide_as_dupli_parent = true;
}
}
@@ -563,6 +582,8 @@ void BlenderSync::sync_objects(BL::Depsgraph& b_depsgraph, float motion_time)
bool cancel = false;
bool use_portal = false;
BL::Depsgraph::mode_enum depsgraph_mode = b_depsgraph.mode();
BL::Depsgraph::object_instances_iterator b_instance_iter;
for(b_depsgraph.object_instances.begin(b_instance_iter);
b_instance_iter != b_depsgraph.object_instances.end() && !cancel;
@@ -570,9 +591,6 @@ void BlenderSync::sync_objects(BL::Depsgraph& b_depsgraph, float motion_time)
{
BL::DepsgraphObjectInstance b_instance = *b_instance_iter;
BL::Object b_ob = b_instance.object();
if(!b_ob.is_visible()) {
continue;
}
progress.set_sync_status("Synchronizing object", b_ob.name());
@@ -582,7 +600,7 @@ void BlenderSync::sync_objects(BL::Depsgraph& b_depsgraph, float motion_time)
/* test if object needs to be hidden */
bool hide_tris;
if(!object_render_hide(b_ob, true, true, hide_tris)) {
if(!object_render_hide(b_ob, true, true, hide_tris, depsgraph_mode)) {
/* object itself */
sync_object(b_depsgraph,
b_instance,

View File

@@ -54,6 +54,7 @@ BlenderSession::BlenderSession(BL::RenderEngine& b_engine,
BL::BlendData& b_data,
bool preview_osl)
: session(NULL),
sync(NULL),
b_engine(b_engine),
b_userpref(b_userpref),
b_data(b_data),
@@ -81,6 +82,7 @@ BlenderSession::BlenderSession(BL::RenderEngine& b_engine,
BL::RegionView3D& b_rv3d,
int width, int height)
: session(NULL),
sync(NULL),
b_engine(b_engine),
b_userpref(b_userpref),
b_data(b_data),
@@ -209,11 +211,8 @@ void BlenderSession::reset_session(BL::BlendData& b_data, BL::Depsgraph& b_depsg
/* if scene or session parameters changed, it's easier to simply re-create
* them rather than trying to distinguish which settings need to be updated
*/
delete session;
free_session();
create_session();
return;
}
@@ -449,11 +448,12 @@ void BlenderSession::render(BL::Depsgraph& b_depsgraph_)
BL::Object b_camera_override(b_engine.camera_override());
sync->sync_camera(b_render, b_camera_override, width, height, b_rview_name.c_str());
sync->sync_data(b_render,
b_depsgraph,
b_v3d,
b_camera_override,
width, height,
&python_thread_state);
b_depsgraph,
b_v3d,
b_camera_override,
width, height,
&python_thread_state);
builtin_images_load();
/* Make sure all views have different noise patterns. - hardcoded value just to make it random */
if(view_index != 0) {
@@ -609,11 +609,12 @@ void BlenderSession::bake(BL::Depsgraph& b_depsgraph_,
BL::Object b_camera_override(b_engine.camera_override());
sync->sync_camera(b_render, b_camera_override, width, height, "");
sync->sync_data(b_render,
b_depsgraph,
b_v3d,
b_camera_override,
width, height,
&python_thread_state);
b_depsgraph,
b_v3d,
b_camera_override,
width, height,
&python_thread_state);
builtin_images_load();
}
BakeData *bake_data = NULL;
@@ -803,6 +804,8 @@ void BlenderSession::synchronize(BL::Depsgraph& b_depsgraph_)
else
sync->sync_camera(b_render, b_camera_override, width, height, "");
builtin_images_load();
/* unlock */
session->scene->mutex.unlock();
@@ -1327,6 +1330,16 @@ bool BlenderSession::builtin_image_float_pixels(const string &builtin_name,
return false;
}
void BlenderSession::builtin_images_load()
{
/* Force builtin images to be loaded along with Blender data sync. This
* is needed because we may be reading from depsgraph evaluated data which
* can be freed by Blender before Cycles reads it. */
ImageManager *manager = session->scene->image_manager;
Device *device = session->device;
manager->device_load_builtin(device, session->scene, session->progress);
}
void BlenderSession::update_resumable_tile_manager(int num_samples)
{
const int num_resumable_chunks = BlenderSession::num_resumable_chunks,

View File

@@ -166,6 +166,7 @@ protected:
float *pixels,
const size_t pixels_size,
const bool free_cache);
void builtin_images_load();
/* Update tile manager to reflect resumable render settings. */
void update_resumable_tile_manager(int num_samples);

View File

@@ -551,7 +551,12 @@ static ShaderNode *add_node(Scene *scene,
node = new EmissionNode();
}
else if(b_node.is_a(&RNA_ShaderNodeAmbientOcclusion)) {
node = new AmbientOcclusionNode();
BL::ShaderNodeAmbientOcclusion b_ao_node(b_node);
AmbientOcclusionNode *ao = new AmbientOcclusionNode();
ao->samples = b_ao_node.samples();
ao->inside = b_ao_node.inside();
ao->only_local = b_ao_node.only_local();
node = ao;
}
else if(b_node.is_a(&RNA_ShaderNodeVolumeScatter)) {
node = new ScatterVolumeNode();
@@ -862,9 +867,11 @@ static ShaderNode *add_node(Scene *scene,
point_density->space = (NodeTexVoxelSpace)b_point_density_node.space();
point_density->interpolation = get_image_interpolation(b_point_density_node);
point_density->builtin_data = b_point_density_node.ptr.data;
point_density->image_manager = scene->image_manager;
/* TODO(sergey): Use more proper update flag. */
if(true) {
point_density->add_image();
b_point_density_node.cache_point_density(b_depsgraph);
scene->image_manager->tag_reload_image(
point_density->filename.string(),

View File

@@ -177,7 +177,7 @@ void BlenderSync::sync_recalc(BL::Depsgraph& b_depsgraph)
}
void BlenderSync::sync_data(BL::RenderSettings& b_render,
BL::Depsgraph& b_depsgraph,
BL::Depsgraph& b_depsgraph,
BL::SpaceView3D& b_v3d,
BL::Object& b_override,
int width, int height,

View File

@@ -251,7 +251,7 @@ static inline Transform get_transform(const BL::Array<float, 16>& array)
/* We assume both types to be just 16 floats, and transpose because blender
* use column major matrix order while we use row major. */
memcpy(&projection, &array, sizeof(float)*16);
memcpy((void *)&projection, &array, sizeof(float)*16);
projection = projection_transpose(projection);
/* Drop last row, matrix is assumed to be affine transform. */

View File

@@ -182,7 +182,10 @@ public:
BVHReference& operator=(const BVHReference &arg) {
if(&arg != this) {
memcpy(this, &arg, sizeof(BVHReference));
/* TODO(sergey): Check if it is still faster to memcpy() with
* modern compilers.
*/
memcpy((void *)this, &arg, sizeof(BVHReference));
}
return *this;
}

View File

@@ -97,6 +97,12 @@ if(CYCLES_STANDALONE_REPOSITORY)
find_package(LLVM REQUIRED)
endif()
####
# OpenColorIO
if(WITH_OPENCOLORIO)
find_package(OpenColorIO REQUIRED)
endif()
####
# Boost
set(__boost_packages filesystem regex system thread date_time)

View File

@@ -21,7 +21,10 @@
#ifdef WITH_OSL
/* So no context pollution happens from indirectly included windows.h */
# include "util/util_windows.h"
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Wdeprecated-register"
# include <OSL/oslexec.h>
# pragma clang diagnostic pop
#endif
#include "device/device.h"

View File

@@ -385,7 +385,7 @@ public:
VLOG(1) << "Found nvcc " << nvcc
<< ", CUDA version " << cuda_version
<< ".";
const int major = cuda_version / 10, minor = cuda_version & 10;
const int major = cuda_version / 10, minor = cuda_version % 10;
if(cuda_version == 0) {
cuda_error_message("CUDA nvcc compiler version could not be parsed.");
return false;
@@ -2425,7 +2425,7 @@ bool device_cuda_init(void)
result = true;
}
else {
VLOG(1) << "Neither precompiled kernels nor CUDA compiler wad found,"
VLOG(1) << "Neither precompiled kernels nor CUDA compiler was found,"
<< " unable to use CUDA";
}
#endif

View File

@@ -82,6 +82,7 @@ set(SRC_HEADERS
kernel_accumulate.h
kernel_bake.h
kernel_camera.h
kernel_color.h
kernel_compat_cpu.h
kernel_compat_cuda.h
kernel_compat_opencl.h
@@ -159,6 +160,7 @@ set(SRC_CLOSURE_HEADERS
set(SRC_SVM_HEADERS
svm/svm.h
svm/svm_ao.h
svm/svm_attribute.h
svm/svm_bevel.h
svm/svm_blackbody.h

View File

@@ -203,7 +203,7 @@ ccl_device_intersect bool scene_intersect(KernelGlobals *kg,
#ifdef __BVH_LOCAL__
/* Note: ray is passed by value to work around a possible CUDA compiler bug. */
ccl_device_intersect void scene_intersect_local(KernelGlobals *kg,
ccl_device_intersect bool scene_intersect_local(KernelGlobals *kg,
const Ray ray,
LocalIntersection *local_isect,
int local_object,

View File

@@ -41,7 +41,7 @@ ccl_device
#else
ccl_device_inline
#endif
void BVH_FUNCTION_FULL_NAME(BVH)(KernelGlobals *kg,
bool BVH_FUNCTION_FULL_NAME(BVH)(KernelGlobals *kg,
const Ray *ray,
LocalIntersection *local_isect,
int local_object,
@@ -70,7 +70,11 @@ void BVH_FUNCTION_FULL_NAME(BVH)(KernelGlobals *kg,
int object = OBJECT_NONE;
float isect_t = ray->t;
local_isect->num_hits = 0;
if(local_isect) {
local_isect->num_hits = 0;
}
kernel_assert((local_isect == NULL) == (max_hits == 0));
const int object_flag = kernel_tex_fetch(__object_flag, local_object);
if(!(object_flag & SD_OBJECT_TRANSFORM_APPLIED)) {
@@ -194,16 +198,18 @@ void BVH_FUNCTION_FULL_NAME(BVH)(KernelGlobals *kg,
/* intersect ray against primitive */
for(; prim_addr < prim_addr2; prim_addr++) {
kernel_assert(kernel_tex_fetch(__prim_type, prim_addr) == type);
triangle_intersect_local(kg,
local_isect,
P,
dir,
object,
local_object,
prim_addr,
isect_t,
lcg_state,
max_hits);
if(triangle_intersect_local(kg,
local_isect,
P,
dir,
object,
local_object,
prim_addr,
isect_t,
lcg_state,
max_hits)) {
return true;
}
}
break;
}
@@ -212,17 +218,19 @@ void BVH_FUNCTION_FULL_NAME(BVH)(KernelGlobals *kg,
/* intersect ray against primitive */
for(; prim_addr < prim_addr2; prim_addr++) {
kernel_assert(kernel_tex_fetch(__prim_type, prim_addr) == type);
motion_triangle_intersect_local(kg,
local_isect,
P,
dir,
ray->time,
object,
local_object,
prim_addr,
isect_t,
lcg_state,
max_hits);
if(motion_triangle_intersect_local(kg,
local_isect,
P,
dir,
ray->time,
object,
local_object,
prim_addr,
isect_t,
lcg_state,
max_hits)) {
return true;
}
}
break;
}
@@ -234,9 +242,11 @@ void BVH_FUNCTION_FULL_NAME(BVH)(KernelGlobals *kg,
}
} while(node_addr != ENTRYPOINT_SENTINEL);
} while(node_addr != ENTRYPOINT_SENTINEL);
return false;
}
ccl_device_inline void BVH_FUNCTION_NAME(KernelGlobals *kg,
ccl_device_inline bool BVH_FUNCTION_NAME(KernelGlobals *kg,
const Ray *ray,
LocalIntersection *local_isect,
int local_object,
@@ -262,6 +272,7 @@ ccl_device_inline void BVH_FUNCTION_NAME(KernelGlobals *kg,
max_hits);
}
kernel_assert(!"Should not happen");
return false;
}
#undef BVH_FUNCTION_NAME

View File

@@ -29,7 +29,7 @@
# define NODE_INTERSECT qbvh_aligned_node_intersect
#endif
ccl_device void BVH_FUNCTION_FULL_NAME(QBVH)(KernelGlobals *kg,
ccl_device bool BVH_FUNCTION_FULL_NAME(QBVH)(KernelGlobals *kg,
const Ray *ray,
LocalIntersection *local_isect,
int local_object,
@@ -59,7 +59,11 @@ ccl_device void BVH_FUNCTION_FULL_NAME(QBVH)(KernelGlobals *kg,
int object = OBJECT_NONE;
float isect_t = ray->t;
local_isect->num_hits = 0;
if(local_isect) {
local_isect->num_hits = 0;
}
kernel_assert((local_isect == NULL) == (max_hits == 0));
const int object_flag = kernel_tex_fetch(__object_flag, local_object);
if(!(object_flag & SD_OBJECT_TRANSFORM_APPLIED)) {
@@ -81,7 +85,7 @@ ccl_device void BVH_FUNCTION_FULL_NAME(QBVH)(KernelGlobals *kg,
#ifndef __KERNEL_SSE41__
if(!isfinite(P.x)) {
return;
return false;
}
#endif
@@ -250,16 +254,18 @@ ccl_device void BVH_FUNCTION_FULL_NAME(QBVH)(KernelGlobals *kg,
/* Intersect ray against primitive, */
for(; prim_addr < prim_addr2; prim_addr++) {
kernel_assert(kernel_tex_fetch(__prim_type, prim_addr) == type);
triangle_intersect_local(kg,
local_isect,
P,
dir,
object,
local_object,
prim_addr,
isect_t,
lcg_state,
max_hits);
if(triangle_intersect_local(kg,
local_isect,
P,
dir,
object,
local_object,
prim_addr,
isect_t,
lcg_state,
max_hits)) {
return true;
}
}
break;
}
@@ -268,17 +274,19 @@ ccl_device void BVH_FUNCTION_FULL_NAME(QBVH)(KernelGlobals *kg,
/* Intersect ray against primitive. */
for(; prim_addr < prim_addr2; prim_addr++) {
kernel_assert(kernel_tex_fetch(__prim_type, prim_addr) == type);
motion_triangle_intersect_local(kg,
local_isect,
P,
dir,
ray->time,
object,
local_object,
prim_addr,
isect_t,
lcg_state,
max_hits);
if(motion_triangle_intersect_local(kg,
local_isect,
P,
dir,
ray->time,
object,
local_object,
prim_addr,
isect_t,
lcg_state,
max_hits)) {
return true;
}
}
break;
}
@@ -289,6 +297,8 @@ ccl_device void BVH_FUNCTION_FULL_NAME(QBVH)(KernelGlobals *kg,
}
} while(node_addr != ENTRYPOINT_SENTINEL);
} while(node_addr != ENTRYPOINT_SENTINEL);
return false;
}
#undef NODE_INTERSECT

View File

@@ -75,7 +75,7 @@ ccl_device_inline ShaderClosure *bsdf_alloc_osl(ShaderData *sd, int size, float3
if(!sc)
return NULL;
memcpy(sc, data, size);
memcpy((void *)sc, data, size);
float sample_weight = fabsf(average(weight));
sc->weight = weight;

View File

@@ -72,15 +72,15 @@ ccl_device_inline float bsdf_get_roughness_squared(const ShaderClosure *sc)
return bsdf_get_specular_roughness_squared(sc);
}
ccl_device_forceinline int bsdf_sample(KernelGlobals *kg,
ShaderData *sd,
const ShaderClosure *sc,
float randu,
float randv,
float3 *eval,
float3 *omega_in,
differential3 *domega_in,
float *pdf)
ccl_device_inline int bsdf_sample(KernelGlobals *kg,
ShaderData *sd,
const ShaderClosure *sc,
float randu,
float randv,
float3 *eval,
float3 *omega_in,
differential3 *domega_in,
float *pdf)
{
int label;
@@ -210,7 +210,7 @@ ccl_device_forceinline int bsdf_sample(KernelGlobals *kg,
#ifndef __KERNEL_CUDA__
ccl_device
#else
ccl_device_forceinline
ccl_device_inline
#endif
float3 bsdf_eval(KernelGlobals *kg,
ShaderData *sd,

View File

@@ -218,9 +218,10 @@ ccl_device_inline bool motion_triangle_intersect(
/* Special ray intersection routines for local intersections. In that case we
* only want to intersect with primitives in the same object, and if case of
* multiple hits we pick a single random primitive as the intersection point.
* Returns whether traversal should be stopped.
*/
#ifdef __BVH_LOCAL__
ccl_device_inline void motion_triangle_intersect_local(
ccl_device_inline bool motion_triangle_intersect_local(
KernelGlobals *kg,
LocalIntersection *local_isect,
float3 P,
@@ -237,7 +238,7 @@ ccl_device_inline void motion_triangle_intersect_local(
* already know we are only intersecting the right object. */
if(object == OBJECT_NONE) {
if(kernel_tex_fetch(__prim_object, prim_addr) != local_object) {
return;
return false;
}
}
@@ -258,7 +259,12 @@ ccl_device_inline void motion_triangle_intersect_local(
#endif
&u, &v, &t))
{
return;
return false;
}
/* If no actual hit information is requested, just return here. */
if(max_hits == 0) {
return true;
}
int hit;
@@ -266,7 +272,7 @@ ccl_device_inline void motion_triangle_intersect_local(
/* Record up to max_hits intersections. */
for(int i = min(max_hits, local_isect->num_hits) - 1; i >= 0; --i) {
if(local_isect->hits[i].t == t) {
return;
return false;
}
}
@@ -282,13 +288,13 @@ ccl_device_inline void motion_triangle_intersect_local(
hit = lcg_step_uint(lcg_state) % local_isect->num_hits;
if(hit >= max_hits)
return;
return false;
}
}
else {
/* Record closest intersection only. */
if(local_isect->num_hits && t > local_isect->hits[0].t) {
return;
return false;
}
hit = 0;
@@ -307,6 +313,8 @@ ccl_device_inline void motion_triangle_intersect_local(
/* Record geometric normal. */
local_isect->Ng[hit] = normalize(cross(verts[1] - verts[0],
verts[2] - verts[0]));
return false;
}
#endif /* __BVH_LOCAL__ */

View File

@@ -73,10 +73,11 @@ ccl_device_inline bool triangle_intersect(KernelGlobals *kg,
/* Special ray intersection routines for local intersection. In that case we
* only want to intersect with primitives in the same object, and if case of
* multiple hits we pick a single random primitive as the intersection point.
* Returns whether traversal should be stopped.
*/
#ifdef __BVH_LOCAL__
ccl_device_inline void triangle_intersect_local(
ccl_device_inline bool triangle_intersect_local(
KernelGlobals *kg,
LocalIntersection *local_isect,
float3 P,
@@ -92,7 +93,7 @@ ccl_device_inline void triangle_intersect_local(
* already know we are only intersecting the right object. */
if(object == OBJECT_NONE) {
if(kernel_tex_fetch(__prim_object, prim_addr) != local_object) {
return;
return false;
}
}
@@ -115,7 +116,12 @@ ccl_device_inline void triangle_intersect_local(
#endif
&u, &v, &t))
{
return;
return false;
}
/* If no actual hit information is requested, just return here. */
if(max_hits == 0) {
return true;
}
int hit;
@@ -123,7 +129,7 @@ ccl_device_inline void triangle_intersect_local(
/* Record up to max_hits intersections. */
for(int i = min(max_hits, local_isect->num_hits) - 1; i >= 0; --i) {
if(local_isect->hits[i].t == t) {
return;
return false;
}
}
@@ -138,13 +144,13 @@ ccl_device_inline void triangle_intersect_local(
hit = lcg_step_uint(lcg_state) % local_isect->num_hits;
if(hit >= max_hits)
return;
return false;
}
}
else {
/* Record closest intersection only. */
if(local_isect->num_hits && t > local_isect->hits[0].t) {
return;
return false;
}
hit = 0;
@@ -167,6 +173,8 @@ ccl_device_inline void triangle_intersect_local(
tri_c = float4_to_float3(kernel_tex_fetch(__prim_tri_verts, tri_vindex+2));
#endif
local_isect->Ng[hit] = normalize(cross(tri_b - tri_a, tri_c - tri_a));
return false;
}
#endif /* __BVH_LOCAL__ */

View File

@@ -0,0 +1,38 @@
/*
* Copyright 2011-2018 Blender Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef __KERNEL_COLOR_H__
#define __KERNEL_COLOR_H__
#include "util/util_color.h"
CCL_NAMESPACE_BEGIN
ccl_device float3 xyz_to_rgb(KernelGlobals *kg, float3 xyz)
{
return make_float3(dot(float4_to_float3(kernel_data.film.xyz_to_r), xyz),
dot(float4_to_float3(kernel_data.film.xyz_to_g), xyz),
dot(float4_to_float3(kernel_data.film.xyz_to_b), xyz));
}
ccl_device float linear_rgb_to_gray(KernelGlobals *kg, float3 c)
{
return dot(c, float4_to_float3(kernel_data.film.rgb_to_y));
}
CCL_NAMESPACE_END
#endif /* __KERNEL_COLOR_H__ */

View File

@@ -319,9 +319,9 @@ ccl_device_noinline float3 indirect_background(KernelGlobals *kg,
#ifdef __BACKGROUND_MIS__
/* check if background light exists or if we should skip pdf */
int res = kernel_data.integrator.pdf_background_res;
int res_x = kernel_data.integrator.pdf_background_res_x;
if(!(state->flag & PATH_RAY_MIS_SKIP) && res) {
if(!(state->flag & PATH_RAY_MIS_SKIP) && res_x) {
/* multiple importance sampling, get background light pdf for ray
* direction, and compute weight with respect to BSDF pdf */
float pdf = background_light_pdf(kg, ray->P, ray->D);

View File

@@ -22,9 +22,9 @@ ccl_device float4 film_map(KernelGlobals *kg, float4 irradiance, float scale)
float4 result = irradiance*scale;
/* conversion to srgb */
result.x = color_scene_linear_to_srgb(result.x*exposure);
result.y = color_scene_linear_to_srgb(result.y*exposure);
result.z = color_scene_linear_to_srgb(result.z*exposure);
result.x = color_linear_to_srgb(result.x*exposure);
result.y = color_linear_to_srgb(result.y*exposure);
result.z = color_linear_to_srgb(result.z*exposure);
/* clamp since alpha might be > 1.0 due to russian roulette */
result.w = saturate(result.w);

View File

@@ -197,12 +197,13 @@ float3 background_map_sample(KernelGlobals *kg, float randu, float randv, float
/* for the following, the CDF values are actually a pair of floats, with the
* function value as X and the actual CDF as Y. The last entry's function
* value is the CDF total. */
int res = kernel_data.integrator.pdf_background_res;
int cdf_count = res + 1;
int res_x = kernel_data.integrator.pdf_background_res_x;
int res_y = kernel_data.integrator.pdf_background_res_y;
int cdf_width = res_x + 1;
/* this is basically std::lower_bound as used by pbrt */
int first = 0;
int count = res;
int count = res_y;
while(count > 0) {
int step = count >> 1;
@@ -217,24 +218,24 @@ float3 background_map_sample(KernelGlobals *kg, float randu, float randv, float
}
int index_v = max(0, first - 1);
kernel_assert(index_v >= 0 && index_v < res);
kernel_assert(index_v >= 0 && index_v < res_y);
float2 cdf_v = kernel_tex_fetch(__light_background_marginal_cdf, index_v);
float2 cdf_next_v = kernel_tex_fetch(__light_background_marginal_cdf, index_v + 1);
float2 cdf_last_v = kernel_tex_fetch(__light_background_marginal_cdf, res);
float2 cdf_last_v = kernel_tex_fetch(__light_background_marginal_cdf, res_y);
/* importance-sampled V direction */
float dv = inverse_lerp(cdf_v.y, cdf_next_v.y, randv);
float v = (index_v + dv) / res;
float v = (index_v + dv) / res_y;
/* this is basically std::lower_bound as used by pbrt */
first = 0;
count = res;
count = res_x;
while(count > 0) {
int step = count >> 1;
int middle = first + step;
if(kernel_tex_fetch(__light_background_conditional_cdf, index_v * cdf_count + middle).y < randu) {
if(kernel_tex_fetch(__light_background_conditional_cdf, index_v * cdf_width + middle).y < randu) {
first = middle + 1;
count -= step + 1;
}
@@ -243,15 +244,15 @@ float3 background_map_sample(KernelGlobals *kg, float randu, float randv, float
}
int index_u = max(0, first - 1);
kernel_assert(index_u >= 0 && index_u < res);
kernel_assert(index_u >= 0 && index_u < res_x);
float2 cdf_u = kernel_tex_fetch(__light_background_conditional_cdf, index_v * cdf_count + index_u);
float2 cdf_next_u = kernel_tex_fetch(__light_background_conditional_cdf, index_v * cdf_count + index_u + 1);
float2 cdf_last_u = kernel_tex_fetch(__light_background_conditional_cdf, index_v * cdf_count + res);
float2 cdf_u = kernel_tex_fetch(__light_background_conditional_cdf, index_v * cdf_width + index_u);
float2 cdf_next_u = kernel_tex_fetch(__light_background_conditional_cdf, index_v * cdf_width + index_u + 1);
float2 cdf_last_u = kernel_tex_fetch(__light_background_conditional_cdf, index_v * cdf_width + res_x);
/* importance-sampled U direction */
float du = inverse_lerp(cdf_u.y, cdf_next_u.y, randu);
float u = (index_u + du) / res;
float u = (index_u + du) / res_x;
/* compute pdf */
float denom = cdf_last_u.x * cdf_last_v.x;
@@ -277,19 +278,21 @@ ccl_device
float background_map_pdf(KernelGlobals *kg, float3 direction)
{
float2 uv = direction_to_equirectangular(direction);
int res = kernel_data.integrator.pdf_background_res;
int res_x = kernel_data.integrator.pdf_background_res_x;
int res_y = kernel_data.integrator.pdf_background_res_y;
int cdf_width = res_x + 1;
float sin_theta = sinf(uv.y * M_PI_F);
if(sin_theta == 0.0f)
return 0.0f;
int index_u = clamp(float_to_int(uv.x * res), 0, res - 1);
int index_v = clamp(float_to_int(uv.y * res), 0, res - 1);
int index_u = clamp(float_to_int(uv.x * res_x), 0, res_x - 1);
int index_v = clamp(float_to_int(uv.y * res_y), 0, res_y - 1);
/* pdfs in V direction */
float2 cdf_last_u = kernel_tex_fetch(__light_background_conditional_cdf, index_v * (res + 1) + res);
float2 cdf_last_v = kernel_tex_fetch(__light_background_marginal_cdf, res);
float2 cdf_last_u = kernel_tex_fetch(__light_background_conditional_cdf, index_v * cdf_width + res_x);
float2 cdf_last_v = kernel_tex_fetch(__light_background_marginal_cdf, res_y);
float denom = cdf_last_u.x * cdf_last_v.x;
@@ -297,7 +300,7 @@ float background_map_pdf(KernelGlobals *kg, float3 direction)
return 0.0f;
/* pdfs in U direction */
float2 cdf_u = kernel_tex_fetch(__light_background_conditional_cdf, index_v * (res + 1) + index_u);
float2 cdf_u = kernel_tex_fetch(__light_background_conditional_cdf, index_v * cdf_width + index_u);
float2 cdf_v = kernel_tex_fetch(__light_background_marginal_cdf, index_v);
return (cdf_u.x * cdf_v.x)/(M_2PI_F * M_PI_F * sin_theta * denom);

View File

@@ -491,7 +491,7 @@ ccl_device void kernel_path_indirect(KernelGlobals *kg,
#ifdef __AO__
/* ambient occlusion */
if(kernel_data.integrator.use_ambient_occlusion || (sd->flag & SD_AO)) {
if(kernel_data.integrator.use_ambient_occlusion) {
kernel_path_ao(kg, sd, emission_sd, L, state, throughput, make_float3(0.0f, 0.0f, 0.0f));
}
#endif /* __AO__ */
@@ -661,7 +661,7 @@ ccl_device_forceinline void kernel_path_integrate(
#ifdef __AO__
/* ambient occlusion */
if(kernel_data.integrator.use_ambient_occlusion || (sd.flag & SD_AO)) {
if(kernel_data.integrator.use_ambient_occlusion) {
kernel_path_ao(kg, &sd, emission_sd, L, state, throughput, shader_bsdf_alpha(kg, &sd));
}
#endif /* __AO__ */

View File

@@ -526,7 +526,7 @@ ccl_device void kernel_branched_path_integrate(KernelGlobals *kg,
#ifdef __AO__
/* ambient occlusion */
if(kernel_data.integrator.use_ambient_occlusion || (sd.flag & SD_AO)) {
if(kernel_data.integrator.use_ambient_occlusion) {
kernel_branched_path_ao(kg, &sd, emission_sd, L, &state, throughput);
}
#endif /* __AO__ */

View File

@@ -914,10 +914,6 @@ ccl_device float3 shader_bsdf_ao(KernelGlobals *kg, ShaderData *sd, float ao_fac
eval += sc->weight*ao_factor;
N += bsdf->N*fabsf(average(sc->weight));
}
else if(CLOSURE_IS_AMBIENT_OCCLUSION(sc->type)) {
eval += sc->weight;
N += sd->N*fabsf(average(sc->weight));
}
}
*N_ = (is_zero(N))? sd->N : normalize(N);

View File

@@ -881,8 +881,6 @@ enum ShaderDataFlag {
SD_EXTINCTION = (1 << 6),
/* Shader has have volume phase (scatter) closure. */
SD_SCATTER = (1 << 7),
/* Shader has AO closure. */
SD_AO = (1 << 8),
/* Shader has transparent closure. */
SD_TRANSPARENT = (1 << 9),
/* BSDF requires LCG for evaluation. */
@@ -895,7 +893,6 @@ enum ShaderDataFlag {
SD_HOLDOUT |
SD_EXTINCTION |
SD_SCATTER |
SD_AO |
SD_BSDF_NEEDS_LCG),
/* Shader flags. */
@@ -1274,6 +1271,13 @@ typedef struct KernelFilm {
int pad1, pad2, pad3;
/* XYZ to rendering color space transform. float4 instead of float3 to
* ensure consistent padding/alignment across devices. */
float4 xyz_to_r;
float4 xyz_to_g;
float4 xyz_to_b;
float4 rgb_to_y;
#ifdef __KERNEL_DEBUG__
int pass_bvh_traversed_nodes;
int pass_bvh_traversed_instances;
@@ -1306,7 +1310,8 @@ typedef struct KernelIntegrator {
int num_all_lights;
float pdf_triangles;
float pdf_lights;
int pdf_background_res;
int pdf_background_res_x;
int pdf_background_res_y;
float light_inv_rr_threshold;
/* light portals */
@@ -1368,6 +1373,8 @@ typedef struct KernelIntegrator {
int start_sample;
int max_closures;
int pad1, pad2, pad3;
} KernelIntegrator;
static_assert_align(KernelIntegrator, 16);

View File

@@ -1172,7 +1172,7 @@ ccl_device void kernel_volume_stack_init(KernelGlobals *kg,
break;
}
}
if(need_add) {
if(need_add && stack_index < VOLUME_STACK_SIZE - 1) {
stack[stack_index].object = stack_sd->object;
stack[stack_index].shader = stack_sd->shader;
++stack_index;

View File

@@ -30,6 +30,7 @@
# include "kernel/split/kernel_split_data.h"
# include "kernel/kernel_globals.h"
# include "kernel/kernel_color.h"
# include "kernel/kernels/cpu/kernel_cpu_image.h"
# include "kernel/kernel_film.h"
# include "kernel/kernel_path.h"

View File

@@ -26,6 +26,7 @@
#include "kernel/kernel_math.h"
#include "kernel/kernel_types.h"
#include "kernel/kernel_globals.h"
#include "kernel/kernel_color.h"
#include "kernel/kernels/cuda/kernel_cuda_image.h"
#include "kernel/kernel_film.h"
#include "kernel/kernel_path.h"

View File

@@ -20,6 +20,7 @@
#include "kernel/kernel_math.h"
#include "kernel/kernel_types.h"
#include "kernel/kernel_globals.h"
#include "kernel/kernel_color.h"
#include "kernel/kernels/opencl/kernel_opencl_image.h"
#include "kernel/kernel_film.h"

View File

@@ -74,21 +74,6 @@ public:
}
};
/// ambient occlusion closure
///
/// We only have a ambient occlusion closure for the shaders
/// to return a color in ambient occlusion shaders. No methods,
/// only the weight is taking into account
///
class AmbientOcclusionClosure : public CClosurePrimitive {
public:
void setup(ShaderData *sd, int /* path_flag */, float3 weight)
{
closure_alloc(sd, sizeof(ShaderClosure), CLOSURE_AMBIENT_OCCLUSION_ID, weight);
sd->flag |= SD_AO;
}
};
ClosureParam *closure_background_params()
{
static ClosureParam params[] = {
@@ -110,16 +95,5 @@ ClosureParam *closure_holdout_params()
CCLOSURE_PREPARE(closure_holdout_prepare, HoldoutClosure)
ClosureParam *closure_ambient_occlusion_params()
{
static ClosureParam params[] = {
CLOSURE_STRING_KEYPARAM(AmbientOcclusionClosure, label, "label"),
CLOSURE_FINISH_PARAM(AmbientOcclusionClosure)
};
return params;
}
CCLOSURE_PREPARE(closure_ambient_occlusion_prepare, AmbientOcclusionClosure)
CCL_NAMESPACE_END

View File

@@ -30,8 +30,12 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-register"
#pragma clang diagnostic ignored "-Wexpansion-to-defined"
#include <OSL/genclosure.h>
#include <OSL/oslclosure.h>
#pragma clang diagnostic pop
#include "kernel/osl/osl_closures.h"
#include "kernel/osl/osl_shader.h"
@@ -310,8 +314,6 @@ void OSLShader::register_closures(OSLShadingSystem *ss_)
closure_background_params(), closure_background_prepare);
register_closure(ss, "holdout", id++,
closure_holdout_params(), closure_holdout_prepare);
register_closure(ss, "ambient_occlusion", id++,
closure_ambient_occlusion_params(), closure_ambient_occlusion_prepare);
register_closure(ss, "diffuse_ramp", id++,
closure_bsdf_diffuse_ramp_params(), closure_bsdf_diffuse_ramp_prepare);
register_closure(ss, "phong_ramp", id++,

View File

@@ -45,7 +45,6 @@ CCL_NAMESPACE_BEGIN
OSL::ClosureParam *closure_emission_params();
OSL::ClosureParam *closure_background_params();
OSL::ClosureParam *closure_holdout_params();
OSL::ClosureParam *closure_ambient_occlusion_params();
OSL::ClosureParam *closure_bsdf_diffuse_ramp_params();
OSL::ClosureParam *closure_bsdf_phong_ramp_params();
OSL::ClosureParam *closure_bsdf_transparent_params();
@@ -65,7 +64,6 @@ OSL::ClosureParam *closure_bsdf_principled_clearcoat_params();
void closure_emission_prepare(OSL::RendererServices *, int id, void *data);
void closure_background_prepare(OSL::RendererServices *, int id, void *data);
void closure_holdout_prepare(OSL::RendererServices *, int id, void *data);
void closure_ambient_occlusion_prepare(OSL::RendererServices *, int id, void *data);
void closure_bsdf_diffuse_ramp_prepare(OSL::RendererServices *, int id, void *data);
void closure_bsdf_phong_ramp_prepare(OSL::RendererServices *, int id, void *data);
void closure_bsdf_transparent_prepare(OSL::RendererServices *, int id, void *data);

View File

@@ -41,6 +41,7 @@
#include "kernel/kernel_compat_cpu.h"
#include "kernel/split/kernel_split_data_types.h"
#include "kernel/kernel_globals.h"
#include "kernel/kernel_color.h"
#include "kernel/kernel_random.h"
#include "kernel/kernel_projection.h"
#include "kernel/kernel_differential.h"
@@ -65,13 +66,13 @@ CCL_NAMESPACE_BEGIN
static void copy_matrix(OSL::Matrix44& m, const Transform& tfm)
{
ProjectionTransform t = projection_transpose(ProjectionTransform(tfm));
memcpy(&m, &t, sizeof(m));
memcpy((void *)&m, &t, sizeof(m));
}
static void copy_matrix(OSL::Matrix44& m, const ProjectionTransform& tfm)
{
ProjectionTransform t = projection_transpose(tfm);
memcpy(&m, &t, sizeof(m));
memcpy((void *)&m, &t, sizeof(m));
}
/* static ustrings */
@@ -124,6 +125,7 @@ ustring OSLRenderServices::u_u("u");
ustring OSLRenderServices::u_v("v");
ustring OSLRenderServices::u_empty;
ustring OSLRenderServices::u_at_bevel("@bevel");
ustring OSLRenderServices::u_at_ao("@ao");
OSLRenderServices::OSLRenderServices()
{
@@ -956,6 +958,25 @@ bool OSLRenderServices::texture(ustring filename,
status = true;
}
}
else if(filename == u_at_ao) {
/* AO shader hack. */
PathState *state = sd->osl_path_state;
int num_samples = (int)s;
float radius = t;
float3 N = make_float3(dsdx, dtdx, dsdy);
int flags = 0;
if((int)dtdy) {
flags |= NODE_AO_INSIDE;
}
if((int)options.sblur) {
flags |= NODE_AO_ONLY_LOCAL;
}
if((int)options.tblur) {
flags |= NODE_AO_GLOBAL_RADIUS;
}
result[0] = svm_ao(kg, sd, N, state, radius, num_samples, flags);
status = true;
}
else if(filename[1] == 'l') {
/* IES light. */
int slot = atoi(filename.c_str() + 2);

View File

@@ -182,6 +182,7 @@ public:
static ustring u_v;
static ustring u_empty;
static ustring u_at_bevel;
static ustring u_at_ao;
private:
KernelGlobals *kernel_globals;

View File

@@ -14,7 +14,10 @@
* limitations under the License.
*/
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-register"
#include <OSL/oslexec.h>
#pragma clang diagnostic pop
#include "kernel/kernel_compat_cpu.h"
#include "kernel/kernel_montecarlo.h"
@@ -53,7 +56,7 @@ void OSLShader::thread_init(KernelGlobals *kg, KernelGlobals *kernel_globals, OS
OSL::ShadingSystem *ss = kg->osl->ss;
OSLThreadData *tdata = new OSLThreadData();
memset(&tdata->globals, 0, sizeof(OSL::ShaderGlobals));
memset((void *)&tdata->globals, 0, sizeof(OSL::ShaderGlobals));
tdata->globals.tracedata = &tdata->tracedata;
tdata->globals.flipHandedness = false;
tdata->osl_thread_info = ss->create_thread_info();

View File

@@ -110,7 +110,7 @@ foreach(_file ${SRC_OSL})
string(REPLACE ".osl" ".oso" _OSO_FILE ${_OSL_FILE})
string(REPLACE ${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} _OSO_FILE ${_OSO_FILE})
add_custom_command(
OUTPUT ${_OSO_FILE}
OUTPUT ${_OSO_FILE}
COMMAND ${OSL_COMPILER} -q -O2 -I"${CMAKE_CURRENT_SOURCE_DIR}" -o ${_OSO_FILE} ${_OSL_FILE}
DEPENDS ${_OSL_FILE} ${SRC_OSL_HEADERS} ${OSL_COMPILER})
list(APPEND SRC_OSO

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2011-2013 Blender Foundation
* Copyright 2011-2018 Blender Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,10 +17,19 @@
#include "stdosl.h"
shader node_ambient_occlusion(
normal NormalIn = N,
color Color = 0.8,
output closure color AO = 0)
color ColorIn = color(1.0, 1.0, 1.0),
int samples = 8,
float Distance = 1.0,
normal Normal = N,
int inside = 0,
int only_local = 1,
output color ColorOut = color(1.0, 1.0, 1.0),
output float AO = 1.0)
{
AO = Color * ambient_occlusion();
int global_radius = (Distance == 0.0 && !isconnected(Distance));
/* Abuse texture call with special @ao token. */
AO = texture("@ao", samples, Distance, Normal[0], Normal[1], Normal[2], inside, "sblur", only_local, "tblur", global_radius);
ColorOut = ColorIn * AO;
}

View File

@@ -14,6 +14,8 @@
* limitations under the License.
*/
/* TODO(lukas): Fix colors in OSL. */
float color_srgb_to_scene_linear(float c)
{
if (c < 0.04045)

View File

@@ -149,7 +149,7 @@ ccl_device void kernel_holdout_emission_blurring_pathtermination_ao(
#ifdef __AO__
if(IS_STATE(ray_state, ray_index, RAY_ACTIVE)) {
/* ambient occlusion */
if(kernel_data.integrator.use_ambient_occlusion || (sd->flag & SD_AO)) {
if(kernel_data.integrator.use_ambient_occlusion) {
enqueue_flag = 1;
}
}

Some files were not shown because too many files have changed in this diff Show More