Commit Graph

12890 Commits

Author SHA1 Message Date
Ray Molenkamp
b7b2e08dcb Revert "Deps_builder: Move Windows build from MinGW/GCC to msys2/MSVC"
This reverts commit 451751380c.

Seems like this broke linux/mac, likely needs to detect of libxvid
is there or not. For now revert until we sort this out.
2023-06-10 16:24:17 -06:00
Anthony
451751380c Deps_builder: Move Windows build from MinGW/GCC to msys2/MSVC
Currently, Windows some dependencies are built with MinGW/GCC 3.x
this commit removes that, in favor of building them with MSVC
via msys2. This will make it easier in the future to offer Win/Arm64
builds of blender.

Notable changes:

- This change drops support for the external libxvid library in favor
of ffmpegs built in support for this format. This has been done with
permission from the VFX module.

Pull Request: https://projects.blender.org/blender/blender/pulls/105502
2023-06-10 23:05:49 +02:00
Lukas Stockner
744dd79ea1 Merge branch 'blender-v3.6-release' 2023-06-10 16:26:16 +02:00
Lukas Stockner
a811ff0374 Fix #108560: Light groups do not work with collection instances
With this change, instances of lamps and emissive meshes which do not
have their own light group assigned will use the light group of the
collection instance.
If an object does have a light group assigned, its instances will
continue to use it regardless of the collection instance's light group.
2023-06-10 15:35:01 +02:00
Jeroen Bakker
2ee2ae93fb Vulkan: Initial Cube(Array) Support
This PR adds initial cube (array) support. Depending on how the texture
is used a different image view is created. When used as a framebuffer
attachment only a single side of the cubemap is attached. The image
view is attached as a 2d texture array. When used as a shader resource
the image view is a cubemap.

Also adds test cases to test both scenarios.

Pull Request: https://projects.blender.org/blender/blender/pulls/108794
2023-06-09 16:09:54 +02:00
Weizhen Huang
84863dae89 Fix light texture invisible when looking at a light
`sd->type` was set to `PRIMITIVE_TRIANGLE` when it should be
`PRIMITIVE_LAMP`.

Function #lights_intersect_impl sets `isect->prim` to `lamp`, which is
passed to function #shader_setup_from_sample. There `prim != PRIM_NONE`
is evaluated to `true`, thus setting `sd->type` to `PRIMITIVE_TRIANGLE`
erroneously. This fix checks `lamp != LAMP_NONE` first, as in all other
usages of #shader_setup_from_sample `LAMP_NONE` is passed as the value
of `lamp`.

Pull Request: https://projects.blender.org/blender/blender/pulls/108769
2023-06-08 18:05:30 +02:00
Brecht Van Lommel
a2bd080cf3 Cleanup: renaming of GPU contexts for clarity
* opengl_context -> system_gpu_context. This is the operating system OpenGL,
  Metal or Vulkan context provided by GHOST.
* gpu_context -> blender_gpu_context. This is the GPUContext provided by
  the Blender GPU module, which wraps the GHOST context and adds some state.
* Various functions create/destroy/enable/disable both contexts, these have
  just gpu_context in the name now.

Pull Request: https://projects.blender.org/blender/blender/pulls/108723
2023-06-08 15:46:53 +02:00
Xavier Hallade
398b8428dd Merge branch 'blender-v3.6-release' 2023-06-08 09:22:18 +02:00
Nikita Sirgienko
bc5275e204 Fix #107414: Cycles: [3/3] Don't rely on tfar in callbacks with embree
In Embree, tfar modification is taken into account by rtcIntersect1
only when hits are accepted. In order to overcome this, we now check
manually for a max_t value in the filter function.

Pull Request: https://projects.blender.org/blender/blender/pulls/108706
2023-06-08 09:21:32 +02:00
Nikita Sirgienko
dd282bd853 Fix #107414: Cycles: [2/3] Fix closest hits recording in embree
Previously, all hits were processed yet ignored as soon as the
hits stack limit had been exceeded, which made miss closer hits.
2023-06-08 09:21:31 +02:00
Nikita Sirgienko
54dd4c0e79 Fix #107414: Cycles: [1/3] Ignore hits beyond the furthest one in embree
We should be recording only the N closest hits in case the number of
hits is exceeding the maximum allowed or the size of the hits stack.
Previously, some cases made it record hits beyond the furthest recorded
one due to lack of hit distance check.
2023-06-08 09:21:31 +02:00
Lukas Stockner
801897ed4e Cycles: Fix negative contribution from Velvet BSDF at grazing angles 2023-06-08 03:12:31 +02:00
Lukas Stockner
3b4182f272 Cycles: Fix assert for MultiGGX Principled Transmission 2023-06-08 03:12:31 +02:00
Lukas Stockner
74bef929d5 Merge branch 'blender-v3.6-release' 2023-06-08 03:05:19 +02:00
Lukas Stockner
1460c1c55c Cycles: Fix negative contribution from Velvet BSDF at grazing angles 2023-06-08 03:03:51 +02:00
Lukas Stockner
d6a183d7b3 Cycles: Fix assert for MultiGGX Principled Transmission 2023-06-08 02:35:16 +02:00
Campbell Barton
989b5de8e9 Cleanup: remove unused window states, add doc-strings
Note that the GHOST_TWindowState is stored in DNA & that
values shouldn't be changed.
2023-06-08 10:32:00 +10:00
Campbell Barton
6704881708 Cleanup: spelling in comments 2023-06-07 21:47:45 +10:00
Weizhen Huang
e3697710d0 Cycles: make light UV available for Texture Coordinate node
The input socket of Image Texture node is connected with the UV output
of Texture Coordinate node by default, the later reads the geometry UV,
which is not available for lights because they have no real geometry.
The current implementation simply retrieves UV from shader data.

Pull Request: https://projects.blender.org/blender/blender/pulls/108691
2023-06-07 12:31:36 +02:00
Weizhen Huang
2ab020cc3c Cycles: enable normal transformation of lights in Vector Transform node
This is added so that some texture pipeline with point light and spot
light could work as before. Some people use the Normal socket from
Texture Coordinate node for texturing light, however the Normal there is
actually the incoming light direction and should be corrected. Using the
Parametric socket from Geometry node + normal transform from world to
object with Vector Transform node delivers the same result as using the
Normal socket from Texture Coordinate node.

Currently for lights only normal transformation works, because only
there we fetch light transform properly. This is a confusing behaviour,
but testing if it's a lamp in all relevant functions could have bad
impact on the performance. A more proper solution would be to change
lights to real objects, which is planned for the future.

![Geometry_Vector_Transform](attachments/fe38895e-85b3-4e7a-873f-12068237f790)

Pull Request: https://projects.blender.org/blender/blender/pulls/108666
2023-06-06 19:07:43 +02:00
Weizhen Huang
ebd431d580 Fix wrong normal transformation in Vector Transform shader node
Normals do not transform the same way as vectors do, see
https://www.pbr-book.org/3ed-2018/Geometry_and_Transformations/Applying_Transformations
2023-06-06 15:17:26 +02:00
Campbell Barton
f31dfa9b74 Merge branch 'blender-v3.6-release' 2023-06-06 09:49:06 +10:00
Campbell Barton
dd1fe31a74 Cleanup: quiet compiler warnings 2023-06-06 09:34:50 +10:00
Bastien Montagne
90a0f39c02 Merge branch 'blender-v3.6-release' 2023-06-05 18:12:35 +02:00
Damien Picard
745baa788d I18n: extract a few messages
- "Invalid" in transformation messages.
- For three messages, translation occured after a string
- concatenation, so the full message was not found.
  Instead, translate a format pattern and format it afterwards.
- Alembic errors when there is an import type mismatch.

Pull Request: https://projects.blender.org/blender/blender/pulls/108212
2023-06-05 18:10:11 +02:00
Weizhen Huang
0e20e2320b Fix compiler error on Metal 2023-06-05 10:53:46 +02:00
Lukas Stockner
888bdc1419 Cycles: Remove MultiGGX code, replace with albedo scaling
While the multiscattering GGX code is cool and solves the darkening problem at higher roughnesses, it's also currently buggy, hard to maintain and often impractical to use due to the higher noise and render time.

In practice, though, having the exact correct directional distribution is not that important as long as the overall albedo is correct and we a) don't get the darkening effect and b) do get the saturation effect at higher roughnesses.

This can simply be achieved by adding a second lobe (https://blog.selfshadow.com/publications/s2017-shading-course/imageworks/s2017_pbs_imageworks_slides_v2.pdf) or scaling the single-scattering GGX lobe (https://blog.selfshadow.com/publications/turquin/ms_comp_final.pdf). Both approaches require the same precomputation and produce outputs of comparable quality, so I went for the simple albedo scaling since it's easier to implement and more efficient.

Overall, the results are pretty good: All scenarios that I tested (Glossy BSDF, Glass BSDF, Principled BSDF with metallic or transmissive = 1) pass the white furnace test (a material with pure-white color in front of a pure-white background should be indistinguishable from the background if it preserves energy), and the overall albedo for non-white materials matches that produced by the real multi-scattering code (with the expected saturation increase as the roughness increases).

In order to produce the precomputed tables, the PR also includes a utility that computes them. This is not built by default, since there's no reason for a user to run it (it only makes sense for documentation/reproducibility purposes and when making changes to the microfacet models).

Pull Request: https://projects.blender.org/blender/blender/pulls/107958
2023-06-05 02:20:57 +02:00
Chris Blackbourn
35eea10581 Cleanup: format 2023-06-05 12:14:20 +12:00
Lukas Stockner
f4708831ea Fix Principled Hair Absorption Coefficient when using OSL
The additional SocktType::VECTOR argument was being interpreted as flags,
which caused the OSL compiler to skip the input (since the Vector type enum
happens to align with the INTERNAL flag), which caused the OSL shader to
always use the hardcoded default absorption regardless of what was entered.
2023-06-05 01:35:19 +02:00
Lukas Stockner
3a81a93ecf Merge branch 'blender-v3.6-release' 2023-06-05 01:02:19 +02:00
Lukas Stockner
81f127a7e4 Fix refraction BSDF color when using OSL 2023-06-05 01:01:19 +02:00
Campbell Barton
e27bcb6e3e Cleanup: remove redundant struct qualifier 2023-06-04 19:27:38 +10:00
Weizhen Huang
97d9bbbc97 Cycles: more efficient and better-behaved sampling of spherical triangles
uses less inverse trigonometric functions and normalizations.
Also `q` is now guaranteed to be smaller than or equal to 1.

Pull Request: https://projects.blender.org/blender/blender/pulls/108380
2023-06-02 16:57:50 +02:00
Dalai Felinto
390f8fef76 Merge remote-tracking branch 'origin/blender-v3.6-release' 2023-06-02 11:10:45 +02:00
William Leeson
215925e04c FIX #108019: Detect absence of ray tracing support on late 2015 iMac
On an iMac (Retina 5K, 27-inch, Late 2015) it crashed when rendering using Cycles. This was due to the fact that it incorrectly detected that the machine supported ray tracing. This uses the device.supportsRaytracing flag to fill in the use_hardware_raytracing flag for the device.
2023-06-02 10:23:06 +02:00
Campbell Barton
118a47b7f6 Cleanup: quiet warnings
Resolve undeclared function & dangling reference warning.
2023-06-02 12:21:56 +10:00
Sergey Sharybin
eb9209c1f5 Cleanup: Deprecation warning in the FFmpeg
Since avuitl 57.30.100 the pkt_duration is deprecated, and
the duration is to be used instead.

The units seems to match, and also from the avcodec decoder.c
the `frame->pkt_duration = frame->duration;` so does not seem
we need to do any conversion.

The change in FFmpeg is from 2022, which is a bit recent, so
the access to the duration is hidden behind a compatibility
API.

Pull Request: https://projects.blender.org/blender/blender/pulls/108451
2023-05-31 16:41:47 +02:00
Campbell Barton
b2950b2ad7 Fix saving a quit.blend on exit when a file failed to load
When a file passed in from the command line failed to load,
blender would exit & save the quit.blend.

Resolve by adding a `do_user_exit_actions` to WM_exit_ex which is
false in backgrounds mode or when an error has occurred.

---

Back-ported [0] & [1] from main with fix [2] included.

[0]: c803ddab29
[1]: d7d1c524e3
[2]: d3d91b79e0
2023-05-31 12:35:22 +10:00
Harley Acheson
de10126b1f Fix: Build Warning of Unused Variable
Removing unused variable in GHOST_SystemWin32.cc

Own code, introduced in #108397
2023-05-30 08:54:28 -07:00
Sergey Sharybin
5c25277f6c Fix #108374: Sun light linking issue on direct sampling
This is a continuation of a fix from the last week in #108311.
The issue was not fully fixed due to a mistake in the regression
test file.

There are two major things which left to be fixed since the
previous patch:

1. Root nodes can not be shared, even if the local and distant
lights belong to the same light set. If the root node is shared
then the flattening will use the same node index for specialized
trees, which is not a desired behavior.

2. The node type needs to be preserved when a new node is
created for a subset of emitters. This is because tree sampling
in kernel will handle distant and local lights differently for
nodes where there are multiple emitters.

Pull Request: https://projects.blender.org/blender/blender/pulls/108427
2023-05-30 17:39:50 +02:00
Sergey Sharybin
db98d9816c Fix #108342: Regression: Cycles: Light group does not work
A couple of mistakes since the light linking commit:

- The +1 got missed in some of the refactors in the branch
- The order of arguments to the shadow path split was wrong

Pull Request: https://projects.blender.org/blender/blender/pulls/108420
2023-05-30 14:23:06 +02:00
Brecht Van Lommel
c5eaaa69bb Merge branch 'blender-v3.6-release' into main 2023-05-30 14:12:52 +02:00
Brad Smith
670da740ba Build: fix OpenBSD error in guardedalloc
Pull Request: https://projects.blender.org/blender/blender/pulls/108252
2023-05-30 13:55:37 +02:00
Brad Smith
0711bae5e7 Libmv: Remove FreeBSD sincos() workaround
Pull Request: https://projects.blender.org/blender/blender/pulls/108346
2023-05-30 13:55:27 +02:00
Sergey Sharybin
5a44922937 Merge branch 'blender-v3.6-release' 2023-05-30 11:47:35 +02:00
Sergey Sharybin
50ba227740 Fix #108316: CUDA error rendering Attic scene
The light tree dependent on the first threshold to evaluate to 1
when picking up an emitter.

Pull Request: https://projects.blender.org/blender/blender/pulls/108323
2023-05-30 11:44:33 +02:00
Michael Jones
bdf5649f36 Cycles: Remove redundant MetalRT workaround & add two useful DebugFlags
This patch removes a workaround for an issue that is now understood to be undefined behaviour (and fixed by #108176). It also adds two useful debug flags that we would like to be available in Blender 3.6.

Pull Request: https://projects.blender.org/blender/blender/pulls/108322
2023-05-30 11:12:05 +02:00
Campbell Barton
d7d1c524e3 Cleanup: pass the exit-code to WM_exit
Callers to WM_exit needed to set G.is_break for a predictable exit-code.
This is error prone as G.is_break may be set based on the user having
pressed escape during event handling.

Instead, pass the exit code as an argument.
2023-05-30 12:55:10 +10:00
Lukas Stockner
d28fe16693 Merge branch 'blender-v3.6-release' 2023-05-30 00:26:45 +02:00
Lukas Stockner
67d0ba4f80 Fix #108211: Incorrect Transmission Color pass due to merged Glass closure 2023-05-30 00:02:05 +02:00