Compare commits

..

1 Commits

Author SHA1 Message Date
Aaron Kollasch
a683c5ad85
Hide visible scrolling in static noise
Randomize vertical position of staticNoise texel and add to
existing scrolling of noise texture (both horizontal and vertical;
faster in vertical direction)
2022-11-16 23:58:11 -05:00
7 changed files with 24 additions and 64 deletions

View File

@ -16,7 +16,7 @@ macx:ICON = icons/crt.icns
RESOURCES += qml/resources.qrc RESOURCES += qml/resources.qrc
######################################### #########################################
## INSTALLS ## INTALLS
######################################### #########################################
target.path += /usr/bin/ target.path += /usr/bin/

View File

@ -49,15 +49,15 @@ int main(int argc, char *argv[])
if (argc>1 && (!strcmp(argv[1],"-h") || !strcmp(argv[1],"--help"))) { if (argc>1 && (!strcmp(argv[1],"-h") || !strcmp(argv[1],"--help"))) {
QTextStream cout(stdout, QIODevice::WriteOnly); QTextStream cout(stdout, QIODevice::WriteOnly);
cout << "Usage: " << argv[0] << " [--default-settings] [--workdir <dir>] [--program <prog>] [-p|--profile <prof>] [--fullscreen] [-h|--help]" << '\n'; cout << "Usage: " << argv[0] << " [--default-settings] [--workdir <dir>] [--program <prog>] [-p|--profile <prof>] [--fullscreen] [-h|--help]" << endl;
cout << " --default-settings Run cool-retro-term with the default settings" << '\n'; cout << " --default-settings Run cool-retro-term with the default settings" << endl;
cout << " --workdir <dir> Change working directory to 'dir'" << '\n'; cout << " --workdir <dir> Change working directory to 'dir'" << endl;
cout << " -e <cmd> Command to execute. This option will catch all following arguments, so use it as the last option." << '\n'; cout << " -e <cmd> Command to execute. This option will catch all following arguments, so use it as the last option." << endl;
cout << " -T <title> Set window title to 'title'." << '\n'; cout << " -T <title> Set window title to 'title'." << endl;
cout << " --fullscreen Run cool-retro-term in fullscreen." << '\n'; cout << " --fullscreen Run cool-retro-term in fullscreen." << endl;
cout << " -p|--profile <prof> Run cool-retro-term with the given profile." << '\n'; cout << " -p|--profile <prof> Run cool-retro-term with the given profile." << endl;
cout << " -h|--help Print this help." << '\n'; cout << " -h|--help Print this help." << endl;
cout << " --verbose Print additional information such as profiles and settings." << '\n'; cout << " --verbose Print additional information such as profiles and settings." << endl;
return 0; return 0;
} }
@ -65,7 +65,7 @@ int main(int argc, char *argv[])
if (argc>1 && (!strcmp(argv[1],"-v") || !strcmp(argv[1],"--version"))) { if (argc>1 && (!strcmp(argv[1],"-v") || !strcmp(argv[1],"--version"))) {
QTextStream cout(stdout, QIODevice::WriteOnly); QTextStream cout(stdout, QIODevice::WriteOnly);
cout << "cool-retro-term " << appVersion << '\n'; cout << "cool-retro-term " << appVersion << endl;
return 0; return 0;
} }

View File

@ -32,7 +32,7 @@ QtObject {
readonly property real maximumFontScaling: 2.50 readonly property real maximumFontScaling: 2.50
readonly property real minBurnInFadeTime: 160 readonly property real minBurnInFadeTime: 160
readonly property real maxBurnInFadeTime: 160000 readonly property real maxBurnInFadeTime: 1600
property bool isMacOS: Qt.platform.os === "osx" property bool isMacOS: Qt.platform.os === "osx"
@ -71,7 +71,6 @@ QtObject {
property string _backgroundColor: "#000000" property string _backgroundColor: "#000000"
property string _fontColor: "#ff8100" property string _fontColor: "#ff8100"
property string _frameColor: "#ffffff"
property string saturatedColor: Utils.mix(Utils.strToColor("#FFFFFF"), property string saturatedColor: Utils.mix(Utils.strToColor("#FFFFFF"),
Utils.strToColor(_fontColor), Utils.strToColor(_fontColor),
saturationColor * 0.5) saturationColor * 0.5)
@ -82,7 +81,6 @@ QtObject {
_backgroundColor), _backgroundColor),
Utils.strToColor(saturatedColor), Utils.strToColor(saturatedColor),
0.7 + (contrast * 0.3)) 0.7 + (contrast * 0.3))
property color frameColor: Utils.strToColor(_frameColor)
property real staticNoise: 0.12 property real staticNoise: 0.12
property real screenCurvature: 0.3 property real screenCurvature: 0.3
@ -92,7 +90,6 @@ QtObject {
property real chromaColor: 0.25 property real chromaColor: 0.25
property real saturationColor: 0.25 property real saturationColor: 0.25
property real frameGloss: 0
property real jitter: 0.2 property real jitter: 0.2
@ -254,13 +251,11 @@ QtObject {
var settings = { var settings = {
"backgroundColor": _backgroundColor, "backgroundColor": _backgroundColor,
"fontColor": _fontColor, "fontColor": _fontColor,
"frameColor": _frameColor,
"flickering": flickering, "flickering": flickering,
"horizontalSync": horizontalSync, "horizontalSync": horizontalSync,
"staticNoise": staticNoise, "staticNoise": staticNoise,
"chromaColor": chromaColor, "chromaColor": chromaColor,
"saturationColor": saturationColor, "saturationColor": saturationColor,
"frameGloss": frameGloss,
"screenCurvature": screenCurvature, "screenCurvature": screenCurvature,
"glowingLine": glowingLine, "glowingLine": glowingLine,
"burnIn": burnIn, "burnIn": burnIn,
@ -350,7 +345,6 @@ QtObject {
_backgroundColor = settings.backgroundColor _backgroundColor = settings.backgroundColor
!== undefined ? settings.backgroundColor : _backgroundColor !== undefined ? settings.backgroundColor : _backgroundColor
_fontColor = settings.fontColor !== undefined ? settings.fontColor : _fontColor _fontColor = settings.fontColor !== undefined ? settings.fontColor : _fontColor
_frameColor = settings.frameColor !== undefined ? settings.frameColor : _frameColor
horizontalSync = settings.horizontalSync horizontalSync = settings.horizontalSync
!== undefined ? settings.horizontalSync : horizontalSync !== undefined ? settings.horizontalSync : horizontalSync
@ -359,7 +353,6 @@ QtObject {
chromaColor = settings.chromaColor !== undefined ? settings.chromaColor : chromaColor chromaColor = settings.chromaColor !== undefined ? settings.chromaColor : chromaColor
saturationColor = settings.saturationColor saturationColor = settings.saturationColor
!== undefined ? settings.saturationColor : saturationColor !== undefined ? settings.saturationColor : saturationColor
frameGloss = settings.frameGloss !== undefined ? settings.frameGloss : frameGloss
screenCurvature = settings.screenCurvature screenCurvature = settings.screenCurvature
!== undefined ? settings.screenCurvature : screenCurvature !== undefined ? settings.screenCurvature : screenCurvature
glowingLine = settings.glowingLine !== undefined ? settings.glowingLine : glowingLine glowingLine = settings.glowingLine !== undefined ? settings.glowingLine : glowingLine
@ -466,8 +459,6 @@ QtObject {
"rbgShift": 0, "rbgShift": 0,
"saturationColor": 0.2483, "saturationColor": 0.2483,
"screenCurvature": 0.3, "screenCurvature": 0.3,
"frameColor": "#ffffff",
"frameGloss": 0,
"staticNoise": 0.1198, "staticNoise": 0.1198,
"windowOpacity": 1, "windowOpacity": 1,
"margin": 0.5, "margin": 0.5,
@ -497,8 +488,6 @@ QtObject {
"rbgShift": 0, "rbgShift": 0,
"saturationColor": 0.0, "saturationColor": 0.0,
"screenCurvature": 0.3, "screenCurvature": 0.3,
"frameColor": "#ffffff",
"frameGloss": 0,
"staticNoise": 0.1198, "staticNoise": 0.1198,
"windowOpacity": 1, "windowOpacity": 1,
"margin": 0.5, "margin": 0.5,
@ -528,8 +517,6 @@ QtObject {
"rbgShift": 0, "rbgShift": 0,
"saturationColor": 0.5, "saturationColor": 0.5,
"screenCurvature": 0.3, "screenCurvature": 0.3,
"frameColor": "#ffffff",
"frameGloss": 0,
"staticNoise": 0.15, "staticNoise": 0.15,
"windowOpacity": 1, "windowOpacity": 1,
"margin": 0.5, "margin": 0.5,
@ -559,8 +546,6 @@ QtObject {
"rbgShift": 0, "rbgShift": 0,
"saturationColor": 0, "saturationColor": 0,
"screenCurvature": 0, "screenCurvature": 0,
"frameColor": "#ffffff",
"frameGloss": 0,
"staticNoise": 0.15, "staticNoise": 0.15,
"windowOpacity": 1, "windowOpacity": 1,
"margin": 0.5, "margin": 0.5,
@ -590,8 +575,6 @@ QtObject {
"rbgShift": 0, "rbgShift": 0,
"saturationColor": 0, "saturationColor": 0,
"screenCurvature": 0.5, "screenCurvature": 0.5,
"frameColor": "#ffffff",
"frameGloss": 0,
"staticNoise": 0.099, "staticNoise": 0.099,
"windowOpacity": 1, "windowOpacity": 1,
"margin": 0.5, "margin": 0.5,
@ -621,8 +604,6 @@ QtObject {
"rbgShift": 0.2969, "rbgShift": 0.2969,
"saturationColor": 0, "saturationColor": 0,
"screenCurvature": 0.5, "screenCurvature": 0.5,
"frameColor": "#ffffff",
"frameGloss": 0,
"staticNoise": 0.2969, "staticNoise": 0.2969,
"windowOpacity": 1, "windowOpacity": 1,
"margin": 0.5, "margin": 0.5,
@ -632,7 +613,7 @@ QtObject {
builtin: true builtin: true
} }
ListElement { ListElement {
text: "IBM DOS" text: "IBM Dos"
obj_string: '{ obj_string: '{
"ambientLight": 0.151, "ambientLight": 0.151,
"backgroundColor": "#000000", "backgroundColor": "#000000",
@ -652,8 +633,6 @@ QtObject {
"rbgShift": 0.3524, "rbgShift": 0.3524,
"saturationColor": 0, "saturationColor": 0,
"screenCurvature": 0.4, "screenCurvature": 0.4,
"frameColor": "#ffffff",
"frameGloss": 0,
"staticNoise": 0.0503, "staticNoise": 0.0503,
"windowOpacity": 1, "windowOpacity": 1,
"margin": 0.5, "margin": 0.5,
@ -683,8 +662,6 @@ QtObject {
"rbgShift": 0, "rbgShift": 0,
"saturationColor": 0, "saturationColor": 0,
"screenCurvature": 0.2, "screenCurvature": 0.2,
"frameColor": "#ffffff",
"frameGloss": 0,
"staticNoise": 0, "staticNoise": 0,
"windowOpacity": 1, "windowOpacity": 1,
"margin": 0.5, "margin": 0.5,
@ -714,8 +691,6 @@ QtObject {
"rbgShift": 0, "rbgShift": 0,
"saturationColor": 0.4983, "saturationColor": 0.4983,
"screenCurvature": 0, "screenCurvature": 0,
"frameColor": "#ffffff",
"frameGloss": 0,
"staticNoise": 0.0955, "staticNoise": 0.0955,
"windowOpacity": 0.7, "windowOpacity": 0.7,
"margin": 0.1, "margin": 0.1,

View File

@ -29,8 +29,8 @@ Loader {
property real lastUpdate: 0 property real lastUpdate: 0
property real prevLastUpdate: 0 property real prevLastUpdate: 0
property real burnIn: appSettings.burnIn; property real burnIn: appSettings.burnIn
property real burnInFadeTime: (1 / Utils.lint(_minBurnInFadeTime, _maxBurnInFadeTime, burnIn))*64 property real burnInFadeTime: 1 / Utils.lint(_minBurnInFadeTime, _maxBurnInFadeTime, burnIn)
property real _minBurnInFadeTime: appSettings.minBurnInFadeTime property real _minBurnInFadeTime: appSettings.minBurnInFadeTime
property real _maxBurnInFadeTime: appSettings.maxBurnInFadeTime property real _maxBurnInFadeTime: appSettings.maxBurnInFadeTime
@ -146,8 +146,9 @@ Loader {
float prevMask = accColor.a; float prevMask = accColor.a;
float currMask = rgb2grey(txtColor); float currMask = rgb2grey(txtColor);
highp float blurDecay = clamp(pow(0.5, burnInTime * (lastUpdate - prevLastUpdate)), 0.0, 1.0); highp float blurDecay = clamp((lastUpdate - prevLastUpdate) * burnInTime, 0.0, 1.0);
vec3 blurColor = accColor.rgb * vec3(blurDecay); blurDecay = max(0.0, blurDecay - prevMask);
vec3 blurColor = accColor.rgb - vec3(blurDecay);
vec3 color = max(blurColor, txtColor); vec3 color = max(blurColor, txtColor);
gl_FragColor = vec4(color, currMask); gl_FragColor = vec4(color, currMask);

View File

@ -149,11 +149,6 @@ ColumnLayout {
value: appSettings.saturationColor value: appSettings.saturationColor
enabled: appSettings.chromaColor !== 0 enabled: appSettings.chromaColor !== 0
} }
CheckableSlider {
name: qsTr("Frame Gloss")
onNewValue: appSettings.frameGloss = newValue
value: appSettings.frameGloss
}
} }
RowLayout { RowLayout {
Layout.fillWidth: true Layout.fillWidth: true
@ -171,13 +166,6 @@ ColumnLayout {
onColorSelected: appSettings._backgroundColor = color onColorSelected: appSettings._backgroundColor = color
color: appSettings._backgroundColor color: appSettings._backgroundColor
} }
ColorButton {
name: qsTr("Frame")
height: 50
Layout.fillWidth: true
onColorSelected: appSettings._frameColor = color
color: appSettings._frameColor
}
} }
} }
} }

View File

@ -37,8 +37,6 @@ Item {
property real ambientLight: appSettings.ambientLight * 0.2 property real ambientLight: appSettings.ambientLight * 0.2
property real frameGloss: appSettings.frameGloss
property size virtualResolution property size virtualResolution
property size screenResolution property size screenResolution
@ -61,7 +59,6 @@ Item {
property real screenCurvature: parent.screenCurvature property real screenCurvature: parent.screenCurvature
property real chromaColor: parent.chromaColor property real chromaColor: parent.chromaColor
property real ambientLight: parent.ambientLight property real ambientLight: parent.ambientLight
property real frameGloss: parent.frameGloss
property real flickering: appSettings.flickering property real flickering: appSettings.flickering
property real horizontalSync: appSettings.horizontalSync property real horizontalSync: appSettings.horizontalSync
@ -175,7 +172,6 @@ Item {
uniform highp vec4 fontColor; uniform highp vec4 fontColor;
uniform highp vec4 backgroundColor; uniform highp vec4 backgroundColor;
uniform lowp float shadowLength; uniform lowp float shadowLength;
uniform lowp float frameGloss;
uniform highp vec2 virtualResolution; uniform highp vec2 virtualResolution;
uniform lowp float rasterizationIntensity;\n" + uniform lowp float rasterizationIntensity;\n" +
@ -321,8 +317,8 @@ Item {
(burnIn !== 0 ? " (burnIn !== 0 ? "
vec4 txt_blur = texture2D(burnInSource, staticCoords); vec4 txt_blur = texture2D(burnInSource, staticCoords);
float blurDecay = clamp(pow(0.5, burnInTime * (time - burnInLastUpdate)), 0.0, 1.0); float blurDecay = clamp((time - burnInLastUpdate) * burnInTime, 0.0, 1.0);
vec3 burnInColor = txt_blur.rgb * vec3(blurDecay); vec3 burnInColor = 0.65 * (txt_blur.rgb - vec3(blurDecay));
txt_color = max(txt_color, convertWithChroma(burnInColor));" txt_color = max(txt_color, convertWithChroma(burnInColor));"
: "") + : "") +
@ -340,7 +336,7 @@ Item {
(displayTerminalFrame ? (displayTerminalFrame ?
"vec4 frameColor = texture2D(frameSource, qt_TexCoord0); "vec4 frameColor = texture2D(frameSource, qt_TexCoord0);
finalColor = mix(finalColor, frameColor.rgb + (finalColor*frameGloss), frameColor.a);" finalColor = mix(finalColor, frameColor.rgb, frameColor.a);"
: "") + : "") +
"gl_FragColor = vec4(finalColor, qt_Opacity);" + "gl_FragColor = vec4(finalColor, qt_Opacity);" +

View File

@ -22,13 +22,13 @@ import QtQuick 2.0
import "utils.js" as Utils import "utils.js" as Utils
ShaderEffect { ShaderEffect {
property color _frameColor: appSettings.frameColor property color _staticFrameColor: "#fff"
property color _backgroundColor: appSettings.backgroundColor property color _backgroundColor: appSettings.backgroundColor
property color _fontColor: appSettings.fontColor property color _fontColor: appSettings.fontColor
property color _lightColor: Utils.mix(_fontColor, _backgroundColor, 0.2) property color _lightColor: Utils.mix(_fontColor, _backgroundColor, 0.2)
property real _ambientLight: Utils.lint(0.2, 0.8, appSettings.ambientLight) property real _ambientLight: Utils.lint(0.2, 0.8, appSettings.ambientLight)
property color frameColor: Utils.mix(_frameColor, _lightColor, _ambientLight) property color frameColor: Utils.mix(_staticFrameColor, _lightColor, _ambientLight)
property real screenCurvature: appSettings.screenCurvature * appSettings.screenCurvatureSize property real screenCurvature: appSettings.screenCurvature * appSettings.screenCurvatureSize
// Coefficient of the log curve used to approximate shadowing // Coefficient of the log curve used to approximate shadowing
@ -87,7 +87,7 @@ ShaderEffect {
float alpha = 0.0; float alpha = 0.0;
float frameShadow = max2(positiveLog(-coords * frameShadowCoeff + vec2(1.0)) + positiveLog(coords * frameShadowCoeff - (vec2(frameShadowCoeff) - vec2(1.0)))); float frameShadow = max2(positiveLog(-coords * frameShadowCoeff + vec2(1.0)) + positiveLog(coords * frameShadowCoeff - (vec2(frameShadowCoeff) - vec2(1.0))));
frameShadow = clamp(sqrt(frameShadow), 0.0, 1.0); frameShadow = max(sqrt(frameShadow), 0.0);
color *= frameShadow; color *= frameShadow;
alpha = sum2(1.0 - step(vec2(0.0), coords) + step(vec2(1.0), coords)); alpha = sum2(1.0 - step(vec2(0.0), coords) + step(vec2(1.0), coords));
alpha = clamp(alpha, 0.0, 1.0); alpha = clamp(alpha, 0.0, 1.0);