TÖRÖK Attila
f9f4c3bb82
render/wgpu: Drop `naga_oil` in favor of manual string manipulation
2024-05-16 20:24:49 +02:00
Nathan Adams
de975a9727
wgpu: Merge Transforms and ColorAdjustments
2024-01-27 21:37:22 +01:00
Nathan Adams
befce41e11
wgpu: Remove push constant support - simplifies code significantly, and it should be same perf now
2024-01-27 21:37:22 +01:00
TÖRÖK Attila
6d6d665332
wgpu: Use correct (shifted) zero value in DisplacementMapFilter shader
2023-08-01 12:54:56 +02:00
TÖRÖK Attila
0cf6a68d05
wgpu: Make the blur filter support fractional sizes fairly accurately
2023-07-24 04:44:22 +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
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
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
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
b30c522f9c
wgpu: Implement glow filter
2023-07-12 18:51:11 +02:00
Aaron Hill
6e1f00edf2
render: Implement more PixelBender features ( #11800 )
2023-07-01 13:50:43 -04:00
Nathan Adams
97ad60e66a
wgpu: Pad out the BlurUniforms
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
e37958351e
wgpu: Removed most uniforms from filters, they're not used or needed
2023-06-26 22:07:52 +02:00
Lord-McSweeney
08dfbc96be
wgpu: Slight changes to blur filter
2023-06-24 16:55:40 +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
Mike Welsh
549a06d00f
wgpu: Slight optimization to color shader
...
The color doesn't change per pixel, so calculate the color in the
vertex stage instead of the fragment stage.
2023-04-03 14:33:37 -07:00
Aaron Hill
b140029e95
render: Fix BitmapData.applyFilter with non-full sourceRect
...
Previously, we were scaling down the source image to fit into
the smaller sourceRect, instead of cropping at the original scale.
This broke the background textures in Fancy Pants World 4 Part 2,
as the scaled-down output image resulted in a smaller rectangle
being returned from 'getColorBoundsRect'
We now crop the image by properly constructing the UV-coordinate
transformation matrix. We were also using the wrong value for the
'destPoint' y coordinate, which I fixed.
This slightly changes the image output of two tests - the new images
now more closely match the Flash output.
2023-03-25 18:44:01 -07:00
Aaron Hill
8425eab1f0
render: Compile a different version of 'bitmap.wgsl' for Stage3D
...
When using the bitmap.wgsl shader for normal rendering, we need
to saturate immediately after applying the color transformation
to reproduce Flash Player's behavior. This makes the (possibly
transformed) alpha value get multiplied by a in-range color,
instead of a potentially out-of-range color.
However, Stage3D just applies a no-op color transformation,
and should only saturate at the very end
(not after the intermediate division by the original alpha value).
To support both of these requirements, I've added in a new
`early_saturate` ifdef that controls when we apply 'saturate'.
We then compile the shader twice (once with early_saturate=true
and once with early_saturate=false), and use the two versions
in the right pipelines.
We could use a simpler shader for Stage3D - however, it can't just
be a plain copy, as we need to apply the viewport transformation.
For now, I'm re-using the shader code to keep things simple. If
this becomes a performance issue in stage3d, we could revisit this.
2023-03-19 02:15:26 -05:00
Aaron Hill
de8448e00a
avm2: Implement Stage3D depth test, blend factors, and fix bugs ( #9845 )
2023-03-12 23:43:58 +00:00
TÖRÖK Attila
7d3a2d14b7
render/wgpu: Delete the now unused buffer bug detection shader
2023-03-12 15:53:16 -05:00
Nathan Adams
0cca4983e4
wgpu: Merge gradient shaders together
2023-03-06 23:22:09 +01:00
Nathan Adams
622abe60d1
wgpu: Extract T->Color lookup from gradient shader to Mesh construction
2023-03-06 23:22:09 +01:00
Nathan Adams
edd7f80341
wgpu: Fix blown out colors when transforming them above 100% - fixes #9698
2023-02-24 19:01:41 +01:00
Nathan Adams
e73389aa71
wgpu: Implement blur filter
2023-02-05 18:41:43 +01:00
Nathan Adams
284a58c817
avm2: Implement BitmapData.apply_filter for ColorMatrixFilter
2023-02-05 18:41:43 +01:00
Nathan Adams
013a2424ef
wgpu: Only use uniform buffers for gradients, we don't need storage buffers now that we squeeze the ratios into alignment
2023-02-05 18:02:19 +01:00
Nathan Adams
f9b378b29a
wgpu: Changed most pipelines & shaders to only use Pos, not Pos and Color, as vertex attribs
2023-02-05 18:02:19 +01:00
Nathan Adams
7b1c101c81
wgpu: Fix repeat & reflect gradients
2023-01-29 17:17:44 +01:00
Nathan Adams
1bfa69ade2
wgpu: Guard against infinite loops in gradient shader - fixes #9260
2023-01-23 23:25:30 +01:00
Aaron Hill
ffc393e3e8
render: Work around naga_oil duplicate definition bug
2023-01-23 11:31:04 +01:00
Aaron Hill
0fe8ef6c2d
Get naga_oil shaders working
2023-01-23 11:31:04 +01:00
Nathan Adams
2e7201334d
wgpu: Detect if buffers are unusable on web and fail to create wgpu renderer if so
2023-01-12 18:37:28 +01:00
Nathan Adams
8db8e4669a
wgpu: Implement Multiply blend mode as a trivial blend
2023-01-12 10:54:03 -05:00
Nathan Adams
09608c2abc
wgpu: Implement Screen blend mode as a trivial blend
2023-01-12 10:54:03 -05:00
Nathan Adams
62f9b11417
wgpu: Fixed color shader working in correct color space
2023-01-10 09:39:28 +01:00
Nathan Adams
ae75a3c166
wgpu: Use push constants for both Transforms and ColorAdjustments, when available
2023-01-10 09:39:28 +01:00
Nathan Adams
fb78a39125
wgpu: Switch to experimental crate naga_oil for combining shaders
2023-01-10 09:39:28 +01:00
Nathan Adams
4e5749a7e4
wgpu: When push constants are available, use those for Transforms
2023-01-10 09:39:28 +01:00
Nathan Adams
3dd9c4daa3
wgpu: Moved ColorAdjustments into its own bind group, and reuse ColorAdjustments::IDENTITY where we can
2023-01-03 03:39:13 +01:00
Nathan Adams
cb6d72b49b
wgpu: Split up gradient shader based on type and repeat
2023-01-03 03:39:13 +01:00