Commit Graph

360 Commits

Author SHA1 Message Date
Hans Goudey
30574bd8a9 Merge branch 'blender-v4.0-release' 2023-10-11 16:51:50 +02:00
Michael Kowalski
f4124b4e20 Fix #113400: USD transform cache crash on invalid prim.
Updated CacheReader_open_usd_object() to issue a warning and
return early if the given object path does not refer to a
valid prim on the USD stage, to avoid crashing when attempting
to create a reader from an invalid prim.

Pull Request: https://projects.blender.org/blender/blender/pulls/113524
2023-10-11 16:21:19 +02:00
Hans Goudey
8f27baf388 Merge branch 'blender-v4.0-release' 2023-10-09 23:54:43 +02:00
Hans Goudey
976eaae02f Cleanup: Move BKE_object.hh to C++
Simplifies the fix to #111120, where the object bounds functions
may return a C++ type instead of `BoundBox`.

Pull Request: https://projects.blender.org/blender/blender/pulls/113462
2023-10-09 23:41:53 +02:00
Bastien Montagne
df0d7c9c3d WM Jobs: Refactor all worker status variables into a single shared struct.
Move the three current 'status variables' (stop, update and progress)
into a single 'WorkerStatus' struct. This is cleaner and will allow for
future workin this area without having to edit tens of 'startjob'
callbacks signatures all the time.

No functional change expected here.

Note: jobs' specific internal code has been modified as little as
possible, in many cases the job's own data still just store pointers to
these three values. Ideally in the future more refactor will be using a
single pointer to the shared `wmJobWorkerStatus` data instead.

Pull Request: https://projects.blender.org/blender/blender/pulls/113343
2023-10-09 12:12:22 +02:00
Denis Kovacs
7a9284107d USD: Improve camera import/export and round-tripping
Fix various issues in import and export of cameras.

* Wrong units and flipped shift values on import
* Wrong clip start lower range on import
* Wrong units for aperture and focal length properties on export
* Issue with auto sensor fit and height > width on export

Pull Request: https://projects.blender.org/blender/blender/pulls/112905
2023-10-05 19:47:11 +02:00
Charles Wardlaw
f536513952 Fix #112463: crash or invalid results importing USD uniform colors
The code assumed quads and failed with triangles

Co-authored-by: Michael Kowalski <makowalski@nvidia.com>
Pull Request: https://projects.blender.org/blender/blender/pulls/112589
2023-10-02 16:32:00 +02:00
Damien Picard
1dfbc1ef83 UI: fix and improve a few messages
- "Tapping Alt...": remove newline in tooltip.
- Add descriptions for the From Left and From Right of the Shear
  Keyframes operator's direction items, instead of just "foo":
  - "Shear the keys using the left key as reference", and
  - "Shear the keys using the right key as reference".
- "Affects the value" -> "Affect", use the imperative.
- "Increase or decrease the value of selected keys \n
  in relationship to their average"
  -> "Scale selected key values by their combined average":
  remove the newline and rephrase the unclear description. New
  description by Harley Acheson.
- "Redefine equalizer graphs": this is an operator name, it should be
  title case.
- "USD Skeleton Import" warning: inconsistent whitespace.
- "%s: Joint weights and joint indices size mismatch size mismatch for
  prim %s": remove duplicated "size mismatch".
- "USD export:  couldn't copy texture tile from %s to %s": remove
  duplicate whitespace, change "couldn't" to "could not" to respect
  the style guide.
- "Temp. Diff." -> expand the abbreviation to "Temperature Difference"
- "Registering node tree class:" do not use formatting just to reduce
  redundancy in a few messages, but write it explicitly each time.
  This is more legible, and much better for translations.
- "Absolute time alignment while translating" -> "Absolute time
  alignment when transforming keyframes" because this applies to all
  transforms, not translation only.
- "# characters defines the [...] length of frame numbers" ->
  "define" (typo), "padding" is more specific than length.

Pull Request: https://projects.blender.org/blender/blender/pulls/112975
2023-09-27 21:29:02 +02:00
Brecht Van Lommel
3d39abc5e6 Fix build error after make format cleanup
The include order should not matter here, but do quick fix for now to
unbreak the builds.
2023-09-27 01:07:49 +02:00
Hans Goudey
2e6b81f151 Cleanup: Make format 2023-09-26 17:05:36 -04:00
Bogdan Nagirniak
c0a0de617c Hydra: export Blender shader nodes as MaterialX node graph
This adds initial support for rendering Cycles and EEVEE shaders in Hydra
render engines that support MaterialX. Not all nodes are currently
supported, see the detailed compatibility list in #112864.

Co-authored-by: Georgiy Markelov <georgiy.m.markelov@gmail.com>
Co-authored-by: Vasyl Pidhirskyi <vpidhirskyi@gmail.com>

Pull Request: https://projects.blender.org/blender/blender/pulls/111765
2023-09-26 18:52:41 +02:00
Brecht Van Lommel
a469640861 USD: improve I/O of emission color in preview surface
Don't export color if strength is 0, and on import set strength to 1 when
there is a color. This is more important now that the default is color white
and strength 0 in the Principled BSDF.

Ref #99447
Ref #112848
2023-09-25 19:51:31 +02:00
Brecht Van Lommel
3d38b51435 Shaders: add "Weight" to Transmission/Subsurface/Coat/Sheen socket names
Ref #99447
Ref #112848
2023-09-25 19:51:27 +02:00
Brecht Van Lommel
1d265eed5d Shaders: rename Specular to Specular IOR Level in Principled BSDF
To clarify that this is no longer the primary control, but rather
and adjustment on IOR.

Ref #99447
Ref #112552
2023-09-25 19:51:22 +02:00
Brecht Van Lommel
ca5f1c0f00 Shaders: rename Principled BSDF Emission to Emission Color
Ref #99447
Ref #112848
2023-09-25 19:50:41 +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
Campbell Barton
d2c271ec84 CMake: use bf_io_ prefix for IO tests
This simplifies running built-in IO tests with:

  ctest -R bf_io_

Also use "bf_io_" prefix for the libraries since it was already used
by some and it's a useful hint the libraries are used for IO.
2023-09-23 20:22:19 +10: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
Lukas Stockner
d169403d96 Cleanup: Format 2023-09-13 02:25:03 +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
Michael Kowalski
678b827605 Fix: USD export: revert renaming active UV maps
Pull request #109518 (commit cf5666345d) added logic to rename the
active UV map to "st". However, this behavior is currently breaking
UV Map node export to USD Preview Surface materials.

Specifically, UV Map nodes that reference the original active map name
do not get updated to use the new name "st", and the exported USD shader
references an invalid texture coordinate primvar.

This commit removes this logic for now.  We should support such
renaming in the future, but the behavior should be extended to update
the relevant UV Map nodes with the new name.  Also, we should consider
adding a USD export option to enable this feature.

Pull Request: https://projects.blender.org/blender/blender/pulls/112234
2023-09-11 16:53:56 +02:00
georgiy.m.markelov@gmail.com
cc2198254f Fix #111988: Hydra render crash if object doesn't have material
Appeared after f5472dcebc.

Pull Request: https://projects.blender.org/blender/blender/pulls/112128
2023-09-08 14:58:47 +02:00
Jacques Lucke
b5c89822ac RNA: return PointerRNA from rna create functions
There are a couple of functions that create rna pointers. For example
`RNA_main_pointer_create` and `RNA_pointer_create`. Currently, those
take an output parameter `r_ptr` as last argument. This patch changes
it so that the functions actually return a` PointerRNA` instead of using
the output parameters.

This has a few benefits:
* Output parameters should only be used when there is an actual benefit.
  Otherwise, one should default to returning the value.
* It's simpler to use the API in the large majority of cases (note that this
  patch reduces the number of lines of code).
* It allows the `PointerRNA` to be const on the call-site, if that is desired.

No performance regression has been measured in production files.
If one of these functions happened to be called in a hot loop where
there is a regression, the solution should be to use an inline function
there which allows the compiler to optimize it even better.

Pull Request: https://projects.blender.org/blender/blender/pulls/111976
2023-09-06 00:48:50 +02:00
Hans Goudey
f5472dcebc Cleanup: Simplify Hydra SubMesh creation and removal
Use blender::Vector instead of std::vector.
2023-09-04 18:08:02 -04:00
Campbell Barton
e8c812a307 Cleanup: spelling in comments, update dictionary 2023-09-03 21:35:07 +10:00
Hans Goudey
fa34992def Cleanup: Remove unnecessary includes from C++ data structure headers
The hash tables and vector blenlib headers were pulling many more
headers than they actually need, including the C base math header,
our C string API header, and the StringRef header. All of this
potentially slows down compilation and polutes autocomplete
with unrelated information.

Also remove the `ListBase` constructor for `Vector`. It wasn't used
much, and making it easy to use `ListBase` isn't worth it for the
same reasons mentioned above.

It turns out a lot of files depended on indirect includes of
`BLI_string.h` and `BLI_listbase.h`, so those are fixed here.

Pull Request: https://projects.blender.org/blender/blender/pulls/111801
2023-09-01 21:37:11 +02:00
Campbell Barton
23e8ffd72d Cleanup: various non-functional C++ changes, format 2023-09-01 11:19:44 +10:00
Hans Goudey
78dd7d91c4 Cleanup: Move IO headers to C++
See #103343
2023-08-31 12:52:04 -04:00
Campbell Barton
941dbbc175 Cleanup: various minor C++ changes 2023-08-29 16:43:20 +10:00
Hans Goudey
0b23816d5c Cleanup: Use Map instead of std::map for USD mesh writer 2023-08-28 22:45:10 -04:00
Hans Goudey
59d1fc4b61 Cleanup: Simplify USD export mesh data access
- Copy positions with a single copy for the entire array
- Use a utility function to copy face sizes
- Use simple copy for corner vertex indices instead of face iteration
2023-08-28 22:45:04 -04:00
Bastien Montagne
5ba692898e I18N/UI messages fixes. 2023-08-28 18:02:31 +02:00
Campbell Barton
09f61f6881 Cleanup: enforce documented convention for RNA enum naming
This was noted in code comments and checked in Python documentation
generation but not at build time.

Since these enums are identifiers that end up included in various places
enforce the `rna_enum_*_items` convention which was noted as
the convention but not followed strictly.

Partially reverts [0], avoids having to deal with multiple prefix types.

[0]: 3ea7117ed1
2023-08-25 13:35:58 +10:00
Campbell Barton
3de8900ed6 Cleanup: spelling in comments 2023-08-25 09:40:42 +10:00
Michael Kowalski
5bbeb927a1 Fix: USD export: missing animation frames.
This fixes a bug where only the time sample for the first frame
is written to a USD animation.

Replaced the hard-coded USDExporterContext::time_code value with a
USDExporterContext::get_time_code function wrapper which is called
from USDAbstractWriter::get_export_time_code() to query the current
frame when writing an animation.

Pull Request: https://projects.blender.org/blender/blender/pulls/111248
2023-08-24 14:12:07 +02:00
Campbell Barton
a56200c1ed Cleanup: sort cmake file lists 2023-08-24 11:38:41 +10:00
Campbell Barton
3aa0715d65 Cleanup: remove calls to snprintf
Use BLI_snprintf/SNPRINTF to ensure the strings are null terminated.
2023-08-23 15:04:12 +10:00
Campbell Barton
5a8cb665e0 Cleanup: various non-functional C++ changes 2023-08-19 23:52:47 +10:00
Ray Molenkamp
e2af12d368 Cleanup: Update copyright to the new format
Had put my name here since the choice was between the foundation
and me personally, with the blender authors file now being in
place this can be cleaned up.
2023-08-18 11:58:37 -06:00
Campbell Barton
bc1ffdce5b Cleanup: spelling in comments 2023-08-18 08:56:12 +10:00
Campbell Barton
bf35eb9cbc Cleanup: format 2023-08-18 08:38:02 +10:00
Michael Kowalski
6f4cb9bc56 USD: Skeleton and blend shape import
Added support for UsdSkel animation import.

This addresses #110076.

Added USDSkeletonReader class which imports UsdSkelSkeleton primitives
as armatures.

Extended USDMeshReader to import UsdSkelBlendShape as shape keys.

Extended USDMeshReader to import USD skinning data as as deform groups
and an armature modifier on the mesh object.

Added USDMeshReader::get_local_usd_xform() to override the transform
computation to account for the binding transformation for skinned meshes.

Pull Request: https://projects.blender.org/blender/blender/pulls/110912
2023-08-17 20:11:51 +02:00
georgiy.m.markelov@gmail.com
37269c78d2 Hydra: saving changed to unpacking for packed images
For Hydra renderers to access packed images they need to be written to
disk. Previously it would save the image, but unpacking is much faster.

Ref: #110765

Pull Request: https://projects.blender.org/blender/blender/pulls/110933
2023-08-17 18:09:51 +02:00
Aras Pranckevicius
2f060706a4 Cleanup: fewer BLI_color.hh et al includes
Include counts of some headers while making full blender build:
- BLI_color.hh 1771 -> 1718
- BLI_math_color.h 1828 -> 1783
- BLI_math_vector.hh 496 -> 405
- BLI_index_mask.hh 1341 -> 1267
- BLI_task.hh 958 -> 903
- BLI_generic_virtual_array.hh 509 -> 435
- IMB_colormanagement.h 437 -> 130
- GPU_texture.h 806 -> 780
- FN_multi_function.hh 331 -> 257

Note: DNA_node_tree_interface_types.h needs color include only
for the currently unused (but soon to be used) socket_color function.
Future step is to figure out how to include
DNA_node_tree_interface_types.h less.

Pull Request: #111113
2023-08-16 14:48:53 +03:00
Campbell Barton
e955c94ed3 License Headers: Set copyright to "Blender Authors", add AUTHORS
Listing the "Blender Foundation" as copyright holder implied the Blender
Foundation holds copyright to files which may include work from many
developers.

While keeping copyright on headers makes sense for isolated libraries,
Blender's own code may be refactored or moved between files in a way
that makes the per file copyright holders less meaningful.

Copyright references to the "Blender Foundation" have been replaced with
"Blender Authors", with the exception of `./extern/` since these this
contains libraries which are more isolated, any changed to license
headers there can be handled on a case-by-case basis.

Some directories in `./intern/` have also been excluded:

- `./intern/cycles/` it's own `AUTHORS` file is planned.
- `./intern/opensubdiv/`.

An "AUTHORS" file has been added, using the chromium projects authors
file as a template.

Design task: #110784

Ref !110783.
2023-08-16 00:20:26 +10:00
Michael Kowalski
ccbb185d39 USD import: improve unsupported type warning.
Now including the USD type name in the warning for
unsupported attribute types.
2023-08-14 15:51:00 -04:00
Michael Kowalski
9a084d7c69 USD import: remove unused variable.
Removed unused USDMeshReader::has_uvs_ member.
This fixes Mac build warnings.
2023-08-14 14:51:17 -04:00
Michael Kowalski
4e41acc0d3 Fix #110950: USD import: Crash calling import_asset().
Fixed logic error causing BLI_path_abs() to be called with
null basepath.

Pull Request: https://projects.blender.org/blender/blender/pulls/111119
2023-08-14 19:56:22 +02:00
Campbell Barton
848e808b8a Cleanup: various non-functional C++ changes, correct doxy groups 2023-08-12 18:48:20 +10:00