Commit Graph

661 Commits

Author SHA1 Message Date
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
Hajime Hoshi
234f29e5f6 graphics: Misspelling 2019-01-21 11:22:35 +09:00
Hajime Hoshi
92d6c6bc58 graphics: Fix documents about DrawImage and ColorM 2019-01-21 11:19:23 +09:00
Hajime Hoshi
aa2919ada4 graphics: Add comments about DrawImage 2019-01-20 03:27:02 +09:00
Hajime Hoshi
10cb0bba5f graphics: Add documentation about texture atlas size 2019-01-19 22:14:50 +09:00
Hajime Hoshi
c1c0306471 graphics: Update the document about DrawImage 2019-01-19 22:14:04 +09:00
Hajime Hoshi
58cc5cb105 graphics: Better error message for At and Set (#790) 2019-01-19 02:59:22 +09:00
Hajime Hoshi
dd59d8ae6e Fix comments 2019-01-19 02:30:06 +09:00
Hajime Hoshi
107dfe5074 graphics: Improve Set speed
On GopherJS, copying a struct is very heavy. This change avoids
copying (color) structs when possible.
2019-01-14 04:25:43 +09:00
Hajime Hoshi
6b110bf99e graphics: Better implementation of Set 2019-01-14 04:07:26 +09:00
Hajime Hoshi
128e99b6af graphics: Implement (*Image).Set 2019-01-14 02:25:36 +09:00
Hajime Hoshi
1e1f309a1c shareable: Add Fill
Before introducing Fill, filling an image with a solid color was
implemented by ReplacePixels. When an offscreen image is used, the
offscreen image is not fully cleared or filled with a color and
out of (0,0)-(width,height) region. This causes a glitch thin line
on mobile platforms.

This change adds (*shareable.Image).Fill to fill the whole
framebuffer region of the image.
2019-01-13 02:12:47 +09:00
Hajime Hoshi
d5e6e6893e graphics: Refactoring 2019-01-13 00:56:33 +09:00
Hajime Hoshi
ea9eac0461 graphics: Add explicit types for documents (godoc.org) 2018-12-24 19:36:41 +09:00
Hajime Hoshi
f1582c2d73 graphics: Add Address representing a sampler address mode
Fixes #761
2018-12-24 17:29:31 +09:00
Hajime Hoshi
529cd3376b graphics: Fix comments about Vertex 2018-12-23 06:14:35 +09:00
Hajime Hoshi
189b8a17e9 graphics: Use source-border check even at DrawTriangles
DrawTriangles can now take a sub-image.
2018-12-23 03:24:39 +09:00
Hajime Hoshi
1a54ff34e6 graphics: Forbid nil at ReplacePixels explicitly 2018-11-28 22:26:34 +01:00
Hajime Hoshi
b48d501bc0 graphics: Explicit limitation of indices at DrawTriangles
Fixes #728
2018-11-23 19:02:10 +09:00
Hajime Hoshi
7586c660d5 graphics: Change the number of floats for a vertex from 10 to 12
This is a preparation for Metal, that forces 4 floats for a vertex
position.
2018-11-17 15:30:11 +09:00
Hajime Hoshi
dfb63852c2 graphics: Refactoring 2018-11-09 01:40:05 +09:00
Hajime Hoshi
9f0d14dd05 graphics: Add tests for #732 2018-11-09 00:48:21 +09:00
Hajime Hoshi
f54bdfa159 Reland: graphics: Bug fix: a sub image's Size was wrong
Size() usages are also fixed.

Fixes #732
2018-11-08 12:58:14 +09:00
Hajime Hoshi
27331024af Revert "graphics: Bug fix: a sub image's Size was wrong"
This reverts commit 76ac850f6b.

Reason: This breaks many examples
2018-11-08 12:19:38 +09:00
Hajime Hoshi
76ac850f6b graphics: Bug fix: a sub image's Size was wrong
Fixes #732
2018-11-08 04:22:19 +09:00
seebs
74e204d952 graphics: Speed up DrawTriangles (#723)
DrawTriangles is expensive and slow because of massive memory
allocation and garbage collection costs. This patch moves from ~47TPS
on my laptop (with ~24k triangles) to 60TPS. The first part
is just allocating the right size of vertex buffer up front; that
got to about 55TPS. The second part replaces the frequent
allocations of []float32 in Vertex() calls with writing the
desired values into a provided destination slice.

Time spent in drawing triangles for 1,000 frames:
	13.07s	baseline
	11.09s	preallocate whole buffer to avoid resizing
	6.13s	use new PutVertex function

This might need some cleanup, but I think it's good evidence that
the design change is viable.
2018-10-31 10:53:17 +09:00
Hajime Hoshi
ec92f61a3e graphics: Misspelling 2018-10-29 02:05:59 +09:00
Hajime Hoshi
27ee54b008 graphics: Forbid using a subimage at DrawTriangles (#727) 2018-10-29 01:37:59 +09:00
Hajime Hoshi
ce1c616f69 Merge graphics and graphicsutil 2018-10-28 23:03:06 +09:00
Hajime Hoshi
ff54d3b681 Move CompositeMode to graphics package 2018-10-28 21:49:47 +09:00
Hajime Hoshi
06f2052817 Add graphics package and move Filter to graphics 2018-10-28 20:25:52 +09:00
Hajime Hoshi
2da5192510 Rename graphics -> graphicscommand 2018-10-28 20:10:05 +09:00
Hajime Hoshi
3349a2c520 graphics: Add comments 2018-10-28 19:41:39 +09:00
Hajime Hoshi
781554ecb9 graphics: Refactoring 2018-10-28 19:35:01 +09:00
Hajime Hoshi
710f56531f graphics: Experimental: (*image.Image).SubImage
Fixes #722
2018-10-28 02:19:14 +09:00
Hajime Hoshi
41877bba0b graphics: Add image state check at DrawTriangles 2018-10-28 01:43:28 +09:00
Hajime Hoshi
170f0fcaa9 graphics: Refactoring 2018-10-28 01:39:58 +09:00
Hajime Hoshi
5f04f05cb1 graphics: Add comments 2018-10-26 03:29:20 +09:00
Hajime Hoshi
d3bd858aba graphics: Bug fix: Mipmap was not invalidated at DrawTriangle
Fixes #725
2018-10-26 02:08:18 +09:00
Hajime Hoshi
8b82667df1 graphics: Bug fix: Violating edge pixels with linear filter
Fixes #724
2018-10-26 00:48:51 +09:00
Hajime Hoshi
58f4feda8d graphics: Refactoring (preparing SubImage) 2018-10-25 12:48:24 +09:00
Hajime Hoshi
765af5a7af gofmt -s -w 2018-10-25 12:47:27 +09:00
Hajime Hoshi
ce60f44490 graphics: Add (*mipmap).original() 2018-10-25 02:11:54 +09:00
Hajime Hoshi
15cad6ed9a graphics: Rename shareableImages -> mipmap 2018-10-25 02:05:25 +09:00
Hajime Hoshi
022c40aa17 graphics: Move creating mipmap logic to shareableImages 2018-10-25 01:35:34 +09:00
Hajime Hoshi
4cd3e3ae30 Update go.mod/go.sum 2018-10-24 01:16:17 +09:00
Hajime Hoshi
7494b19dea graphics: Refactoring: Add shareableImages struct 2018-10-24 01:09:59 +09:00
Hajime Hoshi
5e09da1298 graphics: Bug fix: don't apply color matrix when creating mipmap images
TODO: Add tests.

Fixes #710
2018-10-11 02:34:07 +09:00
Yuval Langer
8ba787522f Fix minor typo (#706) 2018-10-09 03:19:27 +09:00
Hajime Hoshi
8772d310fe Revert "Revert "graphics: Fix documentation about DrawImage""
This reverts commit f16c7cb90d.

Reason: Oops, I reverted a wrong commit
2018-08-14 12:27:18 +09:00
Hajime Hoshi
f16c7cb90d Revert "graphics: Fix documentation about DrawImage"
This reverts commit 610bf6e39f.

Reason: This caused a new black line at the bottom (macOS).
2018-08-14 12:26:28 +09:00
Hajime Hoshi
2360b2930f graphics: Add DrawTriangles
Fixes #624
2018-08-14 01:23:14 +09:00
Hajime Hoshi
610bf6e39f graphics: Fix documentation about DrawImage 2018-08-11 02:14:37 +09:00
Hajime Hoshi
690c3cf981 graphics: Embed 'scale' part of the color matrix
If the color matrix includes only 'scale' part, they are embedded
into vertices in order to reduce draw calls.

Fixes #662
2018-08-10 23:20:55 +09:00
Hajime Hoshi
3daaef2cab restorable: Refactoring: Use ReplacePixels(nil, ...) for clearing an image 2018-08-09 01:16:46 +09:00
Hajime Hoshi
c68c36b0b7 restoreable: Add ClearState to clear the state explicitly
Fixes #566
2018-08-09 00:12:45 +09:00
Hajime Hoshi
77e905eb25 Revert "graphics: Embed color matrices values to vertices (#655)"
This reverts commit 5a9235aaf9.
2018-08-06 01:44:31 +09:00
Hajime Hoshi
bf19f902af Revert "graphics: Fix DrawImage comment"
This reverts commit 8e6314f856.
2018-08-06 01:44:31 +09:00
Hajime Hoshi
bac0431c9f graphics: Simplify mipmap calculation 2018-08-03 00:02:49 +09:00
Hajime Hoshi
5c201af311 graphics: Bug fix: compile error 2018-07-31 01:56:59 +09:00
Hajime Hoshi
0956ca0ea6 graphicsutil: Add MipmapLevel 2018-07-31 01:47:03 +09:00
Hajime Hoshi
b8ab1363d2 graphics: Bug fix: mipmap level calculation 2018-07-31 01:02:09 +09:00
Hajime Hoshi
d7d02e6d6a Reland: graphics: mipmap images should be volatile when the base image is volatile
This is not a bug fix, but should improve performance.
2018-07-30 00:26:36 +09:00
Hajime Hoshi
20c8d7317c graphics: Add comments 2018-07-30 00:02:03 +09:00
Hajime Hoshi
5be58086b5 Revert "graphics: Bug fix: mipmap images should be volatile when the base image is volatile"
This reverts commit 0f82330009.
2018-07-29 23:58:46 +09:00
Hajime Hoshi
0f82330009 graphics: Bug fix: mipmap images should be volatile when the base image is volatile 2018-07-29 23:54:46 +09:00
Hajime Hoshi
8a221a5774 graphics: Use mipmap images for minifying images with linear filter
Fixes #578
2018-07-29 23:33:49 +09:00
Hajime Hoshi
8e6314f856 graphics: Fix DrawImage comment 2018-07-26 11:40:01 +09:00
Hajime Hoshi
5a9235aaf9
graphics: Embed color matrices values to vertices (#655)
Fixes #531
2018-07-26 11:37:27 +09:00
Hajime Hoshi
5249afc06b graphicsutil: Add QuadIndices 2018-07-21 03:40:37 +09:00
Hajime Hoshi
2e7745044d shareable: Fix Image.DrawImage to accept vertices and indices 2018-07-21 03:30:27 +09:00
Hajime Hoshi
6c8b7f8e9c graphics: Refactoring: Reduce error propagations 2018-07-12 03:08:50 +09:00
Hajime Hoshi
840c4d24df graphicsutil: Accept matrix parameters directly for performance 2018-06-19 00:19:32 +09:00
Hajime Hoshi
ac24a8382f graphicsutil: Extract matrix applying for performance 2018-06-17 19:45:09 +09:00
Hajime Hoshi
95561bbf6b affine: Use float32 values for GeoM
float32 was slow on GopherJS, but not slow on Wasm.
2018-06-17 15:38:10 +09:00
Hajime Hoshi
b4ace53596 affine: Remove GeoM to avoid GeoM allocations on the heap 2018-06-17 00:59:50 +09:00
Hajime Hoshi
e53fa53f7d graphics: Prefer ReplacePixels to DrawImage for small images 2018-05-03 11:52:04 +09:00
Hajime Hoshi
4d3d407205 graphics: Add comments to At 2018-05-01 18:07:52 +09:00
Hajime Hoshi
63c33b24df graphics: Refactoring 2018-04-16 01:51:32 +09:00
Hajime Hoshi
008ed26276 graphics: Check isDisposed at (*Image).Clear and Fill 2018-04-08 01:39:06 +09:00
Hajime Hoshi
c62e63f874 graphics: Remove 'filter' argument from newVolatileImage (#503) 2018-04-06 03:34:14 +09:00
Hajime Hoshi
7b5ad46e49 shareable: NewImage* now returns a cleared image 2018-04-06 02:08:12 +09:00
Hajime Hoshi
87daa82ad9 graphics: Replace emptyImage with dummyImage (not initialized) 2018-04-06 00:49:49 +09:00
Hajime Hoshi
abdfb3b713 graphics: Initialize (*Image).addr asap not to rely on the fact that fill is called 2018-04-06 00:35:18 +09:00
Hajime Hoshi
af0d6d7a48 graphics: Remove GuaranteedMaxImageSize 2018-04-03 22:59:19 +09:00
Hajime Hoshi
a36ea971b4 examples/airship: Improve z values 2018-03-12 03:18:07 +09:00
Hajime Hoshi
a335b0c5a3 graphics: Fix comments about MaxImageSize 2018-03-12 02:01:30 +09:00
Hajime Hoshi
ee7ef75b8b graphics: Add explanation to SourceRect 2018-03-11 21:33:55 +09:00
Hajime Hoshi
a2d6ae7eee shareable: Rename ImagePart -> Image 2018-03-11 00:05:06 +09:00
Hajime Hoshi
df3960a97c Add internal/shareable 2018-03-10 23:59:26 +09:00
Hajime Hoshi
1556db74fa graphics: Rename sharedImage -> shareableImage 2018-03-10 23:39:06 +09:00
Hajime Hoshi
9d0ea5c241 graphics: Refactoring: Remove (*sharedImagePart).region() usages from *Image 2018-03-10 23:36:07 +09:00
Hajime Hoshi
26f4999ddd graphics: Refactoring: Remove (*sharedImagePart).image() 2018-03-10 23:27:16 +09:00
Hajime Hoshi
afda41a5ed graphics: Refactoring: Remove (*Image).restorable 2018-03-10 23:18:50 +09:00
Hajime Hoshi
df9c67d5db graphcis: Refactoring: (*Image).Size() 2018-03-10 19:46:46 +09:00
Hajime Hoshi
75049c4048 graphcis: Refactoring 2018-03-10 19:40:18 +09:00
Hajime Hoshi
e977019d2f graphics: Detect maximum texture size for each environment
Fixes #537, #539

See also #541
2018-03-09 11:47:23 +09:00
Hajime Hoshi
0418ce0761 graphics: Refactoring: Remove duplication of checking image size 2018-03-09 11:04:02 +09:00
Hajime Hoshi
00d8e793d9 restorable: Remove MaxImageSize 2018-03-09 02:50:38 +09:00
Hajime Hoshi
bc8a96eda7 graphicsutil: Avoid duplicated copying
Fixes #521
2018-03-09 01:00:23 +09:00
Hajime Hoshi
24dcaf7f28 graphcis: Fix comments 2018-03-04 03:07:06 +09:00
Hajime Hoshi
d944d51c14 graphics: Now images from NewImage also shares a texture 2018-03-03 21:01:25 +09:00
Hajime Hoshi
4b4404bc7e graphics: Ensure the image is not disposed when restorableImage() is called 2018-03-03 20:36:33 +09:00
Hajime Hoshi
caf4e9504f graphics: ReplacePixels should work on shared textures 2018-03-03 20:35:44 +09:00
Hajime Hoshi
4ae9d5780c graphics: Implement shared texture (#514) 2018-03-03 19:54:53 +09:00
Hajime Hoshi
d5bca2d499 graphics: Bug fix: (*Image).At must return color.RGBA type value 2018-03-03 18:51:52 +09:00
Hajime Hoshi
046a6cd014 graphics: Swap error checking 2018-03-02 23:59:04 +09:00
Hajime Hoshi
247cd6e1c3 Add graphicsutil package 2018-03-02 12:34:56 +09:00
Hajime Hoshi
d4112004b0 graphics: Move calculating source region from restorable package 2018-03-02 12:20:44 +09:00
Hajime Hoshi
127f6c09c8 graphics: Specify rect to glTexSubImage2D 2018-03-01 01:58:09 +09:00
Hajime Hoshi
9f6fd0db9a graphics: Use the original width/height for glTexSubImage2D 2018-03-01 00:47:37 +09:00
Hajime Hoshi
9db042ae9e graphics: Refactoring: easier way to clear framebuffer 2018-02-28 22:46:57 +09:00
Hajime Hoshi
8c8e512059 affine: User nillable pattern for ColorM 2018-02-28 02:14:06 +09:00
Hajime Hoshi
adbd0db765 restorable: Accept source rect and geom instead of vertices 2018-02-27 01:35:30 +09:00
Hajime Hoshi
2bd099014b affine: Remove geoMImpl and use nillable pattern 2018-02-27 01:02:53 +09:00
Hajime Hoshi
9031a989ec graphics: Add (*Image).isDisposed 2018-02-26 11:35:55 +09:00
Hajime Hoshi
ccfa8f7ef8 graphics: Refactoring: call (*Image).Size() funciton as much as possible 2018-02-26 02:46:30 +09:00
Hajime Hoshi
85b133dad0 graphics: Remove NewImageFromImage command 2018-02-25 23:22:49 +09:00
Hajime Hoshi
9adc1ac6a0 Revert "graphics: Refactoring: clearing framebuffer"
This reverts commit 58f5c9c1d0.

Fixes #515
2018-02-25 22:04:04 +09:00
Hajime Hoshi
94c4cc35ab graphics: Forbid copying Image objects 2018-02-25 21:55:46 +09:00
Hajime Hoshi
c7a733fb16 graphics: Refactoring: remove drawWithFittingScale 2018-02-25 03:12:33 +09:00
Hajime Hoshi
58f5c9c1d0 graphics: Refactoring: clearing framebuffer 2018-02-24 23:51:05 +09:00
Hajime Hoshi
a644e92298 restorable: Better calculation to clear restorable.Image 2018-02-24 21:16:30 +09:00
Hajime Hoshi
556b2ec31b graphics: Implement Image.Fill with DrawImage 2018-02-24 05:28:50 +09:00
Hajime Hoshi
cf333775f2 Add examples/filter 2018-02-14 03:07:17 +09:00
Hajime Hoshi
6ef4bbde2d graphics: Add FilterDefault; Make DrawImageOptions specify Filter (#453) 2018-02-14 02:59:44 +09:00
Hajime Hoshi
80596820cf graphics: Replace []uint8 with []byte 2018-01-28 22:40:36 +09:00
Hajime Hoshi
94d54b7d2c graphics: Add comments 2017-12-16 18:35:25 +09:00
Hajime Hoshi
d6878d6887 graphics: Remove one bound check from fragment shader (#461) 2017-12-16 01:33:35 +09:00
Hajime Hoshi
98532d8983 graphics: Add TestImageOutside 2017-12-14 00:25:35 +09:00
Hajime Hoshi
723d153800 Reland(2): graphics: Appropriate rendering of edges on linear filter 2017-12-12 00:03:01 +09:00
Hajime Hoshi
362d1c417f Revert 'graphics: Appropriate rendering of edges on linear filter (Reland)' (#458) 2017-12-11 20:30:54 +09:00
Hajime Hoshi
1152439e65 graphics: Appropriate rendering of edges on linear filter (Reland)
Fixes #456
2017-12-07 02:26:16 +09:00
Hajime Hoshi
8091aa5190 Revert 'graphics: Appropriate rendering of edges on linear filter' #456 2017-12-06 23:40:29 +09:00
Hajime Hoshi
bc0432f310 graphics: Appropriate rendering of edges on linear filter
Fixes #315
2017-12-06 21:40:24 +09:00
Hajime Hoshi
626b772b25 doc: Improve comments 2017-10-01 17:24:30 +09:00
Hajime Hoshi
a7fc463d91 doc: Improve comments 2017-10-01 03:15:50 +09:00
Hajime Hoshi
1995219b55 graphics: Add performance tips on DrawImage 2017-09-24 01:14:16 +09:00
Hajime Hoshi
e8acd9b6a2 graphics: Fix document 2017-09-23 18:15:31 +09:00
Hajime Hoshi
fc125eb531 graphics: Add comments 2017-09-16 15:49:29 +09:00
Hajime Hoshi
ccddf3c4ac restorable: Refactoring: Remove arguments from NewImageFromImage 2017-09-15 00:51:17 +09:00
Hajime Hoshi
1fb7e123c2 Remove dependencies on internal/graphics from ebiten 2017-08-06 21:34:24 +09:00
Hajime Hoshi
c0ecb7a386 graphics: Move CopyImage to restorable 2017-08-06 21:21:38 +09:00
Hajime Hoshi
631264fce1 Add 'internal/math' package 2017-08-06 20:05:14 +09:00
Hajime Hoshi
d2d19d0764 doc: Fix comments 2017-07-23 05:46:32 +09:00
Hajime Hoshi
3a3a4af035 graphics: Avoid type assertions for Fill 2017-07-02 21:32:07 +09:00
Hajime Hoshi
c694851765 ui: Center the screen on fullscreen mode (#374) 2017-07-01 04:12:09 +09:00
Hajime Hoshi
1d60c009ed ui: Bug fix: fullscreen scale calculation was wrong (#267) 2017-06-30 02:08:12 +09:00
Hajime Hoshi
b526aed817 graphics: VRAM -> GPU 2017-06-06 00:57:14 +09:00
Hajime Hoshi
1d59938295 ui: Refactoring: Remove unneeded error handlings 2017-05-31 10:47:52 +09:00
Hajime Hoshi
7d181e3182 opengl: Hide OpenGL context usages into internal/graphics package 2017-05-31 02:18:04 +09:00
Hajime Hoshi
5a4a82ab50 restorable: Add TODO comments (#357) 2017-05-30 03:31:29 +09:00
Hajime Hoshi
c6c8ff22d7 graphics: Panic first when drawing the same image 2017-05-30 00:56:01 +09:00
Hajime Hoshi
de7215f3fc graphics: Add DrawImageOptions.SourceRect 2017-05-28 00:49:44 +09:00
Hajime Hoshi
1b1b996817 graphics: Avoid copying ColorM 2017-05-27 16:17:49 +09:00
Hajime Hoshi
8b48d010ed restorable: Refactoring 2017-05-03 23:24:00 +09:00
Hajime Hoshi
aa5c278445 restorable: Unexport add 2017-05-03 23:15:18 +09:00
Hajime Hoshi
ed4cd67fb3 graphics: finalizers must be reset when disposing 2017-05-03 23:15:03 +09:00
Hajime Hoshi
9f5cf48d24 restorable: Move Images to resotrable package 2017-05-03 23:11:43 +09:00
Hajime Hoshi
d94e9c9d86 restorable: Bug fix: Make limit to the number of draw-image command history (#349) 2017-05-03 22:16:32 +09:00
Hajime Hoshi
e8b155fefe graphics: Remove duplicated runtime.SetFinalizer 2017-05-03 03:15:50 +09:00
Hajime Hoshi
f30b274c1f graphics: Bug fix: Keep a restorable.Image before disposing 2017-05-03 03:13:22 +09:00
Hajime Hoshi
e8e502cc26 graphics: Bug fix: disposing check must be done before any operations 2017-05-03 03:07:45 +09:00
Hajime Hoshi
6be25d3297 graphics: Remove imageImpl 2017-05-03 02:52:42 +09:00
Hajime Hoshi
16b0c9186e graphics: Refactoring: Reduce imageImpl's functions 2017-05-03 02:45:33 +09:00
Hajime Hoshi
858824821f doc: Remove 'concurrent-safe' comments from most of non-global functions 2017-04-18 01:33:03 +09:00
Hajime Hoshi
a7d844ce5e graphics: Add doc about error to struct Image (#331) 2017-03-04 02:30:10 +09:00
Hajime Hoshi
a3e14c9ddb graphics: Image.ReplacePixels/Dispose always returns nil (#331) 2017-03-04 02:23:39 +09:00
Hajime Hoshi
b567a07d5f graphics: DrawImage always returns nil (#331) 2017-03-04 01:33:43 +09:00
Hajime Hoshi
6ca71c6931 graphics: Errors of NewImage* are always nil (#331) 2017-03-04 01:22:51 +09:00
Hajime Hoshi
2c5ee99769 Simplify internal API not to return errors 2017-03-04 01:00:18 +09:00
Hajime Hoshi
7ba18a5d0d graphics: Image.Clear/Fill now always return nil (#331) 2017-03-04 00:53:49 +09:00
Hajime Hoshi
1c7ce07edf Simplify internal API not to return errors 2017-03-04 00:44:41 +09:00
Hajime Hoshi
147798e14d Simplify internal API not to return errors 2017-03-03 23:59:44 +09:00
Hajime Hoshi
2b1dc69497 graphics: Document bug fix: DrawImage 2017-02-27 23:53:21 +09:00
Hajime Hoshi
6e897d1479 graphcis: Bug fix: Can't dispose textures/framebuffers after the context is lost (fixing #305) 2017-01-22 01:37:08 +09:00
Hajime Hoshi
07294a98b6 Move internal/graphics/opengl -> internal/opengl 2016-11-03 23:31:25 +09:00
Hajime Hoshi
2b2d6157c7 graphics: Skip resetPixelsIfDependingOn if possible 2016-10-28 02:54:09 +09:00
Hajime Hoshi
43e8349567 graphics: Remove imageImpl.width/height 2016-09-04 01:25:02 +09:00
Hajime Hoshi
02151e48ea restorable: Remove Image() 2016-09-04 00:53:30 +09:00
Hajime Hoshi
fb3724a40e graphics: Remove imageImpl.image member 2016-09-03 23:08:51 +09:00
Hajime Hoshi
8855df40e4 gprahics: Bug fix: Check if an image is disposed before resetting pixels (examples/windowsize crashes) 2016-07-28 01:17:57 +09:00
Hajime Hoshi
4ad5c65efe graphics: Rename s/ensure/resolveStale/ 2016-07-27 23:08:28 +09:00
Hajime Hoshi
5c56058d6e pixels Rename s/history/dependency/ 2016-07-27 01:28:16 +09:00
Hajime Hoshi
c5f3eaf925 graphics: Refactoring 2016-07-26 12:28:05 +09:00
Hajime Hoshi
0fc61ed568 pixels: Rename fuctions 2016-07-26 10:51:48 +09:00
Hajime Hoshi
c0eb01d69e pixels: Rename s/flush/reset/ 2016-07-25 09:10:51 +09:00
Hajime Hoshi
95dae4ad45 pixels: Remove 'inconsistent' property 2016-07-25 09:01:00 +09:00
Hajime Hoshi
3ea6033c3d graphics: Don't ref *Image in pixels. Ref *graphics.Image instead 2016-07-24 06:22:33 +09:00
Hajime Hoshi
9bbd5e89c3 graphics: Bug fix: GL context is not available until graphics context is initialized 2016-07-24 06:02:04 +09:00
Hajime Hoshi
8d074ecc20 graphics: Add Pixel's 'inconsistent' state 2016-07-24 01:28:39 +09:00
Hajime Hoshi
75916490b7 graphics: Better name functions 2016-07-24 00:46:24 +09:00
Hajime Hoshi
2ba835373b graphics: Refactoring: passing a GL context from the top level 2016-07-14 01:20:45 +09:00
Hajime Hoshi
1627176d59 graphics: Restoring by recording drawing-images history 2016-07-13 12:38:59 +09:00
Hajime Hoshi
ebe7f10af1 graphics: Make NewVolatileImage unexported 2016-07-12 01:58:10 +09:00
Hajime Hoshi
0c611d875b graphics: Bug fix: glTexSubImage2D on Android now works (#211) 2016-07-10 05:59:21 +09:00
Hajime Hoshi
c7783b2ecf graphics: Clear volatile images at the start of a frame 2016-07-06 01:30:49 +09:00
Hajime Hoshi
1fdfa5707a graphics: Fix a comment 2016-07-05 11:43:47 +09:00
Hajime Hoshi
31d1af9740 graphics: Add NewVolatileImage (#235) 2016-07-05 03:40:40 +09:00
Hajime Hoshi
11e67d0eed graphics: Refactoring 2016-07-05 03:15:32 +09:00
Hajime Hoshi
793aad2681 graphics: Rename restorePixels -> restore 2016-07-05 03:01:32 +09:00
Hajime Hoshi
7e296b1aae graphics: Bug Fix: The screen image should be recreated 2016-07-05 02:57:41 +09:00
Hajime Hoshi
6cb1c929b5 graphics: Bug fix: Reset finalizer of *Image 2016-07-05 02:16:49 +09:00
Hajime Hoshi
760e1aa288 graphics: Add newImageImplFromImage; Rename theImages -> theImagesForRestoring 2016-07-05 01:34:40 +09:00
Hajime Hoshi
eac816ca47 graphics: Remove imageImpl.screen 2016-07-05 01:23:29 +09:00
Hajime Hoshi
085336d50f graphics: Add newImageImpl 2016-07-05 00:24:06 +09:00
Hajime Hoshi
006f918b8e graphics: Bug fix: Call theImages.add after initializing (#242) 2016-07-04 23:41:57 +09:00
Hajime Hoshi
d70bf66a59 graphics: Reduce imageM usages 2016-07-03 23:23:57 +09:00
Hajime Hoshi
86144a1cd6 opengl: Move members to variables 2016-07-03 18:23:19 +09:00
Hajime Hoshi
89fe69d564 graphics: Separate image.go into image.go and imageimpl.go 2016-07-03 14:42:28 +09:00
Hajime Hoshi
22655682fb graphics: Smaller scope for the lock 2016-07-03 03:08:41 +09:00
Hajime Hoshi
5826a958e1 graphics: Add a comment 2016-07-03 02:47:12 +09:00
Hajime Hoshi
0519c69c13 graphics: Add Image.noSave 2016-07-03 01:08:47 +09:00
Hajime Hoshi
fb8b6e93e5 graphics: Add TestNewImageFromSubImage (not bug fix) 2016-07-02 23:24:43 +09:00
Hajime Hoshi
5e892b3887 graphics: Add a comment about bug #211 2016-07-01 18:27:01 +09:00
Hajime Hoshi
5eb77d2fb5 Remove 'default framebuffer' and add 'screen framebuffer' for iOS 2016-06-18 04:56:13 +09:00
Hajime Hoshi
3f18096e95 graphics: Refactoring: Remove unneeded function 2016-06-13 00:01:01 +09:00
Hajime Hoshi
a1fbf2cd2d graphics: Remove 'Resume' 2016-06-12 23:54:36 +09:00
Hajime Hoshi
854fa6f32c graphics: Bug fix: double disposing 2016-06-12 23:13:41 +09:00
Hajime Hoshi
2a0ca3c393 graphics: Set pixels at NewImageFromImage 2016-06-12 21:29:25 +09:00
Hajime Hoshi
ea440f5b17 graphics: Bug fix: Don't touch interface after locking 2016-06-12 21:19:54 +09:00
Hajime Hoshi
d99bfaf034 graphice: Dispose old images before restoring 2016-06-12 20:57:02 +09:00
Hajime Hoshi
bd60f6eb9b graphics: Move locks before manipulating theImages 2016-06-12 17:48:08 +09:00
Hajime Hoshi
15e85398e2 graphics: Save pixels more aggressively 2016-06-12 17:12:37 +09:00
Hajime Hoshi
eca175e0f4 graphics: Add Image 2016-06-12 01:34:21 +09:00
Hajime Hoshi
32e773cf10 Refactoring 2016-06-12 00:47:44 +09:00
Hajime Hoshi
fabed66b4a graphics: Remove delayedImageTasks 2016-06-12 00:32:35 +09:00
Hajime Hoshi
32c2cb3ead graphics: Add commands to create textures/framebuffers 2016-06-12 00:23:26 +09:00
Hajime Hoshi
2a58c095b8 graphics: Add disposeCommand 2016-06-11 22:52:07 +09:00
Hajime Hoshi
b59206b777 graphics: Move command flushing to ebiten package 2016-06-11 21:50:13 +09:00
Hajime Hoshi
dfd4bc89ed graphics: Revert FlushCommand execution 2016-06-11 20:21:14 +09:00
Hajime Hoshi
912d498cdf graphics: Remove unused arguments 2016-06-11 05:48:09 +09:00
Hajime Hoshi
f897c3958e graphics: Fix restoring logic 2016-06-11 01:25:03 +09:00
Hajime Hoshi
127cd4cab6 graphics: Remove 'evacuated' state 2016-06-11 01:13:38 +09:00
Hajime Hoshi
f71dcd3466 Remove 'Pause' 2016-06-11 00:57:10 +09:00
Hajime Hoshi
66e78922f8 graphics: Fix a comment 2016-06-07 23:50:01 +09:00
Hajime Hoshi
8d17d1876c graphics: Revert transitionImageParts since this didn't affect the speed 2016-06-06 00:23:18 +09:00
Hajime Hoshi
33b50ed294 graphics: Reduce calls of glUniformMatrix4fv 2016-06-05 23:32:25 +09:00
Hajime Hoshi
1ccdfd9a35 graphics: Reduce a space line 2016-06-05 03:17:24 +09:00
Hajime Hoshi
4812f2e76e graphics: Reduce calls of glUniformMatrix4fv 2016-06-05 00:35:58 +09:00
Hajime Hoshi
f6fd8f9c6d graphics: Reduce calling glUseProgram 2016-05-29 22:40:51 +09:00
Hajime Hoshi
6d06b01cae gomobile bind works 2016-05-22 04:25:15 +09:00
Hajime Hoshi
dbd6ed8139 graphics: Move theDelayedImageTasks.exec() to newImageWithZeroFramebuffer 2016-05-18 22:45:15 +09:00
Hajime Hoshi
a35064db7d ui: Add ui.GLContext() 2016-05-18 11:10:03 +09:00
Hajime Hoshi
063ed564fd Move the run loop to internal/loop 2016-05-18 10:59:37 +09:00
Hajime Hoshi
4d04413bf9 ui: Move the run loop to internal/ui 2016-05-18 10:46:23 +09:00
Hajime Hoshi
49a0fc839e graphics: Fix a wrong comment 2016-05-17 01:38:31 +09:00
Hajime Hoshi
75b7a9134d graphcis: Bug fix: Evacuating/Restoring pixels must be ignored on a disposed image 2016-05-17 01:30:40 +09:00
Hajime Hoshi
18c14f8897 graphics: Refactoring 2016-05-17 01:09:33 +09:00
Hajime Hoshi
7ab2efaa3f graphics: Add imageImpl and change Image to be a wrapper (emulating weak refs) 2016-05-17 01:03:28 +09:00
Hajime Hoshi
23863d5a2f graphics: Add Image.evacuatePixels and restorePixels and introduce images 2016-05-17 00:22:32 +09:00
Hajime Hoshi
fbd07b1865 graphics: Simplify the size of pixels 2016-05-16 12:27:28 +09:00