Commit Graph

714 Commits

Author SHA1 Message Date
Hajime Hoshi
a8a21ba687 ebiten, vector: bug fix: race conditions
This change fixes these race conditions in

 * (*ebiten.Image).invokeUsageCallbacks concurrent invocations
 * (*ebiten.Image).usageCallbacks usages
 * vector.theCallbackTokens usages
 * vector's global shader initializations

Closes #3333
2025-10-21 03:24:21 +09:00
Hajime Hoshi
5f08f4ae1d vector: bug fix: FillRect or other utility functions on a sub-image didn't work correctly
Closes #3330
2025-10-15 20:17:07 +09:00
Hajime Hoshi
fb60c54510 ebiten: refactoring 2025-07-19 22:17:30 +09:00
Hajime Hoshi
86fd3e8d66 ebiten: reduce boundary checks
Updates #3275
2025-07-19 21:51:46 +09:00
Hajime Hoshi
38b2e2c4ba ebiten: skip DrawTriangles(Shader)32 when len(indices) == 0
Updates #3275
2025-07-19 20:23:54 +09:00
Hajime Hoshi
1a68cf08c5 ebiten: remove unnecessary fmt.Sprintf 2025-07-19 17:34:16 +09:00
Jordan Philyaw
08783e9e26 ebiten: clarify Image Set does nothing for out-of-bounds coordinates (#3277) 2025-07-19 14:17:34 +09:00
oliverbestmann
de1acb3e6d ebiten: only check sub image cache once per tick (#3276)
This improves performance on issue #3275 from 2-5fps to 25fps.

Updates #3275
2025-07-19 03:05:39 +09:00
Hajime Hoshi
80e3e01e88 vector: rename functions from DrawFilled* to Fill*
Updates #3150
2025-07-06 23:57:59 +09:00
Hajime Hoshi
97ebef8298 vector: add (*Path).AddPathStroke reimplement DrawFilledPath and StrokePath
The new implementation uses Evan's method [1] using texture representing
a stencil buffer instead of the graphics library's stencil buffer.
This simplifies the implementaiton of the graphics drivers, and enables
better anti-alias without changing the rendering cost.

Also, this fixes an issue of line rendering quality

This change deprecates some existing APIs like DrawImageOptions.AntiAlias
and FillRule. Users should always use DrawFilledPath or StrokePath.

[1] https://medium.com/@evanwallace/easy-scalable-text-rendering-on-the-gpu-c3f4d782c5ac

Closes #3124
Closes #3153
2025-07-06 23:35:48 +09:00
Hajime Hoshi
be1d4fc1b3 ebiten: bug fix: SubImage can cause race conditions
Calling SubImage from an image and its sub-image could cause race
conditions.

This is a partial revert of 9fd726b773.

Updates #3267
2025-07-06 03:06:12 +09:00
Hajime Hoshi
d599514476 ebiten: add comments 2025-07-05 23:24:46 +09:00
Hajime Hoshi
9fd726b773 ebiten: refactoring: remove Image.subImageCacheM
Record atime at each sub-image instead.

Updates #3267
2025-07-05 23:21:17 +09:00
Hajime Hoshi
0b3c999e86 ebiten: update comments 2025-07-05 23:00:31 +09:00
Hajime Hoshi
d22ce78790 ebiten: bug fix: race condition on Image.subImageCache
The race condition could happen even if you follow the rule that
one image is touched from one goroutine. This change fixed the issue
by a mutex.

Closes #3267
2025-07-05 21:46:29 +09:00
Hajime Hoshi
a4717f7f95 internal/shader: enable boolean values for uniform variables
Closes #3156
2025-06-21 18:43:34 +09:00
Hajime Hoshi
cb73fe26c0 ebiten: add comments 2025-06-13 00:16:11 +09:00
Hajime Hoshi
3c1148f14c ebiten: intersect bounds before getting a subimage from cache
This should make the cache usage more efficient.

Updates #2902
2025-05-31 16:05:16 +09:00
Hajime Hoshi
15f2796970 ebiten: add sub-image caches to reduce allocations
Updates #2902
2025-05-31 13:17:15 +09:00
Hajime Hoshi
99286ab30c ebiten: add a comment about performance of Set 2025-03-02 03:22:45 +09:00
Hajime Hoshi
bcb5a0a27e ebiten: add DrawTriangles(Shader)32
This change also adds the methods to FinalScreen interface.

Closes #3201
2025-02-19 23:51:38 +09:00
quasilyte
1790af6ed8 ebiten: clarify the same images size rule for DrawTrianglesShaderOptions (#3187)
Since it's not allowed to have differently-sized images for DrawTrianglesShaderOptions in pixels mode, the comment should be updated.
2025-01-31 19:36:31 +09:00
Hajime Hoshi
810e45c030 ebiten: skip rendering when det is 0 at DrawImage and DrawRectShader 2024-10-17 21:04:43 +09:00
Hajime Hoshi
5fd619eea7 ebiten: bug fix: canSkipMipmap didn't work with negative scaling
This just means that an optimization didn't work, so this issue
should not be so serious.
2024-10-17 21:02:59 +09:00
Hajime Hoshi
1260d77999 ebiten: refactoring 2024-09-22 13:27:25 +09:00
SolarLune
a113687d56 ebiten: don't create a vertex copy in DrawTriangles() / DrawTrianglesShader() (#3104)
Closes #3103
2024-09-16 14:45:16 +09:00
Hajime Hoshi
4b1ae72f59 ebiten: add Draw{Image,Triangles}Options.DisableMipmaps
Mipmaps could be unexpectedly expensive even when we don't need mipmaps.
In order to improve performance, let's add an option to disable mipmaps.

Closes #3095
2024-09-12 22:40:16 +09:00
Hajime Hoshi
d84b030300 ebiten: give HintOverwriteDstRegion when BlendClear is used 2024-09-08 14:57:20 +09:00
Hajime Hoshi
4824dc0360 internal/restorable: resolve a stale state when possible 2024-09-08 14:28:16 +09:00
Hajime Hoshi
30a2817ab5 internal/restorable: add Hint to optimize drawImageHistoryItem size 2024-09-08 12:24:20 +09:00
Hajime Hoshi
41b762ba2c ebiten: update comments
Updates #2640
2024-08-25 18:45:26 +09:00
Hajime Hoshi
2cc809516f ebiten: add Vertex.Custom0 to Custom3
Closes #2640
2024-08-25 18:11:39 +09:00
Hajime Hoshi
b71f3f86a8 ebiten: add check that graphics.VertexFloatCount and Vertex match 2024-08-23 09:58:28 +09:00
Hajime Hoshi
b6ab7a10c1 internal/graphics: unify QuadVertices
This is a preparation for adding members to Vertex.

Updates #2640
2024-08-12 00:29:24 +09:00
Ernest Romero Climent
9d4f88c992 ebiten: update image.DrawTriangles* to re-use indices (#3026)
Reduces allocations and GC overhead for programs that
call this method hundreds of times per rendered frame.
2024-07-02 16:40:53 +09:00
Bertrand Jung
22fd1f107e internal/graphics: renamed shader image count to specify src (#3012)
This just specifies that the constant refers to the number of source images passed to a shader.

This makes a distinction with the number of dst images, that could potentially be more than 1 in the future.
2024-06-10 02:02:47 +09:00
Hajime Hoshi
b121468991 ebiten: add FillRuleFillAll, FillRuleEvenOdd, and FillRuleNonZero
This change also deprecates the existing constants.

Closes #3006
2024-06-08 17:58:33 +09:00
Hajime Hoshi
e5d10c47e7 internal/graphicsdriver: reland: rename FillRule constants
Updates #3006
2024-06-08 12:16:20 +09:00
Hajime Hoshi
6ac1270cb0 Revert "internal/graphicsdriver: rename FillRule constants"
This reverts commit ab4a3af1b5.

Reason: compile error on Windows
2024-06-08 12:10:27 +09:00
Hajime Hoshi
ab4a3af1b5 internal/graphicsdriver: rename FillRule constants
Updates #3006
2024-06-08 11:54:46 +09:00
Hajime Hoshi
6cdabf09d1 ebiten: guarantee invalid color values are not clamped
Closes #2798
2024-03-13 12:03:44 +09:00
Hajime Hoshi
3ca6184294 ebiten: add a new FillRule: NonZero
Closes #2782
2023-11-06 12:11:38 +09:00
Hajime Hoshi
4e93efa5ac internal/graphicsdriver: reland: add FillRule and replace boolean values with this
Updates #2782
2023-11-04 19:09:50 +09:00
Hajime Hoshi
f695df5924 Revert "internal/graphicsdriver: add FillRule and replace boolean values with this"
This reverts commit 38cf964a3b.

Reason: build failure on Windows
2023-11-04 19:02:40 +09:00
Hajime Hoshi
38cf964a3b internal/graphicsdriver: add FillRule and replace boolean values with this
Updates #2782
2023-11-04 18:57:31 +09:00
Hajime Hoshi
3fa8e6ac52 internal/graphics: refactoring: move some constants to internal/graphicscommand 2023-11-04 16:33:30 +09:00
Hajime Hoshi
d862a75fb3 internal/graphics: rename constants
Closes #2828
2023-11-04 16:06:35 +09:00
Hajime Hoshi
1f95c98969 internal/graphics: reland: change the definition of MaxVerticesCount
Updates #2612
2023-11-04 16:02:22 +09:00
Hajime Hoshi
3a632be0c7 Revert "internal/graphics: change the definition of MaxVerticesCount"
This reverts commit 3047ad202a.

Reason: Failed to build for 32bit architectures

Updates #2612
2023-11-04 15:10:31 +09:00
Hajime Hoshi
3047ad202a internal/graphics: change the definition of MaxVerticesCount
Updates #2612
2023-11-04 14:38:34 +09:00