Commit Graph

147 Commits (cb1569345a6f17da08241e645ab03cb2e1b78d2f)

Author SHA1 Message Date
Thaddeus Crews 37764110f6
Merge pull request #110271 from BlueCube3310/image-conv-opti-incompatible
Image: Optimize manual format conversion
2025-10-22 13:48:46 +07:00
BlueCube3310 4266a4e4eb Image: Fix normalization of mipmaps for half and float formats 2025-10-22 15:03:57 +07:00
BlueCube3310 b63ec3d0f0 Image: Optimize format conversion 2025-10-22 14:30:18 +07:00
Skyth 3d4f248fda Round values after renormalization when generating mipmaps. 2025-10-20 13:36:41 +07:00
Thaddeus Crews f9be832eca
Merge pull request #110257 from BlueCube3310/mip-gen-all-formats
Image: Support generating mipmaps for all uncompressed formats
2025-10-01 13:12:40 +07:00
Thaddeus Crews 5a1bc65e06
Merge pull request #110058 from Rinnegatamante/pc_upstream
Perform per-line or per-rect blits in blit_rect.
2025-09-30 18:35:22 +07:00
BlueCube3310 f64ccadceb Image: Support generating mipmaps for all formats 2025-09-24 18:48:28 +07:00
Thaddeus Crews 3d1d4bf934
Merge pull request #110247 from BlueCube3310/image-fill-mips
Image: Make `fill` method also fill the mipmaps
2025-09-24 09:59:04 +07:00
Thaddeus Crews cd3a6c88fd
Merge pull request #106200 from BlueCube3310/image-16-u16
Image: Implement 16-bit unorm and uint formats
2025-09-23 12:08:46 +07:00
BlueCube3310 666ed1b51c Image: Make `fill` method also fill the mipmaps 2025-09-23 14:55:04 +07:00
Rinnegatamante ad09677532 Perform per-line or per-rect blits in blit_rect. 2025-09-19 22:01:43 +07:00
BlueCube3310 638c6a5659 Fix Image format RGB565 conversion 2025-08-03 16:28:13 +07:00
LuoZhihao a32b59622f Fix `Image` nearest and cubic resizing bias 2025-07-30 23:54:12 +07:00
BlueCube3310 16b9ee6f50 Image: Implement 16-bit unorm and uint formats 2025-06-28 00:30:52 +07:00
BlueCube3310 e35c80b61c Image: Fix `is_invisible` detection for RGBAH and RGBAF 2025-06-23 18:21:04 +07:00
Aaron Franke f6f1df7d73
Add 64-bit versions of core power of 2 functions 2025-06-01 23:11:12 +07:00
Thaddeus Crews 63dff62948
Merge pull request #100673 from RandomShaper/res_duplicate
Overhaul resource duplication
2025-05-27 09:39:25 +07:00
Pedro J. Estébanez 2a03b459b9 Overhaul `Resource::duplicate()`
Thanks to a refactor, `Resource::duplicate_for_local_scene()` and `Resource::duplicate()` are now both users of the same, parametrized, implementation.

`Resource::duplicate()` now honors deepness in a more consistent and predictable fashion. `Resource::duplicate_deep()` is added (instead of just adding a parameter to the former, for compatibility needs).

The behavior after this change is as follows:
  - Deep (`deep=true`, formerly `subresources=true`):
    - Previously, only resources found as direct property values of the one to copy would be, recursively, duplicated.
    - Now, in addition, arrays and dictionaries are walked so the copy is truly deep, and only local subresources found across are copied.
    - Previously, subresources would be duplicated as many times as being referenced throughout the main resource.
    - Now, each subresource is only duplicated once and from that point, a referenced to that single copy is used. That's the enhanced behavior that `duplicate_for_local_scene()` already featured.
    - The behavior with respect to packed arrays is still duplication.
    - Formerly, arrays and dictionaries were recursive duplicated, with resources ignored.
    - Now, arrays and dictionaries are recursive duplicated, with resources duplicated.
    - When doing it through `duplicate_deep()`, there's a` deep_subresources_mode` parameter, with various possibilites to control if no resources are duplicated (so arrays, etc. are, but keeping referencing the originals), if only the internal ones are (resources with no non-local path, the default), or if all of them are. The default is to copy every subresource, just like `duplicate(true)`.
  - Not deep (`deep=false`, formerly `subresources=false`): <a name="resource-shallow"></a>
    - Previously, the first level of resources found as direct property values would be duplicated unconditionally. Packed arrays, arrays and dictionaries were non-recursively duplicated.
    - Now, no subresource found at any level in any form will be duplicated, but the original reference kept instead. Packed arrays, arrays and dictionaries are referenced, not duplicated at all.
    - Now, resources found as values of always-duplicate properties are duplicated, recursively or not matching what was requested for the root call.

This commit also changes what's the virtual method to override to customize the duplication (now it's the protected `_duplicate()` instead of the public `duplicate()`).
2025-05-26 10:05:25 +07:00
BlueCube3310 0f9986470a Image: Fix detecting color channels 2025-05-16 12:47:57 +07:00
Thaddeus Crews 579feb387c
Core: Add `[[nodiscard]]` to string-like classes 2025-05-06 12:23:41 +07:00
LuoZhihao 237597b01f BasisU: Use KTX2 format and add import options to configure encoder 2025-05-03 01:45:38 +07:00
kobewi 5af4bef46f Inline static variables (part 1) 2025-04-29 18:10:44 +07:00
Thaddeus Crews ad40939b6f
Core: Replace C math headers with C++ equivalents
- Minor restructuring to ensure `math_funcs.h` is the central point for math functions
2025-04-16 15:49:02 +07:00
Thaddeus Crews 94282d88f9
Core: Use `Math` namespace for constants 2025-04-10 16:29:30 +07:00
A Thousand Ships 889410dcda
Add `String::replace_char(s)` methods for performance and convenience 2025-04-10 13:08:45 +07:00
Yufeng Ying 4f4031a675 Replace size() == 0 with is_empty(). 2025-04-02 19:18:43 +07:00
BlueCube3310 647b99c6d0 Image: Fix typo at `_set_color_at_ofs` with `FORMAT_RGB565` 2025-03-29 17:51:31 +07:00
BlueCube3310 dd47d9173e Image: Improve `is_invisible` function 2025-03-28 22:42:37 +07:00
Rémi Verschelde e3063f5675
Merge pull request #104590 from bruvzg/tex_decomp_load
Load decompressable texture format if no supported one is found.
2025-03-28 17:30:28 +07:00
BlueCube3310 649fa630a7 Image: Remove references to defunct `FORMAT_CUSTOM` 2025-03-26 21:37:26 +07:00
Pāvels Nadtočajevs b384de9013
Load decompressable texture format is no supported one found. 2025-03-25 09:46:19 +07:00
Thaddeus Crews f09ee0171a
Style: Begin integrating simple `.clangd` fixes 2025-03-22 13:24:35 +07:00
kobewi 10f6c01b9c Remove ABS in favor of Math::abs 2025-03-19 13:52:40 +07:00
K. S. Ernest (iFire) Lee 69b281295c Add DDS image load and save functionality
Save and load DDS from Image class.

Co-authored-by: BlueCube3310 <53150244+BlueCube3310@users.noreply.github.com>
2025-03-14 19:31:43 +07:00
BlueCube3310 271067eb2b Fix certain channel masks for Texture previewer 2025-01-15 18:40:53 +07:00
Marc Gilleron c7a9d64eaf Add color channel filter to editor texture previews 2025-01-11 23:27:48 +07:00
Thaddeus Crews 3c304ab7cc
Merge pull request #96076 from AThousandShips/improve_null_check_core_drivers
[Core,Drivers] Improve use of `Ref.is_null/valid`
2024-12-23 11:14:58 +07:00
Yufeng Ying be86ce3103 Apply iwyu suggestion in core. 2024-12-19 00:43:47 +07:00
BlueCube3310 335077a03f Image: More cleanup and reduced code duplication. 2024-12-12 11:52:59 +07:00
BlueCube3310 88ffe07de9 Betsy: Add BC3 and BC5 support 2024-11-27 12:27:05 +07:00
kobewi 3b6705a641 Support uid:// in more places 2024-11-16 21:43:18 +07:00
kobewi 0dabcd9941 Resource UID fixes and improvements 2024-11-14 16:37:54 +07:00
BlueCube3310 80a9c0d569 Clean up Image 2024-11-01 21:32:16 +07:00
A Thousand Ships ec650a2f09
[Core,Drivers] Improve use of `Ref.is_null/valid`
Use `is_null` over `!is_valid` and vice versa.
2024-11-01 16:50:11 +07:00
A Thousand Ships 38f9769bc6
[Core] Improve error messages with `vformat` 2024-10-30 15:55:51 +07:00
BlueCube3310 95fd45d9a5 Betsy: Implement BC4 compression 2024-09-22 10:16:37 +07:00
Rémi Verschelde a6d84bc0ce
Merge pull request #97059 from Gaktan/fix_weird_msvc_compilation_error
Fix weird MSVC compilation error
2024-09-16 13:36:06 +07:00
Gaktan 453f32ae0a Fix weird MSVC compilation error
For some reason, MSVC doesn't appreciate uint8 math with enum constants
2024-09-15 23:13:24 +07:00
BlueCube3310 606eedb0c9 Betsy: Add caching and BC1 compression support 2024-09-11 23:48:29 +07:00
A Thousand Ships 194bdde947
Cleanup of raw `nullptr` checks with `Ref`
Using `is_valid/null` over checks with `nullptr` or `ERR_FAIL_NULL` etc.
2024-08-31 15:01:09 +07:00