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
f636cdf5f7
testing: Bug fix: Wrong uniform variables
2020-06-30 01:49:40 +09:00
Hajime Hoshi
8c5f8c03b7
buffered: Refactoring
2020-06-30 01:16:50 +09:00
Hajime Hoshi
999b726b72
shareable: Bug fix: The first image's region in the uniform vriables was ignored
2020-06-30 00:50:40 +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
780465b702
ebitenutil: Cache ColorM and reuse them at DrawRect
...
Fixes #1221
2020-06-29 22:35:28 +09:00
Hajime Hoshi
09322dfdc8
buffered: Avoid creating func objects whenever possible
...
Fixes #1220
2020-06-29 21:50:32 +09:00
Hajime Hoshi
dea3785750
shareable, restorable, graphicscommand: Remove making arrays at DrawTriangles
...
Updates #1220
2020-06-29 13:37:37 +09:00
Hajime Hoshi
ebd0e11c0d
graphicsdriver/metal: Avoid synching texture data at ReplacePixels
...
Instead, use a temporary texture, transfer texture data to it, and
copy the data on GPU side.
2020-06-28 19:40:37 +09:00
Hajime Hoshi
383ff1e6a7
shareable: Use as big backends as possible
...
As the shader hack is removed at d74f7d3a77
,
any sizes of textures should work regardless of the float precision.
2020-06-28 04:14:55 +09:00
Hajime Hoshi
aea4630b5f
Revert "buffered: Defer ReplacePixels when possible"
...
This reverts commit 1395ab5e84
.
Reason: This increases the number of ReplacePixels aggressively.
2020-06-28 02:49:55 +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
7e01ba17c1
shareable: Bug fix: wrong size calculation
...
The size calculation must consider the paddings.
Fixes #1217
2020-06-27 17:21:26 +09:00
Hajime Hoshi
00e8b701c1
graphicsdriver/metal: Optimization
2020-06-27 04:14:21 +09:00
Hajime Hoshi
2bc1475a15
graphicsdriver/metal: Bug fix: Sync textures before replacing a region
...
Updates #1213
2020-06-27 03:08:17 +09:00
Hajime Hoshi
7b6182d05a
shareable: Update comments
2020-06-27 02:46:29 +09:00
Hajime Hoshi
5a176d6f4f
graphicsdriver/metal: Bug fix: synchronizing must be skipped on iOS
2020-06-27 01:45:14 +09:00
Hajime Hoshi
9f76b96c1f
graphicsdriver/metal: Specify the texture type explicitly
2020-06-26 23:46:12 +09:00
Hajime Hoshi
a1abe6b728
restorable: Add padding when renderingn the empty image
2020-06-26 14:01:49 +09:00
Hajime Hoshi
198621404f
buffered: Bug fix: Pixel data was not invalidated after DrawImage/Triangles
2020-06-25 13:11:19 +09:00
Hajime Hoshi
4a7929cf71
buffered: Bug fix: Duplicated calls of resolvePendingPixels
2020-06-25 04:08:24 +09:00
Hajime Hoshi
d3613e13af
graphicsdriver/opengl: Fix comments
2020-06-25 01:06:30 +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
bfc2fffba6
graphicsdriver/opengl: Move comments
2020-06-24 23:52:39 +09:00
Hajime Hoshi
20b5be0886
graphicsdriver: Bug fix: Tie-breaking when picking a texel
...
When a texel is picked on texel-borders of a texture, the behavior
(tie-breaking) depends on GPU and unexpected. This change fixes this
issue by shifting 1/512 [texel] when picking a texel up.
Updates #1212
2020-06-24 20:51:16 +09:00
Hajime Hoshi
545342262f
examples/shader: Show an image
2020-06-24 01:41:27 +09:00
Hajime Hoshi
f10263fff7
shader: Bug fix: Test failures
2020-06-21 22:32:54 +09:00
Hajime Hoshi
c36d2165e6
shader: Parse number literals in unary expressions correctly
...
Fixes #1190
2020-06-21 21:47:27 +09:00
Hajime Hoshi
29b70bea95
shader: Parse number literals in binary expressions correctly
...
Updates #1190
2020-06-21 21:32:40 +09:00
Hajime Hoshi
afc39a100c
shader: Reduce the calls of parseExpr so that unneeded variables are reduced
2020-06-21 16:39:26 +09:00
Hajime Hoshi
ac9bb92885
shader: Refactoring: Reduce calls of parseExpr at definings
2020-06-21 05:26:23 +09:00
Hajime Hoshi
40e581c19f
shader: Allow to mix an int and a float in a binary expression
...
Updates #1190
2020-06-21 03:34:55 +09:00
Hajime Hoshi
eb136daa39
testing: Bug fix: Compile error
2020-06-21 02:26:59 +09:00
Hajime Hoshi
ea9fae1faa
shader: Abort parsing correctly when an error is found
2020-06-21 02:18:21 +09:00
Hajime Hoshi
912135d1e7
shaderir: Use constant.Value for number literals
...
Updates #1190
2020-06-21 01:30:23 +09:00
Hajime Hoshi
4b5de9f445
shaderir: Refactoring: Add OpFromToken
2020-06-20 23:27:54 +09:00
Hajime Hoshi
28948a9976
shaderir: Add (*Type).serialize again
2020-06-20 21:08:08 +09:00
Hajime Hoshi
255da0367f
shader: Bug fix: a binary expression for an int and a float did not work
2020-06-20 18:10:23 +09:00
Hajime Hoshi
5e0e12d290
shader: Bug fix: Resolve types in a binary expression correctly
2020-06-20 17:49:23 +09:00
Hajime Hoshi
f36d6c02a9
shader: Refactoring: Remove detectType
2020-06-20 17:20:44 +09:00
Hajime Hoshi
3da0af5de2
shader: Make parseExpr return types
...
Updates #1190
2020-06-19 03:19:07 +09:00
Hajime Hoshi
afb4e6dc3d
shaderir: Misspelling
2020-06-18 01:28:17 +09:00
Hajime Hoshi
b620b4334e
buffered: Bug fix: Corner case of the race condition
...
Updates #1195
2020-06-17 03:31:54 +09:00
Hajime Hoshi
0beddf5519
buffered: Bug fix: Race condition at checkDealeydCommandsNil
...
This change also renames checkDealeydCommandsNil to
checkDealeydCommandsFlushed, which makes more sense.
Updates #1195
2020-06-17 03:19:35 +09:00
Hajime Hoshi
2869885816
shaderir: Fix the initial variable values on GLSL
...
This is for consistency with number literals we are introducing.
Updates #1190
2020-06-17 01:59:02 +09:00
Hajime Hoshi
d9cf1095d4
buffered: Bug fix: Race conndition on delayedCommands
...
This CL fixes the race condtion on delayedCommands, which can be
accessed and set to nil at the same time.
This CL separates some operations for delayedCommands into slow-
paths and fast-paths, and use mutex only at slow-paths for
performance. The implementation is based on sync.Once.
Fixes #1195
2020-06-16 23:22:18 +09:00
Hajime Hoshi
1735dda586
shareable: Rename border -> padding
2020-06-16 12:48:20 +09:00
Hajime Hoshi
484473b6d9
graphicscommand: Span to 1/3 pixels
...
The center of pixels is problematic as the behavior depends on GPU.
In order to avoid this, align the vertices with about 1/3 pixels.
Updates #929
Fixes #1171
2020-06-16 03:56:53 +09:00
Hajime Hoshi
1785b6a670
examples/moire: Add a smaller scale, and remove AdjustTexel function from shaders
...
This can reproduce the bug reported at #669 .
Apparently, the fix (8827520d4a
) is
no longer required after 3550abef7a
.
That's pretty odd, but examples/moire proves this fact.
Updates #669
Updates #759
2020-06-15 00:29:34 +09:00
Hajime Hoshi
d74f7d3a77
shareable: Add gaps between images
...
After this change, each image on the texture atlases has a
transparent border around it.
This change removes the hack to round texels not to violate the
source regions.
Fixes #1194
Updates #1171
2020-06-14 18:05:41 +09:00
Hajime Hoshi
22919909d7
shareable: Refactoring
2020-06-14 15:30:03 +09:00
Hajime Hoshi
d98713728a
uidriver/glfw: Bug fix: SetVsyncEnabled(false) did not work before the main loop
...
Fixes #1197
2020-06-14 11:50:58 +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
e023425be0
graphicsdriver/metal: Reduce calls of SetLayer
2020-06-14 05:07:33 +09:00
Hajime Hoshi
1395ab5e84
buffered: Defer ReplacePixels when possible
2020-06-14 04:41:51 +09:00
Hajime Hoshi
cf3436da21
buffered: Skip filling operation if possible
2020-06-14 04:17:57 +09:00
Hajime Hoshi
96fa0565e4
buffered: Remove mutex and use sync/atomic for performance
...
This change also enables to remove the optimization at
(*buffered.Image).ReplacePixels.
// This commit w/ the optimization
BenchmarkImageDrawOver-8 60225 19241 ns/op
// This commit w/o the optimization
BenchmarkImageDrawOver-8 66567 17700 ns/op
// The previous w/ the optimization
BenchmarkImageDrawOver-8 62355 19580 ns/op
// The previous w/o the optimization
BenchmarkImageDrawOver-8 54460 22768 ns/op
Updates #1137
2020-06-14 01:16:23 +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
d04fdbde61
shader: Add more tests
2020-06-11 23:26:32 +09:00
Hajime Hoshi
f39c591252
shader: Enable more Go syntax
2020-06-11 01:13:03 +09:00
Hajime Hoshi
4a60c01f03
shader: Implement assigning
2020-06-10 22:29:45 +09:00
Hajime Hoshi
d0027ebc5f
shader: Bug fix: Skip tests on browsers
...
With wasmbrowsertest, file system is not available.
2020-06-08 12:32:15 +09:00
Hajime Hoshi
91fb8e92d8
shader: Implment defining variables in multiple-value context
2020-06-08 12:15:09 +09:00
Hajime Hoshi
75706504bf
shader: Add testdata directory
2020-06-08 11:18:27 +09:00
Hajime Hoshi
acba49952c
shaderir: Add a test for nested function calls
2020-06-08 02:19:37 +09:00
Hajime Hoshi
399bb93044
shaderir: Add space lines between functions
2020-06-08 01:41:47 +09:00
Hajime Hoshi
84fb951729
shader: Implement variable initialization in multiple-value context
2020-06-08 01:33:12 +09:00
Hajime Hoshi
1ca5dd16b2
shader: Let parseExpr return multiple values
2020-06-08 01:17:11 +09:00
Hajime Hoshi
bee79e3b67
shader: Refactoring
2020-06-07 23:50:53 +09:00
Hajime Hoshi
2c1e71931e
shader: Move some functions
2020-06-07 23:33:47 +09:00
Hajime Hoshi
3fd8062fbe
shader: Let detectType return multiple types
2020-06-07 23:32:50 +09:00
Hajime Hoshi
c986da8970
shader: Implement function call
2020-06-07 22:23:20 +09:00
Hajime Hoshi
2ffbd49602
shader: Use shaderir.Type instead of typ struct
2020-06-07 22:06:06 +09:00
Hajime Hoshi
9a5481459a
shaderir: Remove inout params
2020-06-07 19:24:27 +09:00
Hajime Hoshi
e64c806698
shader: Let parseExpr return statements for Call
2020-06-07 19:24:27 +09:00
Hajime Hoshi
6d779965f9
shader: Fix misspelling
2020-06-07 17:03:40 +09:00
Hajime Hoshi
869a61d9be
shader: Parse initial values of variables
2020-06-07 16:25:04 +09:00
Hajime Hoshi
e14cd559b6
shader: Remove variable.init
2020-06-07 05:20:04 +09:00
Hajime Hoshi
147c82f212
shader: Bug fix: Test compile error
2020-06-07 00:52:51 +09:00
Hajime Hoshi
ba36d5a8e9
shader: Reland: Add a predefined uniform variable: __viewportSize
2020-06-07 00:14:09 +09:00
Hajime Hoshi
dde7d00231
shader: Accept an ast directly
...
This is a preparation to modify the AST before passign to Compile.
2020-06-06 23:12:01 +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
3dbf4c0a83
shader: Enable to specify entrypoint names
2020-06-05 01:11:39 +09:00
Hajime Hoshi
2f843c49a6
shader: Fix the case when the source image is nil for shaders
2020-06-04 01:35:35 +09:00
Hajime Hoshi
fc44589705
shader: Format
2020-06-03 23:58:05 +09:00
Hajime Hoshi
762b9788a0
shader: Parse fragment entry point
2020-06-03 23:56:08 +09:00
Hajime Hoshi
382ba75139
shader: Enable to put global variables anywhere
2020-06-03 23:19:07 +09:00
Hajime Hoshi
39c09a4f88
shaderir: Change the param order of fragment shaders
2020-06-03 02:01:50 +09:00
Hajime Hoshi
cd3d396975
shader: Implement vertex shader entry point
2020-06-03 01:03:27 +09:00
Hajime Hoshi
fa5b2ed730
shaderir: Change the param order
2020-06-03 00:46:52 +09:00
Hajime Hoshi
3118657fff
shaderir: Fix integer literals
2020-06-02 21:45:33 +09:00
Hajime Hoshi
909ba638a3
shader: Add more shadowing tests
2020-06-01 03:24:43 +09:00
Hajime Hoshi
37cc30bc38
shader: Add define (:=)
2020-06-01 02:23:27 +09:00
Hajime Hoshi
6fa7b4bb5a
shader: Analyze blocks and shadowings
2020-06-01 00:58:33 +09:00
Hajime Hoshi
5de0493294
shader: Implement multiple out params
2020-05-31 19:20:53 +09:00
Hajime Hoshi
afd114e606
shader: Parse function bodies
2020-05-31 19:03:33 +09:00
Hajime Hoshi
91e5dde320
shader: Parse return
2020-05-31 18:01:12 +09:00
Hajime Hoshi
ddba8a911f
shader: Parse function signatures
2020-05-31 16:20:36 +09:00
Hajime Hoshi
5ea5dfccfc
shader: Remove stmt
2020-05-31 02:23:51 +09:00