Blender Git Commits

Blender Git "temp-pose-flipping-fix-attempt" branch commits.

Page: 14 / 16

March 3, 2021, 17:15 (GMT)
Cleanup: clang tidy

Warning: else-after-return/break
March 3, 2021, 17:15 (GMT)
Cleanup: clang tidy

Can use const parameter.
March 3, 2021, 17:15 (GMT)
EEVEE: Add ensure_valid_reflection to glossy closures

This is ported from Cycles and fixes issues with bump/normal mapping
giving weird reflections/lighting.

Fixes T81070 Specular light should be limited to normal pointing toward the camera
Fixes T78501 Normal mapping making specular artifact
March 3, 2021, 17:15 (GMT)
Fix compiler issues introduced in recent commit.

{73af762e9cd595ea708647c02c7e74752d844e80}
March 3, 2021, 17:15 (GMT)
EEVEE: SSS: Fix light leaking bewteen object at different depths

The SSS shader in Eevee has the following drawbacks (elaborated in {T79933}):

1. Glowing
2. Ringing. On low SSS jittering it is rendered a bunch of sharp lines
3. Overall blurriness due to the nature of the effect
4. Shadows near occlusions as in T65849
5. Too much SSS near the edge and on highly-tilted surfaces

{F9438636}
{F9427302}

In the original shader code there was a depth correction factor, as far as I can understand for fixing light bleeding from one object to another. But it was scaled incorrectly. I modified its scale to depend on SSS scale*radius and made it independent from the scene scale. The scale parameter (`-4`) is chosen so that it makes tilted surfaces to have visually the same SSS radius as straight surfaces (surfaces with normal pointed directly to the camera).

This depth correction factor alone fixes all the problems except for ringing (pt. 2). Because of float-point precision errors and irradiance interpolation some samples near the border of an object might leak light, causing sparkly or dashed (because of aliasing) patterns around the highlights. Switching from `texture()` to `texelFetch()` fixes this problem and makes textures on renders visually sharper.

An alternative solution would be to detect object borders and somehow prevent samples from crossing it. This can be done by:
1. Adding an `object_id` texture. I think it requires much more code changing and makes the shader more complicated. Again, `object_id` is not interpolatable.
2. Watch gradient of depth and discard samples if the gradient is too big. This solution depends on scene scale and requires more texture lookups. Since SSS is usually a minor effect, it probably doesn't require that level of accuracy.

I haven't notice it in practice, but I assume it can make visible SSS radius slightly off (up to 0.5 px in screen space, which is negligible). It is completely mitigated with render sampling.

Reviewed By: Cl�ment Foucault
Differential Revision: https://developer.blender.org/D9740
March 3, 2021, 17:15 (GMT)
EEVEE: Avoid old files with too many volume shadow sample being too slow

This clamp the volumetric shadow samples to the actual old max to avoid
problematic slowdown after the bugfix rB3a29c19b2bff.
March 3, 2021, 17:15 (GMT)
Fix crash when dragging nodes

The `bNodeLinkDrag` struct was NULL when dragging a node instead of
a link. It is allocated with `calloc` anyway, so this field doesn't
need to be explitely cleared.
March 3, 2021, 17:15 (GMT)
Cleanup: make format
March 3, 2021, 17:15 (GMT)
Fix (unreported) Outliner missing updates copying IDs via python

Steps to reproduce:
- switch to Scripting workspace
- execute bpy.data.meshes['Cube'].copy()
- Outliner will not show the new mesh immediately

Now just send appropriate notifier.

Differential Revision: https://developer.blender.org/D10584
March 3, 2021, 17:15 (GMT)
Nodes: store references to bNodeLinks in NodeTreeRef

Sometimes it is useful to have this information available to be able
to read information from links.
March 3, 2021, 17:15 (GMT)
EEVEE: SSR: Check reflection ray against geometric normal

This improve self intersection prevention. Also reduce the bias
that was making a lot of rays not being shoot at grazing angles.
March 3, 2021, 17:15 (GMT)
Cleanup: Make node_composite_cryptomatte CPP.

Core API of cryptomatte is also CPP.
March 3, 2021, 17:15 (GMT)
Cleanup: minor changes to Python RNA pointer assignment

Don't assign the BPy_StructRNA a value which can be 'None',
instead, set it to NULL.
March 3, 2021, 17:15 (GMT)
Cleanup: clang tidy

Warnings:
* readability-inconsistent-declaration-parameter-name
* readability-redundant-smartptr-get
March 3, 2021, 17:15 (GMT)
Cleanup: use zero_v3 to clear colors.
March 3, 2021, 17:15 (GMT)
Geometry Nodes: show "Show Texture in texture tab" button

This enables the quick access button [to show the relevant Texture in
the Properties Editor] for textures used in geometry nodes.

This goes in line to what we do for other textures:
- modifier textures have this button
- particle textures have this button
- brush textures will soon have it, too (see D9813)

When outside of the Properties Editor, the button will always show (if a
texture is actually assigned), but will be inactive if no suiting
Properties Editor to show the texture in can be found.

Note this also changes the behavior to not show the button if _no_
texture is assigned (as in: we are still showing the "New" button).
Previously it was always there (e.g. for modifier textures), even if it
would take us to an empty texture tab. (Sure, we could add a texture
there then, but imho it makes more sense to just start showing it once a
texture is already there)

For this to work with geometry nodes, the following chages were done:
- implement foreachTexLink for geonode modifiers
- new buttons_texture_user_node_property_add() that stores prop as well
as node
- also use NODE_ACTIVE_TEXTURE flag in geometry nodetrees

notes:
- this still uses the first suiting (as in: pinning does not interfere)
Properties Editor it finds, this should (maybe?) find the _closest_
Property Editor instead (see related feedback in D9813).
- this will already show the button for brush textures as well
(disabled), but there is another mandatory change in an upcomming commit
to make it work there as well (see D9813)

ref. T85278

Maniphest Tasks: T85278

Differential Revision: https://developer.blender.org/D10293
March 3, 2021, 17:15 (GMT)
Fix T85981, part II: bone's custom shape disappear on undo in some cases.

Nicely hidden bug in pose read library code, it was using the library
from the wrong ID as reference to relink the custom shape object pointer
(pose is data from Object, not Armature).
March 3, 2021, 17:15 (GMT)
Fix T85966: Wrong link picked when dragging multi-input socket

The socket drag operator stored the index of the last picked socket
into RNA in case the mouse cursor leaves the link while dragging.

This id was not unique which is why sometimes a link from an other node
with the same id is picked.

This patch changes the way the last picked link is stored and stores a
pointer to the link directly into bNodeLinkDrag struct instead.

Differential Revision: https://developer.blender.org/D10590
March 3, 2021, 17:15 (GMT)
UI: Clean up labels and descriptions: "Draw" to "Display"

In Blender, we used to use the term 'draw' to refer to information
displayed to the user. For version 2.80, it was decided to change these
instances to 'display' instead. This was to avoid the ambiguity between
end-user drawing tools and display options.

From the Oxford English Dictionary:
- Draw: produce (a picture or diagram) by making lines and marks on
paper with a pencil, pen, etc.
- Display: show (data or an image) on a computer, television, or
other screen.

Therefore, we should use draw when referring to drawing tools for
making marks, but use display when referring to information
shown/displayed to the user. From a user POV, the computer displays
certain information, whereas the user draws a mark.

Apparently this change was not implemented consistently, so this patch
changes all remaining relevant instances of "draw".

Differential Revision: https://developer.blender.org/D10551
March 3, 2021, 17:15 (GMT)
Cleanup: spelling, minor corrections

Also use doxygen comments for sculpt functions.
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021