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
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
e023425be0
graphicsdriver/metal: Reduce calls of SetLayer
2020-06-14 05:07:33 +09:00
Hajime Hoshi
f39c591252
shader: Enable more Go syntax
2020-06-11 01:13:03 +09:00
Hajime Hoshi
e25a6f4d46
graphicsdriver/opengl: Remove isTexture on desktops
2020-05-30 20:56:13 +09:00
Hajime Hoshi
2bdef2e8c4
restorable: Add an explicit way to detect context-lost
...
isTexture was used to detect context-lost and called every frame.
This was not good for performance.
This change adds a way to notify context-lost from the WebGL
handlers directly, and the package restorable uses it instead of
calling (*Image).isInvalaidated.
Fixes #1175
2020-05-30 20:29:15 +09:00
Hajime Hoshi
1c980a16f5
graphicsdriver/opengl: Ignore non-existent uniform locations
...
Shader users should not have to care about the existence of uniform
variables.
Updates #1168
2020-05-27 11:39:11 +09:00
Hajime Hoshi
f80719ef9a
driver: Use slices for uniform variables instead of maps
...
Fixes #1172
2020-05-26 23:50:11 +09:00
Hajime Hoshi
1cfc1964bf
graphicsdriver/opengl: Bug fix: fmt arguments
2020-05-25 02:36:45 +09:00
Hajime Hoshi
85730b433e
graphicsdriver: Bug fix: Pass texture natives as uniform variables correctly
2020-05-25 02:31:54 +09:00
Hajime Hoshi
9bf24ba545
graphicsdriver/opengl: Remove println and add error messages
2020-05-24 23:15:00 +09:00
Hajime Hoshi
521f9dcac5
graphicsdriver/opengl: Bug fix: deleted a wrong shader program
...
Updates #482
2020-05-23 22:40:49 +09:00
Hajime Hoshi
1a0d92267b
driver: Add shader API and implement it on OpenGL
...
Updates #482
2020-05-23 22:09:12 +09:00
Hajime Hoshi
8fd377f1e3
driver: Add ImageID and use this
...
This is a preparation to introduce shaders. Shader programs
require images as uniform variables, but the current way would make
API complex unnecessarily.
2020-05-20 00:11:08 +09:00
Hajime Hoshi
7f2092f964
graphicsdriver/opengl: Enable to bind multiple textures (in theory)
2020-05-17 23:57:42 +09:00
Hajime Hoshi
733c463e26
graphicsdriver/opengl: Treat a texture as a uniform variable
2020-05-17 23:25:49 +09:00
Hajime Hoshi
68ef41e256
graphicsdriver/opengl: Integrate uniform variables
2020-05-17 20:20:29 +09:00
Hajime Hoshi
ff311dd564
graphicsdriver/opengl: Pass uniform values to useProgram
2020-05-17 19:43:01 +09:00
Hajime Hoshi
84e2c6f994
graphicsdriver/opengl/gl: Bug fix: misuse of unsafe.Pointer
2020-05-17 19:42:23 +09:00
Hajime Hoshi
8ab12827c0
graphicsdriver/opengl: Refactoring
2020-05-17 19:01:46 +09:00
Hajime Hoshi
9cc128fb40
graphicsdriver/opengl: Integrate last uniform values
2020-05-17 18:36:33 +09:00
Hajime Hoshi
d12b406e0a
graphicsdriver/opengl: Remove unused variables
2020-05-17 18:15:27 +09:00
Hajime Hoshi
f4a1f90d92
graphicsdriver/opengl/gl: Reduce reflect usage
2020-05-17 14:28:13 +09:00
Hajime Hoshi
4fa52dcc56
Remove MonoGame support
...
Fixes #1148
2020-05-08 19:32:28 +09:00
Hajime Hoshi
274245e39c
graphicsdriver/metal: Refactoring: Invert the viewport's Y direction
2020-05-08 18:12:30 +09:00
Hajime Hoshi
8029dc352a
driver: Use framebuffer's Y directions
2020-05-08 16:49:19 +09:00
Hajime Hoshi
c43ba6e17d
graphicsdriver/metal: Update comments
2020-05-08 05:49:38 +09:00
Hajime Hoshi
7068eb9284
graphicsdriver/metal: Simplify the projection matrix
2020-05-08 05:06:09 +09:00
Hajime Hoshi
7ad3343e9c
graphicsdriver/monogame: Implement Pixels
...
Updates #1078
2020-04-22 02:23:16 +09:00
Hajime Hoshi
691e42f806
graphicsdriver/monogame: Bug fix: An underlying image size should be adjusted
2020-04-21 02:43:47 +09:00
Hajime Hoshi
b9e0b5f04b
graphicsdriver/monogame: Change the V direction
2020-04-17 21:36:59 +09:00
Hajime Hoshi
de02bcf19f
monogame: Update
...
Updates #1078
2020-04-14 03:23:54 +09:00
Hajime Hoshi
7b77164710
restorable: Ignore the error when restoring failed due to being not ready
...
(driver.Graphics).BeginFrame tries to restore the images, but
the context might be lost at that time yet. If the attempt to
restore the context because the driver is not ready, return
silently.
Fixes #1133
2020-04-12 20:01:18 +09:00
Hajime Hoshi
d0115f61ae
graphicsdriver/monogame: Bug fix: Wrong viewport values
2020-04-11 18:56:50 +09:00
Hajime Hoshi
f0c2c0e8e9
monogame: Set viewports
...
Updates #1078
2020-04-06 02:36:15 +09:00
Hajime Hoshi
7f64043ba5
monogame: Implement drawing screens
...
Updates #1078
2020-04-06 01:51:06 +09:00
Hajime Hoshi
7dd9150b86
monogame: Implement Draw temporarily
...
Updates #1078
2020-04-06 00:13:08 +09:00
Hajime Hoshi
08ac91fb50
monogame: Refactoring
2020-04-05 20:00:53 +09:00
Hajime Hoshi
3a5f0a7a95
graphicsdriver/monogame: Implement some functions
...
Updates #1078
2020-04-05 17:36:26 +09:00
Hajime Hoshi
57a5783ca0
graphicsdriver/monogame: Implement ReplacePixels
...
Updates #1078
2020-04-05 04:44:48 +09:00
Hajime Hoshi
8809076682
graphicsdriver/monogame: Create a RenderTarget2D for an image
...
Updates #1078
2020-04-04 22:59:55 +09:00
Hajime Hoshi
eabe4152a7
graphicsdriver/opengl: Rename Driver -> Graphics
2020-04-04 17:23:38 +09:00
Hajime Hoshi
01d1afa25c
graphicsdriver/metal: Rename Driver -> Graphics
2020-04-04 17:12:24 +09:00
Hajime Hoshi
6cbf37e855
Add graphicsdriver/monogame
2020-04-04 17:03:45 +09:00
Hajime Hoshi
b4a9538e1d
graphicsdriver/opengl/gl: Remove a misspelled unused const
2020-02-26 12:06:47 +09:00
Hajime Hoshi
9298b044e3
graphicsdriver/metal: Bug fix: avoid using mtl.LoadActionDontCare
...
Fixes #1019
2020-02-11 20:29:03 +09:00
Hajime Hoshi
59431e1cad
graphicsdriver/opengl: Leave comments why we don't use PBO on Android
...
Unfotunately, PBO might slow Android applications expecially when
coming back from context lost. Ebiten sends a lot of draw calls to
replace pixels in such case.
Until we find a good solution, let's not use PBO on Android.
Fixes #988
2020-01-19 17:02:34 +09:00
Hajime Hoshi
6eb05a0203
graphicsdriver/opengl: Enable to compile with gldebug
2020-01-13 18:55:30 +09:00
Hajime Hoshi
9be3495077
driver: Remove Graphics.SetWindow
...
Fixes #1026
2020-01-03 19:04:48 +09:00
Hajime Hoshi
e66f1fb71e
graphicsdriver/opengl: Use glBufferSubData instead of glTexSubImage2D on browsers
...
Updates #988
2020-01-02 16:27:51 +09:00
Hajime Hoshi
de48a13a6e
graphicsdriver/opengl/gl: Remove unused functions
2020-01-02 00:17:39 +09:00
Hajime Hoshi
38815ba801
graphicsdriver/opengl: Use glBufferSubData instead of glMapBuffer
...
We have confirmed that this does not slow down ReplacePixels.
Fixes #993
Fixes #1040
2020-01-02 00:01:27 +09:00
Hajime Hoshi
51f4ba1320
graphicsdriver/opengl: Refactoring
2020-01-01 01:57:12 +09:00
Hajime Hoshi
815afe6670
graphicsdriver/opengl: Reduce calls of glBindTexture
2020-01-01 01:39:45 +09:00
Hajime Hoshi
8285fbfac9
graphicsdriver/opengl: Add error checks
2019-12-31 04:22:28 +09:00
Hajime Hoshi
85cbc7e56b
Enable to compile Ebiten on js/wasm with Go 1.14
...
Fixes #1024
2019-12-19 00:45:53 +09:00
Hajime Hoshi
a3343afc36
graphicsdriver/opengl/gl: Use pkg-config instead of LDFLAGS
...
Updates #1012
2019-12-11 03:00:25 +09:00
Hajime Hoshi
c9bc5913fd
driver: Refactoring: Remove Graphics.Flush
...
Updates #226
2019-12-06 08:56:55 +09:00
Hajime Hoshi
7991ba4cfa
graphicsdriver/metal: Bug fix: Failed to compile for iOS
...
The definition of BOOL is different between macOS and iOS. C's
bool is used on iOS, but C's bool is hard to use from Go (e.g.,
an integer cannot be converted to C's bool). Use unsigned char
instead.
Fixes #1006
2019-12-03 01:03:44 +09:00
Hajime Hoshi
0ec447e0d0
ui: Add SetScreenTransparent / IsScreenTransparent
...
Fixes #1001
2019-12-01 03:31:32 +09:00
Hajime Hoshi
a040aae83b
glfw: Update to GLFW 3.3
...
Fixes #1000
2019-11-26 01:19:20 +09:00
Hajime Hoshi
21ba42325c
graphicsdriver/opengl: Use smaller PBOs
2019-11-24 18:32:35 +09:00
Hajime Hoshi
78e912e30b
graphicsdriver/opengl: Fix comments
2019-11-24 18:11:45 +09:00
Hajime Hoshi
3d3a1be1c4
graphicsdriver/opengl: Use glTexSubImage2D instead of glTexImage2D
2019-11-24 18:07:21 +09:00
Hajime Hoshi
9f483ddc60
graphicsdriver/opengl: Adopt WRITE_ONLY for PBOs
...
It looks like it is safe to use WRITE_ONLY:
https://stackoverflow.com/questions/30248594/write-only-glmapbuffer-what-if-i-dont-write-it-all
2019-11-24 17:42:28 +09:00
Hajime Hoshi
4c4f67197f
graphicsdriver/opengl/gl: Bug fix: compile error on non-Windows (again)
2019-11-24 03:05:14 +09:00
Hajime Hoshi
ac6a3f0900
graphicsdriver/opengl/gl: Bug fix: compile error on non-Windows
2019-11-24 02:02:40 +09:00
Hajime Hoshi
0ef8009c11
graphicsdriver/opengl: Use uintptr whenever possible instead of unsafe.Pointer
2019-11-20 02:00:02 +09:00
Hajime Hoshi
4296c11256
graphicsdriver/opengl: Refactoring
2019-11-24 00:08:38 +09:00
Hajime Hoshi
3df198f68e
graphicsdriver/opengl: Use GL_READ_WRITE at glMapBuffer
...
Updates #993
2019-11-22 00:27:20 +09:00
Hajime Hoshi
65fdf48cbf
graphicsdriver: Refactoring: ReplacePixels takes multiple arguments
...
This reduces the number of graphics commands, and this works more
efficiently if the driver has an efficient way.
2019-11-21 23:52:12 +09:00
Hajime Hoshi
161771cc99
graphicsdriver/opengl: Refactoring
2019-11-20 12:23:45 +09:00
Hajime Hoshi
52f6be2639
graphicsdriver/opengl: Fix suspicious GL function calls
...
Before this change, the pixel object buffer is unbound just after
getting a pointer by glMapBuffer. This seemed suspicious.
This change fixes to do all pixel manipulations once between
glMapBuffer and glUnmapBuffer without changing a bound buffer.
This might fix a wrong rendering on some machines, but I am not
sure.
Updates #993
2019-11-20 02:41:34 +09:00
Hajime Hoshi
74902d47af
graphicsdriver/metal/mtl: Bug fix: need to link CoreGraphics as of Catalina
...
Fixes #989
2019-11-17 22:59:21 +09:00
Hajime Hoshi
3aaeee78dd
graphicsdriver/metal: Reduce flushing at ReplacePixels
2019-11-17 16:00:24 +09:00
Hajime Hoshi
4120e868be
graphicsdriver/opengl: Remove unused functions
2019-11-17 05:10:22 +09:00
Hajime Hoshi
acc933b7c3
graphicsdriver/opengl: Experimental PBO implementation
...
This change is an experimental implementation to use Pixel Buffer
Objects. This reduces calls of glTexSubImage2D.
This works only on desktops. Unfortunately WebGL does not have
this features. Mobiles can have PBO as of OpenGL ES 3.
Updates #976
2019-11-17 05:01:43 +09:00
Hajime Hoshi
8c54cf639a
graphicsdriver/opengl: Reduce glFlush calls
...
Fixes #981
2019-11-14 01:21:08 +09:00
Hajime Hoshi
3c29fbdce2
jsutil: Refactoring: SliceToTypedArray -> CopySliceToJS
...
This unifieslocations of the temporary buffer.
2019-10-30 00:35:48 +09:00
Hajime Hoshi
4bfe60fb8a
graphicsdriver/metal: Bug fix: SetFragmentBytes must be called anytime
...
Fixes #954
2019-10-10 03:13:55 +09:00
Hajime Hoshi
3c976eae02
cmd/ebitenmobile: Use Metal on iOS
...
The emulators still use OpenGL.
Fixes #737
2019-10-09 02:13:47 +09:00
Hajime Hoshi
4088de5349
graphicsdriver/opengl/gl: Fix go-vet errors on Windows
...
Updates #889
2019-10-06 23:19:59 +09:00
Hajime Hoshi
3a0f8655e6
graphicsdriver/opengl/gl: Indentation
2019-10-06 23:02:15 +09:00
Hajime Hoshi
378be6be80
graphicsdriver/opengl/gl: Remove unused functions
...
This improves `go vet` results.
Updates #889
2019-10-06 22:49:38 +09:00
Hajime Hoshi
0d56207672
graphicsdriver/opengl/gl: Remove unnecessary consts
2019-10-06 04:27:57 +09:00
Hajime Hoshi
38ee9113ee
graphicsdriver/opengl/gl: Remvoe PtrOffset
...
Updates #889
2019-10-01 01:48:42 +09:00
Hajime Hoshi
899fc38d23
Add wasm test with wasmbrowsertest
...
Fixes #881
2019-09-23 02:45:37 +09:00
Hajime Hoshi
33c7f39f0f
graphicsdriver/opengl/gl: Exclude all the files for Wasm
...
Fixes #938
2019-09-23 00:42:54 +09:00
Hajime Hoshi
3fb9c02e2f
graphicsdriver/metal: Bug fix: Use correct pixel format for the screen
2019-09-08 03:52:29 +09:00
Hajime Hoshi
52900fac79
Move back driver getters to ebiten package
2019-09-03 01:46:11 +09:00
Hajime Hoshi
01297fe015
graphicsdriver: Fix a panic message
2019-08-15 21:29:37 +09:00
Hajime Hoshi
df8fdc855a
Bug fix: Compile error on GOOS=linux CGO_ENABLED=0
2019-08-01 08:17:58 +09:00
Hajime Hoshi
de915a1736
Move driver getters to graphicsdriver/uidriver packages
...
This enables to add internal functions to these packages so that
the driver selector logics can be modified.
2019-08-01 00:40:59 +09:00
Hajime Hoshi
4a9a7f936d
Make go vet a little happier on macOS
...
Updates #889
2019-07-22 20:16:22 +09:00
Hajime Hoshi
3a0dbd3977
graphicsdriver/opengl: Use sync.Once for concurrent safety
2019-07-04 01:15:51 +09:00
Hajime Hoshi
6b7f21f0c8
driver: Add Graphics.MaxImageSize and use it
...
There are some devices that cannot accept 4096x4096 pixels
textures. Get the maximum size and use it.
Fixes #892
2019-07-04 01:10:11 +09:00
Hajime Hoshi
480c5527a3
ui/mobile: Move 'DoWork' logic to ui/mobile package
...
This simplifies driver.Graphics interface, and will make it easy
to use another graphics driver than OpenGL.
2019-06-27 00:32:37 +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
9bff33472a
driver: Add (Graphics).HasHighPrecisionFlaot
...
This enables to determine whether vertices should be adjusted or
not.
Fixes #879
2019-06-22 14:57:53 +09:00
Hajime Hoshi
c7ab66e0e1
graphicsdriver/metal: Move MTLDevice and CAMetalLayer to the other struct
...
On iOS, they are given or included in a MTKView and we don't have
to (or should not) make them. Let's move them to a different
struct.
2019-06-19 02:17:45 +09:00