Age | Commit message (Collapse) | Author |
|
|
|
Occlusion had change because of the way it was applied.
Get back to almost the same thing we had previously. The only thing
that changed is the occlusion of Normal mapped surface.
It is a bit less noticeable due to a new approximation we make.
|
|
|
|
|
|
|
|
|
|
|
|
Also add safe normalize to interpolated normals.
|
|
Only the 1st closure radiance accumulator was initialized correctly.
|
|
This rewrite improves:
- Code clarity: Less duplicated code and removes a few hacks.
- Compile time performance: Shader code was divided by 3 in average.
I did not profile the compilation time but it is faster.
- Shading Perf: Noticed a 25% performance improvement on
the shading pass with default dielectric principled bsdf.
- Fix Principled Tint being white if color is black
- It seems to have fixed issues on some drivers giving some incorect
results.
- Changes Principled BSDF support to be less hacky.
|
|
|
|
In everything in `EEVEE_renderpasses_postprocess` (or the corresponding
renderpass_postprocess_frag.glsl) colors get divided by a
'currentSample'.
This 'currentSample' is always incremented in
`EEVEE_temporal_sampling_draw` (and also one more time before we reach
`EEVEE_renderpasses_postprocess`.
This results in a "off-by-one", slightly inacurate colors and slight
inaccurate transparency (in certain passes like AOVs).
Now decrement the currentSample `EEVEE_renderpasses_postprocess` again
by one to compensate.
Maniphest Tasks: T85261
Differential Revision: https://developer.blender.org/D10286
|
|
Related to {D10286}. When volumetrics are used in the scene the coverage
is incorrect. The reason is that the current sample is 1 over the num
samples that are calculated.
|
|
Related to {D10286}. When volumetrics are used in the scene the coverage
is incorrect. The reason is that the current sample is 1 over the num
samples that are calculated.
|
|
|
|
This resulted in hair drawing with an offset if an instance_offset was
set.
note: Usually the instance_offset gets combined with the objects obmat
in 'make_duplis_collection' / 'make_dupli', see
> /* Combine collection offset and `obmat`. */
Using the resulting DupliObject->mat instead does include the
instance_offset, but this results in double-transforms (something that I
have not investigated further), so now reconstruct the correct matrix
from scratch.
Maniphest Tasks: T85301
Differential Revision: https://developer.blender.org/D10285
|
|
|
|
This was caused by the paint overlay drawing after the infront pass.
Moving the paint overlay before it fixes the issue. We might even do
that for more mode overlays.
|
|
This remove some drawn completely transparent pixels.
|
|
|
|
This was caused by the boolean not being a union of all the material
slots.
|
|
|
|
Fix for both workbench and Gpencil.
Fixes T78574 GPencil: Z pass combine not work
|
|
|
|
Due a thread priority, the calculation of the current frame is not done before the frames are available. This produces wrong render frames.
The solution is verify the current frame before doing the real render. This adds only a few milliseconds, but it assures the frame is correct.
As the problem is only when render in background, the recalculation of the frame is only necessary when do real render and not a viewport render, so there is no impact in the animation FPS.
|
|
|
|
This was caused by a use after free. The issue was that the motion steps
were successfully gathered but failling the last vertex count check,
discarding the copied VBOs but not removing the reference of the first
VBO which was passing the test.
|
|
This was caused by the same VBO being remapped twice by
`EEVEE_motion_blur_cache_finish`. Leading to memory corruption.
|
|
|
|
The grease pencil merge depth shader is designed to only work correctly
in octographic mode. The uv coordinates used `noperspective` attribute.
Somehow this doesn't lead to render artifacts on most platforms and was
only detected on OSX + AMD cards.
This fix would calculate the uv coordinate inside the fragment shader
and isn't passed along from the vertex shader.
Thanks to Sebastián Barschkis for providing the hardware and time and
Clément Foucault for helping out with the final fix.
|
|
|
|
When this behavior was added it made sense,
since then show_edges has changed to make edge-display more subtle
(see 1a4b60c30db319b71bdc2e2fed2612c873fa8757) instead of removing
edge-selection display entirely.
|
|
Due a problem in the mergetool, the clang format was totally wrong in the previous commit.
|
|
|
|
Due a thread priority, the calculation of the current frame is not done before the frames are available. This produces wrong render frames.
The solution is verify the current frame before doing the real render. This adds only a few milliseconds, but it assures the frame is correct.
As the problem is only when render in background, the recalculation of the frame is only necessary when do real render and not a viewport render, so there is no impact in the animation FPS.
|
|
|
|
|
|
When uv editing objects that share the same mesh only the selection
state can get confused. The cause is that the UV editor uses a
particular order of objects and store its state in the first object of a
mesh it hasn't handled. During drawing this state is updated into the
GPU buffers. In the case of linked meshes it can happen that the GPU
buffers are updated based on the object that does not have the correct
selection state making th selection VBOs incorrect.
This patch adds a work around that uses the order that the UV editor is
also using so the GPU buffers are built with the right data.
|
|
|
|
|
|
Workbench engine used active camera to setup DOF effect even when
camera was overridden.
Store camera override in `WORKBENCH_PrivateData` and use it in
`workbench_dof_engine_init()`
Reviewed By: brecht
Differential Revision: https://developer.blender.org/D9952
|
|
|
|
During viewport rendering the color values were clamped in order to
apply the overlay on top of it. This clamping would show the scene
colors washed out.
This patch adds a work around to skip the clamping when the overlays are
turned off.
Parial fix for {T77909}
|
|
|
|
The `image_get_gpu_texture` didn't use the iuser->view_index but
recalculated the requested view again. This lead to inconsistent
behavior when switching between multi view textures or stereo textures.
This has been fixed by ensuring that the `iuser->view_index` is always
used.
An Image has only place to store 2 view textures. This is done for
right/left eye compositing. A multi view texture can have more views.
This would lead to reading and writing to unallocated space.
When a multiview texture is requested that is larger than 1. It will
always be cached as being the first eye. The `gpu_view` of the Image is
also used as a cache key to check this.
|
|
|
|
During multiview rendering the `cryptomatte_accum_buffer` is not cleared
between the views and leaves artifacts on the next view to be rendered.
This change clears the accum buffer when it already exists and will be
reused for the next view.
|
|
|
|
|
|
Match git style email addresses, ignored by the spell checker.
|