Commit Graph

1744 Commits

Author SHA1 Message Date
Jeroen Bakker
4aca02064f Fix T72905: EEVEE + UV Edit Unused Map
There is a cornercase when the user edits an uvmap, that is not part of
the material (yet). When this is the case the uvmap was not added to the
uv buffer and the 'pos' alias was not created.

This change will always request the active uv map when uv editing.

Reviewed By: fclem

Differential Revision: https://developer.blender.org/D6534
2020-01-17 07:51:06 +01:00
Clément Foucault
d72ffb5e9a Overlay: Fix wrong 3D icon for cubemap lightprobes 2020-01-16 19:47:19 +01:00
Lukas Stockner
7d8a186335 Fix T73133: UDIM texture count in Eevee is limited by OpenGL
Based on @fclem's suggestion in D6421, this commit implements support for
storing all tiles of a UDIM texture in a single 2D array texture on the GPU.

Previously, Eevee was binding one OpenGL texture per tile, quickly running
into hardware limits with nontrivial UDIM texture sets.
Workbench meanwhile had no UDIM support at all, as reusing the per-tile
approach would require splitting the mesh by tile as well as texture.

With this commit, both Workbench as well as Eevee now support huge numbers
of tiles, with the eventual limits being GPU memory and ultimately
GL_MAX_ARRAY_TEXTURE_LAYERS, which tends to be in the 1000s on modern GPUs.

Initially my plan was to have one array texture per unique size, but managing
the different textures and keeping everything consistent ended up being way
too complex.

Therefore, we now use a simpler version that allocates a texture that
is large enough to fit the largest tile and then packs all tiles into as many
layers as necessary.

As a result, each UDIM texture only binds two textures (one for the actual
images, one for metadata) regardless of how many tiles are used.

Note that this rolls back per-tile GPUTextures, meaning that we again have
per-Image GPUTextures like we did before the original UDIM commit,
but now with four instead of two types.

Reviewed By: fclem

Differential Revision: https://developer.blender.org/D6456
2020-01-16 02:06:49 +01:00
Campbell Barton
df36e1c5dd Fix T71091: Object restrict selection conflicts with pose selection
Support pose bone selection when the object has hide_select enabled.

This is consistent with how all other modes work.
2020-01-15 17:09:52 +11:00
Clément Foucault
3edd8d5b07 DRW: Fix instance batch check
Thanks to @LazyDodo for the heads up.
2020-01-15 00:08:32 +01:00
Clément Foucault
ba5bbf14f9 Fix T71532 EEVEE: Hair UV/Color attributes not working 2020-01-14 16:55:11 +01:00
Clément Foucault
60c6a74ce1 Fix T72152 DRW_debug_sphere Not Working After Overlay Refactor 2020-01-13 17:40:55 +01:00
Clément Foucault
2359979141 Fix T73044 Crash in UV editor when changing UV selection modes
Thanks to @campbellbarton for the fix.
2020-01-13 17:29:31 +01:00
Clément Foucault
b8bdb8e9e9 DRW: Fix stencil being modified by passes that are read only
This is because even if the glStencilMask is 0x00 the GL_DECR_WRAP and
GL_INCR_WRAP states still works and will modify the stencil.

Fix T73046 Overlapping parts of wireframes don't render at all in workench
with shadows turned on.
2020-01-13 16:27:01 +01:00
mano-wii
15ef1d4c80 Fix T72119: UV/Image Editor theme face colors with no effect
The `in int flag;` in `gpu_shader_2D_edituvs_faces_vert.glsl`
don't have the values `FACE_UV_ACTIVE` and `FACE_UV_SELECT`.

Add face flags then.

Original patch is from @EitanSomething

Differential revision: https://developer.blender.org/D6520
2020-01-08 09:21:39 -03:00
Campbell Barton
07a959067d Fix T72667: Collection delete hierarchy in edit-mode crashes
Also resolves T72848, although updating multiple windows doesn't work,
this matches 2.7x behavior.
2020-01-08 22:35:26 +11:00
Campbell Barton
6e39aeb2cd BMesh: remove BMEditMesh.ob use for draw manager 2020-01-07 14:06:33 +11:00
Jeroen Bakker
f7fb1de41b Fix T72788: Crash Edit Custom Bone Object
In a recent refactor we splitted the lines extractor in `extract_lines` and
`extract_lines_loose`. When an object is in edit mode the extracted
lines loose also had to include a dummy bmesh edge iterator. This change
adds this missing dummy method.

Reviewed By: antoniov

Differential Revision: https://developer.blender.org/D6499
2019-12-30 13:34:15 +01:00
Campbell Barton
110f1cb1d6 Cleanup: clang-format 2019-12-20 10:46:24 +11:00
Philipp Oeser
e0afee86b3 Fix T72128: Overlay: Edge indices stacking on top of edge measurements
Make indices accommodate into the measures of edgelength and edgeangle
so this results in a nice stack of up to three rows.

Maniphest Tasks: T72128

Differential Revision: https://developer.blender.org/D6357
2019-12-19 13:53:56 +01:00
Jeroen Bakker
4440739699 Fix T72236: UV Stretching Overlay
The ratio for area stretching was packed into an unsigned int, but could
contain negative numbers. This flipped the negative numbers to high
positive numbers and rendered the wrong color in the stretching overlay.

I can remember during {T63755} I had to flip the sign to get the
correct result, but couldn't find out why that was needed. Now I know.

Reviewed By: fclem, mano-wii

Differential Revision: https://developer.blender.org/D6440
2019-12-19 08:34:31 +01:00
mano-wii
61f4a7d1f5 Fix T72372: color picker is unreliable with large "clip end" values
By my tests, `planes_from_projmat` proved to be more accurate than the current solution.

Differential Revision: https://developer.blender.org/D6434
2019-12-18 09:41:14 -03:00
Jeroen Bakker
b30a722f2d Fix T72124: LookDev Sphere Rendering
Due to the refactoring of the overlay engine the draw caches were
changed. The sphere batch used to have positions and normals. After the
refactoring it didn't had the normals anymore. The normals are needed
for shading. As they were not there the look dev spheres were rendered
black.

This change add the `nor` attribute to `DRW_cache_sphere_get` batch.

Reviewed By: fclem

Differential Revision: https://developer.blender.org/D6393
2019-12-18 10:56:26 +01:00
mano-wii
84c1e57dfe Fix T72507: Depth of bones missing for navigation
Regression introduced in rBb11272a0
2019-12-17 10:34:49 -03:00
Campbell Barton
1ef6be3686 Cleanup: redundant struct declarations 2019-12-17 10:15:22 +11:00
Campbell Barton
f4d7d5e75d Cleanup: sort struct declarations 2019-12-17 10:08:47 +11:00
Campbell Barton
5a97a74c69 Cleanup: whitespace 2019-12-16 13:49:11 +11:00
Lukas Stockner
c30d6571bb Add support for tiled images and the UDIM naming scheme
This patch contains the work that I did during my week at the Code Quest - adding support for tiled images to Blender.

With this patch, images now contain a list of tiles. By default, this just contains one tile, but if the source type is set to Tiled, the user can add additional tiles. When acquiring an ImBuf, the tile to be loaded is specified in the ImageUser.
Therefore, code that is not yet aware of tiles will just access the default tile as usual.

The filenames of the additional tiles are derived from the original filename according to the UDIM naming scheme - the filename contains an index that is calculated as (1001 + 10*<y coordinate of the tile> + <x coordinate of the tile>), where the x coordinate never goes above 9.
Internally, the various tiles are stored in a cache just like sequences. When acquired for the first time, the code will try to load the corresponding file from disk. Alternatively, a new operator can be used to initialize the tile similar to the New Image operator.

The following features are supported so far:
- Automatic detection and loading of all tiles when opening the first tile (1001)
- Saving all tiles
- Adding and removing tiles
- Filling tiles with generated images
- Drawing all tiles in the Image Editor
- Viewing a tiled grid even if no image is selected
- Rendering tiled images in Eevee
- Rendering tiled images in Cycles (in SVM mode)
- Automatically skipping loading of unused tiles in Cycles
- 2D texture painting (also across tiles)
- 3D texture painting (also across tiles, only limitation: individual faces can not cross tile borders)
- Assigning custom labels to individual tiles (drawn in the Image Editor instead of the ID)
- Different resolutions between tiles

There still are some missing features that will be added later (see T72390):
- Workbench engine support
- Packing/Unpacking support
- Baking support
- Cycles OSL support
- many other Blender features that rely on images

Thanks to Brecht for the review and to all who tested the intermediate versions!

Differential Revision: https://developer.blender.org/D3509
2019-12-12 18:40:37 +01:00
Jeroen Bakker
7878adf49c DrawManager: Disable Clipping in material/rendered mode
Viewport: Disable Clipping For EEVEE and External Renderers

Currently it is possible that, when using viewport clipping, the display and tools communicate
different information to the user then the renderer does. The reason is
that the renderer does not support viewport clipping. Both EEVEE and
Cycles do not support it.

This patch will disable the clipping in all the tools and drawing code
when the viewport drawing mode is `Material Preview` or `Rendered`.

This patch introduces a `RV3D_CLIPPING_ENABLED` util that checks if
clipping is enabled for the given `rv3d` and `v3d`. Also in places where
it was needed we added the `ViewContext` as a carrier for the `View3D`
and `RegionView3D`.

There are a few areas in the tooling (select, projection painting) that
still needs to be tackled after this patch.

Reviewed By: fclem

Differential Revision: https://developer.blender.org/D6047
2019-12-11 16:58:14 +01:00
Brecht Van Lommel
03cb991618 Fix T72240: GLSL error with some old NVIDIA drivers, causing crash at startup 2019-12-08 14:59:07 +01:00
Harley Acheson
9c1134015c UI: Custom Face Orientation Colors
Adds theme settings to allow change of front and back faces of the Face Orientation overlay

Differential Revision: https://developer.blender.org/D6262

Reviewed by Jeroen Bakker
2019-12-07 08:16:45 -08:00
Campbell Barton
eeaf452381 Cleanup: clang-format 2019-12-07 01:35:53 +11:00
Jeroen Bakker
15abc9fe74 Draw: Removal of MultiSample Buffers
Multisample buffers were used for smooth line drawing. As we now have
an algorithm that doesn't need the multisample buffers we can remove
them.

The user preference for viewport multi_sampling is replaced by single
toggle overlay `use_overlay_smooth_wire`. By default this setting is
enabled as the new drawing is really quick (<1ms) and uses zero hacks.

Reviewed By: fclem

Differential Revision: https://developer.blender.org/D6367
2019-12-06 07:45:07 +01:00
Clément Foucault
d40579c62b Overlay Engine: Fix bone outline antialiasing 2019-12-05 16:36:06 +01:00
Clément Foucault
e2806b7429 Revert "Fix T71576 Mesh error on mutimaterial Meshes on legacy nvidia drivers"
This reverts commit cf77b67c45.
2019-12-05 12:02:24 +01:00
Clément Foucault
cf77b67c45 Fix T71576 Mesh error on mutimaterial Meshes on legacy nvidia drivers
Differential Revision: https://developer.blender.org/D6351
2019-12-05 11:16:29 +01:00
Jeroen Bakker
f4b7d57551 Fix T72175: DrawManager Crash Large Objects
Introduced by 9c337fcfe2 mistaken that `MeshExtract.use_threading` set
to false means that no threading is used at all. This is not the case it
will still perform threading for large objects, it will only run the
different subtasks in serial.

Fixed by scheduling the `lines_loose` in the task_pool after the rest
have been executed. This is cleaner than the previous implementation as
it sticks more to the actual design.
2019-12-05 08:14:32 +01:00
Jeroen Bakker
9c337fcfe2 Fix T72130: Wireframe Visible After Disabling
The lines index buffer can contain all edges (edit mode) or only loose
edges (object mode). When switching between these modes the wrong
content of the index buffer can be used.

This patch will clear the lines index buffer when a `loose_edges` is requested. Making sure it is always up to date.

Note that this is supporting an exising hack where the IBO is truncated
during the creation. We should find a different way how to solve these
kind of issues.

Reviewed By: fclem

Differential Revision: https://developer.blender.org/D6349
2019-12-04 15:17:09 +01:00
Clément Foucault
014eb69cf8 Overlay Engine: Make thickwires (linesize > 1.0) using the Wire AA pass
This fixes the limitation of OSX not allowing glLineWidth with size > 1.0.
This however only fix the viewport wire drawing.
2019-12-02 14:35:49 +01:00
Clément Foucault
9516921c05 Overlay Engine: Refactor & Cleanup
This is the unification of all overlays into one overlay engine as described in T65347.

I went over all the code making it more future proof with less hacks and removing old / not relevent parts.

Goals / Acheivements:
- Remove internal shader usage (only drw shaders)
- Remove viewportSize and viewportSizeInv and put them in gloabl ubo
- Fixed some drawing issues: Missing probe option and Missing Alt+B clipping of some shader
- Remove old (legacy) shaders dependancy (not using view UBO).
- Less shader variation (less compilation time at first load and less patching needed for vulkan)
- removed some geom shaders when I could
- Remove static e_data (except shaders storage where it is OK)
- Clear the way to fix some anoying limitations (dithered transparency, background image compositing etc...)
- Wireframe drawing now uses the same batching capabilities as workbench & eevee (indirect drawing).
- Reduced complexity, removed ~3000 Lines of code in draw (also removed a lot of unused shader in GPU).
- Post AA to avoid complexity and cost of MSAA.

Remaining issues:
- ~~Armature edits, overlay toggles, (... others?) are not refreshing viewport after AA is complete~~
- FXAA is not the best for wires, maybe investigate SMAA
- Maybe do something more temporally stable for AA.
- ~~Paint overlays are not working with AA.~~
- ~~infront objects are difficult to select.~~
- ~~the infront wires sometimes goes through they solid counterpart (missing clear maybe?) (toggle overlays on-off when using infront+wireframe overlay in solid shading)~~

Note: I made some decision to change slightly the appearance of some objects to simplify their drawing. Namely the empty arrows end (which is now hollow/wire) and distance points of the cameras/spots being done by lines.

Reviewed By: jbakker

Differential Revision: https://developer.blender.org/D6296
2019-12-02 13:15:52 +01:00
mano-wii
a8d29ad6e0 Fix T71558: Hair particles: Brush effect not occluded by emitter geometry 2019-11-28 13:41:11 -03:00
Campbell Barton
321afe0cd6 Fix building on 32bit systems 2019-11-18 16:25:59 +11:00
Campbell Barton
5cf5dfcfad Fix T71194: UV Face centers wrong location with sub-surface mesh 2019-11-08 22:16:25 +11:00
Brecht Van Lommel
65b414cfb2 Fix T71319, T71015: crash in edit mode with out of range material assignments 2019-11-06 16:08:10 +01:00
Campbell Barton
f20cd49c30 Fix bones without parents missing head vertex
When the connected was enabled for a parentless bone the head vertex
wasn't displayed and couldn't be selected.
2019-10-30 03:37:50 +11:00
Clément Foucault
7e78fbf2de Fix assert and memleak in recent Skin Root Display patch
Caused by 4ddf3215a7
2019-10-16 20:16:53 +02:00
Clément Foucault
4ddf3215a7 Fix T68380 Skin modifier root not displayed 2019-10-16 18:58:12 +02:00
Dalai Felinto
dc5fa12bd3 Cleanup: Use BKE_object_is_visible elsewhere 2019-10-14 22:45:33 -03:00
Clément Foucault
b50b91c25d Cleanup: Fix wrong assert introduced by rBd98ae27f02c7 2019-10-10 20:16:22 +02:00
Campbell Barton
dc2cd2d0dc Cleanup: clang-format, spelling 2019-10-10 10:29:50 +11:00
Clément Foucault
9bd62379d6 Fix T70659 Warning, Regression, slow vertex selection
This changes the fix for T70302 by reducing the number of things we discard.
2019-10-09 23:47:56 +02:00
Dalai Felinto
0812949bbc Local Collections: Allow users to show hidden collections
Users now can turn on in a viewport collections that are temporarily
hidden (eye) in the view layer.

Design task: T61327

As for the implementation, I had to decouple the visibility in the
depsgraph from the visibility in the view layer.

Also there is a "bug" that in a way was there before which is some
operators (e.g., writing a text inside of a text object, tab into edit
mode) run regardless of the visibility of the active object. The bug was
present already (with object type visibility restriction) in 2.80 so if
we decide to tackle it, can be done separately (I have a patch for it
though P1132).

Reviewed by: brecht (thank you)

Differential Revision: D5992
2019-10-08 19:16:05 -03:00
Clément Foucault
d98ae27f02 Fix T68857 EditUV: Crash on Remesh modifier with 'Display in Edit Mode' 2019-10-08 18:42:26 +02:00
Clément Foucault
656228945e Fix T69363 EEVEE: Blender crash when using Edit mode for Ocean
Use same Mesh* as extraction. We always use the final mesh for shaded geom.
2019-10-08 18:37:38 +02:00
Clément Foucault
e5858cc5be Fix T70302 Crash on entering solid view after some specific steps 2019-10-07 19:22:41 +02:00