-Wireframe use Background color for X-Ray off
- Added support to Solid mode.
- Solid mode shows fill or not depending X-Ray.
- Solid can use Single, Material, etc.
- Wireframe and Solid mode don't show FXs.
Workaround to tranform feedback not working on mac.
On some system it crashes (see T58489) and on some other it outputs
garbage (see T60171).
So instead of using transform feedback we render to a texture,
readback the result to system memory and reupload as VBO data.
It is really not ideal performance wise, but it is the simplest
and the most local workaround that still uses the power of the GPU.
This should fix T59426, T60171 and T58489.
As discussed with @billreynish this makes little sense now that we don't
have a dedicated textured mode. We don't have a superior texture or shaded
mode anymore and we also cannot mix different engines together (workbench
with eevee/lookdev).
The only feature it removes is the possibility to hide textures for certain
object in solid mode.
Removed in aa7b013bd5 for performance reasons, however highlights
can't always be seen against specular shading, see: T55456#510873
Instead of having a highlighted inner-edge, use the active edge color.
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.
After a previous commit to use unique identifiers for Ghash key, I had missed to free the memory of the name key.
Thanks to Jacques Lucke for detecting the leak.
The problem was not only for instances, but for particles too, and produced segment fault.
For some reason due any internal modification of how duplicated objects are generated, the duplicated object are not available when the draw manager try to use runtime data.
Now, before drawing the particle or the instance, the pointers of the duplicated objects are reassigned to the original "real object" to get full access to runtime data.
Now it's possible use the different Wire modes (Single, Object & Random)
Also support for x-ray mode.
For random colors, the name of the object and the name of the layer is used.
Also some parameters cleanup.
When enable Wireframe mode in the shading type, all strokes are displayed as simple 1 pixel lines.
The color of the line is equal to the stroke color or the fill color if the fill is enabled and the stroke is disabled or has invisible alpha value.
In wireframe mode, all FX are disabled because sometimes the effects can make the lines invisible.
The modifiers are not disabled.
Still pending to decide if we must add support for Random colors, but not sure if this is useful in 2D.
Add a new Draw Mode to display panel in order to define the z-.depth order of the strokes using the real 3D position and not the 2D layer position.
This change makes possible to use VR with grease pencil drawings because the depth of the strokes change with camera position. Also, provide an alternative solution to tasks: T57859, T60325,
The parameter only works with 3D space depth ordering. The Back and Front depths are incompatible with 3D Space mode.
Options are:
- Back
- Front
- 3D Space->2D Layers (default)
-3D Space->3D Location (new mode)
On CCG side it is done similar to displacement, where we have
a dedicated functor which evaluates displacement. Might be seemed
as an overkill, but allows to decouple SubdivCCG from mesh entirely,
and maybe even free up coarse mesh in order to save some memory.
Some weak-looking aspect is the call to update normals from the
draw manager. Ideally, the manager will only draw what is already
evaluated. But it's a bit tricky to find a best place for this since
we avoid dependency graph updates during sculpt as much as possible.
The new code mimics the old code, this is how it was in 2.7.
Fix shading part of T58307.
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.