Commit Graph

5654 Commits

Author SHA1 Message Date
Nathan Adams 2594453831 render: Add render_offscreen_for_cache for more optimised CacheAsBitmap 2023-06-24 01:42:04 +02:00
Nathan Adams 5a67b2dcb7 core: Don't rerender cacheAsBitmap if the color transform changes (unlike Flash - but it should be fine!) 2023-06-24 01:42:04 +02:00
Nathan Adams d49a8ce0e6 core: Invalidate cacheAsBitmap when drawing api is used 2023-06-24 01:42:04 +02:00
Nathan Adams cc8edb3bf1 core: Invalidate cacheAsBitmap when various more properties change 2023-06-24 01:42:04 +02:00
Nathan Adams 27db3e70b4 core: Invalidate cacheAsBitmap when transform changes 2023-06-24 01:42:04 +02:00
Nathan Adams 0f01efb322 core: Invalidate cacheAsBitmap when video change 2023-06-24 01:42:04 +02:00
Nathan Adams 41991da624 core: Invalidate cacheAsBitmap when texts change 2023-06-24 01:42:04 +02:00
Nathan Adams 932291bbad core: Invalidate cacheAsBitmap when morphs change 2023-06-24 01:42:04 +02:00
Nathan Adams 8a3ccdd080 core: Invalidate cacheAsBitmap when graphics change 2023-06-24 01:42:04 +02:00
Nathan Adams c39217e139 core: Invalidate cacheAsBitmap when children are added or removed 2023-06-24 01:42:04 +02:00
Nathan Adams fe742194b1 core: Implement cacheAsBitmap behaviour 2023-06-24 01:42:04 +02:00
Niv.Kaminer 69b09ab1ef avm2: Implement Serialization for ByteArrayObject 2023-06-23 08:29:53 -04:00
Crowdin Bot b1149cd267 chore: Update translations from Crowdin 2023-06-23 11:49:47 +02:00
Fancy2209 9ab4c163c7
Fix TouchEvent.as (#11685)
* Update TouchEvent.as

* Oops
2023-06-23 08:14:23 +00:00
Lord-McSweeney 8127971dfd avm2: Remove AIR-only FocusDirection class 2023-06-22 08:47:10 +03:00
Lord-McSweeney f6360b343e avm2: flash.sampler stubs 2023-06-21 21:03:29 +03:00
Nathan Adams a078d91c31 core: Simplify open_character_button a bit 2023-06-21 18:27:12 +02:00
Nathan Adams 8dd3b50da6 core: Deemphasise invalid rects in debug ui 2023-06-21 18:27:12 +02:00
Nathan Adams 00e02d1511 core: Add debug window to list known movies 2023-06-21 18:27:12 +02:00
Nathan Adams c0247c020a swf: Add write_swf_raw_tags for reconstructing a swf from its parts 2023-06-21 18:27:12 +02:00
Nathan Adams 4e0628b730 core: Refactor out a show_avm2_value for debugger 2023-06-21 18:27:12 +02:00
Nathan Adams e6b087dbc2 core: Remove swf saving for now, we need to reconstruct the swf from the data 2023-06-21 18:27:12 +02:00
Nathan Adams d8e6bf7535 core: Show root DO's in debug view 2023-06-21 18:27:12 +02:00
Nathan Adams 0523a5b149 core: Remove UpdateContext param from DisplayObject::avm2_root() 2023-06-21 18:27:12 +02:00
Nathan Adams 647006b8d0 core: Add more avm2 debug info 2023-06-21 18:27:12 +02:00
Nathan Adams 5b429e3bf5 core: Add filtering to avm2 debug window 2023-06-21 18:27:12 +02:00
Nathan Adams 89962cf970 core: Add avm2 objects to debug menu 2023-06-21 18:27:12 +02:00
Nathan Adams aaf9ecfa32 core: Add AVM1 values to debug UI 2023-06-21 18:27:12 +02:00
Nathan Adams afdd617d29 avm1: Add include_hidden: bool to get_keys() 2023-06-21 18:27:12 +02:00
Nathan Adams 310b03b570 core: Add searching to DO debug children list 2023-06-21 18:27:12 +02:00
Nathan Adams c5a1ca0e57 core: Show invalid bounds + selfbounds/scrollrect on DO debug info 2023-06-21 18:27:12 +02:00
Nathan Adams c8a41e327a core: Add character info to DO debug window 2023-06-21 18:27:12 +02:00
Nathan Adams b24cc60a5d core: Add swf info to debug menu 2023-06-21 18:27:12 +02:00
Nathan Adams cb2349e33a core: Store character name<->id map, not name<->character, so we can query id for name 2023-06-21 18:27:12 +02:00
Adrian Wielgosik b3c40ecda1 avm2: Optimize coerce_to_primitive for boxed primitives 2023-06-21 00:20:03 +02:00
Crowdin Bot 67a5a2923f chore: Update translations from Crowdin 2023-06-20 23:52:03 +02:00
Nathan Adams 6b76af2d40 core: Fix avm2button bounding box 2023-06-20 23:22:53 +02:00
Toad06 18fb5064d3 avm1: Correct `matrix::object_to_matrix_or_default` 2023-06-19 21:09:06 +03:00
relrelb a8f9033091 avm1: Make `DisplayPropertyMap` immutable 2023-06-18 07:50:10 +03:00
Toad06 22ae6bfec3 avm1: Correct `WaitForFrame` and `WaitForFrame2` actions 2023-06-17 19:23:18 -05:00
Lord-McSweeney b02d8900c5 avm2: Remove or validate some uses of coerce_to_object 2023-06-17 22:40:14 +02:00
Adrian Wielgosik 6ccb6e7fdd Revert "avm2: Throw TypeError when 'astype' receives a null/undefined class"
This reverts commit ce0ba7795c.
2023-06-17 22:40:14 +02:00
Crowdin Bot ca549e482c chore: Update translations from Crowdin 2023-06-17 19:25:33 +02:00
renovate[bot] 7a21756ddb chore(deps): lock file maintenance rust dependencies 2023-06-17 11:00:52 -05:00
Nathan Adams 6208c50273 core: Simplify TDisplayObject::swf_version(), we don't need to iterate the heirarchy 2023-06-17 10:37:13 +02: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
Lord-McSweeney b998fc0197 avm2: Minimal stub of ShaderFilter 2023-06-15 16:42:12 -05:00
renovate[bot] fc933f485f fix(deps): update wasm-bindgen 2023-06-15 20:50:04 +02:00
Aaron Hill f257979b86 avm2: Use a separate domain for playerglobals
We create a separate child domain, which is accessible
from the Stage and the root movieclip.

This prevents ActionScript from loading classes into the
special playerglobals domain (Domain.parentDomain is modified
to return null instead of the playerglobals domain when applicable),
so the native method lookup logic will never run for user code.
2023-06-15 12:57:39 -05:00
Aaron Hill ad97322807 avm2: Implement ErrorObject.display without using Activation
This lets us print the full error message and stack stacke
in contexts where an Activation is not available, including
the `Debug` impl.

The 'name' and 'error' fields are accessed using hardcodd slot
ids. This is pretty hacky, but will work until we have better
handling of slot properties.
2023-06-15 09:31:36 -05:00