Commit Graph

3210 Commits

Author SHA1 Message Date
cdf626615d Fix In front option not working in solid mode 2018-12-05 16:57:44 +01:00
3e1ca9a693 Fix T58764: solid mode error 2018-12-05 15:47:41 +01:00
d59c4c9d61 GPU: Cleanup: Replace glFlush by GPU_flush 2018-12-05 04:23:45 +01:00
1dac00f7ad Fix T58551: Dragged in images do not display orange highlight border when selected 2018-12-05 03:45:12 +01:00
354b1c162a Fix T58733: Segmentation fault at start causes by shader compillation 2018-12-05 02:51:48 +01:00
b5ebdb09af Workbench: Remove specular shadowing for red and blue metal 2018-12-05 02:51:48 +01:00
7ffde286be Workbench: Cleanups and reduce shader variations
Also optimize deferred engine by only outputing material data if needed.
This make the bare flat shading mode (no effects) only a depth prepass.
2018-12-05 02:51:48 +01:00
5368540431 Workbench: Fix workbench broken on some config due to usuned fb slot
This seems to be a driver bug. Only windows + Radeon HD 7500M seems
to be affected. Fix can be extended to more config if necessary.
2018-12-05 02:51:48 +01:00
f4261cd2ed Workbench: Remove unused framebuffer slot. 2018-12-05 02:51:48 +01:00
8fb3a222a1 Fix T58690: Disable overlay doesn't hide bones 2018-12-05 11:08:50 +11:00
34b73cb11c Fix T57620: display custom normals in Edit Mode.
Since it seems that CD_ORIGINDEX is not available for loops,
the only choice is to simply use the loop normals already
computed by depsgraph after evaluating modifiers.

This revealed a bug where the Auto Smooth settings would be lost
from the mesh after complex modifiers, or after edit mesh to mesh
conversion, so restoring them is needed to get correct results.
2018-12-04 19:53:14 +03:00
7e5f31be41 Fix T58609 Subdivision Surface modifier, "Optimal Display" not working
I tried to make it progressive using the wireframe slide but it did not
work well.

So taking the most straight forward way.
2018-12-04 17:52:32 +01:00
6f198f7851 Wireframe: Optimization: Only draw triangles that have edges
This only happens after a certain wireframe threshold.

We sort triangles into 2 bins (start and end of the buffer) based on a
threshold and just draw the first bin if the wireframe slider is low enough.

This optimization is disabled for deformed meshes when playback is active.
This optimization is only implemented for meshes object for now.

This should help resolve (to some extent) T58188.
2018-12-04 17:52:32 +01:00
f1975a4639 Wireframe: Optimization: Only draw triangles that have edges
This only happens after a certain threshold.

We sort triangles into 2 bins (start and end of the buffer) based on a
threshold and just draw the start bin if the wireframe slider is low enough.

This optimization is disabled for deformed meshes.

This should help resolve (to some extent) T58188.
2018-12-04 17:52:32 +01:00
89ef69d23c Wireframe: Optimization: Output degenerate triangles if no edges 2018-12-04 17:52:32 +01:00
95eca49e54 DRW: Make default debug mode a bit more silent
Use --debug-gpu for debugging non found uniforms
2018-12-03 17:19:11 +01:00
0759480529 Workbench: Encode Roughness and metallic into 8bits
This reduces the bandwidth + vram usage of workbench even further.
2018-12-03 17:19:11 +01:00
223c1a107a Workbench: Make object ID pass optionnal
We separate the background and foreground shading passes to be able to make
the object id pass optionnal if we don't need it.

This saves a bit more memory. Also not clearing all rendertargets saves
some GPU time too.
2018-12-03 17:19:11 +01:00
a022811441 DRW: Make fullscreen quad in the background
This is to be able to only draw the background pixels by using a depth
test EQUAL.
2018-12-03 17:19:11 +01:00
d8d52e273e Workbench: Cleanup: Remove Spherical harmonic evaluation
It is not used anymore
2018-12-03 17:19:11 +01:00
82f01c666f View3D: Grid: Don't make the Zaxis produce any fragment is not needed
This was a bug that was making the grid drawing even more slower than it
is.
2018-12-03 17:19:11 +01:00
24fd03d0c2 Workbench: Reduce VRAM usage depending on mode
We exploit the fact that we are using the metallic workflow for material
and pass the metallic parameter instead of the specular color.

Pack the front facing bit in the color buffer only for matcap display.

Change buffer formats to use less bytes as possible.

Also don't request buffers that we won't use.

Saved 40MB on 2K screen on StudioLight + Shadows + Specular Lighting.

Includes several cleanups.
2018-12-03 17:19:11 +01:00
63d0ea8ecf Fix T58535 Crash on Load
The particles was not ready when the drawing cache try to use it.
2018-12-03 09:12:29 +01:00
ffdc1f8924 Cleanup: warning, style 2018-12-03 16:50:50 +11:00
ff3601b9ae Fix/workaround T58368: Crash w/ mapped mesh + autosmooth 2018-12-03 14:58:29 +11:00
cf18eb2de3 Fix T56996: MacOS: Lagging when rotating the view
It happens on multiple configuration so we cannot isolate the fix to only
some config.

Thanks Hugo Lamarche for helping finding the fix.
2018-12-02 22:35:15 +01:00
756df74fca Fix T58101 : Image empties are only rendering their border when using MSAA 2018-12-02 20:11:40 +01:00
55b31dd98c Merge branch 'master' into blender2.8 2018-12-02 14:37:04 +11:00
783d8d4adf Workbench: Don't use alpha channel if not doing render
Lower Vram usage a bit
2018-12-01 20:38:52 +01:00
18f0618677 Fix T58412: in weight paint + pose mode certain armature operations crash.
The cause is that FOREACH_OBJECT_IN_MODE_BEGIN assumed that the active
object is in the correct mode, which is wrong in this case. It also
only considered objects of the same type as active, which had to be
replaced with an explicit type parameter.
2018-12-01 19:44:24 +03:00
02a4fc1395 Texture Paint: implement efficient face selection updates.
Fix the old code that propagates selection changes to the
evaluated mesh directly without rebuilding, and avoid tagging
DEG_TAG_COPY_ON_WRITE if it succeeds.
2018-12-01 15:40:48 +03:00
47ef301c76 Texture Paint: fix face selection with subsurface. 2018-12-01 14:38:11 +03:00
b0ec08cfa1 Texture Paint: emulate subsurf optimal display in paint mode wireframe.
The wireframe is intended for showing selected faces, and selection is
based on original faces, so the extra wireframe lines are pure noise.
2018-12-01 13:44:29 +03:00
3bd057d472 Texture Paint: fix wireframe and hiding not working with subsurf.
The editflag field is only valid in the original mesh instance.
2018-12-01 13:20:18 +03:00
9ccf27d1f7 StudioLight: Renaming stuffs 2018-11-30 15:40:57 +01:00
909fa08a76 StudioLight: Add a 4th light to adjust lighting
There was a bug due to non-aligned struct in the DNA that prevented us
to increase the size of the userdef light array.

Since the studio lights are now presets and stored in external files,
there is no need to keep backward compatibility with theses lights.

Remove the old array and create a new one.

Add blue tint light for specular.
2018-11-30 15:40:57 +01:00
e68c0bf76a Workbench: Add Shadow Focus and change Shadow Orientation
Shadow focus let the user choose how hard are is the shadows transition.
Harder shadow transition can be used for stylistic effects or more uniform
shading.

Make shadow orientation respect the same orientation as the studio light
(view from +Y direction aka. front view). Make the default shadow direction
more similar to the default light position (the default light object, not
the default studio lighting).
2018-11-30 15:40:57 +01:00
1965db2be2 Workbench: StudioLight: Fix worldspace rotation 2018-11-30 02:02:36 +01:00
6a4f5f6eb4 Workbench: Cleanups & Simplifications
* Move the curvature computation to the cavity pass: One can argue it's not
  the best performance wise (it gets a tiny perf pernalty if it is done
  alone without the ssao), but it make the code cleaner and reduce
  considerably the number of shader variation possible.
* Lower shader variation to 2^8 instead of 2^12
2018-11-30 02:02:36 +01:00
e1023014f4 GPUTexture: Add support for GL_R16 texture format 2018-11-30 02:02:36 +01:00
48a7785fd4 Workbench: Add option to have world space lighting in studio light mode
This option is per viewport.

Having view space shading make sense when working on isolated objects like
if you were holding them in your hands. But for entire scene work, it is
better to have the lighting fixed to have a better spatial representation.
2018-11-29 21:52:36 +01:00
844788a36c Workbench: Add back studio lighting presets
This changes a bit how the userprefs solid lights works. They are not
visible until enabling the "Edit Solid Light" checkbox. Once enabled the
current studiolight used for solid mode will be overwritten.

Once the lighting settings are tweaked, the user can click the
"Save as Studio light" button to save the current settings.
This makes it easy to create new lighting without messing the other
presets.

The studio lights are stored as ASCII files on the disk using a dead
simple custom format.

The UI/UX is not perfect and will be improved in other commits.

Also includes:
* Separate LookDev HDRI selection from Solid Lights
* Hide LookDev HDRIs from the Solid Lights selection list
2018-11-29 21:52:36 +01:00
8f4ab480bf Workbench: Rename orientation to type and Camera studio light to Studio 2018-11-29 21:52:36 +01:00
e6605d5f37 Fix depth offset in paint mode wireframe.
The original offset was wrong because it applied a constant to
homogenous coordinates (the actual depth is z/w), which broke
totally if near clip distance was reduced.

A correct depth offset has to take slope into account like
glPolygonOffset in order to avoid dotted lines caused by
interpolation precision variations. When drawing wire lines
however only the slope of the line itself is accessible, so
also generally increase the offset when the object is close.
2018-11-29 17:51:43 +03:00
28d2058e2c Fix rotate around point under cursor 'seeing' hidden faces in paint modes. 2018-11-29 14:25:16 +03:00
2d720f51cd Workbench: Change Studio lighting
This is in order to have more flexible ligthing presets in the future.
The diffuse lighting from hdris was nice but lacked the corresponding
specular information. This is an attempt to make it possible to customize
the lighting and have a cheap/easy/nice-looking pseudo-PBR workflow.

* Add cheap PBR to Workbench with fresnel and better roughness support.
  This improves the look of the metallic surfaces and is easier to control.
* Add ambient light to studio lights settings: just a constant color added
  to the shading.
* Add Smooth option to studio lights settings: This option fakes the
  effect of making the light bigger making the lighting smoother for this
  light. Smoother lights gets reflected like a background hdri.
* Change default light settings to include the smooth params.
* Remove specular highlights from flat shading. (could be added back but
  how do we make it good looking?)
* If specular lighting is disabled, use base color without using metallic.
* Include a lot of code simplification/cleanup/confusion fix.
2018-11-28 15:59:56 +01:00
36da85ebeb Cleanup: style 2018-11-28 11:24:45 +11:00
1d4ad68198 Workbench: Fix crash when enabling cavity 2018-11-27 15:08:35 +01:00
32ab0647a5 DRW: Implement Hair Weight drawing
Fixes T57931 Particle weight edit mode is not supported.

There is a bug that prevent refresh of the toolsettings on which is based
the weight / non-weight display selection (see T58086).
2018-11-27 13:49:22 +01:00
Dalai Felinto
8e65e38649 Font textbox overflow: Different methods
Sometimes the text doesn't fit. What to do in this case?

* Overflow: The default behaviour still is to overflow the text.
* Truncated: If any text box is defined we can also not draw the text
  that goes outside the text boxes.
* Scale to Fit: For single-text box texts we can scale down the text until
  it fits.

To support textboxes we are bisecting the scale until we find a good
match. Right now the hardcoded iteration limit is 20, and the threshold 0.0001f.

An alternative in the future would be to tackle this by integrating existing
layout engines such as HarfBuzz.

Note: Scale to fit won't work for multiple text-boxes if any of them has
either width or height as zero.

Reviewers: campbellbarton
Differential Revision: https://developer.blender.org/D3874

Feature development sponsored by Viddyoze.
2018-11-26 21:47:33 -02:00