Aaron Hill
158beaffa5
wgpu: Bail out early when trying to set empty program constants
...
There's nothing to do in this case, and we want to avoid trying
to construct a `NonZeroU64` for the size.
2023-08-27 13:53:40 -04:00
renovate[bot]
2f4c7d2fe3
fix(deps): update rust dependencies
2023-08-21 08:59:07 +02:00
renovate[bot]
1f4bfcf10d
fix(deps): update rust dependencies
2023-08-18 23:32:15 +02:00
renovate[bot]
93f08d7738
chore(deps): lock file maintenance rust dependencies
2023-08-14 23:58:45 +02:00
Nathan Adams
da090f0bd7
render: Move filter size calculation from wgpu to render/swf
2023-08-12 13:00:27 +02:00
renovate[bot]
a4b179e1e0
chore(deps): lock file maintenance rust dependencies
2023-08-08 23:19:16 +02:00
TÖRÖK Attila
6a975cdc5b
render/wgpu: Add WgpuRenderBackend<SwapChainTarget>::recreate_surface().
2023-08-04 21:04:29 +02:00
relrelb
006393c581
chore: Appease nightly clippy
2023-08-01 22:44:00 +03:00
TÖRÖK Attila
6d6d665332
wgpu: Use correct (shifted) zero value in DisplacementMapFilter shader
2023-08-01 12:54:56 +02:00
Aaron Hill
583caa3389
avm2: Implement DisplayObject.blendShader ( #12238 )
2023-07-26 23:25:26 +00:00
TÖRÖK Attila
1c1a4aee18
wgpu: Don't use blur pass scaling (it was observed to not be needed)
2023-07-26 13:03:11 +02:00
renovate[bot]
3e63a88c34
chore(deps): lock file maintenance rust dependencies
2023-07-25 08:23:28 +03:00
TÖRÖK Attila
0cf6a68d05
wgpu: Make the blur filter support fractional sizes fairly accurately
2023-07-24 04:44:22 +02:00
Aaron Hill
cd9efb2dfa
wgpu: Ignore zero width/height Stage3D scissor rect
...
This matches Flash's behavior, and prevents wgpu from panicking.
2023-07-23 17:05:27 -04:00
Aaron Hill
5a5206c8df
wgpu: Correctly pass PixelBender int params to shader
...
The shader expects an array of i32s, but we were writing
bitcasted f32s to the array.
2023-07-23 13:22:40 -04:00
Nathan Adams
289f73c85f
core: Add pixel snapping (default auto) to Bitmaps, and force it for cacheAsBitmap
2023-07-22 00:34:17 +02:00
Nathan Adams
b201e19cc7
wgpu: Don't create an extra fresh texture for applying filters to a CAB
2023-07-20 23:19:20 +02:00
Nathan Adams
400ff32723
wgpu: Implement a naive DisplacementMap filter
2023-07-20 12:41:30 +02:00
Nathan Adams
b1ba144166
wgpu: Implement Bevel filter
2023-07-19 22:59:33 +02:00
Nathan Adams
5597535471
wgpu: Store wgpu::Instance in Descriptors
2023-07-19 21:36:30 +02:00
Nathan Adams
030c3c50e8
wgpu: Make `request_adapter_and_device` take in wgpu::Instance by ref
2023-07-19 21:36:30 +02:00
Nathan Adams
a35ea3d9f2
wgpu: Sum up all center blur pixels before multiplying
2023-07-17 23:33:30 +02:00
Nathan Adams
18e343c6ad
wgpu: Shift blur uvs over to the left of the kernel
2023-07-17 23:33:30 +02:00
Nathan Adams
8ecd9d0181
wgpu: Precompute left_weight in blur shader
2023-07-17 23:33:30 +02:00
Nathan Adams
13eda1361a
wgpu: Use push constants for blur buffer, when supported
2023-07-17 23:33:30 +02:00
Nathan Adams
0076d65865
wgpu: Speed up blur filter by about 50%
2023-07-17 23:33:30 +02:00
renovate[bot]
268403faad
chore(deps): lock file maintenance rust dependencies
2023-07-17 09:55:56 +03:00
Nathan Adams
cd2d01bf6f
wgpu: Fix crash when not using push constants
2023-07-16 00:31:50 +02:00
Nathan Adams
ee7412d733
wgpu: Fix off-by-one in blur size calculation
2023-07-15 01:49:57 +02:00
Moulins
3ea67668c0
render: make Context3D renderers fully GC-agnostic
...
The 'gc_arena' dependency was only used to manipulate the `GcCell`s
containing the vertex and fragment shaders; replacing these by a
reference to a plain old `Cell` means tha the Context3D traits and
types do not need to interact with GC'd object anymore.
As a knock-on effect, we can also remove the `Activation` parameter
from most of the `Context3DObject` methods.
2023-07-14 16:06:36 -06:00
Nathan Adams
5c13d323b3
wgpu: Implement the undocumented ability to disable compositeSource for glow/shadow
2023-07-12 18:51:11 +02:00
Nathan Adams
c9a241f12b
wgpu: When sampling outside of blur texture, use 0
2023-07-12 18:51:11 +02:00
Nathan Adams
6f98b3d596
wgpu: Saturate alpha in glow shader
2023-07-12 18:51:11 +02:00
Nathan Adams
8cb6e5bdf0
wgpu: Implement drop shadow filter
2023-07-12 18:51:11 +02:00
Nathan Adams
aab03290be
wgpu: Add extra set of UVs to glow filter, to support separate blur rects
2023-07-12 18:51:11 +02:00
Nathan Adams
aba2394732
wgpu: Respect alpha for glows
2023-07-12 18:51:11 +02:00
Nathan Adams
1aa2ac28c2
wgpu: Slight opimitsation to blur filter by not needing to calculate full_width per fragment
2023-07-12 18:51:11 +02:00
Nathan Adams
30e7a1eac6
core: Account for filter size changes when drawing cacheAsBitmaps
2023-07-12 18:51:11 +02:00
Nathan Adams
b30c522f9c
wgpu: Implement glow filter
2023-07-12 18:51:11 +02:00
renovate[bot]
f0607d6a1f
chore(deps): lock file maintenance rust dependencies
2023-07-11 22:42:51 +02:00
moulins
f5b4fbce77
Upgrade to new `gc-arena` API ( #11182 )
...
* core: add temporary, ruffle-internal copy of `gc-arena` crate
This will allow bumping the upstream `gc-arena` version while
reexporting our own version of the old `GcCell` API, so that
Ruffle's code can be gradually migrated.
Once the migration is done, this crate should be removed.
* core: bump `gc-arena` to kyren/gc-arena#56
Add back the removed `GcCell` to our internal facade crate
* core: bump `gc-arena` to current master
This bump renames `Gc::allocate` to `Gc::new`
* core: rename `GcCell::allocate` to `GcCell::new`, to match `Gc`
* core: bump gc-arena to (slighly after) v0.3.1
Add typedefs for old `*Context` names in the gc-arena facade crate
* core: replace uses of `CollectionContext<'_>` by `&Collection`
* core: Add `gc()` convenience method for `*Context` and `Activation` types
This allows shortening most instances of `[activation.]context.gc_context`
to `activation.gc()` or `context.gc()` (but not all instances, because of
borrowck) Note that this doesn't actually do these shortenings to avoid
major code churn.
2023-07-09 17:04:25 -04:00
Aaron Hill
9d3e96e3a4
render: Implement more Pixelbender opcodes, and fix matrices ( #11896 )
2023-07-09 16:54:26 +00:00
Aaron Hill
b6fae8e214
wgpu: Cache Program3D bind group layout
...
The bind group layout only depends on the texture registers
(and 2D/cubemap type) accessed by the fragment shader, not on
the runtime texture bound with Context3D. This means that we can
build and cache it when we compile the AGAL program to a Naga
module.
Since the bind group layout is used for the overall pipeline, I've
refactored the shader caching code into `ShaderPairAgal`, which
holds both the vertex and fragment shader bytecode, and compiles
both in the `compile` function.
2023-07-09 12:39:10 -04:00
Aaron Hill
e9f4a92073
wgpu: Only log 'unsupported' warning once per filter type
...
This eliminates the console spam produced when an object with
an unsupported filter was onscreen.
2023-07-07 22:38:35 +02:00
Aaron Hill
852367b09b
wgpu: Use a vec4f for pixelbender ZEROED_OUT_OF_RANGE_MODE_INDEX
...
This could really be a single f32 (or even a boolean), but wgpu
on web requires a minimum size of 16 bytes for uniforms.
2023-07-05 21:23:22 +02:00
Aaron Hill
3006356410
render: Suppress clippy::arc_with_non_send_sync for now
2023-07-04 20:50:46 +02:00
Aaron Hill
f22bef99b4
core: Fix some Clippy lints on the latest nightly
2023-07-04 20:50:46 +02:00
Nathan Adams
4ac13de2f3
wgpu: Switch PASS_SCALES to be accumulative scales, for better calculation of size upfront
2023-07-03 20:13:40 +02:00
renovate[bot]
13b1078142
chore(deps): lock file maintenance rust dependencies
2023-07-03 08:28:13 +03:00
Aaron Hill
6e1f00edf2
render: Implement more PixelBender features ( #11800 )
2023-07-01 13:50:43 -04:00