Commit Graph

16 Commits

Author SHA1 Message Date
HybridDog cda112493a
Faster blit_with_alpha() (#14448)
* Add test nodes for alpha compositing and the fill texture modifier

Texture test nodes can be helpful to test if `blit_with_alpha` works correctly.

The alpha compositing test node covers different cases where pixel colors are mixed with each other.
The test currently fails because `blitPixel` does not work correctly if a semi-transparent color
is drawn on top of another semi-transparent color.
The test nodes for the fill texture modifier show if the size and position arguments of the modifier work correctly.
They do not cover special cases such as very large or negative position or size values.

* Faster blit_with_alpha()

The `blit_with_alpha` function has a noticeable effect on the time it takes to join a game.

To reduce the join times, I replace the `blit_with_alpha` function with a new one:
* It does not uses floating-point numbers.
* It directly operates on the raw pixel data instead of using the comparatively
  slow `setPixel` and `getPixel` functions from Irrlicht.
  Only ECF_A8R8G8B8 base images are supported now.
  If the top image does not have the ECF_A8R8G8B8 color format, it is converted;
  I assume that this happens rarely.
* There are case distinctions for fully opaque, fully transparent and semi-transparent pixels.
  This empirically increases the performance since the mixing between two semi-transparent happens rarely.
* The new function no longer has the `src_pos` argument since it was always the zero vector.
* The function is only documented once where it is declared.

For backwards compatibility, `blit_with_alpha` still mixes colors without gamma correction.
`blit_with_alpha` nonetheless behaves slightly different than before:
If a semi-transparent pixel is drawn on top of another semi-transparent pixel,
the color is mixed in a way which we can consider to be more correct now.
2024-03-19 19:56:47 +01:00
sfan5 d4b107e2e8 Enable dynamic_add_media to take the file data instead of a path 2024-02-13 22:44:10 +01:00
sfan5 c90ebad46b Allow specifying name for dynamic media files 2024-02-13 22:44:10 +01:00
sfan5 af69d4f7a9 Allow dynamic_add_media at mod load time 2024-02-13 22:44:10 +01:00
sfan5 93dfa8a6d8
Optimize and improve built-in PNG writer (#14020) 2023-12-27 11:56:48 +01:00
Wuzzy 9e186a42bd DevTest: Fix rendering of 2 texture test nodes 2022-10-23 21:58:56 +02:00
Wuzzy c1c68775b2
DevTest: Explain purpose of most items in tooltips (#12833) 2022-10-09 08:05:22 -04:00
Nils Dagsson Moskopp 7c227d2a00
Add TGA test nodes to devtest (#11978) 2022-02-22 19:17:40 +01:00
hecks 02292e03e4
Add embedded PNG texture modifier (#11498) 2021-10-13 17:51:37 +02:00
hecks 80d12dbedb
Add a simple PNG image encoder with Lua API (#11485)
* Add a simple PNG image encoder with Lua API
Add ColorSpec to RGBA converter
Make a safety wrapper for the encoder
Create devtest examples

Co-authored-by: hecktest <>
Co-authored-by: sfan5 <sfan5@live.de>
2021-07-29 05:10:10 +02:00
Wuzzy 9b64834c6a
Devtest: Remove bumpmap/parallax occl. test nodes (#10902) 2021-02-04 21:43:29 +01:00
sfan5 5c005ad081 devtest: Fix deprecated alpha usage 2021-01-29 17:34:41 +01:00
sfan5 edd8c3c664 Drop never documented 'alpha' property from nodedef
Includes minimal support code for practical reasons.
We'll need it for a slightly different purpose next commit.
2021-01-29 17:34:41 +01:00
HybridDog c61c175e9c
Add bumpmapping and parallax occlusion testing nodes to devtest (#9242) 2020-10-09 19:13:42 +01:00
Wuzzy 51de4ae297
Devtest: Fix missing/incorrect liquid properties (#9955) 2020-05-30 00:46:57 +01:00
Wuzzy 083b285f43
Rename “Minimal development test” to “Development Test” (#9928) 2020-05-26 00:17:52 +02:00