Nathan Adams
a5915a9bdb
swf: Make Color Copy
2023-06-29 20:32:36 +02:00
Nathan Adams
97ad60e66a
wgpu: Pad out the BlurUniforms
2023-06-28 22:42:31 +02:00
Nathan Adams
7e96a2fdad
wgpu: Blur size is whole kernel width, minus one and half it for the shader
2023-06-28 22:42:31 +02:00
Nathan Adams
b90bebc65d
wgpu: Blur filter is fallible, if nothing happened then just blit
2023-06-28 22:42:31 +02:00
Nathan Adams
c0e932422f
wgpu: Change blur to 2-pass separable box blur, multiplied by quality
2023-06-28 22:42:31 +02:00
Nathan Adams
447cd2a5f6
wgpu: Move create_filter_vertices to FilterSource::vertices
2023-06-28 22:42:31 +02:00
Nathan Adams
fd0d414d02
wgpu: Add FilterSource::for_entire_texture convenience method
2023-06-28 22:42:31 +02:00
Nathan Adams
1096d7d35e
wgpu: Create a FilterSource for common arg set, and removed need for #[allow(clippy::too_many_arguments)]
2023-06-28 22:42:31 +02:00
Nathan Adams
7f4d855de9
wgpu: Move Surface::apply_filter to Filters::apply, removing need for a surface at all
2023-06-28 22:42:31 +02:00
Nathan Adams
7c751d6be8
wgpu: Implement Default for TexturePool
2023-06-28 22:42:31 +02:00
Nathan Adams
4f6bac7840
wgpu: Refactor out filters into their own files
2023-06-28 22:42:31 +02:00
Aaron Hill
ad8457b54d
wgpu: Remove 'TextureWrapper.format' field
...
We can already get the foramt from the wgpu::Texture
2023-06-28 16:26:19 -04:00
Aaron Hill
54dd160897
wgpu: Remove 'width' and 'height' fields from Texture
...
This is already stored in wgpu::Texture
2023-06-28 13:00:49 -04:00
Nathan Adams
96e3d36a6e
wgpu: Don't mark the filters as needing push constants
2023-06-26 23:18:45 +02:00
Nathan Adams
e37958351e
wgpu: Removed most uniforms from filters, they're not used or needed
2023-06-26 22:07:52 +02:00
renovate[bot]
3057aa59dd
chore(deps): lock file maintenance rust dependencies
2023-06-25 21:53:00 -04:00
renovate[bot]
f62dd17284
fix(deps): update rust crate indexmap to v2
2023-06-25 20:27:33 -04:00
Lord-McSweeney
8c40e97ab5
wgpu: nit: Fix incorrect label in blur filter
2023-06-26 00:00:03 +02:00
Nathan Adams
fd4eaef2b6
wgpu: Don't create cacheAsBitmap for textures that are too large
2023-06-25 22:58:22 +02:00
Nathan Adams
628d8f66ad
render: Add filters to BitmapCacheEntry
2023-06-25 21:58:46 +02:00
Nathan Adams
44c870ba91
wgpu: Move run_copy_pipeline to utils
2023-06-25 21:58:46 +02:00
Nathan Adams
4dde126e64
wgpu: Take in a &wgpu::Texture not our own texture as we don't need omore than that
2023-06-25 21:58:46 +02:00
Nathan Adams
0c71b83e36
wgpu: Don't perform copy inside Surface::apply_filter
2023-06-25 21:58:46 +02:00
Lord-McSweeney
08dfbc96be
wgpu: Slight changes to blur filter
2023-06-24 16:55:40 +02:00
Nathan Adams
f43560ab88
render: Switch to providing cacheAsBitmap entries all at once on submit frame
2023-06-24 01:42:04 +02:00
Nathan Adams
36aee1efcf
wgpu: Specialise render_offscreen_for_cache to render directly to the texture
2023-06-24 01:42:04 +02:00
Nathan Adams
2594453831
render: Add render_offscreen_for_cache for more optimised CacheAsBitmap
2023-06-24 01:42:04 +02:00
Nathan Adams
fe742194b1
core: Implement cacheAsBitmap behaviour
2023-06-24 01:42:04 +02:00
Nathan Adams
97c36b442a
wgpu: Switch Multiply back to a complex shader, with dst.a==0 fix
2023-06-22 14:23:15 +02:00
TÖRÖK Attila
7bbaeb2a61
chore: Bump ouroboros to 0.17.0.
2023-06-17 18:49:05 -05:00
Nathan Adams
2427daf05c
webgl: Don't hold onto an old copy of bitmap data for each image
2023-06-18 00:47:51 +02:00
Nathan Adams
e9af73126f
canvas: Refactor how BitmapData is made, to allow for empty bitmaps to be made later
2023-06-18 00:47:51 +02:00
Nathan Adams
c374aaa19a
canvas: Don't hold onto an old copy of bitmap data for each image
2023-06-18 00:47:51 +02:00
renovate[bot]
7a21756ddb
chore(deps): lock file maintenance rust dependencies
2023-06-17 11:00:52 -05:00
Aaron Hill
69fce3f7f8
wpgu: Initial implementation of PixelBender shader execution ( #11441 )
...
* wpgu: Initial implementation of PixelBender shader execution
The implementation is split across four crates:
* `ruffle_render` now holds the main PixelBender bytecode parsing
implementation (previously, this was in `ruffle_core`).
* `ruffle_core` holds some helper functions for converting between
AVM2 `Value`s and the PixelBender vector types.
* `naga-pixelbender` (newly created) constructs a Naga `Module`
from parsed PixelBender bytecode
* `ruffle_render_wgpu` sets up the render pipeline for the shader
constructed by `naga-pixelbender`, and actually executes the shader.
The Actionscript-side shader parameters are passed in through uniforms.
This allows us to cache the compiled `naga::Module` and associated
wgpu types inside `ShaderData`, when it's first created. Each invocation
of a `ShaderJob` only needs to create a bind group and render pass.
Limitations:
* Only a few of the PixelBender opcodes are implemented - however, this is
enough to get Stemlands cannon rotation working, as well as a cool
"donut" shader that I found and included as a test.
* PixelBender matrix types are not supported.
* Only BitmapData is supported as an input/output type - Flash Player
also supports using Vector and ByteArray
* ShaderJob execution is always synchronous.
* Adjust comments
* Address review comments
2023-06-15 22:50:24 +00:00
renovate[bot]
fc933f485f
fix(deps): update wasm-bindgen
2023-06-15 20:50:04 +02:00
Aaron Hill
cd2c7f6f2f
tests: Enable tracing_subscriber in tests
...
Previously, we weren't displaying any Ruffle logs when running tests.
2023-06-14 17:15:31 -05:00
renovate[bot]
438e6f36ff
chore(deps): lock file maintenance rust dependencies
2023-06-12 08:50:07 +03:00
renovate[bot]
a621472336
chore(deps): lock file maintenance rust dependencies
2023-06-09 20:17:25 +03:00
Aaron Hill
d44c9cceb1
wgpu: Cache compiled naga-agal shader module
...
We use an `lru::LruCache` inside `ShaderModuleAgal`. This automatically
gives us the proper garbage-collection behavior (when the Flash
Program3D instance is garbage collected, we'll drop the
`ShaderModuleAgal` and the cache).
The cache is keyed on the data needed to compile the shader (vertex
attributes and sampler overrides). This lets us avoid shader
recompilations when a Stage3D program repeatedly uses the same
Program3D with different sampler overrides / vertex attribute formats.
2023-06-08 02:57:47 -05:00
renovate[bot]
f1fe998869
chore(deps): lock file maintenance rust dependencies
2023-06-04 22:53:18 -05:00
Nathan Adams
eb70a4f361
core: Update gc_arena to 63dab12871321e0e5ada10ff1f1de8f4cf1764f9
2023-06-03 09:11:06 +02:00
Aaron Hill
2cd518013c
wgpu: Don't skip alpha/erase blend modes for BitmapData.draw ( #11323 )
...
We can skip these when we're drawing to a fresh buffer, but not when we're blending over an existing BitmapData texture.
2023-06-02 21:16:05 +00:00
Aaron Hill
999e2f5b71
wgpu: Implement Context3D.setScissorRectangle
2023-06-02 14:56:14 -05:00
relrelb
abb0e33431
chore: Use Rust's `OnceCell`/`OnceLock`
...
They were stabilized in Rust 1.70.0, which was released yesterday.
This removes the `once_cell` dependency.
2023-06-02 22:21:38 +03:00
Aaron Hill
12e078bb2d
wgpu: Fix calculation of image row padding
2023-05-28 23:35:53 -05:00
Aaron Hill
2ae15b05e8
core: Store Color as an u32 instead of a i32
...
This is a packed ARGB value, so it doesn't make sense for it to be
signed.
2023-05-28 16:52:09 -05:00
Nathan Adams
b29a784968
wgpu: Remove render callback as it's no longer used
2023-05-24 23:50:48 +02:00
Nathan Adams
b9322ba93a
desktop: Render game separately to UI, blit both onto surface
2023-05-24 23:50:48 +02:00
Mike Welsh
c00b4bf55c
desktop: Initial GUI work
2023-05-24 23:50:48 +02:00