When in Axis alligned orthographic view a grid was always displayed.
With this change the user can enable/disable this grid.
The Grid is always visible and editable, but only rendered active when user is in quad view, or axis aligned ortho view.
Reviewers: brecht, fclem
Maniphest Tasks: T63517
Differential Revision: https://developer.blender.org/D4699
Edit mode shows the mesh elements in X-ray mode even if alpha is set to
1. Now the code takes this into account so that you can still select
visible mesh elements in X-ray edit mode.
view3d_draw_legacy need to be updated with the new XRAY flag macros to
avoid crashes. Additional cleanup of the XRAY macro flags were done.
Now the depth order of objects when trying to select them is only used when not in X-ray mode.
Before, this was only the case in wireframe mode regardless of X-ray settings.
I've also unified the usage of V3D_XRAY and XRAY_FLAG as they were basically copies of each other.
Reviewed By: Clément
Differential Revision: http://developer.blender.org/D4504
The issue was the manipulated depth for images would be used when doing distance depth checks.
Now we will use the actual depth of the image object when doing such tests.
Reviewed By: Clément Foucault
Differential Revision: http://developer.blender.org/D4616
This forces bone transparency / wireframe display when Xray is enabled.
This makes sense as the bone transparency is a kind of Xray and should
be linked to the Xray display.
While I broke the non-stereo camera frame in rBf1fef41863b I came to
realize after further tests that the stereo camera frame was NEVER
correct.
It is now, regardless of the camera shift, the camera pivot, if you are
looking through the left, right or stereo eyes.
In the end all that was missing was to multiply the shift we needed to
offset the frame, by the frame width.
I also took the opportunity to perform some cleanup/refactor regarding
names. It was too confusing even for me.
Note: Non-uniformally scaled cameras still draw slightly wrong.
This patch adds a new "Use Alpha" option on image empties to avoid ordering
issue of reference images.
If ordering is not important, "Use Alpha" can be enabled to provide
transparency and alpha blending support.
Draw manager was checking for particles being enabled in viewport, but
actual evaluation was happening for render. Now the check in draw manager
properly follows current evaluation mode.
Additionally, de-duplicated some check, by moving everything needed to
a single place.
Annoying part is the const-cast, that could be cleaned up later by
modifying some underlying functions.
2D artists have requested a way to see in viewport the name of the material assigned to a stroke. This is a special request for 2D animation and required to manage complex drawings with multiple materials on it. We don't need add a separate option for this in the panel.
Now, when enable Name option in the Viewport Display panel, when you select a stroke in edit mode, the name of the material is displayed near the first point selected.
Design reviewed by @mendio and @pepeland
This behavior matches back-face culled mesh objects,
where the wire outline doesn't depend on the viewing angle.
Applying this before empty visibility check for view framing,
since it's strange if viewing all gives different results
depending on back-face culling.
Note this was broken even in 2.7x.
We had a different logic for the plane wire, as for the plane itself.
And they were both wrong when changing the camera shift or the stereo
pivot.
Both of their logic is now unified and correct.
Also I had to create a new gpu batch for the quad wires, since there is
no state that allows me to filter out the geometry, and the square gpu
batch is quite different than the quad one (2d x 3d and orientation).
Volume itself was working, but buggy. The issue was that transparent shapes
does not write to depth buffer. But the custom MSAA resolve shader discard
pixels that did not write to depth making them transparent.
Transparent passes should not be inside the MSAA passes, this is also
a matter of performance.
This is unreported. When using volume opacity 0.0, the wires were not visible
(nor were they in other cases, but this was the most obvious one).
The volume itself is still glitchy, and slightly worse than 2.79. I
still don't know how to fix this though. It seems a common problem
(see T62262).
This makes the bones transparent when the object or the viewport display
type is Wireframe. This is in order to make things consistent.
In object mode all bones are fully transparent to not create more visual
noise if the scene is complex.
Another small addition is that the Bounding Box draw mode now works as
expected on armatures.
The option is separated from the solid mode color option.
Random color uses the same method as solid mode.
Selection state is indicated by a brighter color that is outside the
brightness range of the unselected state colors. The active state is
indicated by the outlines that is, now, still drawn in wireframe mode.
Coloring of the selection / active outline is not optimal because it
can look ugly in some cases of color combination. But the outline color
is using index range coloring so it's not trivial to change the color of
the outline per object. For now we use the same outline color used in solid
mode for consistency and also still add an emphasis on the selected objects.
The Single color option uses the theme color. Maybe it would be nice to
change the name of it in a latter commit to avoid confusion.
If all axis and grid options were turned off, the grid in the main ortho views would not be rendered.
Now we force rendering of the grid regardless of the settings when in one of the main ortho views.
Reviewed By: Brecht Van Lommel
Differential Revision: https://developer.blender.org/D4378
The dependency graph now handles updating image users to point to the current
frame, and tags images to be refreshed on the GPU. The image editor user is
still updated outside of the dependency graph.
We still do not support multiple image users using a different current frame
in the same image, same as 2.7. This may require adding a GPU image texture
cache to keep memory usage under control. Things like rendering an animation
while the viewport stays fixed at the current frame works though.