1
0
mirror of https://github.com/TomHarte/CLK.git synced 2025-02-18 01:30:56 +00:00

Makes consistent use of textureLod rather than texture.

This commit is contained in:
Thomas Harte 2019-01-26 22:05:15 -05:00
parent d09ac3384f
commit 5002290428

View File

@ -324,18 +324,18 @@ std::unique_ptr<Shader> ScanTarget::conversion_shader() const {
case InputDataType::Luminance1: case InputDataType::Luminance1:
case InputDataType::Luminance8: case InputDataType::Luminance8:
// Easy, just copy across. // Easy, just copy across.
fragment_shader += "return vec2(texture(textureName, coordinate).r, 0.0);"; fragment_shader += "return vec2(textureLod(textureName, coordinate, 0).r, 0.0);";
break; break;
case InputDataType::PhaseLinkedLuminance8: case InputDataType::PhaseLinkedLuminance8:
fragment_shader += fragment_shader +=
"uint iPhase = uint((angle * 2.0 / 3.141592654) ) & 3u;" // + phaseOffset*4.0 "uint iPhase = uint((angle * 2.0 / 3.141592654) ) & 3u;" // + phaseOffset*4.0
"return vec2(texture(textureName, coordinate)[iPhase], 0.0);"; "return vec2(textureLod(textureName, coordinate, 0)[iPhase], 0.0);";
break; break;
case InputDataType::Luminance8Phase8: case InputDataType::Luminance8Phase8:
fragment_shader += fragment_shader +=
"vec2 yc = texture(textureName, coordinate).rg;" "vec2 yc = textureLod(textureName, coordinate, 0).rg;"
"float phaseOffset = 3.141592654 * 2.0 * 2.0 * yc.y;" "float phaseOffset = 3.141592654 * 2.0 * 2.0 * yc.y;"
"float rawChroma = step(yc.y, 0.75) * cos(angle + phaseOffset);" "float rawChroma = step(yc.y, 0.75) * cos(angle + phaseOffset);"
@ -347,7 +347,7 @@ std::unique_ptr<Shader> ScanTarget::conversion_shader() const {
case InputDataType::Red4Green4Blue4: case InputDataType::Red4Green4Blue4:
case InputDataType::Red8Green8Blue8: case InputDataType::Red8Green8Blue8:
fragment_shader += fragment_shader +=
"vec3 colour = rgbToLumaChroma * texture(textureName, coordinate).rgb;" "vec3 colour = rgbToLumaChroma * textureLod(textureName, coordinate, 0).rgb;"
"vec2 quadrature = vec2(cos(angle), sin(angle));" "vec2 quadrature = vec2(cos(angle), sin(angle));"
"return vec2(colour.r, dot(quadrature, colour.gb));"; "return vec2(colour.r, dot(quadrature, colour.gb));";
break; break;
@ -364,18 +364,18 @@ std::unique_ptr<Shader> ScanTarget::conversion_shader() const {
case InputDataType::Luminance1: case InputDataType::Luminance1:
case InputDataType::Luminance8: case InputDataType::Luminance8:
// Easy, just copy across. // Easy, just copy across.
fragment_shader += "return texture(textureName, coordinate).r;"; fragment_shader += "return textureLod(textureName, coordinate, 0).r;";
break; break;
case InputDataType::PhaseLinkedLuminance8: case InputDataType::PhaseLinkedLuminance8:
fragment_shader += fragment_shader +=
"uint iPhase = uint((angle * 2.0 / 3.141592654) ) & 3u;" // + phaseOffset*4.0 "uint iPhase = uint((angle * 2.0 / 3.141592654) ) & 3u;" // + phaseOffset*4.0
"return texture(textureName, coordinate)[iPhase];"; "return textureLod(textureName, coordinate, 0)[iPhase];";
break; break;
case InputDataType::Luminance8Phase8: case InputDataType::Luminance8Phase8:
fragment_shader += fragment_shader +=
"vec2 yc = texture(textureName, coordinate).rg;" "vec2 yc = textureLod(textureName, coordinate, 0).rg;"
"float phaseOffset = 3.141592654 * 2.0 * 2.0 * yc.y;" "float phaseOffset = 3.141592654 * 2.0 * 2.0 * yc.y;"
"float rawChroma = step(yc.y, 0.75) * cos(angle + phaseOffset);" "float rawChroma = step(yc.y, 0.75) * cos(angle + phaseOffset);"
@ -387,7 +387,7 @@ std::unique_ptr<Shader> ScanTarget::conversion_shader() const {
case InputDataType::Red4Green4Blue4: case InputDataType::Red4Green4Blue4:
case InputDataType::Red8Green8Blue8: case InputDataType::Red8Green8Blue8:
fragment_shader += fragment_shader +=
"vec3 colour = rgbToLumaChroma * texture(textureName, coordinate).rgb;" "vec3 colour = rgbToLumaChroma * textureLod(textureName, coordinate, 0).rgb;"
"vec2 quadrature = vec2(cos(angle), sin(angle));" "vec2 quadrature = vec2(cos(angle), sin(angle));"
"return mix(colour.r, dot(quadrature, colour.gb), compositeAmplitude);"; "return mix(colour.r, dot(quadrature, colour.gb), compositeAmplitude);";
break; break;
@ -402,7 +402,7 @@ std::unique_ptr<Shader> ScanTarget::conversion_shader() const {
switch(modals_.display_type) { switch(modals_.display_type) {
case DisplayType::RGB: case DisplayType::RGB:
fragment_shader += "fragColour3 = texture(textureName, textureCoordinate).rgb;"; fragment_shader += "fragColour3 = textureLod(textureName, textureCoordinate, 0).rgb;";
break; break;
case DisplayType::SVideo: case DisplayType::SVideo: