mirror of
https://github.com/TomHarte/CLK.git
synced 2024-11-29 12:50:28 +00:00
Reintroduces less-filtered black and white video where there's no colour burst.
This commit is contained in:
parent
ef0dbc2a41
commit
d593796dae
@ -14,10 +14,10 @@ using namespace Outputs::Display::OpenGL;
|
|||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
/// The texture unit from which to source input data.
|
/// The texture unit from which to source input data.
|
||||||
constexpr GLenum SourceDataTextureUnit = GL_TEXTURE1;
|
constexpr GLenum SourceDataTextureUnit = GL_TEXTURE0;
|
||||||
|
|
||||||
/// The texture unit which contains raw line-by-line composite, S-Video or RGB data.
|
/// The texture unit which contains raw line-by-line composite, S-Video or RGB data.
|
||||||
constexpr GLenum UnprocessedLineBufferTextureUnit = GL_TEXTURE3;
|
constexpr GLenum UnprocessedLineBufferTextureUnit = GL_TEXTURE1;
|
||||||
|
|
||||||
/// The texture unit that contains the current display.
|
/// The texture unit that contains the current display.
|
||||||
constexpr GLenum AccumulationTextureUnit = GL_TEXTURE2;
|
constexpr GLenum AccumulationTextureUnit = GL_TEXTURE2;
|
||||||
|
@ -431,6 +431,10 @@ std::unique_ptr<Shader> ScanTarget::conversion_shader(InputDataType input_data_t
|
|||||||
"composite_sample(textureCoordinates[3], angles[3])"
|
"composite_sample(textureCoordinates[3], angles[3])"
|
||||||
");"
|
");"
|
||||||
|
|
||||||
|
// Compute a luminance for use if there's no colour information, now, before
|
||||||
|
// modifying samples.
|
||||||
|
"float mono_luminance = dot(samples.yz, vec2(0.5));"
|
||||||
|
|
||||||
// Take the average to calculate luminance, then subtract that from all four samples to
|
// Take the average to calculate luminance, then subtract that from all four samples to
|
||||||
// give chrominance.
|
// give chrominance.
|
||||||
"float luminance = dot(samples, vec4(0.25 / (1.0 - compositeAmplitude)));"
|
"float luminance = dot(samples, vec4(0.25 / (1.0 - compositeAmplitude)));"
|
||||||
@ -443,7 +447,11 @@ std::unique_ptr<Shader> ScanTarget::conversion_shader(InputDataType input_data_t
|
|||||||
") * vec2(0.125 * oneOverCompositeAmplitude);"
|
") * vec2(0.125 * oneOverCompositeAmplitude);"
|
||||||
|
|
||||||
// Apply a colour space conversion to get RGB.
|
// Apply a colour space conversion to get RGB.
|
||||||
"fragColour3 = lumaChromaToRGB * vec3(luminance, channels);";
|
"fragColour3 = mix("
|
||||||
|
"lumaChromaToRGB * vec3(luminance, channels),"
|
||||||
|
"vec3(mono_luminance),"
|
||||||
|
"step(oneOverCompositeAmplitude, 0.01)"
|
||||||
|
");";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DisplayType::CompositeMonochrome:
|
case DisplayType::CompositeMonochrome:
|
||||||
|
Loading…
Reference in New Issue
Block a user