* Move all examples to individual crates
* CI: Add libsdl2
* Use Ubuntu bionic for updated libsdl; 2.0.8
* Clippy
* libudev-dev is a dependency of libsdl2-dev
* Clippy
* Remove unnecessary dev-dependency
* `winit` is actually used in unit tests
* Fix a typo
* Move `simple-invaders` crate
* remove unsafe slice::from_raw_parts
this should be a way to remove the unsafe code in the Spirv Deref impl.
Not sure how it affects performance yet.
I will take a look at the bytecode and see if maybe the compiler is
smart enough to optimize that away.
* change renderers to accomodate new Deref
Let the deref return a `Vec<u32>` instead of a slice reference. This
should not hurt performance too much as this will be done a finite
amount of times att startup.
* replaced deref with normal impl
* fixed endianness, fixed offset + rustfmt
* bump version
* fixed clippy lints
* respect the target endianness
* use wgpu::read_spirv()
* remove an unneccessary allocation of a vec
* move borrow into macro
* Add a conways game of life example
* Rustfmt conway example
* Respond to review feedback (p_width/p_height)
* Use line_drawing instead of manual bresenham
* Optimize count_neibs
* Remove inline(never) leftover from when profiling
* Bring back wrapping behavior (without regressing perf)
* Fix missing bounds check
- This works because `wgpu` is a dependency for `pixels`
- But this example should be demonstrating how to ony depend on `pixels` ... And whatever windowing system and event-loop you might want.
* Refactor window creation and size handling
* Require pixel aspect ratio to be > 0
* Fix screen scaling when window is resized
- Ensure the screen retains its correct pixel aspect ratio
- Updated public API on `RenderPass` ... this will continue to be unstable until the initial release
- Add build instructions for the internal shaders
* Implement collision detection
* Minor cleanups.
* Add laser/player collisions
* Add laser collision with bullets and fix fire button repeating
* Add basic shield collisions
* Refactor collision and debug
* Simplify collision and debug by not tracking laser indices
- We don't care about which laser collided, because they get destroyed immediately.
* Don't track laser indicies against bullets either
* DRY and docs
* Adjust the fleet bounding box as invaders are shot
* WIP: Invader AI
- Adds debug mode for visualizing bounding boxes
- Adds rectangle and line drawing (for debug mode)
- Invaders move as a close approximation to the original game
- TODO: Demonstrates that the blit function needs to ignore black pixels (or "transparency")
- TODO: The invader movement code is really bad
* clippy and fmt
* Refactor Invader movement
* Support "transparency" in blit function
* Scale player movement to 60 pixels per second, regardless of frame rate.
* Add assertions in blit to prevent drawing out of bounds
* Add bullets, shoot with space
* Add lasers, and improve the bullet animation a little bit
* fmt
- `SpriteRef` impls `Animation`, `Sprite` does not
- Animation duration and delta time now lives on the struct that handles the animation "state machine"
- Tweak the player animation to 100ms frame duration (was 50ms)