Commit Graph

3210 Commits

Author SHA1 Message Date
1e4aab36c2 Cleanup: remove redundant BKE/BLI/BIF headers 2019-01-26 21:20:25 +11:00
19b5f5493c Cleanup: draw manager headers 2019-01-26 20:08:52 +11:00
b8467273b8 Cleanup: redundant defines
Comment or remove unused defines.
2019-01-26 19:15:30 +11:00
edd34c924b Cleanup: wrapper for built-in shader access 2019-01-26 16:39:05 +11:00
77b66a9666 DRW: support clipping for empty object 2019-01-26 15:49:14 +11:00
c1814d593d Workbench: Depth Of Field: Add toggle option in shading popover
Pretty straight forward. Just an option to turn the DoF per viewport.
Default is off as in 2.79.
2019-01-25 21:56:10 +01:00
3223644d14 Workbench: Depth Of Field: Cleanups 2019-01-25 21:56:10 +01:00
ca739ac1d5 GP: Apply scale to particles
The particles were using the scale of the original object and the thickness of the stroke was not correct. Now, the scale is applied by particle.
2019-01-25 20:40:56 +01:00
71e3002824 Workbench: Depth Of Field: Optimisation
- Compute samples positions on CPU.
- Use 3x3 Box blur instead of 2x2.
- Implement bokeh parameters.

With this commit, dof performance is almost negligeable.
The quality is a bit lower than before but can be improve. Also now big
Circle of confusion are supported (up to 200px).
Cost is ~1.25ms on AMD Vega with a 2560p viewport than full HD and
pretty shallow depth of field.

Coc downsampling and dilation is not used anymore for now (commented).
2019-01-25 15:04:18 +01:00
3f6e14e667 Workbench: Depth Of Field: Initial Commit
The algorithm used is borrowed from :
http://tuxedolabs.blogspot.com/2018/05/bokeh-depth-of-field-in-single-pass.html

This makes it possible to have a decent blur for foreground over defocused
background in one pass only.

The algorithm is using a gather approach that is much faster
than the scatter approach used in Eevee. This makes it possible to have
custom bokeh shapes (not implemented yet) which would be impossible with
a separable gaussian technique.

The blur is done in 2 steps. The first one define the shape of the bokeh
and the second that fill the undersampling.

A downsample max-CoC tile texture speed up the gathering process.
2019-01-25 15:02:49 +01:00
3fb72a5432 GP: Use Fill color when drawing strokes for no stroke materials
Artists requested to show the stroke while drawing a new stroke using a material with fill color only, because it's very difficult to see the stroke.

Now the stroke shows always but using the fill color, not the stroke color because maybe is not set.
2019-01-25 14:34:56 +01:00
a761233261 Correct last commit, wire xray is supported 2019-01-25 23:36:31 +11:00
30762a0b39 DRW: disable clipping background drawing w/ xray mode
This interfered with drawing the mesh.
2019-01-25 23:30:27 +11:00
2218bf02dd Cleanup: sort cmake file lists 2019-01-25 08:30:33 +11:00
e72fa714a8 Cleanup: remove duplicated shaders that only added clipping checks
Originally I wanted to avoid adding draw manager specific ifdef's all
over generic shaders however this isn't needed in so many places.

Also there are shaders that are only used by the draw manager so
duplicating them only to have the original unused doesn't make sense.
2019-01-25 08:01:07 +11:00
6d8394d38b DRW: support clipping for camera objects 2019-01-25 07:13:02 +11:00
a4fe338dd8 Cleanup: add missing braces to draw manager 2019-01-25 07:12:13 +11:00
95db2e8749 Fix GPU linking Error.
"The geometry shader uses varying _I;gl_PerVertex;gl_ClipDistance, but previous shader does not write to it."
2019-01-24 12:42:20 -02:00
bc32240105 Fix T60810: crash editing mesh with subdivision modifier
typo in rBdc7e49298940

Reviewers: fclem

Maniphest Tasks: T60810

Differential Revision: https://developer.blender.org/D4244
2019-01-24 14:36:01 +01:00
b3ba97ccce Fix T60805: Grease Pencil Rim Effect Problem
The problem was related to cache data that was removed from memory before the FX  finished. This could affect to any FX.

Now all the information is saved in the FX itself in runtime struct to keep memory safe when cache memory is released.
2019-01-24 11:33:35 +01:00
d2afdf3c20 GP: Use matrix location instead of loc 2019-01-24 11:33:35 +01:00
be32168eb4 DRW: support clipping for object outlines (unselected) 2019-01-24 19:13:38 +11:00
aa1b77dccb DRW: support clipping for object outlines 2019-01-24 18:28:21 +11:00
cd8a342d7c Cleanup: fix compiler warnings. 2019-01-24 07:41:36 +01:00
11428e0b7f DRW: use clipping for depth buffer
Object selection now supports clipping.
2019-01-24 17:12:06 +11:00
d8a082f914 Correct doxy file 2019-01-24 16:19:45 +11:00
04d18b117c DRW: API for own versions of builtin GPU shaders
DRW_shader_get_builtin_shader can replace GPU_shader_get_builtin_shader
when we need to support clipping.

Use this for loose point & wire drawing in object mode,
clips edges in lattice edit mode.
2019-01-24 16:14:00 +11:00
7f77961f1c Fix theme color use for clipping region
Color needed to be converted to linear in the engine,
not the theme.
2019-01-24 10:36:46 +11:00
ddc278da24 Cleanup: comments above struct members, shader group assignments
Avoid using pointer to pointer when building shader groups.
2019-01-23 23:59:40 +11:00
48eed058b1 3D View: draw clipping region
Only for workbench solid/wire modes.
2019-01-23 23:37:25 +11:00
2e4f1b592f Cleanup: use eGPU prefix for GPU enum types 2019-01-23 14:16:03 +11:00
14d947dcad DRW: generalize selecting between regular/clipped shaders
Each engine was doing this on its own.
Move to DRWContextState, use an enum.
2019-01-23 13:34:55 +11:00
c403508e41 DRW: changes to object mode engine needed to support clipping
Split out shader struct, no function changes.
2019-01-23 12:37:12 +11:00
dc3b5024be Cleanup: add BEGIN/END to GPL headers 2019-01-23 11:32:43 +11:00
dc84a03a95 License: add missing GPL headers
Information taken from related files committed at the time.
2019-01-23 11:32:43 +11:00
4c24782ccf DRW: only show hidden geometry when selection is used
Matches 2.7x behavior.
2019-01-23 08:46:26 +11:00
185c2487a6 Fix T60737: Crash workbench rendering
Addition of clipping from 7467049055
didn't account for non viewport display.
2019-01-22 22:27:23 +11:00
585e4848e1 3D View: Support vert & weight paint mask clipping 2019-01-22 22:22:20 +11:00
0bbca0e221 3D View: Support edit-mesh clipping (only verts)
We'll need to replace built-in shaders to add support for clipping.
2019-01-22 17:23:24 +11:00
7f40d553f9 Cleanp: use single global for draw manager
Add 'G_draw' for all draw manager globals,
avoids adding extern to each file.

Connection between `ts` and `globals_ubo` wasn't obvious,
now called `G_draw.block` & `G_draw.block_ubo`.
2019-01-22 12:09:27 +11:00
c7768bcf4b Cleanup: use const args 2019-01-22 12:09:12 +11:00
46d56872d0 Fix error in last commit 2019-01-22 11:24:59 +11:00
14adca06e4 Cleanup: use DRW_shader_create_from_arrays
Avoids messy conditional defines and inline lib allocation.
2019-01-22 11:09:17 +11:00
7c0f925c59 DRW: Add DRW_shader_create_from_arrays utility
While verbose, this is a more flexible way to construct shaders.

Libs & defines can be optionally included for each shader type
which was previously done with inline string creation.
2019-01-22 10:38:28 +11:00
8beab3e339 Cleanup: remove redundant '_sh' suffix, add '_shgrp' 2019-01-22 08:31:07 +11:00
3d9bee2db1 Cleanup: rename shader containers
These only contain shaders, so name Shaders instead of ShaderData.
2019-01-22 08:26:43 +11:00
14b5668c60 DRW: Fix corner indices order in clipping plane setup
Fix T60667: Eevee: reflection plane bug in rendered view.
2019-01-21 15:21:17 +01:00
9bc47ed0f6 Fix clipping shaders with some AMD/Intel drivers
Caused:
    error: unsized array index must be constant

Use hard coded number of clipping planes, copying the 4th to 5 & 6
when only 4 are used.
2019-01-21 23:55:53 +11:00
78d2abd9c1 DRW: Support wire overlay clipping 2019-01-21 19:08:42 +11:00
7bc9a563e6 Correct freeing builtin shader from recent commit 2019-01-21 19:07:57 +11:00