Commit Graph

2380 Commits

Author SHA1 Message Date
Clément Foucault
566a4a96cb Fix T57891: Radius of strip hair doesn't scale with object scale
Note that this only works fine with uniformly scaled objects.
Otherwise, the hair thickness will vary in a weird way depending on viewing
angles.
2018-11-20 13:09:27 +01:00
Campbell Barton
15db2acd9f Fix T57722: Clipped LookDev preview spheres
D3948 by @pablodp606
2018-11-20 15:08:56 +11:00
Campbell Barton
f0b5a9da01 Cleanup: style, unused 2018-11-20 08:53:00 +11:00
Jacques Lucke
5f21030a81 Image Empties: Option to not display the backside of image empties
Reviewers: brecht

Differential Revision: https://developer.blender.org/D3964
2018-11-19 19:33:09 +01:00
Clément Foucault
7bb512594c Workbench: Use non-negative lighting evaluation
This makes the lighting a bit more diffuse but don't produce negative
values.

Add a bias of 1.5f to make the lighting a bit more directionnal.

The implementation is based on:
https://github.com/kayru/Probulator/blob/master/Source/Probulator/SphericalHarmonics.h#L136
which is derived from:
http://www.geomerics.com/wp-content/uploads/2015/08/CEDEC_Geomerics_ReconstructingDiffuseLighting1.pdf

The shader implementation is optimized and has the same runtime cost
as previous method:
* no sh eval : 0.13ms
* prev sh eval : 0.14ms
* new sh eval : 0.22ms
* new sh eval opti : 0.14ms
2018-11-19 18:05:15 +01:00
Clément Foucault
2b56d21839 Workbench: Performance: Fix performance drop caused by specular lighting
In my test, the composite pass went from 1.52ms to 0.24ms when specular
lighting is enabled.
2018-11-19 18:05:15 +01:00
Clément Foucault
6ffb0a0ee7 DRW: Make profiling more precise on certain drivers.
This makes the whole rendering slower (because of sync point) but the
numbers displayed by the draw manager profiler is more precise on some
buggy drivers. They seems to issue the query before the last one ends.
2018-11-19 15:48:17 +01:00
Clément Foucault
ee44dd1b2b Studio Lights: Big Cleanups
* Less Lengthy enum/macro names.
* Optimize computation of Spherical Harmonics.
* Reduce radiance cubemap size a bit. Higher resolution is not necessary.
* Remove STUDIOLIGHT_LIGHT_DIRECTION_CALCULATED (was not used).
* Do windowing on each component separately instead of using luminance.
* Use ITER_PIXELS to iterate on each pixels, using pixel center coords.
* Remove gpu_matcap_3components as it is only needed when creating the gputex.
* Fix a lot of confusion in axis denomination/swizzle.

These changes should not affect functionallity.
2018-11-19 15:48:17 +01:00
mano-wii
6647e2c71e EEVEE: Cleanup: default_world_frag.glsl 2018-11-19 09:05:22 -02:00
mano-wii
80499bcc52 EEVEE: Cleanup remove unused shader. 2018-11-19 09:05:20 -02:00
Campbell Barton
740adf2a4b Cleanup: style 2018-11-19 13:37:18 +11:00
Antonioya
1b7b1d60c5 Fix T57835: Textured-fill layer opacity not working
This was an unsupported feature.
2018-11-18 16:28:57 +01:00
Clément Foucault
735ad525a6 Fix T53750: Mirrored UV have bad tangent space
I feel silly because it was my fault all along! (see the WATCH IT warning)
2018-11-17 14:56:18 +01:00
Clément Foucault
b4640ea020 DRW: Fix object wire appearing when object is drawn as bounds 2018-11-17 14:56:17 +01:00
Campbell Barton
93cd8e2494 Cleanup: style 2018-11-17 22:23:25 +11:00
Campbell Barton
dab0bc7bf8 Cleanup: correct const usage 2018-11-17 22:23:24 +11:00
mano-wii
92d1e6606c Draw Manager: Fix memory leak 2018-11-17 00:23:17 -02:00
Clément Foucault
b24b1ec74b Eevee: SSR: Only fade based on reflected pixel position
Not on reflector pixel position. This improve the feel of SSRs and the
final render quality.
2018-11-16 18:49:45 +01:00
mano-wii
1f458895f8 Fix crash when rendering a scene first and then goes to eevee preview modes and cleanup
The crash only occurs with Intel 3rd generation GPUs.
It occurs because the program needs to be used at least once in the opengl context in which it is created.
2018-11-16 13:46:13 -02:00
mano-wii
0d5b291b74 Cleanup: removes unused varyings 2018-11-16 12:43:46 -02:00
mano-wii
f6c2fb0eb6 Minor edits in effect_ssr_frag.glsl 2018-11-16 12:43:45 -02:00
mano-wii
e9eb80055b Cleanup: remove unused variable 2018-11-16 12:43:44 -02:00
Clément Foucault
a915da221f Edit Mesh: Fixes display of custom normals
Should fix T57620
2018-11-16 00:45:22 +01:00
Clément Foucault
23c3124b56 Edit Mesh: Improve mesh cage drawing / fix errors and cleanup
* Fixes vertices with bad coloring. Now vertices draw with depth write so
they occlude the underlying face geom overlay, avoiding double drawing the
vertex.

* Decrease the z_offset of edges so they don't poke too much through
geometry. Also delete this offset in ortho view.

* Add zoffset to active and selected vertices so they always draw on top
if they overlap a non selected vertex.

* Fix alpha of edge_fix in vertex selection mode
2018-11-16 00:13:06 +01:00
Clément Foucault
ffa461f13c Eevee: Add Filter Quality setting
This setting can be tweaked to improve glossy reflection cubemaps.

It increases the sample count for each roughness level.
This settings affect the lookdev mode quality as well.
2018-11-15 20:04:47 +01:00
Clément Foucault
1b321048a7 Eevee: Add Glossy Reflection clamping
This enables reducing the noise comming from very bright light sources
(like a sun) that can be found in distant HDRIs.

The lost energy may be replaced manually by a sunlight that compensate the
this loss.

This clamping only concerns Reflection Cubmaps and is done on all on all
of them.

Setting to 0.0 disables it (default).
2018-11-15 20:04:47 +01:00
Clément Foucault
c2164e579c Eevee: Add irradiance smoothing
This is a parameter that will make the interpolation between irradiance
cells of a same Irradiance Volume smoother, reducing the weight of the
light leaking correction factors.

It is usefull in some cases to avoid harsh lighting transition that can
happen when a sample point it near a surface.
2018-11-15 18:16:30 +01:00
Clément Foucault
11b3954346 Eevee: Irradiance Grid: Make the influence shape corners round
This makes it easier to add corrective light grids without having ugly
blending corners revealing the shape of the grid bounds.
2018-11-15 18:16:30 +01:00
Clément Foucault
7ced0d3cc0 Eevee: Cleanup & small optimization 2018-11-15 18:16:30 +01:00
Clément Foucault
516e000aa9 Eevee: Add Light Threshold value
This is an important change. Starting from now, all lights have a finite
influence radius (similar to the old sphere option for BI).

In order to avoid costly setup time, this distance is first computed
automatically based on a light threshold. The distance is computed
at the light origin and using the inverse square falloff. The setting
can be found inside the render settings panel > shadow tab.

This light threshold does not take the light shape into account an may not
suit every case. That's why we provide a per lamp override where you can
just set the cutt off distance (Light Properties Panel > Light >
Custom Distance).

The influence distance is also used as shadow far clip distance.

This influence distance does not concerns sun lights that still have a
far clip distance.

---

This change is important because it makes it possible to cull lights
an improve performance drastically in the future.
2018-11-15 18:16:30 +01:00
Clément Foucault
d082b18d87 Eevee: Optimisation: Bypass light power calculation when not needed
This makes quite a big improvement in my case 1.8ms vs 2.3ms for a single
area light.
This will make even more difference with light attenuation.
2018-11-15 18:16:30 +01:00
Clément Foucault
d0b0e7efed Eevee: Cleanup: Fix wrong sun area light power calculation 2018-11-15 18:16:30 +01:00
Clément Foucault
f3074b96d6 Eevee: Make sun power match cycles better.
I made an empirical test with a 100% diffuse sphere and manually tweak the
lighting power of a sun lamp trying to fit cycles and eevee the best I can.

Then I plotted the result and found a rough fit to the equation and that
seems to work pretty well.
2018-11-15 18:16:22 +01:00
Sergey Sharybin
d546269de8 Cleanup: Double semicolon at the end of line 2018-11-15 16:32:18 +01:00
Campbell Barton
69a04c6140 Cleanup: correct flag comparisons
Also use smaller types for shading data.
2018-11-14 23:31:06 +11:00
Clément Foucault
c3d03b4434 Lamps: Remove HEMI light type
This type is not supported by either Eevee or Cycles. If other types of
lamps are needed by external engines, we should support adding custom types.
2018-11-14 11:50:37 +01:00
mano-wii
c39d5a6c88 Fix T57708: Crash on Eevee rendering with SSR enabled.
Intel does not like dead code.
The driver for `Intel HD Graphics 4000` crashes in these cases.
2018-11-13 15:19:10 -02:00
Antonioya
445d813c87 GP: Don't calculate fast drawing when playing 2018-11-13 18:53:42 +01:00
Antonioya
4e1057780b GP: Remove redundant texture attachment 2018-11-13 13:44:56 +01:00
Clément Foucault
647a798076 Workbench: Volume: Fix slice display opacity 2018-11-13 11:22:29 +01:00
Clément Foucault
6ba7345ca5 Workbench: Volumes: Fix volumetrics step length calculation
Step size is now one voxel diagonal.
Fix T57678 Culling of smoke depending on view direction
2018-11-12 21:15:58 +01:00
Clément Foucault
3eb7928406 Workbench: Volumes: Fix volumetrics rendering twices 2018-11-12 21:12:34 +01:00
Clément Foucault
d941f40c21 Fix T57571: Blender crashes on UV transformation
That was caused by a thread safety issue on gpu_batch_presets_unregister()
which was not designed to be used for this kind of situation (managing 3D
meshes batches).
2018-11-12 18:07:01 +01:00
Clément Foucault
36a3a40033 Eevee: Fix ESM not working after a certain distance
This was caused by overflow caused by the background and precision during
filtering.
2018-11-12 13:50:22 +01:00
Clément Foucault
e51dae4af8 Eevee: Fix lamps shadows not updating correctly
This was visible if the lamps was out of frustum.
2018-11-12 13:50:22 +01:00
Campbell Barton
fb70ee0bb5 Cleanup: minor gpencil changes
- Replace BKE_brush_getactive_gpencil -> BKE_paint_brush
  (no need for per-paint-type brush access).
- Rename TOT_GP_EDITBRUSH_TYPES -> GP_EDITBRUSH_TYPE_MAX
  (avoid sharing prefix w/ unrelated constants).
- Rename instances of `GP_EditBrush_Data` to 'gp_brush'
  (`Brush` is typically called 'brush').
2018-11-12 09:59:16 +11:00
Dalai Felinto
221d078641 Multi-Objects Metaball: Selection refactor - fix pick and box selection
This is inspired/based on the code we use for armature bone selection.
Both pick selection, and box selection should be working now.
2018-11-09 16:40:43 -02:00
Sergey Sharybin
1ed31bef1a Draw manager: Expose grease pencil helper function 2018-11-09 17:53:02 +01:00
Clément Foucault
36e6a41f6f Object Mode: Grid: Make antialiasing more grounded
Went a bit anal on this but at least we will have a decent AA reference
for lines in the future.
2018-11-09 15:35:31 +01:00
Clément Foucault
4f11441913 Eevee: Add partial support for the Light Path Node
This makes it possible to tweak indirect lighting in the shader.

Only a subset of the outputs is supported and the ray depth has not exactly
the same meaning:

Is Camera : Supported.
Is Shadow : Supported.
Is Diffuse : Supported.
Is Glossy : Supported.
Is Singular : Not supported. Same as Is Glossy.
Is Reflection : Not supported. Same as Is Glossy.
Is Transmission : Not supported. Same as Is Glossy.
Ray Length : Not supported. Defaults to 1.0.
Ray Depth : Indicate the current bounce when baking the light cache.
Diffuse Depth : Same as Ray Depth but only when baking diffuse light.
Glossy Depth : Same as Ray Depth but only when baking specular light.
Transparent Depth : Not supported. Defaults to 0.
Transmission Depth : Not supported. Same as Glossy Depth.

Caveat: Is Glossy does not work with Screen Space Reflections but does work
with reflection planes (when used with SSR or not).
We have to render the world twice for that to work.
2018-11-08 19:20:40 +01:00