Hajime Hoshi
e4debfd466
internal/restorable: use a smaller size rectangle for staleRegion
2023-02-24 21:33:39 +09:00
Hajime Hoshi
745a69aeaa
internal/restorable: update comments
2023-02-24 18:25:17 +09:00
Hajime Hoshi
8864ce1291
all: update comments
2023-02-07 12:05:43 +09:00
Pierre Curto
4de807cc44
all: fix typos ( #2558 )
...
Signed-off-by: Pierre Curto <pierre.curto@gmail.com>
2023-01-28 19:06:38 +09:00
Hajime Hoshi
e4576a3de5
internal/restorable: bug fix: concurrent map write
2022-12-24 03:14:04 +09:00
Hajime Hoshi
71492554a7
internal/restorable: compile shaders in parallel
2022-12-24 02:00:42 +09:00
Hajime Hoshi
89c64f83e3
ebiten: performance improvement by reducing allocations of []float32
2022-12-03 21:53:56 +09:00
Hajime Hoshi
0a6813c17f
internal/graphics: use flatten []float32 slice instead of [][]float32
...
Closes #2479
2022-12-03 20:23:58 +09:00
Hajime Hoshi
8cc6fa82fd
internal/graphicsdriver/opengl: remove fnIsContextLost
...
As restoring from context lost doesn't happen on browsers, isContextLost
doesn't have to be called.
2022-11-17 12:43:26 +09:00
Hajime Hoshi
419bb4c1e9
all: use uint32 instead of float32 for uniform values
...
This is a preparation for other types of uniform values.
Updates #2305
2022-11-12 20:28:07 +09:00
Hajime Hoshi
fde964312c
internal/packing: reland: refactoring
...
This change basically relands these commits:
* e08078d84a
* 8fa36cc7ef
but with a fix internal/restorable not to create too many images.
Updates #2327
2022-11-11 21:55:11 +09:00
Hajime Hoshi
f04e391cb4
all: rename emptyImage -> whiteImage
2022-10-21 15:26:56 +09:00
Hajime Hoshi
09a7d39874
internal/graphicsdriver: add Blend struct
...
This is a preparation to specify blend factors and blend operators.
Updates #2382
2022-10-16 01:08:26 +09:00
Hajime Hoshi
e796646abd
internal/graphicscommand: rename arguments
2022-10-15 03:36:25 +09:00
Hajime Hoshi
daf349ab72
internal/graphicscommand: bug fix: present at the end of the frame explicitly
...
Before this change, presenting happened when the rendering destination
was the final screen. Now this assumption is wrong as the final screen
might be used in the middle of the commands due to DrawFinalScreen.
Instead, this change adds a new argument `present` to FlushCommands to
present the screen explicitly at the end of the frame.
Closes #2386
2022-10-15 01:54:46 +09:00
Hajime Hoshi
cb79e4eabe
internal/restorable: improve pixelsForRestore usages
...
Updates #2375
2022-10-06 15:54:54 +09:00
Hajime Hoshi
c6b37e9809
internal/restorable: use pixelsForRestore only when restoring is needed
...
Updates #2375
2022-10-06 15:09:21 +09:00
Hajime Hoshi
34562c3337
internal/restorable: clear pixelsForRestore at Dispose
...
Updates #2375
2022-10-06 15:04:12 +09:00
Hajime Hoshi
e66bac5c3f
internal/restorable: reuse byte slices for restoring
...
Updates #2375
2022-10-06 14:52:20 +09:00
Hajime Hoshi
85d8a5889a
Revert "internal/restorable: reuse bytes instead of allocations"
...
This reverts commit 8cf3c31cf6
.
Reason: This didn't improve the situation.
Updates #2375
2022-10-06 14:11:09 +09:00
Hajime Hoshi
8cf3c31cf6
internal/restorable: reuse bytes instead of allocations
...
Updates #2375
2022-10-06 12:41:47 +09:00
Hajime Hoshi
72983d966b
all: remove unused conditions
...
Now Kage shaders are always used.
The situtation is different from when we fixed for #1355 , so we removed
the fast path for #1335 . We have to re-check the current performance.
Updates #1355
2022-10-02 23:50:48 +09:00
Hajime Hoshi
534d82c17d
internal/builtinshader: move Filter and Address from internal/graphicsdriver
2022-10-02 23:24:15 +09:00
Hajime Hoshi
de8f85651d
internal/restorable: remove unused arguments from DrawTriangles
...
Updates #2369
2022-10-02 22:51:34 +09:00
Hajime Hoshi
0ae2b1bc24
all: remove unnecessary conditions
...
Now a Kage shader is always used.
2022-10-02 22:30:59 +09:00
Hajime Hoshi
6fca8edc1b
internal/graphicscommand: remove unused arguments from DrawTriangles
...
Updates #2369
2022-10-02 22:21:11 +09:00
Hajime Hoshi
311aa7dcf8
all: use Kage shaders in internal packages
...
Updates #2369
2022-10-02 19:17:09 +09:00
Hajime Hoshi
b2f3d39acf
internal/restorable: add color tests at TestAllowWritePixelsForPartAfterDrawTriangles
...
Updates #2346
2022-09-24 22:09:08 +09:00
Hajime Hoshi
18fa00d25d
internal/restorable: update comments
2022-09-14 02:20:11 +09:00
Hajime Hoshi
6179158812
internal/restorable: bug fix: no pixels were read only with DrawTriangles
...
Closes #2324
2022-09-14 02:17:14 +09:00
Hajime Hoshi
b36c21648f
internal/restorable: refactoring: remove a redundant FlushCommands call
...
readPixelsFromGPU already flushes commands.
2022-09-13 08:43:02 -07:00
Hajime Hoshi
6b906bb813
internal/restorable: extend the staleRegion when the image is already stale on WritePixels
...
This is a kind of refactoring. There seems no case that this condition
change is really needed, but this is more logical.
2022-09-13 07:29:53 -07:00
Hajime Hoshi
243c224003
internal/restorable: bug fix: wrong panic on mixing DrawTriangles and WritePixels
...
When DrawTriangles is called and then WritePixels is called on a
sub-image, a panic happened. However, this panic actually happens
only when the graphics driver requires restoring (e.g. OpenGL ES
on Android). The situation was very limited, but this was a real
problem on Android.
This panic was introduced to prevent a rendering bug by a inmature
graphics drivers, but we should no longer need this. This change
just removes the panic.
Updates #292
2022-09-13 06:18:55 -07:00
Hajime Hoshi
40362aa62d
internal/restorable: bug fix: readPixelsFromGPU might be called for a non-stale image
...
Actually readPixelsFromGPUIfNeeded can invoke this.
Closes #2322
2022-09-13 15:34:43 +09:00
Hajime Hoshi
4824cbc755
internal/graphicscommand: bug fix: IsInvalidated was not concurrent-safe
...
This function was not called actually, so this is not a real problem.
However, this could be a potential problem for a future GLES driver (#292 ).
Updates #292
Closes #2321
2022-09-13 12:23:19 +09:00
Hajime Hoshi
ae41530f1c
internal/graphicscommand: move availableFilename to graphicscommand
2022-08-31 13:26:14 +09:00
Terra Brown
26a58d20b3
internal/graphicscommand: enable EBITENGINE_INTERNAL_IMAGES_KEY
on browsers ( #2283 )
...
Closes #2270
Co-authored-by: Hajime Hoshi <hajimehoshi@gmail.com>
2022-08-31 03:10:10 +09:00
Hajime Hoshi
f7c44f086f
replace Ebiten with Ebitengine in comments
2022-08-29 11:17:17 +09:00
Hajime Hoshi
fd5d142453
internal/restorable: bug fix: needed to copy the stale region when extending an image
...
Updates #2274
2022-08-27 23:29:50 +09:00
Hajime Hoshi
b2f874a244
image/rectangle: read pixels only for necessary parts
...
Closes #2274
2022-08-27 23:23:33 +09:00
Hajime Hoshi
0217ed0544
ebiten: add WritePixels replacing ReplacePixels
...
Closes #2236
2022-08-08 03:50:27 +09:00
Hajime Hoshi
af894d5c83
internal/restorable: rename ReplacePixels -> WritePixels
...
Updates #2236
2022-08-08 03:16:26 +09:00
Hajime Hoshi
70f5e84098
internal/graphicsdriver: rename ReplacePixels to WritePixels
...
Updates #2236
2022-08-08 03:05:04 +09:00
Hajime Hoshi
bf5f7ee34d
internal/restorable: refactoring: replace At with ReadPixels
...
Updates #1995
2022-08-05 23:37:27 +09:00
mattn
3cd0daac67
go generate ./... with Go 1.19 ( #2228 )
2022-08-03 20:48:02 +09:00
Hajime Hoshi
7bf179472b
internal/restorable: change the naming convention: Num -> Count
2022-07-13 02:11:12 +09:00
Hajime Hoshi
afed6a83c6
internal/graphics: change the naming convention: Num -> Count
...
This change also renames ebiten.MaxIndicesNum -> ebiten.MaxIndicesCount.
2022-07-13 02:02:44 +09:00
Hajime Hoshi
8522bfd0bf
internal/graphicscommand: bug fix: replacePixelsCommand should not read pixels
...
Reading pixels, writing pixels, and using the image as a source might
cause a flaky behavior with Metal. Stop reading pixels if possible.
Closes #2180
2022-07-05 23:30:26 +09:00
Hajime Hoshi
6b814888b5
internal/atlas: always use DrawTriangles at putOnAtlas
...
DrawTriangles was introduced at #1508 , and apparently there is no
reason we should use ReplacePixels here. So, simplify the logic by
using only DrawTriangles.
2022-06-10 02:58:04 +09:00
Hajime Hoshi
6b212d7642
internal/restorable: refactoring: add Image.needsRestoring
2022-06-08 02:24:10 +09:00
Hajime Hoshi
9f729cf5c3
internal/restorable: remove SetVolatile
2022-06-08 02:20:09 +09:00
Hajime Hoshi
b8e8d72377
internal/restorable: rename ImageTypeScreenFramebuffer -> ImageTypeScreen
2022-06-07 23:45:35 +09:00
Hajime Hoshi
73c893e977
internal/restorable: refactoring: unify NewScreenFramebufferImage and NewImage
2022-06-06 09:33:50 +09:00
Hajime Hoshi
31fd736ca5
internal/graphicscommand: refactoring: unify NewScreenFrameBufferImage and NewImage
2022-06-06 09:21:11 +09:00
Hajime Hoshi
cb0cbb4efa
internal/restorable: refactoring: introduce ImageType
2022-06-06 09:13:55 +09:00
Hajime Hoshi
6710808cd1
ebiten: compile shaders at NewShader
...
Closes #2035
2022-04-04 02:52:57 +09:00
Hajime Hoshi
f75a70dc40
internal/graphicscommand: treat []float32 instead of interface{} for uniform variables
2022-04-03 03:51:52 +09:00
Hajime Hoshi
34e23f5256
internal/restorable: treat texels instead of pixels
...
Updates #1820
2022-04-02 04:25:27 +09:00
Hajime Hoshi
151dfffad6
internal/restorable: simplify canDetectContextLostExplicitly
...
This constant was set with some wrong assumptions:
1. On Android, recovering was needed.
2. On iOS, OpenGL ES was used when
a. The architecture was 386 or amd64 == an emulator is used
b. The build tag ebitengl was not specified
c. gomobile-build was used
3. On browsers, recovering was needed.
1., 2b, and 2c are correct.
2a. is not correct: Now emulators are available on all the
architectures with both Metal and OpenGL.
3. is not correct: Ebiten no longer recovers the contest lost.
Now, Ebiten can detect a context lost explicitly when
1. On Android
2. On iOS and on gomobile-build
(When gomobile-build is used, OpenGL should always be used)
Based on this fact, this change changes the constant to a variable,
and fixes the logic to set the variable.
2022-03-23 03:01:59 +09:00
Hajime Hoshi
81b9f91f86
internal/graphicscommand: compile shaders lazily
...
With DirectX, the graphics driver cannot be determined until the
main loop starts, as a transparent window cannot be treated with
DirectX so far. On the other hand, compiling shaders requires a
graphics driver as it requires information about Y directions of
NDCs and framebuffers.
This change delays compiling shaders until the graphics commands
are actually executed in the main loop.
Updates #1007
Updates #2019
2022-03-21 21:09:02 +09:00
Hajime Hoshi
dfc9eeaaec
internal/restorable: bug fix: the parameter mask was not passed correctly
2022-03-21 05:40:13 +09:00
Hajime Hoshi
5c79b86412
internal/restorable: add a new parameter specifying a mask for ReplacePixels
2022-03-21 03:08:58 +09:00
Hajime Hoshi
e55dbbf3cd
internal/restorable: add more tests
2022-03-21 03:04:52 +09:00
Hajime Hoshi
72a6ab8da4
internal/restorable: add more tests
2022-03-21 02:44:48 +09:00
Hajime Hoshi
924f7ea932
internal/restorable: refactoring
2022-03-21 01:26:48 +09:00
Hajime Hoshi
5fe6791b5d
internal/graphicscommand: add a new paramter 'mask' to ReplacePixels
2022-03-21 01:11:01 +09:00
Hajime Hoshi
c1a0d83f8d
internal/restorable: simplify the implementation of rect
...
Allow overlapped regions at pixelsRecords.
This removes the members `last*` for caching. These were introduced
at 7e7751bd43
, and apparently these
are no longer needed.
2022-03-21 00:06:30 +09:00
Hajime Hoshi
54b4e87506
internal/restorable: bug fix: ReplacePixels on a sub-image might panic on Android
...
If regions by ReplacePixel are overlapped, this can panics. This can
happen only on Android, where a context lost can happen.
Thus, a sub-image cannot call a direct ReplacePixels. internal/buffer
has to care this.
2022-03-20 18:01:37 +09:00
Hajime Hoshi
4cbce71b2b
internal/graphicscommand: move the choice of graphics drivers to internal/ui
2022-03-20 02:51:31 +09:00
Hajime Hoshi
7d0f95e9be
internal/graphicsdriver: refactoring: replace Uniform with []float32
...
Closes #2016
2022-03-13 03:42:13 +09:00
Hajime Hoshi
77f765d483
internal/testing: bug fix: considering the case when Y is inverted
...
Closes #2003
2022-02-27 22:14:32 +09:00
Hajime Hoshi
b22309a0e5
internal/graphicsdriver: replace Pixels with ReadPixels
...
Now preparing a byte slice is the caller's responsibility.
2022-02-27 20:03:13 +09:00
Hajime Hoshi
df60c4c92d
internal/driver: rename to internal/graphicsdriver
2022-02-06 20:41:32 +09:00
Hajime Hoshi
06f4142ca0
internal/driver: Optimization: Replace interface{} with driver.Uniform
...
Converting a value from/to interface{} can create a value in heap
and this is not efficient.
2021-10-30 02:58:28 +09:00
Hajime Hoshi
96dc80fd08
internal/restorable: Remove needsDisposingWhenRestoring
...
Now restoring from context lost doesn't work on browsers. Then,
the constant needsDisposingWhenRestoring is actually always true.
2021-10-23 23:46:29 +09:00
Hajime Hoshi
dddfe73604
internal/uidriver/mobile: Bug fix: iOS with ebitengl build tag didn't work correctly
2021-10-23 23:32:57 +09:00
r3vit
57c45a13e4
Remove dot imports from tests - Remove dot imports ( #1837 )
...
Closes #1824
2021-10-02 19:58:48 +09:00
Hajime Hoshi
dbe101a8ef
internal/restorable: Remove draw-triangles-history items explicitly
...
Updates #1803
2021-09-09 12:57:50 +09:00
Hajime Hoshi
8f857daf3e
internal/restorable: Bug fix: Forbid NewImage before the graphics driver is ready
2021-09-09 03:58:58 +09:00
Hajime Hoshi
a3570331dd
internal/restorable: Delay initializing emptyImage
...
Now NeedsRestorable can always return a correct value.
2021-09-09 03:27:22 +09:00
Hajime Hoshi
60b8f82bfd
graphicscommand: Dump internal image info on the debug mode
...
Closes #1714
2021-08-05 01:16:42 +09:00
Hajime Hoshi
18903db1c6
internal/atlas: Bug fix: Unexpected padding in screenshots
...
Closes #1736
2021-07-29 16:09:29 +09:00
Hajime Hoshi
21aa96f9f5
internal/affine: Refactoring: Make ColorM interface
2021-07-27 12:10:22 +09:00
Hajime Hoshi
6213c17abc
internal/driver: Add Graphics.Initialize
2021-07-07 13:58:42 +09:00
Hajime Hoshi
b466a0cbd7
ebiten: Add EvenOdd to DrawTrianglesOptions and DrawShaderTrianglesOptions
...
Updates #844
Closes #1684
2021-07-05 03:35:55 +09:00
Hajime Hoshi
c725937cc6
internal/graphics: Reuse the vertices backend
...
This is basically a reland of 9cb631e30f
.
This change locks the vertices backend at the end-frame phase to
protect from vertices usages by other goroutines.
Updates #1546
Closes #1681
2021-06-27 02:31:01 +09:00
Hajime Hoshi
38ce46328a
internal/atlas: Reuse byte array for ReplacePixels
...
This reduces memory allocation at ReplacePixels.
Updates #1681
2021-06-26 03:48:25 +09:00
Hajime Hoshi
b54ad73a2b
Add go:build comments with go1.17beta1 fmt
2021-06-11 01:11:46 +09:00
Hajime Hoshi
26b9fa20c1
internal/graphics: Bug fix: Race condition at QuadVertices
...
QuadVertices or verticesBackend.slice reused its backend slice.
This caused a race condition. QuadVertices can be accessed from
multiple goroutines, and resetting the head and copying the data
at internal/graphicscommand might not be synced.
This change fixes this issue by basically reverting
9cb631e30f
.
Closes #1546
2021-03-20 16:32:13 +09:00
Hajime Hoshi
6b3c51921c
internal/driver: Remove Image.Sync
...
Syncing is no longer needed for Metal, and additionally, OpenGL's sync
implementation was mock.
Updates #1508
2021-02-26 23:16:28 +09:00
Hajime Hoshi
9341d21614
internal/shareable: Call DrawTriangles instead of ReplacePixels at makeShared ( #1513 )
...
When context losts never happen, reading pixels and call replace-pixels command are not needed.
Closes #1508
2021-02-26 12:56:22 +09:00
Hajime Hoshi
44bb004cb7
internal/restorable: Avoid allocating new slices for drawTrianglesHistory
2021-01-30 19:13:03 +09:00
Hajime Hoshi
de14a44c01
restorable: Replace a potentially dangerous pointer usage
...
Getting a poniter to a loop variable is potentially dangerous.
2020-12-20 13:28:17 +09:00
Hajime Hoshi
410766c984
restorable: Add more detailed information to the panic message
...
Updates #1427
2020-12-05 19:56:06 +09:00
Hajime Hoshi
ed494dbf59
restorable: Reland: Do not record pixels if restoring is not requried
...
This change also remove the restrictions of operations on
graphicscommand.Image. For example, now DrawTriangles and
ReplacePixels can be mixed on the same image.
Fixes #1022
2020-11-14 15:00:16 +09:00
Hajime Hoshi
c7330883ef
restorable: Remove Fill and make (*ebiten.Image).Fill available for sub-images
...
Now a scissor (a clipping region) can be specified, we don't have to
worry about the rendering results out of the specified region.
Replace the implmenetation of the Fill with just a DrawTriangles with
an empty white image.
As a side effect, SubImage is avilable for Fill.
Fixes #1416
2020-11-08 02:50:06 +09:00
Hajime Hoshi
ed028110cf
ebiten: Allow rendering on a sub-image by scissor test
...
Fixes #1255
2020-11-08 00:58:44 +09:00
Hajime Hoshi
a8f96ee9af
graphicsdriver/metal: Add Sync to sync CPU and GPU asynchronously
...
Fixes #1414
2020-11-07 04:09:47 +09:00
Hajime Hoshi
48b46345d7
restorable: Refactoring
2020-11-04 02:03:47 +09:00
Hajime Hoshi
831c7ca6f4
restorable: Refactoring: Use the smaller empty image
2020-10-31 03:06:44 +09:00