Commit Graph

7039 Commits

Author SHA1 Message Date
Campbell Barton
e38ff7c06d Cleanup: use C++ comments for disabled code 2023-09-25 17:06:04 +10:00
Campbell Barton
caef976ceb Cleanup: correct typo "hardeness" to "hardness" in DNA & variable names 2023-09-25 12:05:50 +10:00
NueSB
4aaae8d0a6 GPencil: Implement nearest neighbor filtering for pixelate effect
The Pixelate effect has an antialiasing switch that cleans up
pixels mostly, but still has some inbetween artifacts that are
a little frustrating to deal with. This makes it so that pixels are
completely hard-edged when AA is disabled.

Pull Request: https://projects.blender.org/blender/blender/pulls/112605
2023-09-24 16:01:31 +02:00
Campbell Barton
d4dbbab5d9 Cleanup: locate break statements inside the case body
Follow the convention used almost everywhere in Blender's code.
2023-09-23 21:17:50 +10:00
Jason Fielder
c9f44a2f9d EEVEE Next: Add info count for shader optimization jobs in progress
Authored by Apple: Michael Parkin-White

Pull Request: https://projects.blender.org/blender/blender/pulls/112533
2023-09-22 11:38:06 +02:00
Campbell Barton
5fbcb4c27e Cleanup: remove spaces from commented arguments
Also use local enums for `MA_BM_*` in versioning code.
2023-09-22 12:21:18 +10:00
Hans Goudey
867f99c2af Cleanup: Move depsgraph headers to C++
Pull Request: https://projects.blender.org/blender/blender/pulls/110816
2023-09-22 03:18:17 +02:00
Campbell Barton
aba119e192 Cleanup: quiet CMake uninitialized variable warning, sort file lists 2023-09-22 11:04:25 +10:00
Campbell Barton
6a8fc659ba Cleanup: spelling in comments 2023-09-22 10:02:05 +10:00
Jeroen Bakker
6d91d36161 GPU: Remove GPU_shader_storage_buffer_objects_support
Blender 4.0 requires OpenGL 4.3 which always support SSBO's.
Platforms that don't support enough SSBO bind points will be marked
as unsupported.

Users who start Blender on those platforms will be informed via a
dialog. This PR also updates the `--debug-gpu-force-workarounds`
to match our minimum requirements. Note that some bugs are still
there that should be solved in other PRs:

* Workbench only renders the object using a unit matrix this is because
  there is a bug in the workaround for shader_draw_parameters
* Navigating with middle mouse button is not working. Unsure what the
  cause is, but might be a missing feature check in the OpenGL backend.

Related to #112224

Pull Request: https://projects.blender.org/blender/blender/pulls/112572
2023-09-21 12:55:51 +02:00
Clément Foucault
89da0cf07d EEVEE-Next: Raytrace: Add Diffuse Ray
This implement the diffuse tracing as simple
screen-space ray trace. This is extremely inefficient
and should only be used for reference purpose.

The real screen space diffuse implementation will
be done in another PR.

Depends on #112507

![image](/attachments/a2c0a9d9-3206-4dc7-acf8-0c37851ad10b)

Pull Request: https://projects.blender.org/blender/blender/pulls/112539
2023-09-20 18:36:59 +02:00
Clément Foucault
7c1cb4bd8b EEVEE-Next: Deferred: Add combine pass
This allow to move the light evaluation up in the deferred pipeline and
avoid coupling two different steps into one. This add more flexibility
in the implementation of deferred lighting and indirect lighting
algorithms.

This splits the reflection probe evaluation to its own
shader since it is quite different now.

Pull Request: https://projects.blender.org/blender/blender/pulls/112507
2023-09-20 17:52:55 +02:00
Clément Foucault
e2cef1c713 EEVEE-Next: Port SSS profile to Pre-compute shader
This moves the pre-computation offline and store the pre-computed
table in the binary. The pre-computed tables are quite small and are
not a concern with respect to binary size increase.

This rewrites the precomputation to use manually fitted
approximations for both burley and random walk.
The approximations fix a discrepancy between cycles and EEVEE
SSS translucency look. The absolute maximum error is below 2%.
I believe better results could be achieved with automatic fitting
tools.

Note that Cycles Burley translucency profile has some issues as it
does not give a smooth profile. The profile is biased near the end
of the lower radii. For this reason, the fit was done on a white
diffuse with (1,1,1) radii which does not exhibit this artifact.

Note that while this adds the profile for random walk, it isn't
currently used because the profile type is not yet passed down
the deferred path.

The fitting data can be found attached to this PR.

Pull Request: https://projects.blender.org/blender/blender/pulls/112512
2023-09-20 15:17:27 +02:00
Clément Foucault
f079b653c1 EEVEE-Next: Deferred: Add combine pass
This allow to move the light evaluation up in
the deferred pipeline and avoid coupling two
different steps into one. This add more
flexibility in the implementation of
deferred lighting and indirect lighting
algorithms.

This splits the reflection probe evaluation
to its own shader since it is quite different
now.
2023-09-20 15:05:41 +02:00
Jason Fielder
70e99ee8b6 Fix #112258: Resolve broken volumetric world materials in Metal
Ensures correct BuiltinBits Layer flag was specified for materials
using volumetrics.

Authored by Apple: Michael Parkin-White

Pull Request: https://projects.blender.org/blender/blender/pulls/112577
2023-09-19 16:49:00 +02:00
Jeroen Bakker
39e6776689 Fix: GPU Incorrect Padding For Globals
A float array use different alignment and reservation rules on
GPU versus CPU. Before this change the _pad1 was aligned to 16 bytes as
it was defined as an array, but on CPU this alignment doesn't
happen.

This is fixed by using 3 floats in stead of a float array for padding.

Pull Request: https://projects.blender.org/blender/blender/pulls/112565
2023-09-19 12:10:31 +02:00
Campbell Barton
d8b8089630 Cleanup: spelling & typo in last commit 2023-09-19 15:53:51 +10:00
Weizhen Huang
1cb7e29123 Fix: EEVEE: implicit cast from float to bool in Multiscatter GGX 2023-09-18 17:29:10 +02:00
Weizhen Huang
e0dacfdda6 EEVEE: use Schlick's approximation instead of real Fresnel for glass
so that we can tint `F0` separately
Ref: #112192 #99447

Mostly affects `IOR < 1`. The overall appearance matches, with some changes in the reflection.

Pull Request: https://projects.blender.org/blender/blender/pulls/112390
2023-09-18 14:26:19 +02:00
Pablo Vazquez
a59ec4c936 UI: Rename Eevee to EEVEE in labels/tooltips
Remove ambiguity of Eevee/EEVEE in labels, tooltips, and docs.

The correct spelling is "EEVEE".

Pull Request: https://projects.blender.org/blender/blender/pulls/112501
2023-09-18 12:28:36 +02:00
Campbell Barton
7eae806dda Cleanup: format, spelling 2023-09-17 09:05:40 +10:00
Clément Foucault
c00962d038 EEVEE-Next: Raytrace: Add back Screen Space radiance input
This finalize the implementation of the screen space tracing
for EEVEE-Next.

Refractive objects can now have screen space reflection too
and self reflect.

This keeps the feedback radiance buffer principle of the
Classic EEVEE so that we still get infinite bounces by default.

There are some conflict with refraction tracing and ambient
occlusion nodes. Materials using screen space refraction will
not be able to detect occlusion from any refractive surface using
screen space refraction including itself.
They also won't be visible to screen space reflections from other
materials *not* using screen space refraction.
This should be added to the list of limitations for now.

Note that the current approach to feed the radiance is to copy
the radiance buffer. This has the nice property of only containing
the currently rendered objects and not project transparent objects
or other non-yet rendered object onto the depth behind them.

Pull Request: https://projects.blender.org/blender/blender/pulls/112341
2023-09-16 11:48:13 +02:00
Miguel Pozo
264c81a0a0 Fix #112409: Workbench: Cavity disabled when Xray is enabled 2023-09-15 15:35:01 +02:00
Weizhen Huang
f014e44e8b Refactor: EEVEE: add utility function for 3D texture read
with manual trilinear interpolation. Currently only used for GGX BSDF LUT

Pull Request: https://projects.blender.org/blender/blender/pulls/112386
2023-09-14 18:46:07 +02:00
Weizhen Huang
d10a87da48 Fix: EEVEE: wrong reflectance at IOR == 0.0
should be 1 instead of 0
2023-09-14 16:13:14 +02:00
Weizhen Huang
5baf652374 Cleanup: EEVEE: rename glass BTDF to BSDF at several places
because it contains reflectance and transmittance, so BSDF would be a
morep proper name.
Also rename BSDF to BRDF at places where only reflectance is returned.
2023-09-14 16:06:26 +02:00
Weizhen Huang
4e00410d9e Fix: EEVEE: use inverse IOR in BSDF LUT refract()
the `refract()` function require the relative IOR of the media where V
is in to the media where L is in. Because this only affects the
visibility term, the difference is quite small
2023-09-14 16:06:26 +02:00
Campbell Barton
b7f3e0d84e Cleanup: spelling & punctuation in comments
Also remove some unhelpful/redundant comments.
2023-09-14 13:25:24 +10:00
Miguel Pozo
f42b02cccc Workbench: Sculpt fixes
* Fix #112284 and other non-reported sculpt-related regressions in the
   new Workbench.
* Cleanup ObjectState setup.
* Update `sculpt_batches_get` to support getting per material batches
   while passing SculptBatchFeatures.
* Make material indices 0 based in Workbench.

Pull Request: https://projects.blender.org/blender/blender/pulls/112344
2023-09-13 22:36:37 +02:00
Miguel Pozo
27a36ccc0f Fix: EEVEE-Next: SSS image rendering
Compute SSS samples location at the render function,
once sampling.rng functions return valid data.
2023-09-13 21:05:46 +02:00
Miguel Pozo
6e24ecac03 Fix #112289: Workbench: Always clear depth_in_front 2023-09-13 16:35:28 +02:00
Lukas Stockner
158dbc1b10 Cycles: Rework Principled BSDF Clearcoat
- Adds tint control, which simulates volumetric absorption inside the coating.
  This results in angle-dependent saturation and affects all underlying layers
  (diffuse, subsurface, metallic, transmission). It provides a physically-based
  alternative to ad-hoc effects such as tinted specular highlights.
- Renames the component from "Clearcoat" to "Coat", since it's no longer
  necessarily clear now. This matches naming in e.g. other renderers or OpenPBR.
- Adds an explicit Coat IOR input, in preparation for future smarter IOR logic
  around the interaction between Coat and main IOR. This used to be hardcoded
  to 1.5.
- Removes hardcoded 0.25 weight multiplier, and adds versioning code to update
  existing files accordingly. OBJ import/export still applies the factor.
- Replaces the GTR1 microfacet component with regular GGX. This removes a corner
  case in the Microfacet code, solves #53038, and makes us more consistent with
  other standard surface shaders. The original Disney BSDF used GTR1, but it
  doesn't appear that it caught on in the industry.

Co-authored-by: Weizhen Huang <weizhen@blender.org>
Pull Request: https://projects.blender.org/blender/blender/pulls/110993
2023-09-13 00:03:11 +02:00
Miguel Pozo
b7ba7663a7 Fix #112231: Workbench: Texture support in sculpt mode 2023-09-12 18:48:34 +02:00
Miguel Pozo
443254b1a6 Fix #112211: Workbench: Clamp infinite inputs in TAA 2023-09-12 16:27:40 +02:00
Miguel Pozo
d81165f3ec Fix #111960, #112200, #112214: EEVEE: Incorrect BuiltinBits::LAYER use
5cf7089e43 added the `BuiltinBits::LAYER` to shaders with a geometry
stage. This causes compilation errors when
`GLContext::layered_rendering_support` is false (otherwise the flag
does nothing).

This PR moves the `LAYER` flags to the `no_geom` shader versions and
adds a check to `ShaderCreateInfo::finalize()` to ensure the `LAYER` flag
is not used in shaders with a geometry stage.

Pull Request: https://projects.blender.org/blender/blender/pulls/112245
2023-09-12 15:39:33 +02:00
Jeroen Bakker
f1a0de8415 Overlay: Remove Unused Attribute in edit mesh face shader
`overlay_edit_mesh_face` has an attribute for its vertex normals,
but only used in the vertex shader when it isn't a face shader.

Removing this attribute fixes some performance validation warnings
in the Vulkan backend.

Pull Request: https://projects.blender.org/blender/blender/pulls/112269
2023-09-12 14:47:20 +02:00
Miguel Pozo
b3bf8a4e05 EEVEE-Next: Add back data passes UI and missing passes
The `VIEWLAYER_PT_eevee_next_layer_passes_data` class name was
re-used by mistake for Workbench Next in ba982119cd,
and the actual EEVEE Next class was then removed in 678dc456e3.

This adds back the UI as it was, and the missing passes (Vector and
Position) it referenced.

Pull Request: https://projects.blender.org/blender/blender/pulls/112162
2023-09-11 20:14:04 +02:00
Miguel Pozo
f25418b730 Fix #112242: Workbench: Allow xray in render mode 2023-09-11 19:52:03 +02:00
Miguel Pozo
efb74555fd Fix: EEVEE-Next: Velocity do_deform detection
In image renders, after the first motion blur step,
non deformed geometry was being marked as deformed,
since all their geometry lengths are 0.

This caused velocity_local_pos_get to read wrong/unitialized values.
2023-09-11 19:16:32 +02:00
Miguel Pozo
967d49dba4 Cleanup: Formatting
Fix formatting after e5f6c57f8c
2023-09-08 21:35:13 +02:00
Miguel Pozo
e5f6c57f8c EEVEE-Next: Merge UBOs
Merge all the small UBOs used by the engine to save binding slots.
Each module is still responsible for filling its own data (by storing a
reference to it at construction) and this data is still private for other
modules.
The engine instance pushes the data to the GPU at the end of
`end_sync`, so only the modules that modify their data outside of the
sync functions need to manually call `Instance::push_uniform_data()`.

Pull Request: https://projects.blender.org/blender/blender/pulls/112046
2023-09-08 21:03:37 +02:00
Miguel Pozo
1faa522880 Fix: EEVEE-Next: Motion blur on image renders
overscan_changed is always true the first frame.
2023-09-08 20:29:29 +02:00
Campbell Barton
468198a6df License header: add SPDX header 2023-09-08 22:33:32 +10:00
Hans Goudey
006104645a Cleanup: Remove unnecessary struct keyword in C++ code 2023-09-08 08:27:28 -04:00
Campbell Barton
9e41eccc6e Cleanup: spelling in comments 2023-09-08 17:12:29 +10:00
Campbell Barton
4fc5d287ac Cleanup: doxygen parameters, blank comment lines 2023-09-08 16:53:30 +10:00
Campbell Barton
5ab2f61d44 Cleanup: remove use of 'auto' 2023-09-08 16:53:27 +10:00
Hans Goudey
9f998c3e3a Cleanup: Change mesh face triangle count macro to C++ inline function 2023-09-07 08:36:43 -04:00
Hans Goudey
9db02c8617 Cleanup: Change OffsetsIndices::data() to return Span instead of pointer
Accessing the span should be possible. `Span` already allows pointer
access itself.
2023-09-06 22:27:39 -04:00
Miguel Pozo
e850df06ee Workbench: Remove next postfix
Pull Request: https://projects.blender.org/blender/blender/pulls/111993
2023-09-06 15:54:50 +02:00