Commit Graph

903 Commits

Author SHA1 Message Date
Nathan Adams 1a4a808c23 render: Make Filter::calculate_dest_rect work in Twips 2023-08-12 13:00:27 +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
SuchAFuriousDeath 11a472d40b
render: fix jpeg cmyk to rgb (#12592)
Co-authored-by: tompro <tomas.prochazka@apertia.cz>
2023-08-06 20:47:07 +03:00
relrelb 8031f9dd3a webgl: Apply color transform on gradient records
As described in #10517, Flash Player applies color transforms on
each gradient record, and then blends between those transformed colors.
2023-08-05 10:28:40 +03:00
TÖRÖK Attila 6a975cdc5b render/wgpu: Add WgpuRenderBackend<SwapChainTarget>::recreate_surface(). 2023-08-04 21:04:29 +02:00
Nathan Adams ab27c8b4ee render: Calculate correct bounds for shapes containing curves 2023-08-02 18:43:33 +02:00
renovate[bot] 477ff400a7 chore(deps): lock file maintenance rust dependencies 2023-08-02 13:36:13 +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
relrelb 5f6d8d72ea render: Skip unreasonably large bitmaps
Some SWFs report unreasonable bitmap dimensions, and trying to reserve
enough capacity for them always fails. To avoid panics, skip those bitmaps.

Fixes #1191
Fixes #2759
Fixes #10701
2023-07-24 09:37:37 +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 b8562bdb91 naga-pixelbender: Implement Opcode::Fract 2023-07-23 16:34:38 -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 77c0dac64b webgl: Implement pixel snapping 2023-07-22 00:34:17 +02:00
Nathan Adams 4410d666ed avm2: Implement Bitmap.pixelSnapping 2023-07-22 00:34:17 +02: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
Aaron Hill 3607a5fb23 naga-pixelbender: Implement Opcode::LessThanEqual 2023-07-20 20:09:07 -04: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
Aaron Hill 715abd8985 avm2: Use invisible mask descendants for mouse picking and rendering
The 'DisplayObject.visible' flag seems to be ignored for mask objects
(and their descendants) - mouse picking still takes them into account,
and they get rendered as part of the mask.

This commit changes display object rendering and AVM2 mouse picking
to ignore DisplayObject.visibility when dealing with mask objects/
descendants.
2023-07-19 23:18:28 +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
TÖRÖK Attila 765ceb70a0 chore: Bump h263-rs git ref to latest master 2023-07-14 14:44:23 +02: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