Aaron Hill
e69503ee67
chore: Derive `Pod` and `Zeroable` traits from `bytemuck`
...
This removes all `unsafe` impls of `bytemuck` traits
2021-02-16 20:34:12 -08:00
Mike Welsh
e5fb1f09e7
chore: Appease clippy
...
* #[derive(Collect)] should be before #[collect]
* Replace redunant `&buf[..]` with `buf`
* Changes most cases of UPPERCase to UpperCase
* Allow upper_case_acronym on most SWF types, as they are from
SWF spec/more annoying to change.
2021-02-12 06:32:42 -08:00
Mike Welsh
60f29719d3
core: Fix stroke artifacts when using drawing API
...
Some recent changes with lyon's API could cause Ruffle to draw extra
strokes when it sees two Move commands in a row -- an extra zero-length
stroke would appear. Let's merge adjacent Move commands in the
tessellator to avoid this issue.
(TODO: Add an example to visual_tests).
2021-02-05 14:54:55 -08:00
Mike Welsh
a00d072eb1
chore: Appease clippy
...
Remove unused viewport_width/viewport_height from wgpu renderer.
2021-01-31 01:00:41 -08:00
Mike Welsh
09a48a71d8
render: Avoid asserts in masking state
...
Switch to debug_assert! instead of assert! in mask checks to avoid
panicking (#1347 ). This will render incorrectly and still needs
to be fixed, but we should fail gracefully and avoid killing the
entire player.
2021-01-14 14:18:14 -08:00
Mike Welsh
03b5edd4d1
render: Remove RenderBackend::draw_letterbox
...
Move letterbox draw logic to `Player`, using renderer.draw_rect
2021-01-07 11:46:07 -08:00
Mike Welsh
0754f0a3b3
render: Use u32 indices
2021-01-04 18:08:14 -08:00
relrelb
9a8edda8a6
chore: Update lyon to 0.17.1
2021-01-04 18:08:14 -08:00
Mike Welsh
9b6295f33a
render: Pass library to RenderBackend::register_shape ( fix #2037 )
...
Pass the movie library to `register_shape` methods so that bitmap
charcter IDs can be resolved immediately on the proper SWF.
This fixes #2037 , which cause incorrect bitmaps to be used when
multiple movies were loaded.
2020-12-31 13:10:21 -08:00
Mike Welsh
6aafb46b49
desktop: Don't render while minimized
...
On desktop, don't render while the window is minimized.
In the wgpu backend, don't panic if swap chain fails to grab a
texture. Instead recreate the swap chain and bail on the current
frame.
Fixes panic when minimizing with the wgpu vulkan backend (#2065 ).
2020-12-28 16:00:13 -08:00
Mike Welsh
9e46757f5f
chore: Bump to wgpu-rs master
2020-12-27 00:44:11 -08:00
Mike Welsh
1b77f0bc20
wgpu: Create bind group for textured quad for each bitmap
...
Instead of creating a new bind group each time a bitmap is rendered,
create a bind group for each bitmap when it is registered.
2020-12-27 00:44:11 -08:00
Mike Welsh
f343aff502
wgpu: Use a single render pass and push constants
...
Switch to a single render pass for the whole frame, as opposed to
a render pass per draw call. This should be a large improvement to
performance. This currently requires some unsafe to work around a
self-reference between RenderPass and CommandEncoder in Frame;
this could eventually be cleaned up by changing RenderBackend
to return a Frame object instead of using begin_frame/end_frame
pairs.
Also switch to using push constants for the transform/color
uniforms.
2020-12-27 00:44:11 -08:00
Mike Welsh
8222d3095b
desktop: Add --timedemo benchmark
...
Add --timedemo for benchmarking, which will run the given SWF as
quickly as possible for 5000 frames or the end of the root
timeline, whichever comes first. The total duration will be output
upon completion.
2020-12-26 23:59:12 -08:00
Mike Welsh
67d95e0c00
exporter: Fix panic when using --frames ( fix #1614 )
2020-12-26 20:39:44 -08:00
Mike Welsh
99cfdd4ea7
render: Avoid excessive clones in register_bitmap calls
2020-12-15 00:04:51 -08:00
Mike Welsh
369c5bda56
render: Implement Bitmap smoothing property
2020-12-15 00:04:51 -08:00
Mike Welsh
4d4cf3c025
wgpu: Don't recreate texture on update
2020-12-15 00:04:51 -08:00
CUB3D
3556ffd778
chore: Fixes after rebase
2020-12-15 00:04:51 -08:00
CUB3D
a92b8ffded
core: All other changes from review
2020-12-15 00:04:51 -08:00
CUB3D
ccd08f14d9
core: Fix naming and safety issues
2020-12-15 00:04:51 -08:00
CUB3D
6f91352d41
chore: Fix clippy lints
2020-12-15 00:04:51 -08:00
CUB3D
b3dd5c0c0b
core+renderer: Fix corner cases
2020-12-15 00:04:51 -08:00
CUB3D
9d46d67588
core+web+renderer: Add load/attach Bitmap and handling for invalid args with BitmapData
2020-12-15 00:04:51 -08:00
relrelb
e5ace596ce
chore: Update some dependencies
...
* js-sys and wasm-bindgen are now the currently latest releases.
* wgpu is not updated to the current master because it breaks
things up.
2020-12-11 11:28:33 -08:00
Mike Welsh
53212f192c
chore: Appease clippy, squelch unnecessary_wraps lint
2020-11-24 18:59:42 -08:00
Mike Welsh
ad4714f3b3
render: Avoid assert from lyon with small miter limits
2020-11-20 00:29:23 -08:00
Mike Welsh
81da730eb4
wgpu: Resolve MSAA once at frame end ( fix #1427 )
2020-10-29 13:27:47 -07:00
Nathan Adams
bf4ed7cc22
render: Fix logic for resolution changes
2020-10-23 13:02:27 -07:00
Nathan Adams
20ff951d5e
render: Split off common mesh binds into a mesh bind group for wgpu renderer
2020-10-23 13:02:27 -07:00
Nathan Adams
c0de319fd2
render: Split up bind groups from pipelines for wgpu shapes in prep for them being refactored further
2020-10-23 13:02:27 -07:00
Nathan Adams
bbd8fc768c
render: Store view_matrix as a global in wgpu renderer, and only change it when changed
2020-10-17 04:16:24 -07:00
Nathan Adams
a2d53df49c
render: Store immutable part of wgpu rendering as a reusable object, to speed up exporting
2020-10-17 04:16:24 -07:00
Nathan Adams
4dd5fcfd6a
render: Don't make a new sampler for each bitmap in wgpu renderer
2020-10-17 04:16:24 -07:00
Nathan Adams
7bd4590fc2
render: Remove unused register_encoder from wgpu. There's a built in staging encoder now.
2020-10-17 04:16:24 -07:00
Mike Welsh
89c1378569
wgpu: Use premultiplied alpha for bitmaps
2020-10-17 02:42:56 -07:00
Mike Welsh
4558be948e
render: Fix masking issues on wgpu/webgl backends
...
Change the usage of the stencil buffer to avoid running out of
stencil bits when too many nested masks are active.
This also cleans things up on wgpu which requires us to make
pipeline states in advice; now we only need a few stencil states
for masking as opposed to hundreds.
2020-10-17 02:42:56 -07:00
Nathan Adams
3f46567fc1
render: Remove PowerPreference::Default as it's no longer in wgpu
2020-10-14 13:59:25 -07:00
Nathan Adams
a2593b0d52
desktop: Expose wgpu tracing through a `render_trace` feature and `--trace-path` argument
2020-10-14 13:59:25 -07:00
Nathan Adams
b68caebc23
render: Update wgpu to e3eadca8c6
2020-10-14 13:59:25 -07:00
Nathan Adams
536352a0d3
render: Move wgpu options out from desktop and into wgpu render crate
2020-10-10 13:43:18 -07:00
Nathan Adams
e008603426
core: Add draw_rect to the render backend API
2020-09-17 16:03:16 -07:00
Mike Welsh
4190b1fc14
render: Backends use shape_utils::swf_glyph_to_shape
2020-09-15 02:34:32 -07:00
Nathan Adams
7273c85034
desktop: Add --power (or -p) option for choosing a graphics power preference (high for dedicated gpu, low for integrated, default for situational best)
2020-09-02 12:06:25 -07:00
Nathan Adams
3e09767c7a
desktop: Add --graphics (or -g) option for choosing a graphics backend (vulkan/metal/dx12/dx11 right now)
2020-09-02 12:06:25 -07:00
Nathan Adams
a191c79fca
render: Workaround wgpu write-only stencil testing issue - fixes #1062
2020-08-31 05:45:42 -07:00
Nathan Adams
0b93e76a27
render: Add more debug labels to wgpu renderer
2020-08-27 11:02:28 -07:00
Nathan Adams
34fc3c574b
render: Update wgpu to 0.6
2020-08-27 11:02:28 -07:00
Mike Welsh
7d1b3f86f5
render: Filter out consecutive MoveTo drawing commands
...
lyon would emit a small line segment if a stroke path had
consective MoveTo commands. For the lyon backends, filter out
consecutive MoveTos and only emit the final MoveTo command.
This fixes a small dot appearing in text fields using underlines.
2020-06-24 14:09:10 -07:00
Mike Welsh
103c7a98f0
wgpu: Implement linear RGB gradients
2020-05-22 11:03:16 -07:00
Nathan Adams
eda862c719
swf: Merged core::Matrix into swf::Matrix
2020-05-20 14:54:41 +02:00
Nathan Adams
7ab6703fc9
render: Add RenderBackend::replace_shape method
2020-05-20 14:54:40 +02:00
Nathan Adams
f7b5f14f65
core: Make RenderBack::register_bitmap* methods return a Result ( fixes #531 )
2020-05-19 07:12:36 -07:00
Mike Welsh
3b550a111f
wgpu: Hook up gradient spread mode and focal point
2020-05-15 00:13:36 -07:00
Nathan Adams
4cbae59947
render: Give a useful error message if running without a compatible graphics device ( #588 )
2020-05-14 21:38:12 -07:00
Nathan Adams
0047546074
render: Ensure that the wgpu device is compatible with the window we're
...
going to render to
2020-05-14 21:38:12 -07:00
Nathan Adams
4f5e9cca1f
render: Fix wgpu captures being the wrong image format
2020-05-14 01:19:23 -07:00
Mike Welsh
5d84d33710
render: Handle PNG data in DefineBitsJPEG tags ( fix #530 )
2020-05-13 00:15:09 -07:00
Nathan Adams
fe4676a185
renderer: Don't crash when encountering unknown bitmap_fills
2020-05-11 01:09:07 -07:00
Nathan Adams
1bde973615
render: Use Rc<> for wgpu device and queue, so we can reuse them
2020-05-11 01:09:07 -07:00
Nathan Adams
9ab03b4da6
exporter: Added exporter tool for capturing images of swfs (related to #523 )
2020-05-11 01:09:07 -07:00
Nathan Adams
2343074c56
core: Make RenderBackend downcastable
2020-05-11 01:09:07 -07:00
Nathan Adams
a4905536b9
render: Add texture target for wgpu render backend
2020-05-11 01:09:07 -07:00
Nathan Adams
84b274618e
render: Made wgpu renderer agnostic to if it's going to a window, prep for output-to-buffer
2020-05-11 01:09:07 -07:00
Nathan Adams
1aa3e423d7
render: Changed gradient uniform in wgpu shader to a SSBO instead of UBO, saving 192 bytes on each buffer
2020-05-10 23:48:11 -07:00
Nathan Adams
89202cd8db
render: Prefer dedicated GPU over integrated GPU
2020-05-10 23:48:11 -07:00
Nathan Adams
dcf845b26c
render: Don't submit a command buffer for every image upload to wgpu
2020-05-10 23:48:11 -07:00
Nathan Adams
c787e28fcd
render: Introduce a DistilledShape and use that instead of swf::Shape for the rendering API
2020-05-10 22:03:56 -07:00
Nathan Adams
601715aa19
render: Merge begin_frame and clear as they're always called together
2020-05-10 22:03:56 -07:00
Nathan Adams
47a44a5fe8
desktop: Prime window with known width/height of the movie
2020-05-04 16:07:38 -07:00
Mike Welsh
5ead49a067
wgpu: Clamp minimum framebuffer size to 1 to avoid panic
2020-05-02 08:44:15 -07:00
Mike Welsh
bfe57a3c66
wgpu: Toss out degenerate draws
...
wgpu would panic in this case, so filter out draws with < 3 indices.
2020-04-30 20:02:11 -07:00
Mike Welsh
beb0eba3a3
chore: WGPURenderBackend -> WgpuRenderBackend
2020-04-30 20:00:07 -07:00
Mike Welsh
552ddd531b
wgpu: Add MSAA support (default to 4x for now)
2020-04-30 19:56:07 -07:00
Nathan Adams
760677a2a1
render: Add From<ColorTransform> for ColorAdjustments uniforms
2020-04-30 16:40:08 +02:00
Nathan Adams
99d15aef0d
render: Cache color transforms in wgpu backend, don't re-upload unchanged values
2020-04-30 16:33:41 +02:00
Nathan Adams
90195340c3
render: Implement letterbox on wgpu renderer
2020-04-30 16:15:35 +02:00
Nathan Adams
9599b2d09f
render: Move some loose utility functions to utils.rs in wgpu renderer
2020-04-30 08:48:34 +02:00
Nathan Adams
f4abf4b705
render: Split off shape/mesh code into its own file in wgpu renderer
2020-04-30 08:48:34 +02:00
Nathan Adams
1879d7f29e
render: Implement render_bitmap for wgpu renderer
2020-04-30 08:48:34 +02:00
Nathan Adams
36d9d3ce4a
render: Implement masks in wgpu renderer
2020-04-30 08:48:34 +02:00
Nathan Adams
bdaf86dc3b
render: Add Pipelines struct to group together wgpu pipelines
2020-04-30 08:48:34 +02:00
Nathan Adams
dd1fa2700f
render: Split off macros & pipeline creation from wgpu renderer
2020-04-30 08:48:34 +02:00
Nathan Adams
c42333e254
render: Added feature render_debug_labels to enable debugging and profiling of wgpu renderer in external tools
2020-04-30 08:48:34 +02:00
Nathan Adams
c2290ed5ef
render: Remove dependency on winit from wgpu renderer
2020-04-30 08:48:33 +02:00
Nathan Adams
f0445d94b8
render: Add wgpu-rs based renderer, used by desktop
2020-04-30 08:48:33 +02:00