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
relrelb
fb39bb2b71
swf: Remove `Copy` from `Rectangle`
...
Use `.clone()` explicitly where needed.
2022-09-02 18:21:13 -07:00
relrelb
299da43c16
swf: Extract `ShapeFlag`
2022-09-02 18:21:13 -07:00
Mike Welsh
c17da6e91a
core: Fix some issues with `hitTest`
...
Fixes some issues with our winding # calculation which would cause
incorrect results for hitTest.
* The convention for handling an intersection at endpoints was
not the same between lines and bezier curves.
* The bezier curve winding # function was not properly handling
some cases where the curve was strictly y-monotonic.
* Simplify the code a bit so that ray-curve intersections are
returned in a consistent order based on upward/downward crossing.
2022-09-02 14:51:46 -07:00
relrelb
0d6462cfab
render: Remove `gc-arena` dependency
...
It was only used to make structs `#[derive(gc_arena::Collect)]`, and
generally it doesn't make much sense that `render` needs to be GC-aware.
So instead annotate `render` fields in `core` with `#[collect(require_static)]`.
2022-09-02 09:49:18 -07:00
dependabot[bot]
33cc87ce27
build(deps): bump clap from 3.2.17 to 3.2.18
...
Bumps [clap](https://github.com/clap-rs/clap ) from 3.2.17 to 3.2.18.
- [Release notes](https://github.com/clap-rs/clap/releases )
- [Changelog](https://github.com/clap-rs/clap/blob/v3.2.18/CHANGELOG.md )
- [Commits](https://github.com/clap-rs/clap/compare/v3.2.17...v3.2.18 )
---
updated-dependencies:
- dependency-name: clap
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-08-30 00:19:02 +03:00
dependabot[bot]
802de0e7d1
build(deps): bump futures from 0.3.23 to 0.3.24
...
Bumps [futures](https://github.com/rust-lang/futures-rs ) from 0.3.23 to 0.3.24.
- [Release notes](https://github.com/rust-lang/futures-rs/releases )
- [Changelog](https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/futures-rs/compare/0.3.23...0.3.24 )
---
updated-dependencies:
- dependency-name: futures
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
2022-08-29 23:38:43 +03:00
Aaron Hill
fa0c843a4d
avm2: Implement DisplayObject.scrollRect
...
This property causes a DisplayObject to be both translated
and cropped.
2022-08-26 13:04:01 -07:00
=
211a64b402
webgl: Replace Box<dyn Error> with actual Error enum
2022-08-25 23:43:21 +02:00
=
17f261fc1f
wgpu: Descriptors::new is infallible, removed error path
2022-08-25 23:43:21 +02:00
=
b29b30de58
wgpu: Pipelines::new is infallible, removed error path
2022-08-25 23:43:21 +02:00
=
201ed60d67
canvas: Removed generic error, was never actually used - just an Option worked better
2022-08-25 23:43:21 +02:00
=
461c977be0
render: unregister_bitmap is infallible, removed error path
2022-08-25 23:43:21 +02:00
=
03eb769a33
render: Made render use a real Error enum and not generic box<error>
2022-08-25 23:43:21 +02:00