Commit Graph

12 Commits

Author SHA1 Message Date
Rémi Verschelde b5a8055b5c
embree: Fix Linux ARM64 build with `-flax-vector-conversions`
This is a change done upstream in the `devel3` branch for 3.13.6:
82ca6b5ccb

They also seem to define it for macOS, but for us it breaks the build...
¯\_(ツ)_/¯

Also change wrong use of CPPFLAGS (pre-processor) where CXXFLAGS (C++)
makes more sense.
2022-12-20 10:10:30 +01:00
Rémi Verschelde b2373298a2
embree: Enable raycast module build for Web and Windows x86_32
Embree initially only supported x86_64, then got arm64 support added.
Now it seems to be possible to build it with Emscripten (wasm32) and
on x86_32 Windows.
2022-11-25 14:48:29 +01:00
Rémi Verschelde d8268aae30 Fix MSVC warnings C4324, C4389, C4456, and C4459
Part of #66537.
2022-09-28 16:43:09 +02:00
Rémi Verschelde 26e9145c26 SCons: Cleanup `DEBUG`, `_DEBUG` and `NDEBUG` defines
- `_DEBUG` is MSVC specific so it didn't make much sense to define for
  Android and iOS builds.
- iOS was the only platform to define `DEBUG`. We don't use it anywhere
  outside thirdparty code, which we usually don't intend to debug, so it
  seems better to be consistent with other platforms.
- Consistently define `NDEBUG` to disable assert behavior in both `release`
  and `release_debug` targets. This used to be set for `release` for all
  platforms, and `release_debug` for Android and iOS only.
- Due to the above, I removed the only use we made of `assert()` in Godot
  code, which was only implemented for Unix anyway, should have been
  `DEV_ENABLED`, and is in PoolAllocator which we don't actually use.
- The denoise and recast modules keep defining `NDEBUG` even for the `debug`
  target as we don't want OIDN and Embree asserting all over the place.
2022-09-23 15:21:26 +02:00
Aaron Franke 27b0f18275 Unify bits, arch, and android_arch into env["arch"]
Fully removes the `bits` option and adapts the code that relied on it.

Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
2022-08-25 11:19:20 +02:00
Rémi Verschelde 7e8385ff78
Merge pull request #53245 from JFonS/occ_fixes2
Occlusion culling fixes
2021-09-30 19:58:05 +02:00
jfons 3f6ed10a5d Occlusion culling fixes
Fixes some issues found by UBSAN and other misc things:
* Fixed memory leak on exit.
* Properly align ray packet buffer to 64 bytes.
* Added some compiler flags from Embree's build system.
* Fixed ray masks.
2021-09-30 02:01:36 +02:00
jfons b197fc2079 Force optimized builds for thirdparty Embree files 2021-09-28 14:35:21 +02:00
Joan Fons 595cbacdf1 Upgrade Embree and enable ray packets
Minor patch upgrade. Enabling ray packets results in faster
processing of ray streams (i.e. occlusion culling buffer
updates) at the cost of slightly larger binary sizes.
2021-09-13 16:17:28 +02:00
jfons 767e374dce Upgrade Embree to the latest official release.
Since Embree v3.13.0 supports AARCH64, switch back to the
official repo instead of using Embree-aarch64.

`thirdparty/embree/patches/godot-changes.patch` should now contain
an accurate diff of the changes done to the library.
2021-05-21 17:00:24 +02:00
jfons 575543ce53 Port changes to the "raycast" module build files from 3.x 2021-05-04 17:21:41 +02:00
jfons 4d9d99bb82 Implement occlusion culling
Added an occlusion culling system with support for static occluder meshes.
It can be enabled via `Project Settings > Rendering > Occlusion Culling > Use Occlusion Culling`.

Occluders are defined via the new `Occluder3D` resource and instanced using the new
`OccluderInstance3D` node. The occluders can also be automatically baked from a
scene using the built-in editor plugin.
2021-04-23 21:45:23 +02:00