Commit Graph

463 Commits

Author SHA1 Message Date
relrelb 084b252030 web: Bump `wasm-bindgen` to 0.2.83
As usual, also bump its helper crates (`js-sys`, `web-sys` and
`wasm-bindgen-futures`) to the latest versions.

Due to https://github.com/rustwasm/wasm-bindgen/pull/3031, use the
`serde-wasm-bindgen` crate as a replacement to the deprecated
`JsValue::from_serde` function.
2022-09-14 09:03:31 +03:00
Aaron Hill 1d6b3b6f57 chore: Fix Clippy lints and allow `clippy::bool_to_int_with_if`
In several cases, the current code seems preferable to the
code required by `clippy::bool_to_int_with_if`. Let's suppress
this for now to get the build passing, and decide later if this
is something that we want to enable.
2022-09-11 13:31:46 +02:00
Nathan Adams 92044c9c02 wgpu: Merge bitmap bind groups 2 and 3 2022-09-11 09:07:53 +02:00
Nathan Adams d867a370fc wgpu: Cache direct bitmap draw bind groups (smoothing vs not) 2022-09-11 09:07:53 +02:00
Nathan Adams 57ddb6bdcb wgpu: Refactor out bitmap bind group from drawtype 2022-09-11 09:07:53 +02:00
Nathan Adams dd7f23f319 wgpu: Add documentation for pipeline binding groups 2022-09-11 09:07:53 +02:00
Nathan Adams 2d48d78990 wgpu: Removed redundant _pipeline suffix in Pipelines 2022-09-11 09:07:53 +02:00
Nathan Adams a38cadfd39 wgpu: Cache shape pipelines per texture format & msaa 2022-09-11 09:07:53 +02:00
Nathan Adams a8ff81ee38 wgpu: Make vertex buffer descriptions const 2022-09-11 09:07:53 +02:00
Aaron Hill b62c17577b wgpu: Switch to arena 2022-09-11 09:07:53 +02:00
Nathan Adams c63aa2cfc8 wgpu: Moved Draw creation outside of backend 2022-09-11 09:07:53 +02:00
Nathan Adams b2e02db72f wgpu: Extracted a create_texture_transforms method 2022-09-11 09:07:53 +02:00
Nathan Adams e7e0905647 wgpu: Moved Mesh, Draw and DrawType to their own file, and code that constructs a DrawType there too 2022-09-11 09:07:53 +02:00
Nathan Adams f36bcac742 wgpu: Move actual frame rendering to Surface, deduplicates some code 2022-09-11 09:07:53 +02:00
Nathan Adams b2ecd39648 wgpu: Enable MSAA for offscreen textures 2022-09-11 09:07:53 +02:00
Nathan Adams 69aba474e1 wgpu: Split off srgb and msaa code from backend to a Surface enum 2022-09-11 09:07:53 +02:00
Nathan Adams 03f7719c49 wgpu: Move quad into its own structure under Descriptors 2022-09-11 09:07:53 +02:00
Nathan Adams a8e8b01a6c wgpu: Use a static buffer for srgb transform uniforms, reworked it from Frame 2022-09-11 09:07:53 +02:00
Nathan Adams a1d1da5d25 wgpu: Simplify stencil usage from Frame's perspective 2022-09-11 09:07:53 +02:00
Nathan Adams 794b30e10e wgpu: Split draw_x into prep_x and draw 2022-09-11 09:07:53 +02:00
Nathan Adams 91f3230a45 wgpu: Split off Frame into CommandRenderer and Frame - command renderer translates commands into draw calls on frame 2022-09-11 09:07:53 +02:00
Nathan Adams 22ba32b785 wgpu: Remove target from Frame 2022-09-11 09:07:53 +02:00
Nathan Adams 8616c898cc wgpu: Remove globals from Frame 2022-09-11 09:07:53 +02:00
Nathan Adams 14ecc98780 wgpu: Pass quad vbo/ibo as slices 2022-09-11 09:07:53 +02:00
Nathan Adams 09172c8b12 wgpu: Simplified rendering code down to 'apply transform, draw x' 2022-09-11 09:07:53 +02:00
Nathan Adams 5f671c0018 wgpu: Fixed panic if rendering to a texture smaller than 1x1 2022-09-11 09:07:53 +02:00
Nathan Adams d5ab88f40d wgpu: Make buffer blocks Pin<Box<Block>> 2022-09-11 09:07:53 +02:00
Nathan Adams 08471c6fb7 wgpu: Don't keep setting globals bind group, it only needs to be set once 2022-09-11 09:07:53 +02:00
Nathan Adams 41239039eb wgpu: Moved all bind group layouts into their own struct 2022-09-11 09:07:53 +02:00
Nathan Adams f33e6904cd wgpu: Moved bind layouts out of Pipelines, they don't change 2022-09-11 09:07:53 +02:00
Nathan Adams 39e1224bda wgpu: Don't recompile shaders for each Pipelines 2022-09-11 09:07:53 +02:00
Nathan Adams 7e013183a7 wgpu: Removed Descriptors::pipelines, we don't need 3 pipelines 2022-09-11 09:07:53 +02:00
Nathan Adams 8b6c6f8a62 wgpu: Removed DescriptorsTargetData::surface_format and frame_buffer_format as they aren't needed to be target specific 2022-09-11 09:07:53 +02:00
Nathan Adams 6755e1ccbd wgpu: Pass the pipelines to frame instead of deciding based on a macro 2022-09-11 09:07:53 +02:00
Nathan Adams 13657e16ca wgpu: Make render_offscreen use its own Frame instead of making a whole new renderer backend 2022-09-11 09:07:53 +02:00
Nathan Adams 697369536c wgpu: Split off code that actually renders a frame 2022-09-11 09:07:53 +02:00
Nathan Adams 267ea0fd13 render: Introduced render commands, moved to a command list model instead of direct rendering 2022-09-11 09:07:53 +02:00
Nathan Adams c7f420dde5 wgpu: Moved WgpuRenderBackend into backend.rs 2022-09-11 09:07:53 +02:00
Nathan Adams 70d96654d7 wgpu: Move descriptors out into its own file 2022-09-11 09:07:53 +02:00
Aaron Hill 2f81f5814d render: Add `premultiplied_alpha` parameter for image capture
When rendering offscreen, we want the resulting image to use
premultiplied alpha, since the image will be stored in a texture.

However, when capturing an image in the exporter or test framework,
we want to use straight alpha, so that the resulting image can
be saved as a PNG.

Previously, we incorrectly used straight alpha everywhere, resulting
in incorrect output when using BitmapData.draw with transparency.
2022-09-09 15:46:48 -07:00
relrelb ca701c4aeb webgl: Remove `Texture` wrapper
`width` and `height` are already stored in `Bitmap`, so simply use
a `WebGlTexture` directly.
2022-09-08 21:04:02 -05:00
relrelb e0aba46bb2 chore: Remove unused `image` dependency
This basically reverts #7254 for all `.toml` files, except for `wgpu`
where it's actually needed on both desktop and web.
2022-09-07 13:09:29 -07:00
Aaron Hill 7218146e04 avm2: Implement BitmapData.dispose
We now check if a BitmapData has been disposed by checking
for a zero width or height (which cannot happen otherwise).
As a result, we no longer need the 'disposed' field on the AVM1
BitmapData object.
2022-09-07 11:02:53 -07:00
Aaron Hill 93607aa86e
avm2: Implement `BitmapData.draw` for `wgpu` backend (#7254)
* avm2: Implement `BitmapData.draw` for `wgpu` backend

This method requires us to have the ability to render directly to a
texture. Fortunately, the `wgpu` backend already supports this in
the form of `TextureTarget`. However, the rendering code required
some refactoring in order to avoid creating duplicate `wgpu` resources.

The current implementation blocks on copying the pixels back
from the GPU to the CPU, so that we can immediately set them in
the Ruffle `BitmapData`. This is likely very inefficient, but will
work for a first implementation.

In the future, we could explore allowing the CPU image data and GPU
texture to be out of sync, and only synchronized when explicitly
necessary (e.g. on `getPixel` or `setPixel` calls).

* Rename `with_offscreen_backend` to `render_offscreen` and use Bitmap

* Don't panic when backend doesn't implement `render_offscreen`
2022-09-06 16:38:48 -05:00
dependabot[bot] d7a224d2c7 build(deps): bump png from 0.17.5 to 0.17.6
Bumps [png](https://github.com/image-rs/image-png) from 0.17.5 to 0.17.6.
- [Release notes](https://github.com/image-rs/image-png/releases)
- [Changelog](https://github.com/image-rs/image-png/blob/master/CHANGES.md)
- [Commits](https://github.com/image-rs/image-png/commits)

---
updated-dependencies:
- dependency-name: png
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-05 15:14:36 -07:00
dependabot[bot] aacc3c231a build(deps): bump clap from 3.2.18 to 3.2.20
Bumps [clap](https://github.com/clap-rs/clap) from 3.2.18 to 3.2.20.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/v3.2.20/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v3.2.18...v3.2.20)

---
updated-dependencies:
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-05 14:47:03 -07:00
Nathan Adams 33b35cc29b wgpu: Use lowest limits and then bump up only what we need - fixes #5566, fixes #7256 2022-09-04 18:55:13 -07:00
Nathan Adams 5585772d54 wgpu: Don't make pipelines for blend modes we don't support 2022-09-04 18:55:13 -07:00
Nathan Adams 03744d46f1 web: Rename wgpu feature to webgpu, add wgpu-webgl feature to use webgl through wgpu 2022-09-04 18:55:13 -07:00
Nathan Adams 0ac2a3f361 wgpu: Try lower limits when full aren't available, and use uniforms for gradients if storage won't work 2022-09-04 18:55:13 -07:00