Commit Graph

442 Commits

Author SHA1 Message Date
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
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
bd1fc4439a graphicsutil: Avoid passing NaN to shaders experimentally (#696) 2018-10-04 02:02:19 +09:00
Hajime Hoshi
fad65f2f5d graphics: Use the viewport size same as the framebuffer size
Fixes #691
2018-09-29 19:53:22 +09:00
Hajime Hoshi
8827520d4a graphics: Bug fix: avoid jaggy rendering on macOS by adjusting texels (#669) 2018-08-30 00:17:03 +09:00
Hajime Hoshi
2360b2930f graphics: Add DrawTriangles
Fixes #624
2018-08-14 01:23:14 +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
e46f9c6305 graphics: Bug fix: compile error 2018-08-10 03:10:57 +09:00
Hajime Hoshi
a03b335c24 graphics: Add logging when 'ebitendebug' tag is specified
Fixes #563
2018-08-10 02:39:07 +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
5a9235aaf9
graphics: Embed color matrices values to vertices (#655)
Fixes #531
2018-07-26 11:37:27 +09:00
Hajime Hoshi
6c8b7f8e9c graphics: Refactoring: Reduce error propagations 2018-07-12 03:08:50 +09:00
Hajime Hoshi
a9a21132ae graphics: Refactoring: Add pixelCommand 2018-07-12 02:40:06 +09:00
Hajime Hoshi
f6b7a6be73 graphics: Use copy function in appendVertices 2018-06-17 01:09:05 +09:00
Hajime Hoshi
c782380a1c restorable: Specify indices from restorable package 2018-06-10 18:17:58 +09:00
Hajime Hoshi
2853895e6b graphics: Refactoring: Rename functions 2018-06-10 17:53:57 +09:00
Hajime Hoshi
32ac3840a7 graphics: Add comments 2018-06-10 17:10:11 +09:00
Hajime Hoshi
4e21bfd005 graphics: Rename elements -> indices 2018-06-10 17:06:40 +09:00
Hajime Hoshi
8a268e871f graphics: Specify indices before commands 2018-06-10 17:04:58 +09:00
Hajime Hoshi
e6d0943366 graphics: Rename color_matrix -> color_matrix_body 2018-06-06 02:46:54 +09:00
Hajime Hoshi
b86860abcc graphics: Call BindBuffer only when the program was null 2018-06-04 00:13:23 +09:00
Hajime Hoshi
fac639f9b7 graphics: Refactoring: Remove drawImageCommand.quadsNum 2018-06-03 23:58:08 +09:00
Hajime Hoshi
c9dd04d471 graphics: Refactoring: Remove command groups 2018-06-03 23:13:01 +09:00
Hajime Hoshi
9d87622a19 graphics: Set elements for every EnqueueDrawImageCommand 2018-06-03 20:42:45 +09:00
Hajime Hoshi
525ad04568 graphics: Split the notion of vertices and elements 2018-06-03 16:07:26 +09:00
Hajime Hoshi
25f2dfc677 graphics: Refactoring 2018-06-03 01:43:10 +09:00
Hajime Hoshi
03e3f0f5f7 graphics: Call glBufferSubData for element array buffer every frame
This is a preparation for more flexible drawing commands.
2018-05-31 00:53:05 +09:00
Hajime Hoshi
5e93d75ae0 graphics: Fix comments 2018-05-28 02:38:26 +09:00
Hajime Hoshi
399f965729 opengl: Add BindBuffer accepting both element-array-buffer and array-buffer
This change is a pure refactoring to clarify that array buffer is
binded before its usage.
2018-05-28 00:34:00 +09:00
Hajime Hoshi
d7d892f2d6 graphics: Allow a little margin for edge pixels 2018-05-13 23:00:06 +09:00
Hajime Hoshi
a1dd7b39a3 graphics: Remove roundTexel function
Actually, at least 704d4cf464,
examples/moire doesn't work well without roundTexel on MacBook Pro.
However, now other parts are fixed (e.g. highp is used), it looks
like roundTexel is no longer needed.
2018-05-13 22:30:22 +09:00
Hajime Hoshi
b402cddd01 graphics: Bug fix: wrong refactoring in shader 2018-05-13 14:20:54 +09:00
Hajime Hoshi
efaa5aa17a graphics: Refactor shader 2018-05-13 03:31:28 +09:00
Hajime Hoshi
3ccfe087d9 Refactoring 2018-05-12 15:25:01 +09:00
Hajime Hoshi
0e19aa558a graphics: Remove unneeded GL calls 2018-05-02 01:12:17 +09:00
Hajime Hoshi
1571e04753 Revert "graphics: Call glFlush after glTexSubImage2D for MacBook Pro"
This reverts commit 7f5719fadd.

Reason: This didn't change the situation
2018-04-22 22:06:38 +09:00
Hajime Hoshi
b691e73342 Revert "graphics: Experimental fix: call glFlush always after glTexSubImage2D"
This reverts commit d2da77eb96.

Reason: This doesn't solve the issue on MacBook Late 2013.
2018-04-14 23:16:26 +09:00
Hajime Hoshi
d2da77eb96 graphics: Experimental fix: call glFlush always after glTexSubImage2D 2018-04-14 23:06:20 +09:00
Hajime Hoshi
7f5719fadd graphics: Call glFlush after glTexSubImage2D for MacBook Pro 2018-04-14 17:59:10 +09:00
Hajime Hoshi
ab7a3e1ab3 graphics: Remove unneeded mutex 2018-03-25 23:55:38 +09:00
Hajime Hoshi
9009b293e5 graphics: Remove type assertion 2018-03-21 16:51:27 +09:00
Hajime Hoshi
23c2fc0134 Revert "graphics: Remove type assertion"
This reverts commit ff331d031a.

Compile error
2018-03-21 16:48:51 +09:00
Hajime Hoshi
ff331d031a graphics: Remove type assertion 2018-03-21 16:45:57 +09:00
Hajime Hoshi
09166a6c42 graphics: Fix shaders cleaner way 2018-03-21 03:36:36 +09:00
Hajime Hoshi
0a5deab0a2 graphics: Reland Bug fix: More strict calculation for the nearest filter (#558)
Better version of bae8f9d874
2018-03-21 02:40:26 +09:00
Hajime Hoshi
b157f2d6d0 Revert "graphics: Bug fix: More strict calculation for the nearest filter (#558)"
This reverts commit bae8f9d874.

Reason: TravisCI failed
2018-03-20 04:16:37 +09:00
Hajime Hoshi
a40dc5cf22 graphics: Refactoring shader 2018-03-20 04:05:09 +09:00