Commit graph

159 commits

Author SHA1 Message Date
Jay Oster 303f1d90f5
Prepare 0.5.0 (#183)
* Prepare 0.5.0

* Update dependencies
2021-07-17 08:57:25 -07:00
Jay Oster 288da3675f
Use the swapchain-preferred texture format by default (#182)
- Fixes #140
- Adds a public method to get the current GPU framebuffer texture format (AKA the render texture format).
- This wasn't as difficult as it seemed; the extra API is used by the examples to get the right texture format instead of being hardcoded.
2021-07-17 08:21:49 -07:00
Jay Oster ce549a79b6
Update to egui 0.13 (#181) 2021-06-27 11:32:17 -07:00
Jay Oster c4df23f65d
Update to wgpu 0.9 (#179)
* Update to wgpu 0.9

* Fix validation error in WGSL shader

- This moves the hardcoded vertex positions and texture coordinates to
  the vertex buffer.
- Replaces the two-triangle quad to 1 full-screen triangle (fixes #180)
- Rewrites the custom shader example to fix a bug with large surface
  textures;
  - The input texture size was used for the output texture, causing the
    purple rectangle to appear very jumpy on large displays in full screen.
- The `ScalingRenderer` now exposes its clipping rectangle. The custom
  shader example uses this for its own clipping rectangle, but it can
  also be used for interacting with the border in general.

* Switch to `wgpu::include_wgsl!()`

- This is a nice little simplification.
- Thanks to @JMS55 for the suggestion!
2021-06-27 11:09:29 -07:00
Jay Oster 3ce4b75ad9
Fix shader include (#178) 2021-06-17 20:21:05 -07:00
Jay Oster 294a875c8e
Update dependencies and prepare release (#177) 2021-06-17 20:00:24 -07:00
Jay Oster e5da717351
Update dependencies for egui-winit example (#176)
* Update egui-winit example to greatly simplify the platform event handler

- I was able to upstream this logic into the egui_winit_platform crate

* Fix the wgpu validation error
2021-06-08 07:34:47 -07:00
Jay Oster 338a63a40e
Minor improvement: only one shader module is necessary (#175) 2021-06-08 07:09:58 -07:00
Jay Oster 7913cbdb85
Update egui_winit_platform (#173) 2021-06-06 22:34:59 -07:00
Jay Oster 8d77ac2f8b
Rewrite shaders in WGSL (#172)
- Fixes #141
2021-06-05 18:40:33 -07:00
Jay Oster 23da739650
Update fltk (#169)
- Fixes #163
- Reimplements window resize
  - Still has problems on macOS; Resizing with the drag handle blocks the main loop. See:
    - https://github.com/glfw/glfw/issues/1251
    - https://github.com/rust-windowing/winit/issues/219
2021-05-29 03:27:33 -07:00
Jay Oster b76ae1f7bc
Update winit to 0.25 (#168)
- Update winit
- Update egui_winit_platform
- Update imgui_winit_support
- Fix hyperlink and resize in `egui-winit` example
2021-05-29 02:18:48 -07:00
Jay Oster 355448a7f1
Update egui-winit example dependencies (#167)
* Update egui-winit example dependencies

* Update MSRV
2021-05-12 18:50:33 -07:00
Jay Oster f3d2b0643e
Fix UI colors in imgui-winit example (#166)
- Removes the sRGB workaround that was needed before `imgui-winit` 0.12
2021-05-08 23:14:26 -07:00
Jay Oster 0b26cf015f
Update docs (#165)
- Screenshot for the `imgui-winit` example was quite outdated. Dear ImGui even has a new theme, now.
2021-05-08 19:13:30 -07:00
Jay Oster cdcfe57868
Validate width and height inputs (#162)
* Validate width and height inputs

- Fixes #157

* Add window size check to `imgui-winit` demo

- There is really nothing better that can be done in this case.
- The surface, buffer, and world sizes must all be non-zero.
- A zero-length surface would (previously) panic in `wgpu`.
- A zero-length buffer would panic with the new assertions.
- A zero-length world would cause a divide-by-zero panic when drawing.
2021-05-08 17:26:21 -07:00
Jay Oster f238814d12
Update wgpu to 0.8 (#160)
- Also update other dependencies
2021-05-07 23:52:11 -07:00
Jay Oster 316400e6e0
Prepare release 0.3.0 (#159)
* Try to fix CI by updating MSRV

* Prepare release
2021-05-05 00:48:25 -07:00
Jay Oster 9bfed17a7f
Various fixes (#154)
* Cargo clippy

* Fix typo
2021-03-29 00:52:43 -07:00
JMS55 11c5961e4c
Use default() when making wgpu::RenderPipelineDescriptor (#152) 2021-03-11 18:14:34 -08:00
Jay Oster 8071f34a1f
Rename resize to resize_surface (#149)
- Also cleanup documentation.
- Workaround FLTK window resize issues by disabling resizability.
2021-03-09 04:15:24 -08:00
Jay Oster 509bb24b19
Update dependencies (#148) 2021-03-09 02:47:44 -08:00
Jay Oster f1c286f62e
Add MSRV policy (#147)
Also updates the README to remove the "WIP" label from the custom shader feature.
2021-03-09 02:06:08 -08:00
Jay Oster 161b448a18
Add egui example. (#146) 2021-03-09 01:40:24 -08:00
Jay Oster 333ce71468
Fix resize in the imgui-winit example (#145)
- Was originally resizing the pixel buffer with `PhysicalSize` units, which is definitely incorrect. (The pixel buffer is created with `LogicalSize` units.)
- Updated the World struct to retain its own size information.
2021-03-07 03:50:10 -08:00
Jay Oster 5dbe87d0c0
Fix matrix when creating a scaling renderer (#143)
- This issue can be seen when creating a window and pixel buffer that have differing sizes; the image will be stretched to fill the window.
- If the window supports the resize callback to correct the image aspect ratio, resizing the window will correct the matrix immediately, adding the black border as expected. This is a jarring effect when the texture size ratio is not an integer.
- This bug also causes issues with the new `resize_buffer()` API.
2021-03-03 10:45:14 -08:00
JMS55 f2d4a4f084
Upgrade to wgpu 0.7 (#134)
Co-authored-by: Jay Oster <jay@kodewerx.org>
2021-02-28 15:29:36 -08:00
Jay Oster 0709161e02 Remove commented code 2021-02-28 14:08:41 -08:00
Josh 26ae25c3d8
Resize buffer (#136)
- Fixes #125
2021-02-28 14:05:28 -08:00
Mohammed Alyousef f845d59213
add fltk example (#137)
* add fltk example

* fix clippy lint

* fix rustfmt check

* add missing trailing new line

* use no-pango feature

* remove call to win.draw()
2021-02-07 10:36:21 -08:00
Jay Oster c522d12e0e
Fix build for imgui-winit example (#138)
- The dependencies are a mess!
- Had to fork `imgui-wgpu`, which sits between 0.12 and 0.13 (has support for `winit` 0.24, but not `wgpu` 0.7)
- This is a temporary fix for CI, until https://github.com/Yatekii/imgui-wgpu-rs/pull/44 is merged and a new release of `imgui-wgpu` is out
- The WIP `wgpu` 0.7 update in https://github.com/parasyte/pixels/pull/134 will be needed for `imgui-wgpu` 0.14
- Update MSRV for `imgui` 0.7
2021-02-06 13:13:04 -08:00
Jay Oster 0a893d6eff
Update all dependencies (#130) 2021-01-05 18:20:36 -08:00
Jay Oster efb64078ec
CI improvements (#132)
- Run Cargo check against the entire workspace
- Use minimal toolchain profile for lints
2020-12-27 06:35:17 -08:00
Jay Oster c0d1fca061
Remove Travis badge (#131) 2020-12-19 07:15:47 -08:00
Jay Oster cb315ec0a1
Fix raqote example on high-DPI displays (#129) 2020-12-13 19:37:35 -08:00
Jay Oster 70ff52948b
Refactor builder (#128)
* Refactor PixelsBuilder into its own module

* Remove HasRawWindowHandle from public interface
2020-12-13 19:15:00 -08:00
Jay Oster f85145d774
Test all crates in the workspace (#127)
* Test all crates in the workspace

* Fix tests for Rust 1.41.0
2020-12-10 20:00:13 -08:00
Jay Oster d425cfee7f
Clippy (#126)
Changes `Rc<Vec<u8>>` to `Rc<[u8]>`. See: https://rust-lang.github.io/rust-clippy/master/index.html#rc_buffer
2020-12-10 19:28:54 -08:00
schnippl0r fb243b8973
Expose new API method render_texture_format(). (#123)
This method is needed to let the user of the API configure the texture
format of the target texture/render texture that the surface texture is
rendered on. This texture format is hardware/platform dependent.

For example, this method makes it possible to use the pixels crate on
Android because Android seems not to use the previously hard-coded
texture format wgpu::TextureFormat::Bgra8UnormSrgb.
2020-12-10 18:40:06 -08:00
Jay Oster e5f92519f1
Fix cron schedule to run only at midnight weekly (#120)
- Was running every minute of the day on Sunday, whoops!
2020-09-20 01:00:20 -07:00
Jay Oster 1cf980534c
Replace raqote-winit screenshot (#119)
- The old one had artifacts on the window border
2020-09-18 20:06:40 -07:00
Jay Oster 6c36b3955b
Add an example with raqote (#118)
* Add an example with raqote

* Fix raqote dependency
2020-09-18 03:59:05 -07:00
Jay Oster 11dca72955
Add Dear ImGui example (#116)
* Add Dear ImGui example

- Closes #90

* Change argument order to match `render_with`

* Remove unnecessary borrow

* Refactor error messages

* Add a space

* Refactor Gui field privacy

* Add a menu bar and allow the about window to be closed

- The local bool is necessary because the menu bar closures are not allowed to borrow `self` for mutable access while `imgui::Ui<'ui>` is alive.
- The token-based menu bar lifetime is even more verbose than this.
2020-09-18 03:57:28 -07:00
Jay Oster b6526c27e5
Remove pixels-dragons (#114)
- I don't want to publish this crate.
- Can't publish pixels 0.2.0 if it depends on an internal unpublished crate.
- This requires allowing unsafe code, and removing the safety dance badge.
2020-08-20 17:19:40 -07:00
Jay Oster 265ba2e5b3
Render API v2 (#112)
* WIP: Render API v2

* Fix doctests

* Expose all of PixelsContext (#110)

* Fix ScalingRenderer::new() taking &mut Device

* Replace getters with direct access to &mut PixelsContext

* Fix wrong reference type

* Fix unneeded mut

* Remove unnecessary mutable borrow, resurrect the shorter getter methods

* Initial port to wgpu master (0.6)
Surface creation is broken (see examples)
Does not support compressed textures

* Fix SurfaceTexture and examples

* Add support for compressed texture formats

* resize doesn't need mutability

* Update documentation

* Update wgpu

* Prepare release

* Goodbye Travis! Thanks for all the fish

Co-authored-by: JMS55 <47158642+JMS55@users.noreply.github.com>
2020-08-20 16:49:19 -07:00
Jay Oster 01d32c11f0
Bump beryllium version (#109)
- Closes #53
2020-07-29 19:07:34 -07:00
Jay Oster 1dd84cb412
Prepare 0.1.0 (#105) 2020-07-19 14:15:27 -07:00
Jay Oster 6c37916a56
Remove the workaround for metal 0.18.1 (yanked) (#104) 2020-07-19 13:52:00 -07:00
Jay Oster f118805eb7
Update README (#103) 2020-07-19 13:40:56 -07:00
Jay Oster fcc8f9fe65
Fix surface texture size in some of the examples (#102) 2020-07-19 04:38:17 -07:00