Commit graph

347 commits

Author SHA1 Message Date
Gered f6ef1ee22e add support for resetting the imgui renderer's texture map 2023-05-26 11:11:27 -04:00
Gered 457aa757cf simplify 2023-05-05 18:15:55 -04:00
Gered 3a56926345 the big switch from ARGB to RGBA format for 32-bit color pixels 2023-05-05 18:14:37 -04:00
Gered 78d8102a23 rename color types to somewhat less "noisy" names
plus these are easier to type.

i do not anticipate needing structured color types for any other
type of components (e.g. i don't see a need for an ARGBu16x4, etc).
so i am fine with just having `ARGB` being associated with four u8's
with no real indication of this in the type name itself.
2023-05-05 15:56:29 -04:00
Gered ae178e1fa0 remove old argb color functions 2023-05-05 15:32:57 -04:00
Gered 02447867a9 add doc comments for the new color types 2023-05-05 14:41:27 -04:00
Gered 09dbb913a5 convert RgbaBitmap to use ARGBu8x4 as its pixel type 2023-05-04 18:54:37 -04:00
Gered cf92d42b84 update Pixel trait to just the bare minimum requirements
our target is IndexedBitmap's will use PixelType=u8 and
RgbaBitmap's will use PixelType=ARGBu8x4

thus, restricting the Pixel trait to primitive unsigned numerics won't
work anymore, but we do still need to support basic stuff like
equality testing and copy/clone support for our generic bitmap
operations
2023-05-03 16:57:13 -04:00
Gered 579398ea5e use manual impls of Debug and Display for ARGBu8x4 and ARGBf32x4
simply because i wanted a specific format, mostly for ARGBu8x4 and
the barebones hex format string
2023-05-03 16:42:26 -04:00
Gered 0eac3ad7a3 make ARGBu8x4 and ARGBf32x4 derive Default 2023-05-03 16:09:30 -04:00
Gered d12d7035ca add ARGBu8x4 to u32 conversion 2023-05-03 16:06:13 -04:00
Gered ae07b9cd37 add ARGBu8x4 -> byte casting helper traits/methods 2023-05-02 18:52:10 -04:00
Gered a7567b8c0f Merge branch 'master' into color_types 2023-05-01 16:25:02 -04:00
Gered 3b159a61b8 add inline annotations to some methods where i probably forgot before
these don't really affect performance in any meaningful way, according
to the benchmarks i just added. lol
2023-05-01 16:24:51 -04:00
Gered a0ec2f4826 add very simple benchmarks for drawing primitives with RgbaBitmaps
will need these for simple comparisons in the very near future
2023-05-01 16:23:44 -04:00
Gered 836e577bac add missing inline annotation 2023-04-30 17:15:22 -04:00
Gered 2843f87bdc add luminance and greyscale methods to ARGBu8x4 2023-04-30 17:14:36 -04:00
Gered 351a6c7e03 add u32 to ARGBf32x4 conversion 2023-04-30 17:08:01 -04:00
Gered 34c64cd1f9 use #[repr(transparent)] for both color types 2023-04-30 17:03:36 -04:00
Gered 1667ae2c43 add color tinting for ARGBu8x4 2023-04-30 16:59:24 -04:00
Gered 033081a49e add color blending for ARGBu8x4 2023-04-30 16:57:19 -04:00
Gered 448ce11dbc add color interpolation for ARGBu8x4 2023-04-30 16:41:38 -04:00
Gered 0112e99fc7 add color multiplication via operator overload for ARGBu8x4
of course, here we immediately must question whether this is abuse
of operator overloading or not. since you cannot otherwise multiply
these types together, i think this is fine. plus we are not providing
any other math operations via operator overloading, so this feels like
a very explicit thing to do
2023-04-30 16:38:04 -04:00
Gered 9ba65a9e37 remove ARGBu32 struct and color type traits 2023-04-30 16:26:20 -04:00
Gered 53ba5cdb65 doesn't seem like we actually need to use wrapping_shl here
i think i used it here due to a misunderstanding
2023-04-28 15:21:50 -04:00
Gered b5072bcb0f add traits for color type argb component access 2023-04-28 15:15:01 -04:00
Gered 4bef45dc6d add initial color types
this time via the "new type" idiom. the type aliasing i previously did
was, in retrospect, not a great idea
2023-04-27 18:31:41 -04:00
Gered 3a27994091 add simd f32x4 nearly_equal helper function 2023-04-26 18:29:02 -04:00
Gered b4a9b82bf8 update triangle graphics ref tests with yet a few more variations 2023-04-22 21:08:07 -04:00
Gered dde2c314ae update triangle graphics reference tests with more variations
two primary goals with this change:

1. test triangle dimensions of varying widths, in preparation for
   upcoming simd per_pixel_triangle_2d changes. we want to ensure that
   scenarios where `width < 4` and `width % 4 != 0` continue to work
   fine after simd changes are done
2. test triangle rendering at various rotations, because i remember
   while testing fill rule changes, sometimes issues would only be
   visible at certain rotations. so this is mostly just useful for
   blended rendering methods, but still, is probably generally useful
   too ...
2023-04-21 18:20:08 -04:00
Gered 83b5e1eabe move updating graphics ref test images under conditional compilation 2023-04-21 16:19:15 -04:00
Gered 865801a62b add comment explaining reason for nightly use 2023-04-21 14:58:14 -04:00
Gered 9cea60ebc4 specify nightly toolchain by date
i did not expect this to be problematic so soon, based on what i'd
read in various places about the stability of nightly (especially so
for the most common platforms like x86_64, etc)

as i write this commit message, all nightly versions past this date
fail to build ggdt, failing with an "illegal instruction" error.

sigh. this makes me question whether trying to use simd right now is
actually worth it ...
2023-04-20 23:00:51 -04:00
Gered 11d9225e5e refactor triangle rendering logic a bit 2023-04-20 17:46:49 -04:00
Gered ba4792575e convert RgbaBitmap triangle rendering pixel functions to use simd
some noticeable performance gains from this, mostly just for the
blended triangle rendering variants
2023-04-19 21:52:08 -04:00
Gered da4345e3e5 add simd color types and color function variants 2023-04-19 21:47:29 -04:00
Gered c289bbdd71 refactor remaining BlendFunction operations into standalone functions 2023-04-19 21:46:05 -04:00
Gered 174fe3a93d switch to nightly and enable portable_simd feature
i really did not want to use nightly, but i think it is worth it for
portable_simd which is still nightly-only (and i'm guessing will be
for a long while still). i was not particularly enthusiastic about any
of the alternative libraries that exist for stable rust simd, as it
always seemed like something small was missing from what i knew i would
want longer term.
2023-04-19 17:31:48 -04:00
Gered f6283a2634 add BlendFunction blend method variant for unpacked colors
also renamed the existing method to be more explicit
2023-04-19 15:44:37 -04:00
Gered 02349d09a2 add color type alias. add color fn variants using 4 color components
the color type aliases have been a long time coming. it might make
sense to re-work the various color functions into some traits that
these color type aliases implement.

added the color function variants that accept and/or return 4 color
component arrays to aide in code that is doing more complex color
manipulation where it just makes more sense to always be working with
4 color component arrays instead of always converting to/from packed
and unpacked formats
2023-04-19 15:40:07 -04:00
Gered 755d13eef9 update color functions to work with arrays instead of bare components 2023-04-18 16:42:13 -04:00
Gered 88bea61bab "fix" some compiler warnings
while these are not used currently, i'm not able to rule out the
possiblity that i'll want to use them in the near-ish future for future
tests.
2023-04-17 15:27:17 -04:00
Gered ef45992130 bump up version of bitflags 2023-04-17 15:26:15 -04:00
Gered 73e5b9c7bc tweak all internal pub mod / pub use and re-do the prelude module
this is based off what i saw some other libraries doing. i'm not sure
what is the "best practice" to be honest, but i definitely like this.
especially the prelude is now much simpler, which is nice.
2023-04-17 15:25:55 -04:00
Gered e8847d01be missed removal of one sub-prelude module. oops 2023-04-17 14:54:24 -04:00
Gered 78dd97cb12 all of these "tests" modules don't actually need to be public 2023-04-16 20:39:57 -04:00
Gered c6549e37a9 put all the prelude stuff into a single prelude module
i still don't like this
2023-04-16 20:39:10 -04:00
Gered f64bba30d2 update screenshot 2023-04-15 02:19:38 -04:00
Gered e9ea08c882 add "push" button to imgui_integration 2023-04-15 02:17:02 -04:00
Gered 0cae9d0367 fix move entity button not working for all entities 2023-04-15 02:09:15 -04:00