Thomas Harte
|
2992183aae
|
Switched to a lookup table for phase, temporarily in YUV colour space, probably. Working on it.
|
2016-06-12 14:39:17 -04:00 |
|
Thomas Harte
|
68a8851c52
|
Increased parallelism, allowing a simplification in the GL view.
|
2016-06-02 22:29:09 -04:00 |
|
Thomas Harte
|
8d52765f40
|
Realised why new shaders weren't taking. Very negligibly decreased Atari drawing cost.
|
2016-05-12 22:22:24 -04:00 |
|
Thomas Harte
|
6d65bc9b3a
|
Permitted a wider error window on vertical sync, tidied things up a little and started trying to move towards full implementation of the OpenGL contract.
|
2016-05-11 22:11:01 -04:00 |
|
Thomas Harte
|
4b3c4082d2
|
These functions appear correctly to model the NTSC and PAL palettes; the CRT's attempt to switch function doesn't work properly yet though.
|
2016-05-11 21:07:18 -04:00 |
|
Thomas Harte
|
0d2d6a452d
|
Fixed some dangling buffer management issues.
|
2016-05-10 19:55:34 -04:00 |
|
Thomas Harte
|
b6d2c8cb63
|
Switched to instaced drawing for source[/intermediate] runs too, reducing that data transfer footprint by 50%.
|
2016-05-10 19:50:12 -04:00 |
|
Thomas Harte
|
7369139f7e
|
Realised that phase time can fit inside a single byte, since it's always (well) within the first quarter of the line — and if it somehow weren't (?) then taking it modulo the frequency would do.
|
2016-05-10 19:14:57 -04:00 |
|
Thomas Harte
|
47ae402f7e
|
Introduced a shorthand for setting up array attributes.
|
2016-05-10 19:11:48 -04:00 |
|
Thomas Harte
|
1d0bcb416d
|
Dropped the size per output run back down to 8 bytes.
|
2016-05-10 07:47:47 -04:00 |
|
Thomas Harte
|
86dab3a5d6
|
Quickest first attempt to switch to instancing for the output array. Texture coordinates seem to be off.
|
2016-05-10 07:23:47 -04:00 |
|
Thomas Harte
|
daec21d3d8
|
Found and fixed off-by-one error. Display should now be completely fixed.
|
2016-05-09 21:14:59 -04:00 |
|
Thomas Harte
|
7e2bd78891
|
With an eye towards instancing, moved away from circular buffers.
|
2016-05-09 19:14:30 -04:00 |
|
Thomas Harte
|
45af963b9a
|
Moved more of the circular logic inside getCircularRanges in order to eliminate one more potential source of error.
|
2016-05-09 07:34:37 -04:00 |
|
Thomas Harte
|
986019f9f9
|
Fixed error that could lead to split output run vertex writes.
|
2016-05-08 20:30:59 -04:00 |
|
Thomas Harte
|
1a214a8308
|
Fence sync tied up. Remaining glitches are likely off-by-one-type errors but we'll see.
|
2016-05-08 19:45:36 -04:00 |
|
Thomas Harte
|
ef3b91d3aa
|
Made an attempt to get formal on synchronisation.
|
2016-05-08 19:42:33 -04:00 |
|
Thomas Harte
|
dd469fe83a
|
Switched back to normal frame drawing logic and cleaned up the circular range stuff a little, to make it clear that no errors lie there.
|
2016-05-08 18:50:30 -04:00 |
|
Thomas Harte
|
ccdbec3ffc
|
Corrected for potential lost lines.
|
2016-05-08 16:43:11 -04:00 |
|
Thomas Harte
|
9485ef2c8c
|
At last a genuine bug fixed: was nudging the wrong amount in intermediate shaders.
|
2016-05-08 16:07:36 -04:00 |
|
Thomas Harte
|
8e4ab37719
|
Things are back pretty much to where they were, but offset is eliminated as an input.
|
2016-05-07 18:37:18 -04:00 |
|
Thomas Harte
|
c73751b15a
|
Reverted deliberately broken segments to produce something mergeable.
|
2016-05-05 21:27:13 -04:00 |
|
Thomas Harte
|
a74f081aa9
|
Put lateral lookup table directly into the shader.
|
2016-05-05 21:21:27 -04:00 |
|
Thomas Harte
|
8284b272ad
|
Picked appropriate new-world values for various buffers.
|
2016-05-05 20:00:28 -04:00 |
|
Thomas Harte
|
284b310074
|
Attempted to implement end-of-buffer tests for all stages.
|
2016-05-05 19:52:05 -04:00 |
|
Thomas Harte
|
f621cc8523
|
Withdrew the pixel unpack buffer in order to avoid the potential for a paused machine to be undrawable. The cost is at least an extra memcpy per frame; I'm letting the driver worry about the whole process for now.
|
2016-05-04 21:27:10 -04:00 |
|
Thomas Harte
|
2e7ac0e6db
|
With a lot of logging also currently ongoing, fixed circular ranges for clearing and when covering an entire buffer.
|
2016-05-04 21:08:38 -04:00 |
|
Thomas Harte
|
3684c6404f
|
Proven through deliberate inefficiency: the issues are (i) texture upload; and (ii) buffer wraparound.
|
2016-05-03 22:22:12 -04:00 |
|
Thomas Harte
|
759fbd89ca
|
Switched pixel unpack buffer back to explicit flushes.
|
2016-05-03 21:26:09 -04:00 |
|
Thomas Harte
|
2541711061
|
Made attempts (i) to flush buffers before unmapping them; and (ii) to bring texture uploads within the new orthodoxy.
|
2016-05-03 20:56:47 -04:00 |
|
Thomas Harte
|
fc1a67c157
|
Lateral is no longer written per vertex. It's a fixed list.
|
2016-05-03 18:45:55 -04:00 |
|
Thomas Harte
|
6d5a1b33ee
|
Turned the colour up just a little, slightly lowered luminance signal strength.
|
2016-05-03 07:51:14 -04:00 |
|
Thomas Harte
|
31f1e6d5c0
|
Introduced a separate stage for luminance filtering.
|
2016-05-03 07:46:40 -04:00 |
|
Thomas Harte
|
29e7c96e4c
|
Brought monitor mode inside the pipeline and added an intermediate filter.
|
2016-05-02 21:05:58 -04:00 |
|
Thomas Harte
|
4a0e1dc789
|
Switched to explicit flushing of data.
|
2016-05-01 22:33:00 -04:00 |
|
Thomas Harte
|
c93bcf9f28
|
Discovered cause of clears: stale code. Tweaked persistence, again.
|
2016-05-01 22:28:33 -04:00 |
|
Thomas Harte
|
09ed8eb654
|
Quelle surprise, failure to find strikes again. Fixed.
|
2016-05-01 21:07:27 -04:00 |
|
Thomas Harte
|
1b6754c5f8
|
Shuffled code, realised I wasn't actually binding my shader.
|
2016-05-01 19:22:24 -04:00 |
|
Thomas Harte
|
6982e945fb
|
Fixed those issues breaking GL state, I hope.
|
2016-05-01 16:17:52 -04:00 |
|
Thomas Harte
|
16ef09fc2b
|
Made an attempt intelligently to use bilinear filtering to increase filtering quality with the same number of samples.
|
2016-04-29 18:37:35 -04:00 |
|
Thomas Harte
|
23ea832f41
|
Increased brightness in television mode, added a clear if screen resolution changes.
|
2016-04-28 22:04:47 -04:00 |
|
Thomas Harte
|
e6c3b148ac
|
Switched wholeheartedly to the new shader.
|
2016-04-28 21:45:44 -04:00 |
|
Thomas Harte
|
8849dc3265
|
Finished consolidation into OutputShader. With its documentation yet to update.
|
2016-04-27 22:41:32 -04:00 |
|
Thomas Harte
|
496d979aca
|
Made a decision to clean up by creating per-shader classes. Well, more or less. First thing to be factored out: the output shader.
|
2016-04-27 22:29:54 -04:00 |
|
Thomas Harte
|
f6d58f1ce7
|
Played in the margins with image retention.
|
2016-04-26 22:14:12 -04:00 |
|
Thomas Harte
|
416c944f02
|
Experimental: let's try accumulating history directly in the framebuffer.
|
2016-04-26 21:41:39 -04:00 |
|
Thomas Harte
|
884755c560
|
Ensured the GL context is available when switching Atari 2600 output, and that it locks the output.
|
2016-04-24 20:56:21 -04:00 |
|
Thomas Harte
|
2bd6566768
|
Oh, of course, I can use GL_CONSTANT_ALPHA so that new colours can be painted at alpha 1.0 while possibly saturating with old colours.
|
2016-04-24 20:47:24 -04:00 |
|
Thomas Harte
|
acab22d95a
|
Removed any improper talk of YUV. Switched to (cos, -sin) formulation of the quadrature vector, which I now believe to be correct.
|
2016-04-24 20:27:03 -04:00 |
|
Thomas Harte
|
d393776677
|
Fixed an incorrect sign.
|
2016-04-24 19:29:30 -04:00 |
|
Thomas Harte
|
9b2b7a09eb
|
Ensured that colour space changes take effect.
|
2016-04-24 19:16:23 -04:00 |
|
Thomas Harte
|
929cfc49cb
|
Extended window for picking output frequency, attempted to consolidate CRT OpenGL timing uniforms for approprate resetting.
|
2016-04-24 18:58:31 -04:00 |
|
Thomas Harte
|
d0f9a6c2f5
|
Added a dump-the-input default RGB output shader. Which at least proves that the Atari 2600 is generally still working.
|
2016-04-24 17:35:25 -04:00 |
|
Thomas Harte
|
775fc270e6
|
Fixed bug whereby first frame drawn has random collection of data.
|
2016-04-24 07:00:22 -04:00 |
|
Thomas Harte
|
80a3169674
|
Started reviving the Atari 2600 emulation. Put new startup sequence into place.
|
2016-04-24 06:56:08 -04:00 |
|
Thomas Harte
|
bdaf4cee43
|
Switched to an in-framebuffer approach to phosphor decay, which might be acceptable now that every single pixel is being painted, re-emphasises luminance and stretched sampling period for the two FIR filters as well as decreasing the amount of signal that is retained, subjectively to improve output.
|
2016-04-24 06:16:41 -04:00 |
|
Thomas Harte
|
c123f3bf74
|
Fixed run extension, temporarily forced colour amplitude.
|
2016-04-23 14:16:49 -04:00 |
|
Thomas Harte
|
a4889074b8
|
Moved final colour space conversion out of the innermost loop.
|
2016-04-22 21:29:27 -04:00 |
|
Thomas Harte
|
8ff1f82008
|
Fixed accidental channel duplication.
|
2016-04-22 19:18:28 -04:00 |
|
Thomas Harte
|
95639f1189
|
Made attempt to introduce final filtering stage and output.
|
2016-04-22 19:15:59 -04:00 |
|
Thomas Harte
|
23311d633b
|
Doubled phosphor life, added comment on required final stage fix for tomorrow.
|
2016-04-21 23:15:48 -04:00 |
|
Thomas Harte
|
59c07f7ddd
|
This, at least, is an attempt to decode chrominance, as yet unfiltered, and not commuted to RGB (and possibly packed incorrectly).
|
2016-04-21 23:01:54 -04:00 |
|
Thomas Harte
|
cc7bf97a9c
|
This now attempts to filter y.
|
2016-04-21 22:32:30 -04:00 |
|
Thomas Harte
|
e7ed1224a5
|
Introduced the second filtering stage, albeit that it presently does nothing whatsoever.
|
2016-04-21 21:32:36 -04:00 |
|
Thomas Harte
|
23ce032ba1
|
Started edging towards the necessary flexibility for the other two intermediate shaders.
|
2016-04-21 20:21:34 -04:00 |
|
Thomas Harte
|
4b9985626d
|
Started commuting alpha to direction. The incoming amplitude is now honoured.
|
2016-04-21 19:53:41 -04:00 |
|
Thomas Harte
|
638b08302b
|
The initial composite buffer is now genuinely a composite signal.
|
2016-04-21 19:37:32 -04:00 |
|
Thomas Harte
|
d9a9dffe63
|
Factored out wraparound buffer addressing where it's otherwise going to get really repetitive; need to look at using the same approach for the glTexSubImage2D step at least but that probably means properly encapsulating the buffer builder's state.
|
2016-04-20 21:05:32 -04:00 |
|
Thomas Harte
|
8232ed765e
|
Eliminated use of zero-alpha runs to clear new lines in the intermediate buffer in favour of a scissored glClear. It's just an easier way to scale the current approach to three intermediate buffers.
|
2016-04-20 20:44:25 -04:00 |
|
Thomas Harte
|
e2da77fb8b
|
Clarified constants, ensured monitor mode works from startup.
|
2016-04-19 22:53:39 -04:00 |
|
Thomas Harte
|
ef83595af3
|
Fixed: issue was (i) always thinking the entire source run buffer needed to be issued; and (ii) having fixed that, always thinking that the block that needs redrawing doesn't overflow the buffer. Fixed both. 'Television' mode is now working without explicit synchronisation (and with a lot less work).
|
2016-04-19 22:38:11 -04:00 |
|
Thomas Harte
|
3d7a3ce995
|
Eliminated some redundant texture binds.
|
2016-04-19 22:30:05 -04:00 |
|
Thomas Harte
|
145c0b3b71
|
Smoothed output device changes, killing some dead state. Added an explicit glFinish to suggest that the problem is synchronisation rather than any sort of data or shader error.
|
2016-04-19 22:21:26 -04:00 |
|
Thomas Harte
|
66f2c10c04
|
Resolved potential crash if tape requests are made without one inserted. Softened glFinish to glFlush, though I'm still not sure I should strictly need even that.
|
2016-04-19 21:00:48 -04:00 |
|
Thomas Harte
|
20aa9e291d
|
Attempted to deal with the precision issues causing 'television' output currently to differ from 'monitor' output. Documented TextureTarget while I'm here.
|
2016-04-19 20:51:34 -04:00 |
|
Thomas Harte
|
6f52ed14d6
|
Trivially fixed. Appears to confirm an off-by-one error in the television implementation. Which would explain one of the visual phenomena — a repeating corrupted line.
|
2016-04-19 19:32:52 -04:00 |
|
Thomas Harte
|
b90a487a16
|
Attempted to enable both monitor and television output paths in the same codebase. The television route seems to be broken. Investigation required.
|
2016-04-19 19:30:50 -04:00 |
|
Thomas Harte
|
6c9bcfa637
|
Got rigorous on exceptions, started working towards having a working 'composite' shader at the same time as having a working RGB shader.
|
2016-04-19 08:05:43 -04:00 |
|
Thomas Harte
|
bcc784bda9
|
Introduced an interface for specifying attribute bindings, taking the opportunity to document the interface and introduce exceptions.
|
2016-04-19 07:23:15 -04:00 |
|
Thomas Harte
|
9d39c14752
|
Nothing of substance different; main current mystery: why do old frames recur and why does other jumpiness occur? Do I need some explicit synchronistion?
|
2016-04-18 22:18:03 -04:00 |
|
Thomas Harte
|
cf55a0c423
|
Fixed: composite output y is now incremented upon the start of retrace, that causing it to have different values at either edge of scans.
|
2016-04-18 21:49:45 -04:00 |
|
Thomas Harte
|
9580dde3ad
|
Fixed left/right shuffling. Was simply failing to supply the integer version of coordinates.
|
2016-04-18 21:40:23 -04:00 |
|
Thomas Harte
|
d5bac2f04f
|
Spotted error was in texture target all along. This now gets as far as showing something a lot like the correct display, but precision is way off. Way off.
|
2016-04-18 21:32:48 -04:00 |
|
Thomas Harte
|
bf29c8e2bf
|
Fixed mismatch in television/monitor selection, ticked view for drawing concurrently, since it can, removed stray space.
|
2016-04-18 19:01:15 -04:00 |
|
Thomas Harte
|
9ede284eb6
|
Added blanking source runs, ensuring the rolling buffer is appropriately cleared.
|
2016-04-17 20:34:52 -04:00 |
|
Thomas Harte
|
43cae267f9
|
Shuffled further in an attempt to get as far as having static but incorrectly-interpreted pixel data on screen. It's not currently static. So work to do.
|
2016-04-17 18:08:05 -04:00 |
|
Thomas Harte
|
a8fbd82a3d
|
Made an attempt at correctly mapping to eye coordinates.
|
2016-04-17 17:21:24 -04:00 |
|
Thomas Harte
|
ece51917fa
|
Added first attempt at performing the first step of television output: mapping from source data to the first of the processing buffers. It's immediately obvious that my eye coordinates are off.
|
2016-04-17 17:17:59 -04:00 |
|
Thomas Harte
|
abce0ed3c4
|
Added setup of the source vertex array.
|
2016-04-17 16:17:23 -04:00 |
|
Thomas Harte
|
6ff9ffba6c
|
Switching temporarily to an attempt to draw input runs as if RGB: shader compiles, fixed a race condition on out-of-bounds accesses for the source buffer.
|
2016-04-17 15:51:28 -04:00 |
|
Thomas Harte
|
104f44f27f
|
Attempted to improve deinterlacing, gave the CRT full control over blend mode, switched back to 2000000Mhz audio.
|
2016-04-14 22:20:47 -04:00 |
|
Thomas Harte
|
026ce0255f
|
Source runs are now captured, and that buffer appropriately reset.
|
2016-04-13 22:20:13 -04:00 |
|
Thomas Harte
|
2ea02ed127
|
A source array buffer is also now created, mapped, unmapped, etc.
|
2016-04-13 22:14:18 -04:00 |
|
Thomas Harte
|
04d1b65c93
|
Reinstated texture target creation, cut them down to merely RGB.
|
2016-04-12 22:48:47 -04:00 |
|
Thomas Harte
|
4d889d9c7f
|
Made an attempt slightly to simplify the fragment processor, at both ends.
|
2016-04-12 22:35:11 -04:00 |
|
Thomas Harte
|
fe8b0ebc7e
|
Tidied up a little, mostly bumping things out of just-in-time creation that I can just do well in advance.
|
2016-04-12 22:31:13 -04:00 |
|
Thomas Harte
|
069ec2e889
|
In search of the cause of performance issues again, excised the per-pixel sin until it can be further evaluated.
|
2016-04-11 23:13:54 -04:00 |
|
Thomas Harte
|
bdb99ba92f
|
Corrections back towards composite output: fixed misnamed constant, ensured the CRT doesn't write nonsense to the output buffer, ensured it grows three vertices at a time rather than six when desired. Net effect should be that the output stage is working again, with the input processing remaining to fill in.
|
2016-04-10 22:56:52 -04:00 |
|
Thomas Harte
|
8701366277
|
Switched horizontal sync detection back to differential, switched the Electron to an XOR-style sync output (believed to be accurate, but I need to check), fixed some latent issues around vertical sync detection.
|
2016-04-10 21:34:40 -04:00 |
|
Thomas Harte
|
fc5530b513
|
Realising I've managed to confuse input and output, started shift to 'source' for what 'input' was.
|
2016-04-10 15:58:43 -04:00 |
|