Hajime Hoshi
f927e09f56
mipmap: Unify DrawImage and DrawTriangles
...
Fixes #909
2020-07-16 02:31:17 +09:00
Hajime Hoshi
7f2be42410
mipmap: Use mipmap for DrawTriangles
...
Updates #909
2020-07-16 02:31:11 +09:00
Hajime Hoshi
7f70797a6d
ebiten: Rename DrawTriaglesWithShaderOptions.Textures to Images
2020-07-15 03:49:05 +09:00
Hajime Hoshi
d6bce5b9d2
ebiten: Add a comment
2020-07-12 03:17:05 +09:00
Hajime Hoshi
d217bc6033
ebiten: Sparate textures from uniforms at DrawTrianglesWithShader
...
Updates #1193
Updates #1239
2020-07-09 01:59:21 +09:00
Hajime Hoshi
02ef92f4cd
ebiten: Remove copying pixels from ReplacePixels and copyImage (renamed to imageToBytes)
...
This optimization utilizes the fact that copying happens in the
'shareable' package to add paddings.
Updates #1222
2020-07-03 03:01:48 +09:00
Hajime Hoshi
f7757ae025
ebiten: Add AddressUnsafe
...
Fixes #1219
2020-07-03 00:33:07 +09:00
Hajime Hoshi
b83f0acc4d
Remove source-region information from vertices
...
Fixes #1210
2020-07-02 23:38:39 +09:00
Hajime Hoshi
71c9e7ac40
driver: Add Region and sourceRegion parameter at Draw
...
This is a preparation to remove source-region information from
vertices.
Updates #1210
2020-07-02 03:26:05 +09:00
Hajime Hoshi
4c640d2500
buffered, restorable: Remove copying pixels
...
Instead, the callers (ebiten.NewImageFromImage and
(*ebiten.Image).ReplacePixels) have responsibility to copy the
pixels now. This change should reduce unnecessary copying pixels.
Updates #1222
2020-07-01 02:56:40 +09:00
Hajime Hoshi
6fd2a82614
ebiten: Fix comments
2020-06-30 22:01:28 +09:00
Hajime Hoshi
1fe2f47701
graphicscommand: Remove the source-region parts from the uniform variables
2020-06-30 00:44:05 +09:00
Hajime Hoshi
36515eb1f5
Revert "ebiten: Make ebiten.Image and buffered.Image 1:1"
...
This reverts commit 620981a09a
.
Fixes #1218
Updates #896
2020-06-28 01:01:39 +09:00
Hajime Hoshi
2a63512c6e
driver: Add AddressUnsafe
...
This skips the source-region check and reduces 'if' branches from
shader programs.
AddressUnsafe is internal only so far. We might expose this value
later.
Updates #1210
2020-06-25 01:00:38 +09:00
Hajime Hoshi
530723ec66
ebiten: Bug fix: Crash at examples/shader
2020-06-17 01:47:01 +09:00
Hajime Hoshi
620981a09a
ebiten: Make ebiten.Image and buffered.Image 1:1
...
This change creates a new buffered.Image even for a sub-image. This
can increase a memory usage a little, but decrease the GPU memory
usage since only the necessary pixels are allocated on a texture
atlas.
Fixes #896
Updates #1194
2020-06-14 11:15:38 +09:00
Hajime Hoshi
e180598ce0
ebiten: Rename a variable
2020-06-14 02:35:46 +09:00
Hajime Hoshi
137663c0df
ebiten: Refactoring
2020-06-13 21:21:37 +09:00
Hajime Hoshi
40906676e6
buffered: Add 'Pixels' and remove 'At'
...
This is a preparation to make shareable.Image and ebiten.Image 1:1
Now sub-images doesn't have its own shareable.Image.
Updates #896
Updates #1194
2020-06-13 21:01:50 +09:00
Hajime Hoshi
5db4a55a07
ebiten: Check the source images are not disposed at DrawTriangles and DrawTrianglesWithShader
2020-06-13 18:12:21 +09:00
Hajime Hoshi
3566dddfbf
ebiten: Refactoring
2020-06-13 17:33:29 +09:00
Hajime Hoshi
ba36d5a8e9
shader: Reland: Add a predefined uniform variable: __viewportSize
2020-06-07 00:14:09 +09:00
Hajime Hoshi
fe308f1971
Revert "shader: Add a predefined uniform variable: Internal_ViewportSize"
...
This reverts commit 6f411842f0
.
Reason: Test failures on internal/restorable
2020-06-05 04:36:09 +09:00
Hajime Hoshi
6f411842f0
shader: Add a predefined uniform variable: Internal_ViewportSize
2020-06-05 03:00:43 +09:00
Hajime Hoshi
d0aa18ddb9
Add shader public APIs experimentally
...
Updates #1168
2020-06-04 01:40:50 +09:00
Hajime Hoshi
f92253487f
buffered: Add Shader
2020-05-30 03:36:28 +09:00
Hajime Hoshi
a1ac574a60
docs: Use 'Deprecated:' annotation
...
Fixes #1160
2020-05-19 01:50:55 +09:00
Hajime Hoshi
4b63be0156
graphics: Use float64 in GeoM
...
The reason why float32 was adopted was forgotten. Using float64
should not be problematic.
Fixes #883
2020-03-16 00:38:33 +09:00
Hajime Hoshi
dc96d25457
graphics: Fix comments on ReplacePixels
2020-02-16 22:25:32 +09:00
Hajime Hoshi
875a529708
graphics: Allow ReplacePixels on a sub-image
...
Fixes #980
2020-02-16 22:18:07 +09:00
Hajime Hoshi
d9bd7ab07d
buffered: Remove (*Image).Set
...
This is a preparation for ReplacePixels of a sub-image.
Updates #980
2020-02-16 21:45:28 +09:00
Hajime Hoshi
b3bdf51905
graphicscommand: Return the error immediately ( #1060 )
...
Now grpahicscommand saves the error and shows the error after a
while. This was good to simplify the API but was the cause to hide
some issues.
This change fixes all the errors to be returned immediately, and
buffer this in the ebiten package instead.
Fixes #971
2020-01-19 01:18:56 +09:00
Hajime Hoshi
c99fd1a742
mipmap: Create mipmap package and bufferd.Image uses it
...
Mipmap calculation must be executed after the main loop starts
because the graphics driver's HasHighPrecisionFloat is needed.
Then, operations on mipmap images must be called from images in
buffered package.
Updates #1044
2020-01-08 02:06:01 +09:00
Hajime Hoshi
8243c1838a
docs: Update the links
2019-11-19 01:59:36 +09:00
Hajime Hoshi
aa6fc67736
Revert "graphics: Avoid all copying pixels"
...
This reverts commit c60a32a479
.
Reason: This breaks backward comptibility and it was not obvious how to fix examples.
2019-11-16 02:04:46 +09:00
Hajime Hoshi
75a88fd112
Revert "graphics: Fix comments"
...
This reverts commit 7ac1f62c52
.
2019-11-16 02:04:31 +09:00
Hajime Hoshi
7ac1f62c52
graphics: Fix comments
...
Updates #983
2019-11-16 01:54:21 +09:00
Hajime Hoshi
c60a32a479
graphics: Avoid all copying pixels
...
This is a breaking change: ReplacePixels now takes the ownership
of the given pixels.
Fixes #983
2019-11-16 01:51:36 +09:00
Hajime Hoshi
77a8ece691
graphics: Remove unnecessary copying pixels
...
Updates #983
2019-11-16 01:38:38 +09:00
Hajime Hoshi
5027bc1af5
buffered: Allow Set before the game runs
...
Fixes #949
2019-10-12 03:13:29 +09:00
Hajime Hoshi
1b011e3864
graphics: Bug fix: unexpected panic at Set with an out-of-range position
2019-10-12 02:28:55 +09:00
Hajime Hoshi
2d2da09b85
graphics: At doesn't have to discard pending pixels
2019-10-05 00:18:45 +09:00
Hajime Hoshi
4c90674e17
graphics: Keep pendingPixels not to read pixels from GPU unnecessarily
...
Fixes #947
2019-10-05 00:14:52 +09:00
Hajime Hoshi
79b32c7601
graphics: Add buffered package
...
Moved the command queue to the package.
2019-09-21 22:34:37 +09:00
Hajime Hoshi
0a872b342a
shareable: Change the argument to color.RGBA at Fill
...
The argument will be copied explicitly.
2019-09-21 21:16:46 +09:00
Hajime Hoshi
1c2c932c6c
graphics: Remove MakeVolatile/IsVolatile
2019-09-21 14:53:52 +09:00
Hajime Hoshi
52b52e7d92
grpahics: Move DrawImage implementation to mipmap and remove (*mipmap).original()
2019-09-19 11:25:33 +09:00
Hajime Hoshi
e585fda253
grpahics: Move DrawTriangles implementation to mipmap
2019-09-19 11:15:14 +09:00
Hajime Hoshi
504a433540
graphics: Reduce original() usage
2019-09-19 02:27:20 +09:00
Hajime Hoshi
95bc445fea
graphics: Refactoring: Remove imports
2019-09-19 02:17:35 +09:00
Hajime Hoshi
e0790ee950
Revert "graphics: Delay draw commands and execute them only when needed"
...
This reverts commit 0c70823f27
.
Reason: Switching apps on Android sometimes broke the screen
2019-09-19 01:18:53 +09:00
Hajime Hoshi
0c70823f27
graphics: Delay draw commands and execute them only when needed
...
This change introduces a queue for delayed graphics commands.
When an image's pixels are retrieved or the screen is rendered,
Ebiten calculates the set of the necessary draw commands and
execute them.
This reduces the number of draw calls especially for the launching
phase.
Fixes #921
2019-09-19 01:09:48 +09:00
Hajime Hoshi
464713f19d
graphics: Refactoring
2019-08-25 22:06:20 +09:00
Hajime Hoshi
3646e7930d
graphics: Bug fix: the flag and the enqueueing operation must be protected by a same mutex
...
It was theoretically possible that an item was enqueued even
though the flag said it should not.
2019-08-25 21:22:54 +09:00
Hajime Hoshi
fc939fabb8
graphics: Bug fix: Copy variables out of the closures
2019-08-25 21:06:44 +09:00
Hajime Hoshi
d2312f1450
shareable: Lock before BeginFrame
...
This make package shareable more consistent. The mutex is lock
after EndFrame and before BeginFrame, and the similar rule will be
applied at launching (BeginFrame unlocks the lock in any cases).
Instead, package ebiten queues image operations if BeginFrame and
doesn't create provisional non-shared images. This should improve
performance at launching since this reduces the number of draw
calls, especifally for creating new images.
Updates #879 .
Updates #921 .
2019-08-25 18:12:04 +09:00
Hajime Hoshi
3960a4bbdf
restorable: Add (*Image).Fill
...
This resets the infomation for restoring if possible. This makes
it more efficient to use offscreens.
2019-08-25 02:57:44 +09:00
Hajime Hoshi
b8eeded538
graphics: Remove 'resetRestoringState'
...
This is basically a revert of 2d079b123f
As filling can happen on a part of a shared image, resetting the
restoring state was wrong.
2019-08-25 02:18:51 +09:00
Hajime Hoshi
e931494c66
shareable: Allocate the screen framebuffer image lazily
...
This improves consistency.
2019-08-25 00:43:29 +09:00
Hajime Hoshi
ef56d0a535
Refactoring: isRunning -> isImageAvailable
2019-08-25 00:14:37 +09:00
Hajime Hoshi
c49815a2b2
docs: Update the link
2019-08-22 23:16:44 +09:00
Hajime Hoshi
07c484fa49
graphics: Fix documentation
2019-08-21 01:43:08 +09:00
Hajime Hoshi
42d7cce989
graphics: Update docs about (*Image).Dispose
...
Updates #920
2019-08-19 22:41:45 +09:00
Hajime Hoshi
215e9e5c66
graphics: Fix wrong comments
2019-07-31 01:58:54 +09:00
Hajime Hoshi
fc42af208d
graphics: Use 1x1 image for empty images
...
This change leaves some empty images for DrawTriangles.
2019-07-30 23:11:06 +09:00
Hajime Hoshi
b210339786
graphics: Use 'negative' mipmap when enlarging a too small image
...
This is a hack to render edges correctly.
This works only when the filter is nearest.
Fixes #611
2019-07-30 23:03:55 +09:00
Hajime Hoshi
2d079b123f
restorable: Add ResetRestoringState to reset the state
...
After Fill command, the image doesn't have to keep the restoring
information. Now Fill command is as same as DrawTriangles, there
is no way for restorable.Image to know whether it can reset the
state or not. ResetRestoringState clears the state explicitly.
2019-07-20 14:04:02 +09:00
Hajime Hoshi
0dc1d0eba5
graphics: Clear/Fill is now implemented with DrawImage
...
Only clearing the screen still requires the special method.
2019-07-20 04:34:42 +09:00
Hajime Hoshi
801e0c4d47
graphics: Refactoring
2019-07-15 03:10:37 +09:00
Hajime Hoshi
e499535728
graphics: Move functions to the package ebiten
2019-06-26 22:23:09 +09:00
Hajime Hoshi
f40798b586
graphics: Move const definitions to driver package
...
Let's keep 'graphics' package as a package for utility functions
or testable functions as much as possible.
2019-06-26 01:05:13 +09:00
Hajime Hoshi
f48a72a43e
shareable: Refactoring: Remove PutQuadVertices
2019-06-22 21:13:44 +09:00
Hajime Hoshi
f3cdb0537b
graphics: Move the vertices backend to ebiten package
...
Now restorable/sharable packages cannot use the same vertices
backend, but I think this won't affect the performance
significantly.
2019-06-22 00:02:22 +09:00
Hajime Hoshi
3eee4754c5
graphics: Use the common vertices backend for PutVertex
2019-06-21 02:30:58 +09:00
Hajime Hoshi
008de78cec
graphics: Refactoring: Change QuadVertices -> PutQuadVertices for consistency
2019-06-21 02:20:31 +09:00
Hajime Hoshi
5c93462a9d
graphics: Refactoring: Merge DrawImage and drawImage
2019-06-12 23:54:59 +09:00
Hajime Hoshi
cc8e8aef19
graphics: Bounds doesn't work when the image is disposed
2019-05-11 22:44:52 +09:00
Hajime Hoshi
6022d8856e
graphics: Bug fix: level must be >= 0
...
There was a cache that level can be negative. This change fixes
this.
2019-04-25 02:49:59 +09:00
Hajime Hoshi
cce41e8152
graphics: Rename DrawImage -> DrawTriangles for consistency
2019-04-22 23:12:36 +09:00
Hajime Hoshi
c8cc98e307
graphics: Fix documents about At
2019-04-11 14:12:22 -07:00
Hajime Hoshi
61156dd90e
graphics: Rename pixelsToSet -> pendingPixels
2019-04-11 14:02:41 -07:00
Hajime Hoshi
3cb9d18fc4
graphics: Bug fix: Too small mipmap
...
Bug: #839
2019-04-07 05:29:46 +09:00
Hajime Hoshi
5195161253
graphics: Remove SetFinalizer at Image
...
Package shareable should take care of this.
Finalizers are called at arbitrary timing in a different goroutine
and might cause tough problems. This might be related to #821 .
2019-02-22 11:08:34 +09:00
Hajime Hoshi
6c47e31f49
graphics: Do nothing at Dispose of a subimage
2019-02-22 00:08:19 +09:00
Hajime Hoshi
9595f7ae26
graphics: Refactoring: Use a value type of bounds instead of a pointer
2019-02-21 23:51:05 +09:00
Hajime Hoshi
5ed6565d1d
graphics: Bug fix: SubImage's SubImage's bounds was wrong
2019-02-21 23:44:57 +09:00
Hajime Hoshi
8f133c443e
graphics: Change the definition of isSubImage
2019-02-21 23:27:40 +09:00
Hajime Hoshi
75a0d109be
graphics: Rename isSubimage -> isSubImage
2019-02-21 23:24:02 +09:00
Hajime Hoshi
8934f8296f
graphics: Bug fix: Don't touch pixelsToSet when disposing a subimage
...
This change also removes finalizer for subimages since this is not
necessary.
Fixes #823
2019-02-21 23:07:11 +09:00
Hajime Hoshi
ef31a6bb21
graphics: Update comments about makeVolatile
2019-02-13 09:47:30 +09:00
Hajime Hoshi
83da4ea112
graphics: Forbid mipmap for a volatile image explicitly
2019-02-13 01:58:08 +09:00
Hajime Hoshi
5990da4844
graphics: Add makeVolatile instead of newVolatileImage
2019-02-13 00:41:26 +09:00
Hajime Hoshi
5fed3d3bed
shareable: Add MakeVolatile
2019-02-13 00:41:24 +09:00
Hajime Hoshi
b962d58097
graphics: Fix comments
2019-02-12 14:36:06 +09:00
Hajime Hoshi
a3eddeb50f
Improve panic messages
2019-02-06 23:43:03 -10:00
Jake Bentvelzen
4cb79888fe
graphics: Clear mipmap map to avoid unnecessary allocation ( #799 )
...
This change uses a pattern that Go 1.11+ compilers can optimize to a clear operation
https://github.com/golang/go/blob/master/doc/go1.11.html#L447
2019-01-27 21:30:30 +09:00
Hajime Hoshi
b5ee209e0b
graphics: Bug fix: Filter was not used when SourceRect is used
2019-01-24 14:22:53 +09:00
Hajime Hoshi
15b13c8b62
graphics: Fix comments to be more precise
2019-01-22 00:18:32 +09:00
Hajime Hoshi
8f3ef39d74
graphics: Fix some comments to adjust 80 chars in one line
2019-01-21 11:58:41 +09:00
Hajime Hoshi
29211238d3
graphics: Misspelling again
2019-01-21 11:24:43 +09:00