Thomas Harte
2008dec1ed
Adds exceptions for bad enumeration values.
2017-11-24 19:27:49 -05:00
Thomas Harte
b4f3c41aae
Formalises naming of shader inputs and related guarantees.
2017-11-24 18:45:24 -05:00
Matt Godbolt
bded406caa
Initialize all const
members.
...
Without this change, GCC versions >4.8 will error with things like:
```
./CLK/Outputs/CRT/Internals/CRTOpenGL.cpp:154:2:error: uninitialized const member
'Outputs::CRT::OpenGLOutputBuilder::draw_frame(unsigned int, unsigned int, bool)::RenderStage::target'
```
2017-11-24 12:09:10 -06:00
Thomas Harte
e9ddec35d6
Corrects intermediate shader attribute bindings.
2017-11-16 20:19:54 -05:00
Thomas Harte
f00f0353a6
Removes unnecessary temporaries.
2017-11-15 21:48:10 -05:00
Thomas Harte
d0f096a20b
Substitutes std::osringstream for C-esque asprintf
.
2017-11-15 21:28:48 -05:00
Thomas Harte
8713cfa613
Ensured all asprintf return values are checked.
2017-11-12 17:29:20 -05:00
Thomas Harte
c827d14d97
Corrects various GCC warnings across the 6560, CPC, TIA, Oric video and elsewhere.
2017-11-12 17:17:27 -05:00
Thomas Harte
2e12370251
Resolves some of the dangling C-isms remaining in my FIR filter, and introduces filter composition.
2017-11-11 12:30:45 -05:00
Thomas Harte
fabaf4e607
Adds missing include files, corrects bad include paths and eliminates the Clang-specific __undefined
.
2017-11-10 21:56:53 -05:00
Thomas Harte
5e3e91373a
Switches all unsigned int
and double
casts to functional style.
2017-10-21 19:49:04 -04:00
Thomas Harte
ef03c84b21
More definitively removed the old sample-offset blending approach to filtering.
2017-07-21 20:58:55 -04:00
Thomas Harte
344d267fd2
Introduced sharper chrominance for genuinely black-and-white signals.
2017-07-06 21:38:33 -04:00
Thomas Harte
4211389ac7
Connected machine-supplied colour burst amplitude to shader, discarding hard-coded value. Net effect: the colour component is now discarded for the ZX80 and 81.
2017-07-06 21:29:08 -04:00
Thomas Harte
c6d00ec7d1
Switched phase and amplitude varying to a 3d vector; the third component is 1/amplitude if amplitude is non-zero, and zero otherwise. So you can multiply by that to get chrominance, rather than dividing by amplitude. With the direct effect that detected chrominance should automatically be zero if the colour burst didn't exist (i.e. had zero amplitude).
2017-07-06 21:25:38 -04:00
Thomas Harte
c2b5a9bb1f
Minor fix: given that phase is now a function of position, stop nudging position.
2017-05-13 21:50:48 -04:00
Thomas Harte
e01f3f06c8
Completed curly bracket movement.
2017-03-26 14:34:47 -04:00
Thomas Harte
6cb95b4fc5
Switched to passing around std::string
s rather than char *
s, because they should be easier to capture.
2017-02-20 10:35:33 -05:00
Thomas Harte
b4159295f6
Switched to using quads for intermediate draws. The specific concern is the flexibility offered in the GL spec as to line drawing algorithms. And even if a driver implements exactly to spec then it should omit the final pixel.
2017-01-11 21:18:41 -05:00
Thomas Harte
d0a93409e6
Made an attempt to simplify in-shader phase calculation, now that output position is a direct multiple of phase.
2017-01-11 08:18:00 -05:00
Thomas Harte
4c3669f210
Reduced precision of input phase, but I'm not necessarily persuaded by it as a move. However it's clear that something is off in that whole area. But if phase is locked by output position, do I need to retain this level of complexity? Also ensured that intermediate buffers prior to the final are sampled using the nearest sampling mode, also to reduce precision errors.
2017-01-10 22:08:07 -05:00
Thomas Harte
9521718120
Colour phase is multiplied by 255, not 256.
2017-01-08 17:21:26 -05:00
Thomas Harte
28909e33ca
Eliminated phaseCyclesPerTick as implied.
2017-01-08 16:48:02 -05:00
Thomas Harte
79632b1d34
Instituted de-escalating phase-related extensions, definitively to kill rounding error edges.
2017-01-08 16:24:22 -05:00
Thomas Harte
7ad64ff16b
Made further efforts to support throughput via memory barrier.
2017-01-08 14:47:16 -05:00
Thomas Harte
be48c950b4
Started taking steps towards using a texture barrier where possible to reduce all of my framebuffer binds. Some output appears, but it's not correct.
2017-01-08 11:13:20 -05:00
Thomas Harte
0487b8c178
Definitively eliminated the additional y filtering step; if I'm going to work to ensure always four samples per colour cycle, I can put the channel separation coefficients directly into their shaders, cutting down on samples.
2017-01-07 16:02:33 -05:00
Thomas Harte
c746a3711f
Temporarily disabled my attempt to be clever with bilinear filtering when applying a lowpass filter. Will need to investigate.
2017-01-04 08:06:18 -05:00
Thomas Harte
aa7774a9a6
Experimental: up the chroma accuracy, just let the luma go straight through. Subject to figuring out how I'm still losing so much precision.
2017-01-03 22:41:34 -05:00
Thomas Harte
7d60df9075
Added the option for both intermediate and output shaders to use only a portion of the input/output texture; made an attempt to pick an appropriate proportion in order to align signal sampling with the colour subcarrier.
2017-01-03 22:16:52 -05:00
Thomas Harte
f2b8b26bc4
Started throwing some comments into my shaders.
2017-01-03 21:16:38 -05:00
Thomas Harte
2bd71e7e9b
.reset
is the more normal way to reassign a unique_ptr
.
2016-06-23 20:52:44 -04:00
Thomas Harte
9d92ad659f
Established the basic timing loop, albeit without clocking delays yet.
2016-05-16 08:01:29 -04:00
Thomas Harte
30f335fa35
Switched pervasively to using the named slot uniform setters on Shader
.
2016-05-13 22:08:32 -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
9b2061be98
Actually, that should probably be 1/outputTextureSize, as the output range is -1 to +1.
2016-05-08 16:09:39 -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
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
535d272039
Tweaks here, tweaks there.
2016-05-03 18:15:24 -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
fe2abbd4ed
Minor adjustments to ensure sampling occurs as intended.
2016-04-30 20:48:09 -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
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