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
|
3638414b37
|
Added additional comments.
|
2016-04-28 21:55:14 -04:00 |
|
Thomas Harte
|
e6c3b148ac
|
Switched wholeheartedly to the new shader.
|
2016-04-28 21:45:44 -04:00 |
|
Thomas Harte
|
8538b62ea2
|
Made an attempt to extract and consolidate the logic behind the intermediate shaders.
|
2016-04-28 21:04:59 -04:00 |
|
Thomas Harte
|
87c778ebb7
|
Fixed code use of parameter name.
|
2016-04-27 22:58:53 -04:00 |
|
Thomas Harte
|
494ef6a324
|
Updated documentation, taking the opportunity to improve a parameter name.
|
2016-04-27 22:57:40 -04:00 |
|
Thomas Harte
|
7c20fce467
|
I guess NumberOfFields is done for.
|
2016-04-27 22:48:37 -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
|
9b64f64db7
|
Attempted to normalise some style decisions.`
|
2016-04-24 22:32:24 -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
|
d221c712b0
|
Ensured GL context is active when destructing CRTOpenGL.
|
2016-04-24 20:34:25 -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
|
082003ed0a
|
Reintroduced the CRT delegate and the 2600's automatic region switching. Albeit that the CRT itself doesn't adjust properly to new timings yet.
|
2016-04-24 18:36:22 -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
|
88e237b8de
|
Standardised indentation and added one extra piece of documentation.
|
2016-04-19 20:53:55 -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
|
323f1a24db
|
Introduced blackout period solution to vertical sync confusing horizontal sync. Need to find out whether it's accurate.
|
2016-04-14 20:30:45 -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 |
|
Thomas Harte
|
6dbd20ffde
|
Expanded interface to rgb_sample to eliminate its need to make assumptions about globals, used expanded interface to compact Electron data to two pixels per byte.
|
2016-04-05 20:32:55 -04:00 |
|
Thomas Harte
|
c0cd1ed89e
|
Made an attempt to consolidate timestamp bases to a single vector and hence to lump all geometry into one or two calls, with no repetitive setting of a uniform. I'm not sure the result is correct yet.
|
2016-04-04 21:57:27 -04:00 |
|
Thomas Harte
|
729fddea1c
|
Switched to integer textures, likely to simplify for most use cases.
|
2016-04-04 19:39:01 -04:00 |
|
Thomas Harte
|
3ca58b2a57
|
Attemted further to diminish jumpiness.
|
2016-03-22 22:07:30 -04:00 |
|
Thomas Harte
|
8cd5d40e00
|
Made an attempt to reduce the amount of data heading to the GPU.
|
2016-03-22 21:16:32 -04:00 |
|
Thomas Harte
|
3038704977
|
Attempted to introduce a lowpass filter to the graphics output, reverted 6502 optimisations as seemingly not working.
|
2016-03-21 22:01:25 -04:00 |
|
Thomas Harte
|
197cf2a834
|
Commented out sync; it can probably be implicit.
|
2016-03-20 21:42:05 -04:00 |
|
Thomas Harte
|
9da7716c72
|
Attempted to simplify threading, thereby allowing machines to be constructed within a valid GL context, and started adding appropriate GL syncs. Which all oddly drops everything to a negligible FPS. Investigation will follow.
|
2016-03-19 22:46:17 -04:00 |
|
Thomas Harte
|
aa8a192c7e
|
Simplified API down to their being a single texture with a specified depth.
|
2016-03-19 17:37:55 -04:00 |
|
Thomas Harte
|
4ac1f959e9
|
A shortcut here and a shortcut there; this allows me at least to determine whether use of a PBO gains anything.
|
2016-03-19 17:07:05 -04:00 |
|
Thomas Harte
|
5b37a651ac
|
Made an attemp to deal with glUnmapBuffer(GL_ARRAY_BUFFER) == GL_FALSE .
|
2016-03-18 21:35:52 -04:00 |
|
Thomas Harte
|
0b1c9fb291
|
Ensured I don't interrupt triangle strips for the purpose of glDrawArrays.
|
2016-03-18 21:28:53 -04:00 |
|
Thomas Harte
|
620257e29e
|
Switched to a client wait, as I try to figure out what's going on.
|
2016-03-18 21:21:35 -04:00 |
|
Thomas Harte
|
2e4af90e2d
|
Resolved output errors.
|
2016-03-18 21:19:11 -04:00 |
|
Thomas Harte
|
10bc33464d
|
I don't think this is quite correct, but it's better.
|
2016-03-18 21:14:06 -04:00 |
|
Thomas Harte
|
61e880de03
|
Keeping a buffer permanently bound is apparently illegal. So back to copying in on demand. Which I think still improves on synchronisation, but not much.
|
2016-03-18 21:11:09 -04:00 |
|
Thomas Harte
|
c8ecfb89d8
|
Some cleaning.
|
2016-03-16 22:52:33 -04:00 |
|
Thomas Harte
|
0d27d3bb7f
|
As messy as it is, this use glMapBufferRange to avoid explicit buffer submits.
|
2016-03-16 22:29:22 -04:00 |
|
Thomas Harte
|
68da673a95
|
Wrapped this up as explicitly only the Mac thing to do.
|
2016-03-08 22:53:29 -05:00 |
|
Thomas Harte
|
bf5747f83e
|
Made an attempt to chop out all the stuff of building up the OpenGL data from the stuff of parsing input.
|
2016-03-08 22:40:23 -05:00 |
|
Thomas Harte
|
14b2927275
|
Made further attempts to tidy up; trying to demarcate between public interface and private.
|
2016-03-08 20:59:16 -05:00 |
|