Commit graph

310 commits

Author SHA1 Message Date
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
Gered cb3a2673f9 add ability to move entities to imgui_integration example 2023-04-14 19:22:16 -04:00
Gered dc6b96d545 remove variable_screen_size example. imgui_integration does this too 2023-04-14 14:07:04 -04:00
Gered 49301a0be9 add readme for imgui_integration example 2023-04-14 14:00:02 -04:00
Gered 21259bfb10 show an imgui window with entity info, etc 2023-04-14 13:59:38 -04:00
Gered 1d64384088 update imgui helpers, split mouse_over_any into two separate functions
since it was kind of doing both, but the name implied otherwise, and
hence was incorrect behaviour
2023-04-14 13:58:41 -04:00
Gered b9ae66ea44 Merge branch 'master' into imgui 2023-04-14 13:19:04 -04:00
Gered fbf6d1e716 added "manual" integration tests for basic system/window verification
since i cannot think of any way to verify these tests in a automated
way, these are all set up currently as "ignored" tests which need to be
manually run (either directly via the IDE, e.g. CLion as I use, or via
the an ALTERNATIVE test runner via the CLI (such as nextest). these
cannot be run all together via `cargo test` (even if running with only
a single thread). `cargo test` can only be used to run them successfully
one test per invocation.
2023-04-14 13:18:47 -04:00
Gered 9a421f32a6 add #[inline] attributes to all the GeneralBitmap 1-line methods 2023-04-14 12:21:34 -04:00
Gered babb70cf30 add more useful methods to GeneralBitmap trait and impls 2023-04-14 12:19:28 -04:00
Gered e0a4ea9c5b increase MAX_KEYS constant to match underlying SDL key scancode max
SDL_NUM_SCANCODES is defined as 512 currently
2023-04-13 14:44:36 -04:00
Gered 43c921680b add num_derive's FromPrimitive derive to keyboard and mouse button enums
this has very limited use, outside of some tests i am writing right now,
but maybe it will be useful down the road.

(i suppose mostly, i just wanted to try this out for myself ...)
2023-04-13 14:43:13 -04:00
Gered 8e02fdd657 map our KeyModifiers bitflags struct to the original SDL values
rather then copy+pasting the constants. i doubt they'll change, but
you never know i guess ...
2023-04-12 15:20:24 -04:00
Gered db60579db4 fix mouse button event mapping
this was preventing applications from picking up basically all non-left
button states
2023-04-12 15:19:39 -04:00
Gered 7cff580bcb helper trait for imgui helper functions
only one for now. i am assuming i will want more in the future.
2023-04-11 22:12:55 -04:00
Gered 424c63d414 imgui_integration example initial commit, work in progress
mostly working, but the imgui ui part is only a placeholder.

also this example project is kind of overly complicated, but i really
wanted this to be something that somewhat resembles a real tool that
i'd want to build.
2023-04-10 19:40:46 -04:00
Gered 4069a92843 add generic pixel type parameter to SystemResources
this has no immediate use, but i think it will be useful in the future
for writing generic constraints requiring 32-bit color support while
not forcing use of any specific SystemResources implementation
2023-04-09 20:33:44 -04:00
Gered d85293d9bf remove need to pass a system struct to prepare a new imgui frame
just needed the destination bitmap dimensions and we don't need the
whole system struct for that
2023-04-08 21:04:45 -04:00
Gered 0f4ed2965c add wrapper struct to simplify imgui init and usage
rather than forcing use of 3 separate structs
2023-04-08 20:52:38 -04:00
Gered 3befd786ca adjust default imgui style's rounding settings 2023-04-07 14:46:17 -04:00
Gered eeee7ed67b cleanup 2023-04-07 14:31:50 -04:00
Gered 89be7f5e89 minor simplifications
sort of
2023-04-07 14:30:22 -04:00
Gered e3d585ec90 initial commit of ggdt_imgui library
fairly basic at this stage, but working
2023-04-07 14:21:27 -04:00
Gered cf6b7e5e3c minor crate import cleanups 2023-04-06 21:50:34 -04:00
Gered df31483cbd set opt-level = 1 on the dev profile by default 2023-04-06 21:15:17 -04:00
Gered 231ba10f1e remove Copy trait from these event enums to be consistent with the rest
since the TextInput event cannot implement Copy, necessitating the
removal of the Copy trait from KeyboardEvent, it feels wrong to me to
have the other event enums implement Copy, because it is inconsistent.

so while this is less convenient potentially, it feels consistent.

probably not a big deal in the future one way or the other.
2023-04-05 12:45:09 -04:00
Gered 1c39832801 add keyboard TextInput event mapping 2023-04-05 12:42:57 -04:00
Gered f3b6ca46e1 move all of the triangle_2d draw implementations to their own functions
keeping the original single triangle_2d function taking the enum, but
also allowing separate functions to be called without the need for an
enum, which might be useful.

plus this also feels a bit better organized and easier to read when you
just need to look at one or two different triangle drawing
implementations.
2023-04-05 12:37:26 -04:00
Gered 097147c568 update visual reference test image affected by some recent changes 2023-04-04 21:06:41 -04:00
Gered 29e5a8b080 some similar changes in indexed triangle_2d drawing 2023-04-04 21:06:10 -04:00
Gered a0c1199264 changes for a bit more floating-point stability in triangle_2d rendering
in truth, there's a lot of per-pixel color munging going on in these
triangle renderers. maybe too much? we're doing a lot of operations that
are constantly deconstructing argb32 colors and then reconstructing, and
then deconstructing+reconstructing again. and some of the time we were
doing this as floats, via the "normalized" conversion functions. this
seemed to be adding a bit of "color jitter" that could be visible
at run-time when triangles were being animated somehow (e.g. resized).

also, the whole "inverse area" thing, while probably a bit of a
micro-optimization at best, was causing its own little bit of visible
"color jitter" sometimes, probably due to an increased level of
floating-point inaccuracy when representing the area as a fraction
like that.
2023-04-04 21:05:33 -04:00
Gered 8aefdd6f0d update triangle_2d benchmarks
- switch to use RgbaBitmaps
- add more, particularly some with blending. not all are here though.
2023-04-04 20:30:42 -04:00
Gered 4f58b68012 cleanup imports 2023-04-04 20:29:53 -04:00
Gered 7a631e6088 make both 2d triangle enums derive Copy 2023-04-04 18:37:10 -04:00
Gered 2b39f6ae88 add indexed triangle 2d visual reference tests 2023-04-04 18:26:38 -04:00
Gered f564721e46 add blended triangle_2d drawing operations for IndexedBitmaps 2023-04-04 18:25:38 -04:00
Gered d1fb0c6b2e add new blend function and rgba triangle 2d visual reference tests 2023-04-04 17:52:00 -04:00
Gered 1985afe040 add triangle_list_2d method for rendering lists of triangles 2023-04-04 17:50:48 -04:00