Mike Welsh
2b57c0947a
wgpu: Disallow DX11 backend
...
This backend has not yet been reimplemented in wgpu 0.10+, so
disallow it for now.
2021-10-24 17:20:19 -07:00
Mike Welsh
e10d0fcbe7
wgpu: Switch shaders to WGSL
2021-10-24 17:20:19 -07:00
Mike Welsh
4141909bcb
web: Support wgpu on web
...
Add wgpu feature to web build (disabled by default currently).
2021-10-24 17:20:19 -07:00
Mike Welsh
df270c55af
wgpu: Make WgpuRenderBackend::build_descriptors async
...
This will be necessary for using wgpu on web, where the whole
renderer creation will need to be async.
2021-10-24 17:20:19 -07:00
Mike Welsh
9067dd3668
wgpu: Allow GL as a graphics backend option
2021-10-24 17:20:19 -07:00
Mike Welsh
decc38a45c
wgpu: Use uniforms instead of push constants
2021-10-24 17:20:19 -07:00
Mike Welsh
0cbdad1ff2
wgpu: Bump to wgpu 0.11
2021-10-24 17:20:19 -07:00
Mike Welsh
d84f65874e
chore: Appease clippy
...
Debug/Clone dervies no longer squelch dead code warnings, see:
See https://github.com/rust-lang/rust/pull/85200
2021-09-11 21:50:52 -07:00
relrelb
45d2f3fcde
chore: Fix clap update
2021-08-18 09:13:25 +03:00
Aaron Hill
068e06e40f
Add support for image comparison tests
2021-07-21 21:48:24 -07:00
Adrian Wielgosik
d9b5b1a0af
desktop: Add DX11 to default graphics backends
2021-07-04 13:37:22 +02:00
Mike Welsh
554aa7fd63
core: Add backend::render::BitmapSource trait
...
This interface handles returning a bitmap given an ID and is used
by the render backend to get the bitmap used for a bitmap fill.
This will allow for bitmap fills in the drawing API, as these will
manage their own list of bitmaps.
This also removes the MovieLibrary dependency from render backends
and will allow for better decoupling in the future.
2021-06-13 20:03:53 -07:00
Mike Welsh
d23ea90459
swf: Change Matrix to use Fixed16 for a, b, c, d
...
Matrices in an SWF file store their scale/skew components in
in 16.16 format (fbits).
Split `ruffle_core::Matrix` and `swf::Matrix`. `swf::Matrix` now
stores its data as `Fixed16` instead of immediately converting to
`f32`.
2021-06-08 14:57:15 -07:00
relrelb
f82faf9603
chore: Appease clippy
2021-06-05 10:16:00 -07:00
Mike Welsh
2b98c878f0
swf: Use Fixed in more places
2021-05-30 21:24:03 -07:00
Mike Welsh
c465e268bf
chore: Bump to wgpu 0.8
2021-04-29 15:01:12 -07:00
Mike Welsh
0552d26551
core: Use Fixed8 and i16 for ColorTransform
...
Use the proper types for ColorTransform:
* Fixed8 (8.8) format for multiplicative component
* i16 format for additive component
This matches the behavior of Flash (for example, alpha only changes
in units of 1/256).
2021-04-19 15:47:52 -07:00
Mike Welsh
b31b00c6d6
wgpu: Bump to latest wgpu master
2021-04-16 23:37:23 -07:00
relrelb
648e14e057
render: Final cleanups
2021-03-23 16:16:35 -07:00
relrelb
c25b58058b
wgpu: Inline some variables
2021-03-23 16:16:35 -07:00
relrelb
627773d0d4
wgpu: Use common_tess
...
This eliminates tons of duplicate code.
2021-03-23 16:16:35 -07:00
relrelb
42f8baf5ed
wgpu: Remove unused Mesh::shape_id
2021-03-23 16:16:35 -07:00
relrelb
c1c9542a95
wgpu: Introduce ShapeTessellator temporarily
...
Eventually it'll be replaced with common_tess's one.
2021-03-23 16:16:35 -07:00
relrelb
4513a5fbda
wgpu: Extract tessellate_shape from register_shape_internal
...
This brings us closer towards common_tess.
2021-03-23 16:16:35 -07:00
relrelb
e1734a2bec
wgpu: Inline IncompleteDrawType::build
2021-03-23 16:16:35 -07:00
Mike Welsh
e7d7e19c24
chore: Bump to wgpu 0.70
2021-02-27 17:52:05 -08:00
Mike Welsh
3099914374
chore: Appease clippy
2021-02-27 16:10:46 -08:00
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