Nathan Adams
c63f51f823
web: Enable webgpu
2024-01-21 19:36:08 +01:00
Nathan Adams
4d16e24889
wgpu: Update wgpu and naga to 0.19
2024-01-21 19:36:08 +01:00
Aaron Hill
e73819d531
Use supported_sample_count for Context3D sample count
...
This rounds the requested sample count down to a value
that's supported by the device.
2024-01-21 12:47:13 -05:00
TÖRÖK Attila
d153290fd6
nits: Fix a whole bunch of typos all over the place
2024-01-17 23:59:19 +01:00
Aaron Hill
b5f28f6caa
wgpu: Add support for Stage3D anisotropic filtering
...
Instead of binding every supported sampler combination
and selecting the correct index in our AGAL builder,
we now determine the correct sampler on the wgpu side,
and create one sampler binding per texture slot.
2024-01-16 18:08:28 -05:00
renovate[bot]
3c115238fd
fix(deps): update rust dependencies
2024-01-16 01:13:38 +01:00
renovate[bot]
e0a22b56ce
fix(deps): update wasm-bindgen
2024-01-15 17:24:02 -05:00
Aaron Hill
57f6963133
render: Implement PixelBender Operation::Select (renamed from Loop) ( #14503 )
2024-01-11 01:04:50 +00:00
renovate[bot]
a328deab11
fix(deps): update rust dependencies
2024-01-08 02:59:04 +01:00
Aaron Hill
47db84473a
avm2: Improve handling of Stage3D profile
...
We now validate the passed in profile, and return the selected profile
from 'Context3D.profile'. We don't yet alter the available
registers/textures based on the profile.
2024-01-07 22:34:33 +01:00
TÖRÖK Attila
217585daa8
chore: Delegate `[lints]` in `Cargo.toml` of all packages to the workspace
2024-01-05 11:28:19 +01:00
renovate[bot]
91d0520a43
fix(deps): update rust dependencies
2024-01-01 02:03:54 +01:00
TÖRÖK Attila
badac4176c
chore: Stop allowing previously buggy lint `clippy::extra_unused_type_parameters`
...
The corresponding Clippy issue was fixed long ago.
2023-12-25 19:20:53 -05:00
renovate[bot]
216a8f3b14
fix(deps): update rust dependencies
2023-12-25 10:09:07 +01:00
Aaron Hill
837143bb12
naga-agal: Fix handling of sampler overrides
...
After some testing, and looking at OpenFL, I believe I've
determined the correct behavior for AGAL sampling:
Each time a Context3D.setProgram or Context3D.setSamplerStateAt
call is made, the sampler config for the used texture slot(s)
is updated with the new wrapping/filter behavior. For setProgram,
this comes from all of the 'tex' opcodes used within the program.
However, when the 'ignoresampler' flag is set in a 'tex' opcode,
the setProgram call does *not* override the existing sampler config.
As a result, that program will sample with the behavior determined
by the most recent setSamplerStateAt or setProgram call involving
the used texture slot(s).
Previously, we were always overriding the opcode sampler config
with the values from Context3D.setSamplerStateAt. However, I didn't
realize that the order of the calls matter, so none of my tests ended
up observing the effect of 'ignoresampler'.
We now need to process AGAL bytecode twice - a quick initial
parse to determine the sampler configs (which need to be updated
when we call 'setProgram'), and a second time when to build the
Naga module (which needs to wait until we have the vertex attributes
available, which can be changed by ActionScript after setting
the program).
2023-12-15 22:05:30 -07:00
TÖRÖK Attila
bf9cf92af8
render/wgpu: Update wgpu to 0.18.0, naga to 0.14.1, naga_oil to 0.11.0, egui to 0.24.1
2023-12-14 01:36:42 +01:00
renovate[bot]
3a033f0f28
fix(deps): update rust dependencies
2023-12-11 15:51:12 +01:00
Aaron Hill
44c4080ae4
wgpu: Fix overly strict assertion for setVertexBufferAt
...
The offsets for bound attributes can overlap, which caused
us to compute the total size incorrectly. Fix this check
to take overlapping into account.
2023-12-08 23:53:39 +01:00
renovate[bot]
40b92e69f7
fix(deps): update rust dependencies
2023-12-05 21:08:16 +01:00
renovate[bot]
a0c33382bf
fix(deps): update wasm-bindgen
2023-12-04 12:08:22 +01:00
Aaron Hill
7289a8bd95
naga-agal: Zero-extend input vectors for cross-product
...
This matches the behavior of Flash Player
2023-11-30 01:15:21 +01:00
Aaron Hill
78c34c1be9
naga-agal: Fix using matrix opcodes with indirect source register
...
In indirect mode, We need to increment the indirect_offset value
to load subsequent matrix rows.
2023-11-30 00:59:47 +01:00
TÖRÖK Attila
ca25f82900
chore: Bump wasm-bindgen to 0.2.89 (0.2.88 got yanked)
2023-11-28 21:43:41 -05:00
renovate[bot]
6da223a875
fix(deps): update rust dependencies
2023-11-27 09:44:47 +01:00
renovate[bot]
2a83274c7f
fix(deps): update rust dependencies
2023-11-19 21:09:42 -05:00
Nathan Adams
f2b02acf44
chore: Appease clippy-beta
2023-11-13 20:26:50 +01:00
renovate[bot]
32c65e6460
fix(deps): update rust dependencies
2023-11-13 09:10:26 +01:00
Nathan Adams
f03b6307a8
core: Don't invalidate when setting filters to the same value
2023-11-10 22:24:45 +01:00
Aaron Hill
7110be920c
Suport uploading ATFTextureData::CompressedRawAlpha
...
Fortunately, this is very simple - we can just take
the DXT5 data and upload it directly to the wgpu texture.
2023-11-10 02:00:40 +01:00
Lord-McSweeney
249454885b
render: In `ShapeTessellator`, set `mask_index_count` to `None` in `flush_draw` before aborting
2023-11-09 20:22:25 +01:00
renovate[bot]
acadb2b2d3
fix(deps): update wasm-bindgen
2023-11-07 12:18:50 +01:00
renovate[bot]
1377a5b07b
fix(deps): update rust dependencies
2023-11-01 00:45:43 +01:00
Aaron Hill
46320c6238
wgpu: Round down Context3D sample count to nearest power of 2 ( #13762 )
2023-10-29 00:18:52 +00:00
Aaron Hill
b5097445e6
render: Add support for Context3DTextureFormat.COMPRESSED_ALPHA
...
This is our first non-rgba texture format (it uses Bc3RgbaUnorm).
ATF files store these textures in a very convoluted way - fortunately,
the 'dds2atf' tool is open-source, which allowed me to figure out
how to decode the texture back to a DXT5/DXT1 texture.
2023-10-23 11:18:27 -04:00
renovate[bot]
cd01bfe7d6
fix(deps): update rust dependencies
2023-10-23 02:55:11 +02:00
renovate[bot]
b427940431
fix(deps): update rust dependencies
2023-10-16 09:51:22 +02:00
TÖRÖK Attila
9506a66803
nit: Clean up Cargo.toml files slightly (remove unnecessary `version =` maps)
2023-10-15 22:39:18 +02:00
renovate[bot]
18796a67fe
fix(deps): update rust dependencies
2023-10-10 02:15:59 +02:00
Aaron Hill
2fd6cd4147
naga-agal: Stub anisotropic filters in opcodes
...
We had already stubbed these when set from ActionScript, but were
were panicking when they were selected directly in the AGAL bytecode.
2023-10-05 15:38:21 +02:00
Aaron Hill
c93020e729
wgpu: Correctly set format when rendering to Stage3D texture
...
This fixes a panic when trying to render a texture with a type
other than `TextureFormat::Rgba8Unorm`
2023-10-04 22:47:17 -04:00
Aaron Hill
6394b29962
nagal-agal: Fix detection of writing a scalar to a destination
...
We weren't covering all cases, which resulted in an attempt to
AccessIndex on a scalar, or write a scalar directly to a vector
local.
2023-10-05 02:12:28 +02:00
renovate[bot]
428e89af73
fix(deps): update rust dependencies
2023-10-04 19:19:51 -04:00
Aaron Hill
d32b19e350
render: Implement Context3DTextureFormat::RgbaHalfFloat
2023-10-03 18:05:46 -04:00
Aaron Hill
d76306d5ae
render: Fix incorrectly reading U24 in ATF parsing
...
We should be reading a big-endian U24.
2023-09-30 20:29:49 -04:00
Aaron Hill
d2f0787c2c
naga-agal: Fix Opcode::Rcp implementation
...
MathFunction::Inverse doesn't work on vectors.
2023-09-30 19:59:21 -04:00
Aaron Hill
2dcd783261
render: Disable wgpu unused shader output check when possible
...
Since wgpu hasn't yet released a version with this feature, I manually
backported it to the 0.17 branch.
This doesn't work on Windows (HLSL), but works on all other platforms.
2023-09-30 17:59:36 -04:00
Aaron Hill
742ee4052d
naga-pixelbender: Implement Opcode::LogicalAnd
2023-09-30 15:58:06 -04:00
Aaron Hill
ec7a8ac645
avm2: Add support for Stage3D bytearray/compressed textures ( #13180 )
2023-09-28 03:03:30 +00:00
renovate[bot]
7e4e4d4c5b
fix(deps): update rust dependencies
2023-09-25 11:14:39 +02:00
Aaron Hill
01b1e36ef5
wgpu: Rename DepthBuffer to StencilBuffer and stop providing depth_ops ( #13302 )
2023-09-24 20:19:14 +00:00
renovate[bot]
37e2c06034
fix(deps): update rust dependencies
2023-09-18 00:00:45 +02:00
Aaron Hill
1c0ae0b6d8
render: Bump wgpu to 0.17 and naga to 0.13
2023-09-07 18:49:59 -04:00
renovate[bot]
dabc2d56b9
fix(deps): update rust dependencies
2023-09-04 10:25:24 +02:00
Aaron Hill
ccf42c3614
naga-pixelbender: Stub out Opcode::Loop
...
Some experimentation with Pixel Bender Studio shows
that Opcode::Loop has a 23-byte payload. I haven't tried to
figure out how to interpet the payload yet, but we can now
skip over the opcode instead of bailing out entirely.
2023-08-30 17:36:31 -04:00
Aaron Hill
520045de46
wgpu: Disable Context3D.setRenderToTexture MSAA on WebGL
...
This is not supported under webgl, and results in a panic
"Tex storage 2D multisample is not supported" if we try to
do it.
2023-08-28 13:33:32 +02:00
renovate[bot]
4e75c3890a
fix(deps): update rust dependencies
2023-08-28 07:39:35 +02:00
Nathan Adams
19ad492eaa
avm2: Implement Graphics.cubicCurveTo and CUBIC_CURVE_TO
2023-08-27 20:17:43 +02:00
Nathan Adams
eb2afb19c4
render: Add DrawCommand::CubicCurveTo
2023-08-27 20:17:43 +02:00
Nathan Adams
076977cc75
render: Rename DrawCommand::CurveTo to DrawCommand::QuadraticCurveTo
2023-08-27 20:17:43 +02:00
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
TÖRÖK Attila
96505a7bde
video,chore: Bump h263-rs git refs (and update Cargo.lock fully while there)
2023-08-26 22:18:14 +02: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
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