Commit Graph

885 Commits

Author SHA1 Message Date
TÖRÖK Attila 0f7c362069 wgpu: Update to wgpu 0.15.1, naga 0.11.0, and naga_oil 0.5.0 2023-03-12 16:30:13 -05:00
TÖRÖK Attila 7d3a2d14b7 render/wgpu: Delete the now unused buffer bug detection shader 2023-03-12 15:53:16 -05:00
TÖRÖK Attila d356b7258a wgpu: Fix gradient regression 2023-03-07 20:35:29 +01:00
Nathan Adams 026efe7f18 render: Moved out some Gradient fields into webgl as it's no longer needed in wgpu 2023-03-06 23:22:09 +01:00
Nathan Adams 0cca4983e4 wgpu: Merge gradient shaders together 2023-03-06 23:22:09 +01:00
Nathan Adams 622abe60d1 wgpu: Extract T->Color lookup from gradient shader to Mesh construction 2023-03-06 23:22:09 +01:00
renovate[bot] 130144a76d fix(deps): update rust dependencies 2023-03-05 20:43:46 -06:00
relrelb 83c15b8033 render: Replace `BoundingBox` with `swf::Rectangle` 2023-03-04 21:54:23 +02:00
relrelb abcdc2a851 render: Enable `serde`'s `derive` feature
Otherwise `cargo check` fails when run right from the `render/`
directory.
2023-03-04 21:54:23 +02:00
Aaron Hill 2748b95c86 avm2: Improve Stage3D support for textures, register types, and opcodes
This is a very large diff, but most of it comes from test files and
output.

This PR ads partial support for the following Stage3D shader features:
* Normal (square), rectangle, and cube textures
* Varying and temporary registers
* Lots of opcodes

The combination of these allows us to get a raytracing program
fully working in Ruffle. I've included it as image test.
Currently, this test is very slow (about 90 seconds on my machine),
as the code I'm using (https://github.com/saharan/OGSL) includes
its own shader language and compiler. THe raytracing demo
first compiles its own shader language to AGAL, and then starts
rendering the scene.

Limitations:
* Many opcodes are still unimplemented
* Most non-default texture options (e.g. mipmaps) are not implemented
2023-03-03 15:58:46 -06:00
Nathan Adams 545193b098 swf: Deduplicate GradientFilter again 2023-02-28 16:25:12 +01:00
Nathan Adams f79015e201 render: Use swf Filter types where possible. Gradient types had to be split into duplicate classes to allow for different trait impls based on which gradient filter type it is. 2023-02-28 16:25:12 +01:00
Nathan Adams 9224aeca5d swf: Add DropShadowFilter::hide_object(), it's the only time COMPOSITE_SOURCE is used 2023-02-28 16:25:12 +01:00
Nathan Adams b8f7c66980 core: map_point in DisplacementMapFilter is i32 not u32 2023-02-28 16:25:12 +01:00
Nathan Adams 3777210117 core: Angle from swf tag is in radians, convert it to degrees 2023-02-28 16:25:12 +01:00
Nathan Adams acc3180db7 core: Strength in filters is a f32, not u8 2023-02-28 16:25:12 +01:00
Nathan Adams 7da2a061cc swf: ColorMatrixFilter::matrix is actually f32, not Fixed16 2023-02-28 16:25:12 +01:00
Nathan Adams fc00ae8eb6 core: Load filters from PlaceObject tag 2023-02-28 16:25:12 +01:00
Nathan Adams e39fbe871d render: Add Filter::GradientGlowFilter 2023-02-28 16:25:12 +01:00
Nathan Adams bb38a7fa55 render: Add Filter::GradientBevelFilter 2023-02-28 16:25:12 +01:00
Nathan Adams c8030d047d render: Add Filter::GlowFilter 2023-02-28 16:25:12 +01:00
Nathan Adams c9656c429e render: Add Filter::DropShadowFilter 2023-02-28 16:25:12 +01:00
Nathan Adams dbe2efff00 render: Add Filter::DisplacementMapFilter 2023-02-28 16:25:12 +01:00
Nathan Adams f9c7303f01 render: Add Filter::ConvolutionFilter 2023-02-28 16:25:12 +01:00
Nathan Adams 9c1f6ea129 render: Add Filter::BevelFilter 2023-02-28 16:25:12 +01:00
Nathan Adams 5ee3a4b512 avm2: Extract out the Value -> Filter logic into a trait 2023-02-28 16:25:12 +01:00
renovate[bot] 71e24eedba fix(deps): update rust dependencies 2023-02-27 11:48:53 +02:00
relrelb dc9ec40d31 chore: Allow `clippy::bool_to_int_with_if`
Seems like Clippy no longer complains about it.
2023-02-26 13:23:38 +02:00
Nathan Adams 01af1af4d9 webgl: Fixed blown out colortransform in webgl 2023-02-24 19:01:41 +01:00
Nathan Adams edd7f80341 wgpu: Fix blown out colors when transforming them above 100% - fixes #9698 2023-02-24 19:01:41 +01:00
Aaron Hill 455124d3ba render: Fix blending onto BitmapData contents
When rendering to an offscreen texture for `Bitmapdata.draw`,
we first render to a temporary frame buffer, and then copy the contents
of the frame buffer back to the target texture. However, this results
in blend modes being incorrectly applied - for example, rendering with
BlendMode.SUBTRACT will subtract against the framebuffer (which starts
with each pixel as 0x00000000), instead of the previous BitmapData
contents.

To fix this, we now use our texture target as the frame buffer
when performing `render_offscreen`. This ensure that we blend
over existing pixels (taking into account the `blendMode` provided
in the `BitmapData.draw` call).

When multisampling is enabled, we use a copy pipeline to copy
the existing contents of our texture to a fresh multisampled frame
buffer (the non-multisampled texture target becomes our resolve buffer).
2023-02-23 09:52:56 -06:00
Nathan Adams 6539262db7 render: Add Quality option to RenderBackend::render_offscreen 2023-02-22 17:36:55 +01:00
relrelb 2aaf337b6a swf: Introduce `BlurFilterFlags` 2023-02-21 16:55:13 +02:00
renovate[bot] a27bd66b58 fix(deps): update rust dependency patches 2023-02-13 04:59:31 +01:00
Aaron Hill c597f9f996 core: Fix Clippy lints on nightly 2023-02-13 03:38:54 +01:00
renovate[bot] fed24aa243 fix(deps): update rust dependencies - wasm-bindgen related 2023-02-13 02:57:52 +01:00
Nathan Adams 0e9b1e4a77 wgpu: Better support for 2x and 8x msaa 2023-02-06 16:08:04 +01:00
Nathan Adams 68761608fc desktop: Add --quality option 2023-02-06 16:08:04 +01:00
Nathan Adams 1cb3ea7bf9 wgpu: Store quality, not sample_count, and calculate the correct sample count per format 2023-02-06 16:08:04 +01:00
Nathan Adams b95983b492 wgpu: Hook up set_quality 2023-02-06 16:08:04 +01:00
Nathan Adams d8e924affc render: Add RenderBackend::set_quality method, and call it from core 2023-02-06 16:08:04 +01:00
Nathan Adams b270d1bbd7 render: Move StageQuality from core to render 2023-02-06 16:08:04 +01:00
Nathan Adams 3411a04cef render: Made render specific Filter enum & structs, as swf ones don't map 1:1 to potential filters 2023-02-05 18:41:43 +01:00
Nathan Adams b5a250e16f render: Changed render_offscreen to return an Option instead of an Result 2023-02-05 18:41:43 +01:00
Nathan Adams e73389aa71 wgpu: Implement blur filter 2023-02-05 18:41:43 +01:00
Nathan Adams 284a58c817 avm2: Implement BitmapData.apply_filter for ColorMatrixFilter 2023-02-05 18:41:43 +01:00
Nathan Adams 72bfd499f8 wgpu: Reuse whole-mesh uniform buffer for gradients 2023-02-05 18:02:19 +01:00
Nathan Adams 013a2424ef wgpu: Only use uniform buffers for gradients, we don't need storage buffers now that we squeeze the ratios into alignment 2023-02-05 18:02:19 +01:00
Nathan Adams 3bc7d44e9c wgpu: Reuse the same vertex and index buffer for an entire mesh 2023-02-05 18:02:19 +01:00
Nathan Adams 571a1780e2 wgpu: Provide usage and alignment to BufferBuilder 2023-02-05 18:02:19 +01:00
Nathan Adams cbc227b0a0 wgpu: Split up mesh creation into a 2 step process so we can reuse the same buffer for each draw 2023-02-05 18:02:19 +01:00
Nathan Adams a3a7f79f04 render: Switch from log to tracing 2023-02-05 18:02:19 +01:00
Nathan Adams f9b378b29a wgpu: Changed most pipelines & shaders to only use Pos, not Pos and Color, as vertex attribs 2023-02-05 18:02:19 +01:00
renovate[bot] caaf6d5c87 fix(deps): update rust dependencies 2023-01-31 09:39:42 -06:00
Nathan Adams 5dd3060a28 wgpu: Ensure we clear before blending an object onto nothing 2023-01-29 20:45:01 +01:00
Nathan Adams 7b1c101c81 wgpu: Fix repeat & reflect gradients 2023-01-29 17:17:44 +01:00
Aaron Hill 184734267d tests: Deny unknown fields when deserializing test.toml files
This will catch typos and misplaced options when modifying tests.
2023-01-28 16:27:43 -06:00
Nathan Adams 9b43836d1d tests: Allow executing of with_renderer tests always, but image comparison is still gated 2023-01-28 12:15:59 -07:00
Nathan Adams 7d234956eb tests: Move tests away from giant macro to individual test.toml files that describe the test 2023-01-27 13:53:43 +01:00
renovate[bot] 8b6eef1715 fix(deps): update rust dependencies 2023-01-24 20:10:40 -06:00
Nathan Adams 1bfa69ade2 wgpu: Guard against infinite loops in gradient shader - fixes #9260 2023-01-23 23:25:30 +01:00
Aaron Hill ffc393e3e8 render: Work around naga_oil duplicate definition bug 2023-01-23 11:31:04 +01:00
Aaron Hill fc3c2a2297 Update wgpu
This requires us to bump naga as well, and switch to a fork
of naga_oil that compiles against the latest naga.
2023-01-23 11:31:04 +01:00
Aaron Hill a71d14d31c Fix wasm build 2023-01-23 11:31:04 +01:00
Aaron Hill 0fe8ef6c2d Get naga_oil shaders working 2023-01-23 11:31:04 +01:00
Aaron Hill 6fe7af58d5 Move back to upstream wgpu repository
We're relying on unreleased changes, so we depend on the latest commit
from their repository.
2023-01-23 11:31:04 +01:00
Aaron Hill e2954821ea
core: Take two - delay reading image back from render backend using `SyncHandle` (#9184)
* Take two: Delay reading image back from render backend using `SyncHandle`

This allows us to avoid blocking immediately after a `BitmapData.draw` call.
Instead, we only attempt to use the `SyncHandle` when performing an operation
that requires the CPU-side pixels (e.g. BitmapData.getPixel or BitmapData.setPixel).

In the best case, the SWF will never explicitly access the pixels of
the target BitmapData, removing the need to ever copy back the render backend
image to our BitmapData. If the SWF doesn't require access to the pixels immediately,
we can delay copying the pixels until they're actually needed, hopefully allowing
the render backend to finish processing the BitmapData.draw operation in
the backenground before we need the result.

Now that the CPU and GPU pixels can be intentionally out of sync with
each other, we need to ensure that we don't accidentally expose 'stale'
CPU-side pixels to ActionScript (which needs to remain unaware of
our internal laziness). We now use a wrapper type `BitmapDataWrapper`
to enforce that the `SyncHandle` is consumed before accessing the
underlying `BitmapData.

* core: Skip GPU->CPU sync for source and target BitmapData during draw

* Introduce DirtyState enum
2023-01-21 21:08:04 +00:00
Nathan Adams b5c6d5debe wgpu: Don't panic if rendering a None bitmap - fixes #9188 2023-01-17 19:34:51 +01:00
Nathan Adams 580cce29db wgpu: Update to wgpu fork with buffer bug fix 2023-01-17 05:59:55 +01:00
Nathan Adams 3c4710cfb5 wgpu: Only show current limits in debug info 2023-01-16 23:18:42 +01:00
TÖRÖK Attila ec462115ef core: nit: Use `strip_prefix` instead of `starts_with` and subslicing.
As suggested by relrelb in a review note for #8820.
2023-01-16 17:33:41 +01:00
Nathan Adams 6138714fa7 wgpu: Fix buffer bug detection 2023-01-16 17:22:04 +01:00
Mike Welsh 9cd6849772 core: Append EOI marker to JPEG data when missing
Fixes #4209.
2023-01-16 03:03:28 +01:00
Mike Welsh cceb18910b core: Fix handling of invalid EOI+SOI marker in JPEG data (fix #8775)
Previously we were removing the first occurrence of the invalid
0xFFD9FFD8 byte sequence in JPEG data, but this would break the
JPEG if it happened to contain this byte sequence elsewhere (for
example, EXIF data). Instead, properly parse the JPEG markers
searching for the invalid marker sequence.

Fixes #8775.
2023-01-16 03:03:28 +01:00
Nathan Adams 3279a920b4 wgpu: Use a temporary wgpu fork that increases push constants limit on webgl & speeds up start time 2023-01-15 18:19:11 +01:00
Nathan Adams 1b42ad0ab4 wgpu: Keep globals cache across the buffer pool 2023-01-14 19:35:16 +01:00
Nathan Adams 2e7201334d wgpu: Detect if buffers are unusable on web and fail to create wgpu renderer if so 2023-01-12 18:37:28 +01:00
Nathan Adams 8db8e4669a wgpu: Implement Multiply blend mode as a trivial blend 2023-01-12 10:54:03 -05:00
Nathan Adams 09608c2abc wgpu: Implement Screen blend mode as a trivial blend 2023-01-12 10:54:03 -05:00
Nathan Adams 9cd850d30e render: Make render_offscreen return a sync handle which can be used to get the texture at a later time 2023-01-11 16:53:33 -05:00
renovate[bot] 630558a936 fix(deps): update rust dependencies 2023-01-10 16:37:40 +01:00
Nathan Adams f5a587ce61 render: Better error message when points is empty 2023-01-10 11:10:46 +01:00
Nathan Adams e7dd3cc0f8 render: Add better expect messages for as_bitmap_data impls 2023-01-10 11:10:46 +01:00
Nathan Adams 3ead9aede9 webgl: Disallow unwrap() and unwrap_err() in webgl crate 2023-01-10 11:10:46 +01:00
Nathan Adams 0f5765d5cc webgl: Removed all unwraps and replaced with actual errors or expects 2023-01-10 11:10:46 +01:00
Nathan Adams 052ac06d85 canvas: Disallow unwrap() and unwrap_err() in canvas crate 2023-01-10 11:10:46 +01:00
Nathan Adams 312c23c4eb canvas: Removed unwraps and replaced with either warns, ignores or expects 2023-01-10 11:10:46 +01:00
Nathan Adams 5ae569983b render: Disallow unwrap() and unwrap_err() in render crate 2023-01-10 11:10:46 +01:00
Nathan Adams 85f0c9dde9 render: Replaced unwrap with expect in shape_utils 2023-01-10 11:10:46 +01:00
Nathan Adams 8f684d6943 render: Removed unwrap/panic when working with empty shapes 2023-01-10 11:10:46 +01:00
Nathan Adams 62f9b11417 wgpu: Fixed color shader working in correct color space 2023-01-10 09:39:28 +01:00
Nathan Adams ae75a3c166 wgpu: Use push constants for both Transforms and ColorAdjustments, when available 2023-01-10 09:39:28 +01:00
Nathan Adams fb78a39125 wgpu: Switch to experimental crate naga_oil for combining shaders 2023-01-10 09:39:28 +01:00
Nathan Adams 4e5749a7e4 wgpu: When push constants are available, use those for Transforms 2023-01-10 09:39:28 +01:00
Nathan Adams fa9db9145d wgpu: Removed double references 2023-01-10 09:39:28 +01:00
Nathan Adams ad3060e70c wgpu: Specialcase draw_rect with white as that's just identity color transform 2023-01-10 09:39:28 +01:00
Nathan Adams 53d6fa4d8b render: Make render commands take in an actual value, not ref for immediate cloning 2023-01-10 09:39:28 +01:00
Nathan Adams b07a01da57 wgpu: Cache texture views along side their owned textures in texture pool 2023-01-09 20:40:45 +01:00
Nathan Adams 4d85b6a75b wgpu: Hook up wgpu renderer, and wgpu's profiling, to tracy 2023-01-08 20:02:26 +01:00
Moulins d332a174c3 Bump `gc-arena` to current master revision
This required small changes to some Debug impls that were missed in #8964
2023-01-06 18:22:43 -05:00
Nathan Adams b7bc835def wgpu: Use Stencil8 2023-01-06 06:29:43 +01:00
Nathan Adams 69e98d23ad wgpu: Update to wgpu 630c12fe47a7bc0dc9ec6217f3903ec6fd6e3fac 2023-01-06 06:29:43 +01:00
Nathan Adams d6b8d6e488 webgl: Added debug info to webgl renderer 2023-01-05 05:51:32 +01:00
Nathan Adams a69d30bb67 render: Add debug info method to renderer backends 2023-01-05 05:51:32 +01:00
Aaron Hill 10491a1be9 core: Store data in `BitmapData` instead of `Bitmap`
This makes `Bitmap` delegate to `BitmapData` for
all of the bitmap-related information (handle, width, and height).
As a result, we now unconditionally store a `BitmapData` in `Bitmap`.

As a result, swapping the underling `BitmapData` instance will
automatically change the properties (and rendered image) of a `Bitmap`.

This required some refactoring in the render backends in order to
get access to a `BitmapHandle` through `BitmapData`.
2023-01-03 18:01:41 -07:00
dependabot[bot] b15c1bbfa3 build(deps): bump once_cell from 1.16.0 to 1.17.0
Bumps [once_cell](https://github.com/matklad/once_cell) from 1.16.0 to 1.17.0.
- [Release notes](https://github.com/matklad/once_cell/releases)
- [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md)
- [Commits](https://github.com/matklad/once_cell/compare/v1.16.0...v1.17.0)

---
updated-dependencies:
- dependency-name: once_cell
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-03 10:11:05 +02:00
Aaron Hill 172326005b Remove lifetime parameter from CommandHandler
The wgpu backend no longer needs this.
2023-01-03 04:37:28 +01:00
Nathan Adams 3b209bd6aa wgpu: Use frame-temporary buffer for offscreen rendering 2023-01-03 03:39:13 +01:00
Nathan Adams 533d104337 wgpu: Don't load or store the depth side of the depth buffer, we only care for stencil 2023-01-03 03:39:13 +01:00
Nathan Adams eaff82ea7e wgpu: Cleaned up some buffer binding api 2023-01-03 03:39:13 +01:00
Nathan Adams 28768f2ad8 render: Make CommandList a struct instead of a tuple 2023-01-03 03:39:13 +01:00
Nathan Adams 3dd9c4daa3 wgpu: Moved ColorAdjustments into its own bind group, and reuse ColorAdjustments::IDENTITY where we can 2023-01-03 03:39:13 +01:00
Nathan Adams 353a3116a4 wgpu: Define the sizes of uniforms upfront instead of at each call 2023-01-03 03:39:13 +01:00
Nathan Adams ae5d92693f wgpu: Moved DrawCommand handling to CommandRenderer::execute 2023-01-03 03:39:13 +01:00
Nathan Adams 7944b6dd9e wgpu: Inlined CommandRenderer::execute into Surface::draw_commands 2023-01-03 03:39:13 +01:00
Nathan Adams a71b5b4570 wgpu: Move command renderer to surface/commands.rs 2023-01-03 03:39:13 +01:00
Nathan Adams 0272eda121 wgpu: Refactor surface command target to its own file 2023-01-03 03:39:13 +01:00
Nathan Adams a657feadae wgpu: Clear out texture pool when resized 2023-01-03 03:39:13 +01:00
Nathan Adams cb6d72b49b wgpu: Split up gradient shader based on type and repeat 2023-01-03 03:39:13 +01:00
Nathan Adams a79e73fb12 wgpu: Clean up gradient shaders by bringing out common shared source into a same file 2023-01-03 03:39:13 +01:00
Nathan Adams b4c2030af8 wgpu: Appease beta clippy. again. 2023-01-03 03:39:13 +01:00
Nathan Adams 91561e8c35 wgpu: Reduce gradient.ratios uniform memory by 4x 2023-01-03 03:39:13 +01:00
Nathan Adams 312e72451f wgpu: Reduce gradient.colors uniform memory by 4x 2023-01-03 03:39:13 +01:00
Nathan Adams 986b95c50c wgpu: Share texture pool across all frames, and ensure targets are cleared properly 2023-01-03 03:39:13 +01:00
Nathan Adams c0ec5c5010 wgpu: Split up blend modes into their own shaders for performance 2023-01-03 03:39:13 +01:00
Nathan Adams 92a6c6bc76 wgpu: Add more debug labels within render passes 2023-01-03 03:39:13 +01:00
Nathan Adams 1863c93be1 wgpu: Add some more debug labels 2023-01-03 03:39:13 +01:00
Nathan Adams 257bbc8ec9 wgpu: Revert using same pool for whole frame - breaks bitmapdata.draw and I'm not sure why yet 2023-01-03 03:39:13 +01:00
Nathan Adams 0f676fc6ce wgpu: Simplify blend_buffers map creation 2023-01-03 03:39:13 +01:00
Nathan Adams ec7840f412 wgpu: Try harder to find render passes where we don't need depth 2023-01-03 03:39:13 +01:00
Nathan Adams c6045a4f24 wgpu: Multiply can't be trivial blend mode because of 0 alpha 2023-01-03 03:39:13 +01:00
Nathan Adams 342b9b9007 wgpu: Removed some needless copies in command iteration 2023-01-03 03:39:13 +01:00
Nathan Adams 81f4741300 wgpu: Default msaa on mobiles to 2x, same as webgl backend 2023-01-03 03:39:13 +01:00
Nathan Adams 7fb2ec096e wgpu: Don't wait for the entire frame to be drawn if we're just capturing a segment of the render list 2023-01-03 03:39:13 +01:00
Nathan Adams 75790606a0 wgpu: Share the buffer pool throughout the entire frame 2023-01-03 03:39:13 +01:00
Nathan Adams f253abdbd1 wgpu: Made Multiply, Add and Subtract blend modes use bitmap+blend 2023-01-03 03:39:13 +01:00
Nathan Adams e69d76fa41 wgpu: Cache Globals for a total draw frame, don't remake it if it's going to be the same values 2023-01-03 03:39:13 +01:00
Nathan Adams 03b62a93e6 wgpu: Pool textures during the same frame, and drop whatever we don't need immediately 2023-01-03 03:39:13 +01:00
Nathan Adams 4e51c9455e wgpu: Don't require VERTEX_WRITABLE_STORAGE which is unavailable on web 2023-01-03 03:39:13 +01:00
Nathan Adams 53b8907b78 wgpu: Optimise rendering blendables by queueing everything up in the same command buffer, allowing gpu to async where needed, instead of one command list at a time 2023-01-03 03:39:13 +01:00
Nathan Adams cb2b27ba03 wgpu: Don't create depth buffers, or use any depth testing, if we aren't expecting masks 2023-01-03 03:39:13 +01:00
Nathan Adams 05f49dd487 wgpu: Appease beta clippy 2023-01-03 03:39:13 +01:00
Nathan Adams 7e564185b5 wgpu: Handle alpha correctly for add or subtract blendmodes 2023-01-03 03:39:13 +01:00
Nathan Adams b72dc1edd4 wgpu: Don't create blend buffers until they're needed 2023-01-03 03:39:13 +01:00
Nathan Adams b0e345335f wgpu: Workaround naga-vulkan bug with default position in switch statement 2023-01-03 03:39:13 +01:00
Nathan Adams 219fabbc0b wgpu: For trivial blends (ie Normal), just draw them as bitmaps with a blendstate 2023-01-03 03:39:13 +01:00
Nathan Adams 8311ddb0da wgpu: Allow for different sized subcommand list targets, but don't use them yet 2023-01-03 03:39:13 +01:00
Nathan Adams f48de7b34e wgpu: Always clear the first texture buffer to the desired color 2023-01-03 03:39:13 +01:00
Nathan Adams 7904c3d4f0 wgpu: Implement all blend modes 2023-01-03 03:39:13 +01:00
Nathan Adams f9333e2626 wgpu: Perform command rendering recursively and chunk up blends. Blends are still not implemented, it just copies to parent. 2023-01-03 03:39:13 +01:00
Nathan Adams 915040ba06 wgpu: Globals should now belong to the Surface and doesn't need to be mutable anymore 2023-01-03 03:39:13 +01:00
Nathan Adams d2185733b4 wgpu: Simplify Surface to no longer be an enum as there's not really many options anymore 2023-01-03 03:39:13 +01:00
Nathan Adams 4cdb8ec634 wgpu: Frame no longer owns UniformBuffer 2023-01-03 03:39:13 +01:00
Nathan Adams 1df82e8104 wgpu: Separated srgb out of Surface 2023-01-03 03:39:13 +01:00
Nathan Adams 4502f9b7ea wgpu: Removed blendmode stuff 2023-01-03 03:39:13 +01:00
Nathan Adams ded46e20e7 render: Replace PushBlendMode/PopBlendMode with Blend 2023-01-03 03:39:13 +01:00
dependabot[bot] 664c67ea27 build(deps): bump clap from 4.0.29 to 4.0.32
Bumps [clap](https://github.com/clap-rs/clap) from 4.0.29 to 4.0.32.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.0.29...v4.0.32)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-26 22:04:33 +01:00
dependabot[bot] 5ea1076e35 build(deps): bump enum-map from 2.4.1 to 2.4.2
Bumps [enum-map](https://github.com/xfix/enum-map) from 2.4.1 to 2.4.2.
- [Release notes](https://github.com/xfix/enum-map/releases)
- [Changelog](https://github.com/xfix/enum-map/blob/master/CHANGELOG.md)
- [Commits](https://github.com/xfix/enum-map/compare/v2.4.1...v2.4.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-19 16:30:46 -08:00
CUB3D 1013a6a162 avm2: Button bounds_with_transform should include bounds of current state child 2022-12-18 13:32:24 -07:00
CUB3D 690191dbdf avm2: Fix SimpleButton bounds 2022-12-18 13:32:24 -07:00
Mike Welsh 696c9062d3 chore: Inherit cargo metadata from workspace
Use workspace inheritance added in Rust 1.64 to de-duplicate
various settings across all packages.
2022-12-16 15:53:59 -08:00
relrelb bd9078addf chore: Fix `clippy::uninlined_format_args` lints 2022-12-15 08:59:38 +02:00
relrelb cf03ee7430 wgpu: Bump to 0.14.2 2022-12-14 23:59:53 +02:00
dependabot[bot] d6c8d5d3fd build(deps): bump insta from 1.22.0 to 1.23.0
Bumps [insta](https://github.com/mitsuhiko/insta) from 1.22.0 to 1.23.0.
- [Release notes](https://github.com/mitsuhiko/insta/releases)
- [Changelog](https://github.com/mitsuhiko/insta/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mitsuhiko/insta/compare/1.22.0...1.23.0)

---
updated-dependencies:
- dependency-name: insta
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-12 23:47:32 +01:00
dependabot[bot] 6136c2fa74 build(deps): bump insta from 1.21.2 to 1.22.0
Bumps [insta](https://github.com/mitsuhiko/insta) from 1.21.2 to 1.22.0.
- [Release notes](https://github.com/mitsuhiko/insta/releases)
- [Changelog](https://github.com/mitsuhiko/insta/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mitsuhiko/insta/compare/1.21.2...1.22.0)

---
updated-dependencies:
- dependency-name: insta
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-05 23:49:58 +01:00
Aaron Hill 173a1a80cb Fix BitmapHandle downcasting in webgl and canvas backends
There were two issues:
1. We were accidentally calling `as_any` on `handle,` rather than
   `handle.0`
2. Calling `as_any` can invoke the wrong implementation, depending on
   what traits are in scope. We want the method implemented on the
   underlying type (`RegistryData`) to be used, but if `Downcast` is
   explicitly imported, then we appear to invoke it on the trait object
   `dyn BitmapHandleImpl` itself (using the fact that trait objects
   themselves implement `Any`). We now explicitly call the generated
   method on the trait object, which avoids this issue.
2022-12-04 14:53:00 -06:00
Aaron Hill 1b3070ab85 core: Make `BitmapHandle` hold a trait object instead of an id
`BitmapHandle` now holds `Arc<dyn BitmapHandleImpl>`.
This allows us to move all of the per-bitmap backend data into
`BitmapHandle`, instead of holding an id to a backend-specific
hashmap.

This fixes the memory leak issue with bitmaps. Once the AVM side of a
bitmap (`Bitmap`/`BitmapData`) gets garbage-collected, the
`BitmapHandle` will get dropped, freeing all of the GPU resources
assoicated with the bitmap.
2022-12-03 19:44:44 -06:00
Adrian Wielgosik 0861153626 swf: make Clippy happy 2022-12-03 22:18:22 +01:00
dependabot[bot] 281ca6a1b8 build(deps): bump insta from 1.21.1 to 1.21.2
Bumps [insta](https://github.com/mitsuhiko/insta) from 1.21.1 to 1.21.2.
- [Release notes](https://github.com/mitsuhiko/insta/releases)
- [Changelog](https://github.com/mitsuhiko/insta/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mitsuhiko/insta/compare/1.21.1...1.21.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-30 12:36:14 +01:00
Marco Grassi ad81b3bf14 upgrade lock and toml dependencies 2022-11-26 14:04:59 -05:00
Aaron Hill b8745f0ff1 avm2: Partially implement Stage3D for wgpu backend
This PR implements core 'stage3D' APIs. We are now able
to render at least two demos from the Context3D docs - a simple
triangle render, and a rotating cube.

Implemented in this PR:
* Stage3D access and Context3D creation
* IndexBuffer3D and VertexBuffer3D creation, uploading, and usage
* Program3D uploading and usage (via `naga-agal`)
* Context3D: configureBackBuffer, clear, drawTriangles, and present

Not yet implemented:
* Any 'dispose()' methods
* Depth and stencil buffers
* Context3D texture apis
* Scissor rectangle

General implementation strategy:

A new `Object` variant is added for each of the Stage3D objects
(VertexBuffer3D, Program3D, etc). This stores a handle to the
parent `Context3D`, and (depending on the object) a handle
to the underlying native resource, via `Rc<dyn
SomeRenderBackendTrait>`).

Calling methods on Context3D does not usually result in an immediate
call to a `wgpu` method. Instead, we queue up commands in our
`Context3D` instance, and execute them all on a call to `present`.
This avoids some nasty wgpu lifetime issues, and is very similar
to the approah we use for normal rendering.

The actual rendering happens on a `Texture`, with dimensions
determined by `createBackBuffer`. During 'Stage' rendering,
we render all of these Stage3D textures *behind* the normal
stage (but in front of the overall stage background color).
2022-11-25 21:43:00 -07:00
Aaron Hill 104b2265f2 Fix rebase fallout 2022-11-25 16:08:42 -07:00
Aaron Hill 3bef8c4fd6 render: Remove `get_bitmap_pixels` and store data in `Character::Bitmap`
We only called `get_bitmap_pixels` when creating a `BitmapData`
for an SWF-provided `Bitmap`. We now store the initial pixels
in `Character::Bitmap`, and use them to initialize a `BitmapData`
when needed.

This lets us simplify the wgpu backend, which no longer needs
to store a `Bitmap` object. In addition to saving space for
`BitmapData` objects that lack an SWF `Bitmap`, this will make
it easier to move data from `bitmap_registry` into `BitmapHandle`
itself.
2022-11-25 16:08:42 -07:00
Mark Richins d345523d02 Fix conflicts 2022-11-23 20:45:37 -07:00
Mark Richins 63a291ac4b Fix promblems caused by moving Twips 2022-11-23 20:45:37 -07:00
Aaron Hill bdadb17a95 render: Don't use BitmapHandle in tessellator
Currently, we rely on ShapeTessellator being able to get a BitmapHandle
without a RenderBackend. With the upcoming BitmapData refactor,
we will always need a RenderBackend to get a BitmapHandle, which creates
borrow-checker issues in ShapeTessellator (which is stored in a
RenderBackend).

To solve this, we split BitmapSource.bitmap into two methods -
BitmapSource.bitmap and BitmapSource.bitmap_handle. ShapeTessellator
continues to use BitmapSource.bitmap, and uses the u16 bitmap id
instead of a BitmapHandle. The BitmapSource.bitmap_handle method
is used inside each render backend to convert the id to a BitmapHandle,
avoiding borrow-checker issues.
2022-11-21 21:04:40 -07:00
dependabot[bot] ccb1fa1b1b build(deps): bump clap from 4.0.24 to 4.0.26
Bumps [clap](https://github.com/clap-rs/clap) from 4.0.24 to 4.0.26.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.0.24...v4.0.26)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-21 18:07:28 -07:00
dependabot[bot] c2319da673 build(deps): bump gif from 0.11.4 to 0.12.0
Bumps [gif](https://github.com/image-rs/image-gif) from 0.11.4 to 0.12.0.
- [Release notes](https://github.com/image-rs/image-gif/releases)
- [Changelog](https://github.com/image-rs/image-gif/blob/master/Changes.md)
- [Commits](https://github.com/image-rs/image-gif/compare/v0.11.4...v0.12.0)

---
updated-dependencies:
- dependency-name: gif
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-21 16:12:02 -07:00
dependabot[bot] 78dac5e8ea build(deps): bump insta from 1.21.0 to 1.21.1
Bumps [insta](https://github.com/mitsuhiko/insta) from 1.21.0 to 1.21.1.
- [Release notes](https://github.com/mitsuhiko/insta/releases)
- [Changelog](https://github.com/mitsuhiko/insta/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mitsuhiko/insta/commits/1.21.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-21 15:21:32 -07:00
dependabot[bot] b3debc96af build(deps): bump clap from 4.0.22 to 4.0.24
Bumps [clap](https://github.com/clap-rs/clap) from 4.0.22 to 4.0.24.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.0.22...v4.0.24)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-15 09:33:20 +02:00
dependabot[bot] 4c34fa361d build(deps): bump image from 0.24.4 to 0.24.5
Bumps [image](https://github.com/image-rs/image) from 0.24.4 to 0.24.5.
- [Release notes](https://github.com/image-rs/image/releases)
- [Changelog](https://github.com/image-rs/image/blob/master/CHANGES.md)
- [Commits](https://github.com/image-rs/image/compare/v0.24.4...v0.24.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-15 08:12:38 +02:00
dependabot[bot] 63a297608e build(deps): bump lyon from 1.0.0 to 1.0.1
Bumps [lyon](https://github.com/nical/lyon) from 1.0.0 to 1.0.1.
- [Release notes](https://github.com/nical/lyon/releases)
- [Commits](https://github.com/nical/lyon/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-08 09:00:31 +02:00
dependabot[bot] 9303304e3b build(deps): bump clap from 4.0.18 to 4.0.22
Bumps [clap](https://github.com/clap-rs/clap) from 4.0.18 to 4.0.22.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.0.18...v4.0.22)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-08 00:25:12 +02:00
dependabot[bot] 7ea0dd1221 build(deps): bump bytemuck from 1.12.2 to 1.12.3
Bumps [bytemuck](https://github.com/Lokathor/bytemuck) from 1.12.2 to 1.12.3.
- [Release notes](https://github.com/Lokathor/bytemuck/releases)
- [Changelog](https://github.com/Lokathor/bytemuck/blob/main/changelog.md)
- [Commits](https://github.com/Lokathor/bytemuck/compare/v1.12.2...v1.12.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-07 22:32:10 +02:00
relrelb d16e9e1511 wgpu: Use `Depth24PlusStencil8` again
This reverts #8297. Instead, pin `wgpu-hal` and `wgpu-types` to
include https://github.com/gfx-rs/wgpu/pull/3165, which fixes
https://github.com/gfx-rs/wgpu/issues/3112.
2022-11-03 20:42:39 +02:00
relrelb b3cdd6dda1 Revert "wgpu: Use `Depth32FloatStencil8` over `Depth24PlusStencil8`"
This reverts commit 37f171de06.
2022-11-03 20:42:39 +02:00
relrelb 89f3445d62 swf: Introduce and use `Rectangle::width()` and `Rectangle::height()` 2022-11-01 09:49:04 +02:00
dependabot[bot] f4e7f43d1a build(deps): bump bytemuck from 1.12.1 to 1.12.2
Bumps [bytemuck](https://github.com/Lokathor/bytemuck) from 1.12.1 to 1.12.2.
- [Release notes](https://github.com/Lokathor/bytemuck/releases)
- [Changelog](https://github.com/Lokathor/bytemuck/blob/main/changelog.md)
- [Commits](https://github.com/Lokathor/bytemuck/compare/v1.12.1...v1.12.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-01 00:17:08 +02:00
dependabot[bot] e5313c81f8 build(deps): bump once_cell from 1.15.0 to 1.16.0
Bumps [once_cell](https://github.com/matklad/once_cell) from 1.15.0 to 1.16.0.
- [Release notes](https://github.com/matklad/once_cell/releases)
- [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md)
- [Commits](https://github.com/matklad/once_cell/compare/v1.15.0...v1.16.0)

---
updated-dependencies:
- dependency-name: once_cell
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-31 23:48:15 +02:00
dependabot[bot] 9e3d849db5 build(deps): bump png from 0.17.6 to 0.17.7
Bumps [png](https://github.com/image-rs/image-png) from 0.17.6 to 0.17.7.
- [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-10-31 23:14:44 +02:00
Aaron Hill 68471723b3 core: Fix clippy format string lint 2022-10-27 08:49:39 +03:00
dependabot[bot] 3c7e9235f6 build(deps): bump futures from 0.3.24 to 0.3.25
Bumps [futures](https://github.com/rust-lang/futures-rs) from 0.3.24 to 0.3.25.
- [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.24...0.3.25)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-25 09:19:27 +03:00
dependabot[bot] c9f5524748 build(deps): bump clap from 4.0.15 to 4.0.18
Bumps [clap](https://github.com/clap-rs/clap) from 4.0.15 to 4.0.18.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.0.15...v4.0.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-10-25 09:00:26 +03:00
dependabot[bot] 973b95396a build(deps): bump jpeg-decoder from 0.2.6 to 0.3.0
Bumps [jpeg-decoder](https://github.com/image-rs/jpeg-decoder) from 0.2.6 to 0.3.0.
- [Release notes](https://github.com/image-rs/jpeg-decoder/releases)
- [Changelog](https://github.com/image-rs/jpeg-decoder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/image-rs/jpeg-decoder/compare/v0.2.6...v0.3.0)

---
updated-dependencies:
- dependency-name: jpeg-decoder
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-24 23:35:49 +03:00
Aaron Hill 8ae6454337 webgl: Update 'viewport_scale_factor' field
Previously, we were ignoring changes to the scale factor.
2022-10-18 14:00:54 -05:00
Aaron Hill d0230a2bea render: Add 'naga-agal' crate to compile AGAL shaders to Naga
This is the first part of the Stage3D implementation, and can
be reviewed independently.

Stage3D shaders use the Adobe Graphics Assembly Language (AGAL),
which is a binary shader format. It supports vertex attributes,
varying registers, program constants (uniforms), and texture sampling.

This PR only implements a few parts of AGAL:
* The 'mov' and 'm44' opcodes
* Vertex attributes, varying registers, program constants, and 'output'
 registers (position or color, depending on shader type)

This is sufficient to get a non-trivial Stage3D program
running (the rotating cube demo from the Adobe docs).

The output of `naga-agal` is a `naga::Module`. This can be passed
directly to wgpu, or compiled into a shader language using
a Naga backend (glsl, wgsl, SPIR-V, etc). The test suite
output WGSL files, and uses the 'insta' crate to compare against
saved files on disk.

Currently, the only real way to write AGAL bytecode is using
the Adobe-provided 'AGALMiniAssembler' flash class.
This class assembles the textual reprentation of AGAL into
the binary format.

To make writing tests easier, I've added a 'agal_compiler' test, which
can easily be modified to add more Agal textual assembly.
2022-10-17 13:22:02 -05:00
Aaron Hill 45515be0a3 render: Improve support for BitmapData.draw
This PR fixes a numbe of interconnected bugs:
* We weren't consistently uploading a dirty BitmapData to the render
  backend before drawing to/from it.
* BitmapData.draw should *not* add a fill color - it should draw over
  the current contents of the BitmapData
* After drawing to a non-transparent BitmapData, we need to manually
  set the opacity back to 255 for each pixel (the drawing process
  takes transparency into account, but the opacity information is
  thrown away at the end).
2022-10-17 12:53:38 -05:00
relrelb 86ef4bd7fe core: Simplify `Bitmap` creation
Change `Bitmap::new()` to accept a `ruffle_render::bitmap::Bitmap`
directly, instead of `width`, `height` and `bitmap_handle`. As a
consequence, all `RenderBackend::register_bitmap_*` methods are no
longer necessary - we can use `ruffle_redner::utils::*` to obtain
a `ruffle_render::bitmap::Bitmap` right before calling `Bitmap::new()`.
2022-10-17 20:05:30 +03:00
relrelb 37f171de06 wgpu: Use `Depth32FloatStencil8` over `Depth24PlusStencil8`
Credit to @crumblingstatue.

Per `wgpu` documentation, the latter has wider support than the former.

Fixes #8295, #8296.
2022-10-15 23:35:44 +03:00
relrelb 178bf4fe24 chore: Extract Cargo `edition` to `[workspace.package]`
This is possible since Rust 1.64.0: https://blog.rust-lang.org/2022/09/22/Rust-1.64.0.html#cargo-improvements-workspace-inheritance-and-multi-target-builds
2022-10-14 22:13:29 +03:00
relrelb 183b8adbf0 wgpu: Bump to `0.14.0`
Also bump `raw-window-handle` to `0.5`, as now required.
2022-10-14 21:49:40 +03:00
relrelb dbfd28e708 web: Bump `wasm-bindgen` to 0.2.83
This restores commit 084b252030.

As usual, also bump its helper crates (`js-sys`, `web-sys` and
`wasm-bindgen-futures`) to the latest versions.
2022-10-14 21:49:40 +03:00
Aaron Hill 491ffbbf09 wgpu: Fix argument order when calling `BitmapSamplers.get_sampler` 2022-10-13 15:07:53 -05:00
dependabot[bot] 76f18cbc37 build(deps): bump clap from 4.0.9 to 4.0.12
Bumps [clap](https://github.com/clap-rs/clap) from 4.0.9 to 4.0.12.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.0.9...v4.0.12)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-11 00:32:53 +03:00
relrelb bf0ace0b88 chore: Appease clippy 2022-10-09 13:46:28 +05:45
Tal Hayon 7d27a5acb5 webgl: vertex array, buffer and texture cleanup 2022-10-06 22:19:45 +03:00
relrelb a9dedf759a chore: Fix `clap` update
As described in https://github.com/clap-rs/clap/blob/master/CHANGELOG.md#400---2022-09-28.
2022-10-05 21:33:34 +03:00
dependabot[bot] 32a370f803 build(deps): bump clap from 3.2.20 to 4.0.9
Bumps [clap](https://github.com/clap-rs/clap) from 3.2.20 to 4.0.9.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v3.2.20...v4.0.9)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-05 21:33:34 +03:00
dependabot[bot] 8bb03e3dec build(deps): bump ouroboros from 0.15.4 to 0.15.5
Bumps [ouroboros](https://github.com/joshua-maros/ouroboros) from 0.15.4 to 0.15.5.
- [Release notes](https://github.com/joshua-maros/ouroboros/releases)
- [Commits](https://github.com/joshua-maros/ouroboros/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-04 17:54:42 +03:00
dependabot[bot] dbdc159a32 build(deps): bump once_cell from 1.14.0 to 1.15.0
Bumps [once_cell](https://github.com/matklad/once_cell) from 1.14.0 to 1.15.0.
- [Release notes](https://github.com/matklad/once_cell/releases)
- [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md)
- [Commits](https://github.com/matklad/once_cell/compare/v1.14.0...v1.15.0)

---
updated-dependencies:
- dependency-name: once_cell
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-04 10:34:06 +03:00
dependabot[bot] a0ef304ae9 build(deps): bump smallvec from 1.9.0 to 1.10.0
Bumps [smallvec](https://github.com/servo/rust-smallvec) from 1.9.0 to 1.10.0.
- [Release notes](https://github.com/servo/rust-smallvec/releases)
- [Commits](https://github.com/servo/rust-smallvec/compare/v1.9.0...v1.10.0)

---
updated-dependencies:
- dependency-name: smallvec
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-04 01:44:21 +03:00
dependabot[bot] 103f384a08 build(deps): bump image from 0.24.3 to 0.24.4
Bumps [image](https://github.com/image-rs/image) from 0.24.3 to 0.24.4.
- [Release notes](https://github.com/image-rs/image/releases)
- [Changelog](https://github.com/image-rs/image/blob/master/CHANGES.md)
- [Commits](https://github.com/image-rs/image/compare/v0.24.3...v0.24.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-04 00:49:25 +03:00
relrelb ed9e9c2a83 webgl: Remove dead `u_num_colors`
It wasn't been used since its introduction in fa5c09b0cd.
2022-10-03 22:38:38 +03:00
Aaron Hill 12b0bffd12 wgpu: Remove `width` and `height` fields from our `Texture` wrapper struct
These are duplicates of fields in `Bitmap`
2022-09-26 15:00:26 -05:00
relrelb e1d01b0a5e swf: Extract `Rectangle` to a separate file
And make it generic, as a first step towards making it a general-purpose
data structure for the whole codebase. Some potential replacements are:
* `BoundingBox` in `render/src/bounding_box.rs`.
* `BoxBounds` in `core/src/html/dimensions.rs`.
* Parameters to a bunch of `BitmapData` methods in
  `core/src/bitmap/bitmap_data.rs`.
2022-09-25 10:37:56 +03:00
relrelb b5084eef25 Revert "web: Bump `wasm-bindgen` to 0.2.83"
This reverts commit 1954f6162f.
2022-09-24 09:52:25 +03:00
relrelb 1954f6162f web: Bump `wasm-bindgen` to 0.2.83
This reverts commit cf721d45f9 and restores
commit 084b252030, this time without updating
`web-sys`, due to being coupled to `wgpu`.
2022-09-23 17:23:35 +03:00
relrelb e7643c731b core: `ColorTransform` cleanup
Main changes:
* Merge `ColorTransformParams` into `ColorTransformObject`, as it's only relevant for AVM1.
* Make `BitmapData::color_transform` work with a generic `ColorTransform`, which uses fixed-point
arithmetic.

Note that Ruffle still calculates color transforms slightly different from Flash. This is probably
caused by inaccuracy of the current `ColorTransformObject` to `ColorTransform` conversion and/or the
`ColorTransform` application logic itself. Since this requires further research, it'll be fixed in a
future PR.
2022-09-23 11:10:12 +03:00
relrelb c31e9e2b11 render: Random cleanups
Avoid some `Vec::with_capacity` and de-duplicate code.
2022-09-22 03:00:02 +03:00
relrelb 9d4ab37ef6 core: Replace consecutive `push`es with `extend`
This should be slightly more efficient.
2022-09-22 03:00:02 +03:00
Aaron Hill 423d7e4cc4 render: Treat `update_texture` with invalid `BitmapHandle` as an error
This should be impossible to trigger from ActionScript, so
we shouldn't ignore it.
2022-09-16 22:03:15 -06:00
Daniel Jacobs cf721d45f9 Revert "web: Bump `wasm-bindgen` to 0.2.83"
This reverts commit 084b252030.
2022-09-15 22:33:07 +02:00
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