diff --git a/app/app.pro b/app/app.pro
index 0ae180f..18a6d6e 100644
--- a/app/app.pro
+++ b/app/app.pro
@@ -49,9 +49,10 @@ OTHER_FILES += $$SHADERS $$QSB_FILES
DYNAMIC_SHADER = $$SHADERS_DIR/terminal_dynamic.frag
STATIC_SHADER = $$SHADERS_DIR/terminal_static.frag
-RASTER_MODES = 0 1 2 3
+RASTER_MODES = 0 1 2 3 4
BINARY_FLAGS = 0 1
VARIANT_SHADER_DIR = $$relative_path($$PWD/shaders, $$OUT_PWD)
+VARIANT_OUTPUTS =
for(raster_mode, RASTER_MODES) {
for(burn_in, BINARY_FLAGS) {
@@ -64,6 +65,7 @@ for(raster_mode, RASTER_MODES) {
$${dynamic_target}.depends = $$DYNAMIC_SHADER
$${dynamic_target}.commands = $$QSB_BIN --glsl \"100 es,120,150\" --hlsl 50 --msl 12 --qt6 -DCRT_RASTER_MODE=$${raster_mode} -DCRT_BURN_IN=$${burn_in} -DCRT_DISPLAY_FRAME=$${display_frame} -DCRT_CHROMA=$${chroma_on} -o $${dynamic_output} $$DYNAMIC_SHADER
QMAKE_EXTRA_TARGETS += $${dynamic_target}
+ VARIANT_OUTPUTS += $${dynamic_output}
}
}
}
@@ -80,10 +82,12 @@ for(rgb_shift, BINARY_FLAGS) {
$${static_target}.depends = $$STATIC_SHADER
$${static_target}.commands = $$QSB_BIN --glsl \"100 es,120,150\" --hlsl 50 --msl 12 --qt6 -DCRT_RGB_SHIFT=$${rgb_shift} -DCRT_BLOOM=$${bloom_on} -DCRT_CURVATURE=$${curve_on} -DCRT_FRAME_SHININESS=$${shine_on} -o $${static_output} $$STATIC_SHADER
QMAKE_EXTRA_TARGETS += $${static_target}
+ VARIANT_OUTPUTS += $${static_output}
}
}
}
}
+PRE_TARGETDEPS += $${VARIANT_OUTPUTS}
#########################################
## INTALLS
diff --git a/app/main.cpp b/app/main.cpp
index 6a7b094..e615e4d 100644
--- a/app/main.cpp
+++ b/app/main.cpp
@@ -126,8 +126,6 @@ int main(int argc, char *argv[])
engine.rootContext()->setContextProperty("monospaceFontManager", &monospaceFontManager);
engine.rootContext()->setContextProperty("monospaceSystemFonts", monospaceFontManager.retrieveMonospaceFonts());
- engine.rootContext()->setContextProperty("devicePixelRatio", app.devicePixelRatio());
-
// Manage import paths for Linux and OSX.
QStringList importPathList = engine.importPathList();
importPathList.prepend(QCoreApplication::applicationDirPath() + "/qmltermwidget");
diff --git a/app/qml/ApplicationSettings.qml b/app/qml/ApplicationSettings.qml
index 4ce607a..5158f02 100644
--- a/app/qml/ApplicationSettings.qml
+++ b/app/qml/ApplicationSettings.qml
@@ -105,7 +105,7 @@ QtObject {
property real screenRadius: Utils.lint(4.0, 40.0, _screenRadius)
property real _margin: 0.5
- property real margin: Utils.lint(1.0, 40.0, _margin) + 0.5 * screenRadius
+ property real margin: Utils.lint(1.0, 40.0, _margin) + 0.25 * screenRadius
readonly property int no_rasterization: 0
readonly property int scanline_rasterization: 1
@@ -178,9 +178,10 @@ QtObject {
var fontWidth = fontManager.item.defaultFontWidth * appSettings.fontWidth
var fontFamily = fontManager.item.family
var isSystemFont = fontManager.item.isSystemFont
+ var lowResolutionFont = fontManager.item.lowResolutionFont;
var fallbackFontFamily = ""
- lowResolutionFont = fontManager.item.lowResolutionFont
+ appSettings.lowResolutionFont = fontManager.item.lowResolutionFont
if (!isSystemFont) {
fontLoader.source = fontSourcePath
@@ -197,14 +198,14 @@ QtObject {
}
}
- terminalFontChanged(fontFamily, pixelSize, lineSpacing, screenScaling, fontWidth, fallbackFontFamily)
+ terminalFontChanged(fontFamily, pixelSize, lineSpacing, screenScaling, fontWidth, fallbackFontFamily, lowResolutionFont)
}
onFontSourceChanged: updateFont()
onRasterizationChanged: updateFont()
onFontNameChanged: updateFont()
- signal terminalFontChanged(string fontFamily, int pixelSize, int lineSpacing, real screenScaling, real fontWidth, string fallbackFontFamily)
+ signal terminalFontChanged(string fontFamily, int pixelSize, int lineSpacing, real screenScaling, real fontWidth, string fallbackFontFamily, bool lowResolutionFont)
signal initializedSettings
diff --git a/app/qml/Fonts.qml b/app/qml/Fonts.qml
index 15ef8c2..3ab52e0 100644
--- a/app/qml/Fonts.qml
+++ b/app/qml/Fonts.qml
@@ -54,8 +54,6 @@ QtObject {
property bool isSystemFont: fontlist.get(selectedFontIndex).isSystemFont
- property string family: fontlist.get(selectedFontIndex).family
-
// There are two kind of fonts: low resolution and high resolution.
// Low resolution font sets the lowResolutionFont property to true.
// They are rendered at a fixed pixel size and the texture is upscaled
diff --git a/app/qml/PreprocessedTerminal.qml b/app/qml/PreprocessedTerminal.qml
index 6ef5cb9..e07f173 100644
--- a/app/qml/PreprocessedTerminal.qml
+++ b/app/qml/PreprocessedTerminal.qml
@@ -98,7 +98,7 @@ Item{
QMLTermWidget {
id: kterminal
- property int textureResolutionScale: appSettings.lowResolutionFont ? devicePixelRatio : 1
+ property int textureResolutionScale: appSettings.lowResolutionFont ? Screen.devicePixelRatio : 1
property int margin: appSettings.margin / screenScaling
property int totalWidth: Math.floor(parent.width / (screenScaling * fontWidth))
property int totalHeight: Math.floor(parent.height / screenScaling)
@@ -108,8 +108,8 @@ Item{
textureSize: Qt.size(width / textureResolutionScale, height / textureResolutionScale)
- width: ensureMultiple(rawWidth, devicePixelRatio)
- height: ensureMultiple(rawHeight, devicePixelRatio)
+ width: ensureMultiple(rawWidth, Screen.devicePixelRatio)
+ height: ensureMultiple(rawHeight, Screen.devicePixelRatio)
/** Ensure size is a multiple of factor. This is needed for pixel perfect scaling on highdpi screens. */
function ensureMultiple(size, factor) {
@@ -118,8 +118,9 @@ Item{
colorScheme: "cool-retro-term"
+ antialiasText: !appSettings.lowResolutionFont
smooth: !appSettings.lowResolutionFont
- enableBold: false
+ enableBold: !appSettings.lowResolutionFont
fullCursorHeight: true
blinkingCursor: appSettings.blinkingCursor
@@ -146,8 +147,7 @@ Item{
}
}
- function handleFontChanged(fontFamily, pixelSize, lineSpacing, screenScaling, fontWidth, fallbackFontFamily) {
- kterminal.antialiasText = !appSettings.lowResolutionFont;
+ function handleFontChanged(fontFamily, pixelSize, lineSpacing, screenScaling, fontWidth, fallbackFontFamily, lowResolutionFont) {
var updatedFont = Qt.font({
family: fontFamily,
pixelSize: pixelSize
@@ -213,7 +213,7 @@ Item{
MouseArea {
property real margin: appSettings.margin
- property real frameSize: appSettings.frameSize
+ property real frameSize: appSettings.frameSize * terminalWindow.normalizedWindowScale
acceptedButtons: Qt.LeftButton | Qt.MiddleButton | Qt.RightButton
anchors.fill: parent
@@ -256,7 +256,9 @@ Item{
y = y * (1 + frameSize * 2) - frameSize;
var cc = Qt.size(0.5 - x, 0.5 - y);
- var distortion = (cc.height * cc.height + cc.width * cc.width) * appSettings.screenCurvature * appSettings.screenCurvatureSize;
+ var distortion = (cc.height * cc.height + cc.width * cc.width)
+ * appSettings.screenCurvature * appSettings.screenCurvatureSize
+ * terminalWindow.normalizedWindowScale;
return Qt.point((x - cc.width * (1+distortion) * distortion) * (kterminal.totalWidth),
(y - cc.height * (1+distortion) * distortion) * (kterminal.totalHeight))
diff --git a/app/qml/SettingsTerminalTab.qml b/app/qml/SettingsTerminalTab.qml
index ddfcd16..e7cc746 100644
--- a/app/qml/SettingsTerminalTab.qml
+++ b/app/qml/SettingsTerminalTab.qml
@@ -79,7 +79,7 @@ ColumnLayout {
model: appSettings.filteredFontList
textRole: "text"
onActivated: {
- var font = appSettings.filteredFontList.get(index)
+ var font = appSettings.filteredFontList.get(currentIndex)
// If selecting a high-res font while not in Modern mode,
// switch to Modern to render at full resolution.
diff --git a/app/qml/ShaderTerminal.qml b/app/qml/ShaderTerminal.qml
index 958db15..103153c 100644
--- a/app/qml/ShaderTerminal.qml
+++ b/app/qml/ShaderTerminal.qml
@@ -54,7 +54,8 @@ Item {
property color fontColor: appSettings.fontColor
property color backgroundColor: appSettings.backgroundColor
- property real screenCurvature: appSettings.screenCurvature * appSettings.screenCurvatureSize
+ property real screenCurvature: appSettings.screenCurvature * appSettings.screenCurvatureSize * terminalWindow.normalizedWindowScale
+ property real frameSize: appSettings.frameSize * terminalWindow.normalizedWindowScale
property real chromaColor: appSettings.chromaColor
@@ -108,7 +109,7 @@ Item {
property real time: timeManager ? timeManager.time : 0
property ShaderEffectSource noiseSource: noiseShaderSource
- property real frameSize: appSettings.frameSize
+ property real frameSize: parent.frameSize
property real frameShininess: appSettings.frameShininess
property real bloom: parent.bloomSource ? appSettings.bloom * 2.5 : 0
@@ -181,7 +182,7 @@ Item {
property real screen_brightness: Utils.lint(0.5, 1.5, appSettings.brightness)
property real frameShininess: appSettings.frameShininess
- property real frameSize: appSettings.frameSize
+ property real frameSize: parent.frameSize
blending: false
visible: false
diff --git a/app/qml/TerminalContainer.qml b/app/qml/TerminalContainer.qml
index 60cc4a3..657cdc7 100644
--- a/app/qml/TerminalContainer.qml
+++ b/app/qml/TerminalContainer.qml
@@ -27,7 +27,6 @@ ShaderTerminal {
property alias terminalSize: terminal.terminalSize
signal sessionFinished()
- property real devicePixelRatio: terminalWindow.screen.devicePixelRatio
property bool loadBloomEffect: appSettings.bloom > 0 || appSettings._frameShininess > 0
id: mainShader
@@ -37,8 +36,8 @@ ShaderTerminal {
burnInEffect: terminal.burnInEffect
virtualResolution: terminal.virtualResolution
screenResolution: Qt.size(
- terminalWindow.width * devicePixelRatio * appSettings.windowScaling,
- terminalWindow.height * devicePixelRatio * appSettings.windowScaling
+ terminalWindow.width * Screen.devicePixelRatio * appSettings.windowScaling,
+ terminalWindow.height * Screen.devicePixelRatio * appSettings.windowScaling
)
bloomSource: bloomSourceLoader.item
diff --git a/app/qml/TerminalFrame.qml b/app/qml/TerminalFrame.qml
index 7ff4c73..c651281 100644
--- a/app/qml/TerminalFrame.qml
+++ b/app/qml/TerminalFrame.qml
@@ -33,15 +33,15 @@ ShaderEffect {
0.125 + 0.750 * ambientLight
)
- property real screenCurvature: appSettings.screenCurvature * appSettings.screenCurvatureSize
+ property real screenCurvature: appSettings.screenCurvature * appSettings.screenCurvatureSize * terminalWindow.normalizedWindowScale
property real frameShininess: appSettings.frameShininess
- property real frameSize: appSettings.frameSize
+ property real frameSize: appSettings.frameSize * terminalWindow.normalizedWindowScale
property real screenRadius: appSettings.screenRadius
- property size viewportSize: Qt.size(width, height)
+ property size viewportSize: Qt.size(width / appSettings.windowScaling, height / appSettings.windowScaling)
property real ambientLight: appSettings.ambientLight
diff --git a/app/qml/TerminalTabs.qml b/app/qml/TerminalTabs.qml
index 0625c54..be212ba 100644
--- a/app/qml/TerminalTabs.qml
+++ b/app/qml/TerminalTabs.qml
@@ -106,7 +106,6 @@ Item {
model: tabsModel
TerminalContainer {
property bool isCurrentItem: StackLayout.isCurrentItem
-
onIsCurrentItemChanged: {
if (isCurrentItem) {
activate()
diff --git a/app/qml/TerminalWindow.qml b/app/qml/TerminalWindow.qml
index ddc584b..86d9c2a 100644
--- a/app/qml/TerminalWindow.qml
+++ b/app/qml/TerminalWindow.qml
@@ -68,6 +68,7 @@ ApplicationWindow {
}
property string wintitle: appSettings.wintitle
+ property real normalizedWindowScale: 1024 / ((0.5 * width + 0.5 * height))
color: "#00000000"
diff --git a/app/qml/resources.qrc b/app/qml/resources.qrc
index a82d04a..d442895 100644
--- a/app/qml/resources.qrc
+++ b/app/qml/resources.qrc
@@ -81,6 +81,14 @@
../shaders/terminal_dynamic_raster3_burn1_frame0_chroma1.frag.qsb
../shaders/terminal_dynamic_raster3_burn1_frame1_chroma0.frag.qsb
../shaders/terminal_dynamic_raster3_burn1_frame1_chroma1.frag.qsb
+ ../shaders/terminal_dynamic_raster4_burn0_frame0_chroma0.frag.qsb
+ ../shaders/terminal_dynamic_raster4_burn0_frame0_chroma1.frag.qsb
+ ../shaders/terminal_dynamic_raster4_burn0_frame1_chroma0.frag.qsb
+ ../shaders/terminal_dynamic_raster4_burn0_frame1_chroma1.frag.qsb
+ ../shaders/terminal_dynamic_raster4_burn1_frame0_chroma0.frag.qsb
+ ../shaders/terminal_dynamic_raster4_burn1_frame0_chroma1.frag.qsb
+ ../shaders/terminal_dynamic_raster4_burn1_frame1_chroma0.frag.qsb
+ ../shaders/terminal_dynamic_raster4_burn1_frame1_chroma1.frag.qsb
../shaders/terminal_static_rgb0_bloom0_curve0_shine0.frag.qsb
../shaders/terminal_static_rgb0_bloom0_curve0_shine1.frag.qsb
../shaders/terminal_static_rgb0_bloom0_curve1_shine0.frag.qsb
diff --git a/app/shaders/burn_in.frag b/app/shaders/burn_in.frag
index 202a205..dd23473 100644
--- a/app/shaders/burn_in.frag
+++ b/app/shaders/burn_in.frag
@@ -25,14 +25,12 @@ void main() {
vec4 accColor = texture(burnInSource, coords);
float prevMask = accColor.a;
- float currMask = rgb2grey(txtColor);
float blurDecay = clamp((burnInLastUpdate - prevLastUpdate) * burnInTime, 0.0, 1.0);
blurDecay = max(0.0, blurDecay - prevMask);
- float blurValue = rgb2grey(accColor.rgb) - blurDecay;
- float txtValue = rgb2grey(txtColor);
- float colorValue = max(blurValue, txtValue);
- vec3 color = vec3(colorValue);
+ vec3 color = max(accColor.rgb - vec3(blurDecay), txtColor);
+
+ float currMask = step(rgb2grey(color), rgb2grey(txtColor));
fragColor = vec4(color, currMask) * qt_Opacity;
}
diff --git a/app/shaders/burn_in.frag.qsb b/app/shaders/burn_in.frag.qsb
index ca58374..368c7d2 100644
Binary files a/app/shaders/burn_in.frag.qsb and b/app/shaders/burn_in.frag.qsb differ
diff --git a/app/shaders/terminal_dynamic.frag b/app/shaders/terminal_dynamic.frag
index 1769fdc..1562f4c 100644
--- a/app/shaders/terminal_dynamic.frag
+++ b/app/shaders/terminal_dynamic.frag
@@ -65,7 +65,7 @@ vec2 distortCoordinates(vec2 coords){
}
vec3 applyRasterization(vec2 screenCoords, vec3 texel, vec2 virtualRes, float intensity) {
-#if CRT_RASTER_MODE == 0
+#if CRT_RASTER_MODE == 0 || CRT_RASTER_MODE == 4
return texel;
#else
if (intensity <= 0.0) {
@@ -162,7 +162,7 @@ void main() {
#if CRT_BURN_IN == 1
vec4 txt_blur = texture(burnInSource, staticCoords);
float blurDecay = clamp((time - burnInLastUpdate) * burnInTime, 0.0, 1.0);
- vec3 burnInColor = 0.65 * (txt_blur.rgb - vec3(blurDecay));
+ vec3 burnInColor = 0.65 * (txt_blur.rgb - vec3(blurDecay)) * (1.0 - txt_blur.a);
txt_color = max(txt_color, burnInColor);
#endif
diff --git a/app/shaders/terminal_dynamic_raster0_burn1_frame0_chroma0.frag.qsb b/app/shaders/terminal_dynamic_raster0_burn1_frame0_chroma0.frag.qsb
index a44b375..9c454a9 100644
Binary files a/app/shaders/terminal_dynamic_raster0_burn1_frame0_chroma0.frag.qsb and b/app/shaders/terminal_dynamic_raster0_burn1_frame0_chroma0.frag.qsb differ
diff --git a/app/shaders/terminal_dynamic_raster0_burn1_frame0_chroma1.frag.qsb b/app/shaders/terminal_dynamic_raster0_burn1_frame0_chroma1.frag.qsb
index 9a84887..f128751 100644
Binary files a/app/shaders/terminal_dynamic_raster0_burn1_frame0_chroma1.frag.qsb and b/app/shaders/terminal_dynamic_raster0_burn1_frame0_chroma1.frag.qsb differ
diff --git a/app/shaders/terminal_dynamic_raster0_burn1_frame1_chroma0.frag.qsb b/app/shaders/terminal_dynamic_raster0_burn1_frame1_chroma0.frag.qsb
index fe3d2f1..c951c82 100644
Binary files a/app/shaders/terminal_dynamic_raster0_burn1_frame1_chroma0.frag.qsb and b/app/shaders/terminal_dynamic_raster0_burn1_frame1_chroma0.frag.qsb differ
diff --git a/app/shaders/terminal_dynamic_raster0_burn1_frame1_chroma1.frag.qsb b/app/shaders/terminal_dynamic_raster0_burn1_frame1_chroma1.frag.qsb
index 615ba6c..78307c5 100644
Binary files a/app/shaders/terminal_dynamic_raster0_burn1_frame1_chroma1.frag.qsb and b/app/shaders/terminal_dynamic_raster0_burn1_frame1_chroma1.frag.qsb differ
diff --git a/app/shaders/terminal_dynamic_raster1_burn1_frame0_chroma0.frag.qsb b/app/shaders/terminal_dynamic_raster1_burn1_frame0_chroma0.frag.qsb
index 48b21d2..dd42aaf 100644
Binary files a/app/shaders/terminal_dynamic_raster1_burn1_frame0_chroma0.frag.qsb and b/app/shaders/terminal_dynamic_raster1_burn1_frame0_chroma0.frag.qsb differ
diff --git a/app/shaders/terminal_dynamic_raster1_burn1_frame0_chroma1.frag.qsb b/app/shaders/terminal_dynamic_raster1_burn1_frame0_chroma1.frag.qsb
index 3cc8629..924dc03 100644
Binary files a/app/shaders/terminal_dynamic_raster1_burn1_frame0_chroma1.frag.qsb and b/app/shaders/terminal_dynamic_raster1_burn1_frame0_chroma1.frag.qsb differ
diff --git a/app/shaders/terminal_dynamic_raster1_burn1_frame1_chroma0.frag.qsb b/app/shaders/terminal_dynamic_raster1_burn1_frame1_chroma0.frag.qsb
index 2532b7e..c3863c4 100644
Binary files a/app/shaders/terminal_dynamic_raster1_burn1_frame1_chroma0.frag.qsb and b/app/shaders/terminal_dynamic_raster1_burn1_frame1_chroma0.frag.qsb differ
diff --git a/app/shaders/terminal_dynamic_raster1_burn1_frame1_chroma1.frag.qsb b/app/shaders/terminal_dynamic_raster1_burn1_frame1_chroma1.frag.qsb
index fe8fd09..264c4f3 100644
Binary files a/app/shaders/terminal_dynamic_raster1_burn1_frame1_chroma1.frag.qsb and b/app/shaders/terminal_dynamic_raster1_burn1_frame1_chroma1.frag.qsb differ
diff --git a/app/shaders/terminal_dynamic_raster2_burn1_frame0_chroma0.frag.qsb b/app/shaders/terminal_dynamic_raster2_burn1_frame0_chroma0.frag.qsb
index 58a2a86..3fd5134 100644
Binary files a/app/shaders/terminal_dynamic_raster2_burn1_frame0_chroma0.frag.qsb and b/app/shaders/terminal_dynamic_raster2_burn1_frame0_chroma0.frag.qsb differ
diff --git a/app/shaders/terminal_dynamic_raster2_burn1_frame0_chroma1.frag.qsb b/app/shaders/terminal_dynamic_raster2_burn1_frame0_chroma1.frag.qsb
index 329d1b6..1dbece9 100644
Binary files a/app/shaders/terminal_dynamic_raster2_burn1_frame0_chroma1.frag.qsb and b/app/shaders/terminal_dynamic_raster2_burn1_frame0_chroma1.frag.qsb differ
diff --git a/app/shaders/terminal_dynamic_raster2_burn1_frame1_chroma0.frag.qsb b/app/shaders/terminal_dynamic_raster2_burn1_frame1_chroma0.frag.qsb
index f35440f..286b026 100644
Binary files a/app/shaders/terminal_dynamic_raster2_burn1_frame1_chroma0.frag.qsb and b/app/shaders/terminal_dynamic_raster2_burn1_frame1_chroma0.frag.qsb differ
diff --git a/app/shaders/terminal_dynamic_raster2_burn1_frame1_chroma1.frag.qsb b/app/shaders/terminal_dynamic_raster2_burn1_frame1_chroma1.frag.qsb
index e0b8c1e..4fa9f40 100644
Binary files a/app/shaders/terminal_dynamic_raster2_burn1_frame1_chroma1.frag.qsb and b/app/shaders/terminal_dynamic_raster2_burn1_frame1_chroma1.frag.qsb differ
diff --git a/app/shaders/terminal_dynamic_raster3_burn1_frame0_chroma0.frag.qsb b/app/shaders/terminal_dynamic_raster3_burn1_frame0_chroma0.frag.qsb
index bc9aace..e6086ca 100644
Binary files a/app/shaders/terminal_dynamic_raster3_burn1_frame0_chroma0.frag.qsb and b/app/shaders/terminal_dynamic_raster3_burn1_frame0_chroma0.frag.qsb differ
diff --git a/app/shaders/terminal_dynamic_raster3_burn1_frame0_chroma1.frag.qsb b/app/shaders/terminal_dynamic_raster3_burn1_frame0_chroma1.frag.qsb
index c3d2b63..0960026 100644
Binary files a/app/shaders/terminal_dynamic_raster3_burn1_frame0_chroma1.frag.qsb and b/app/shaders/terminal_dynamic_raster3_burn1_frame0_chroma1.frag.qsb differ
diff --git a/app/shaders/terminal_dynamic_raster3_burn1_frame1_chroma0.frag.qsb b/app/shaders/terminal_dynamic_raster3_burn1_frame1_chroma0.frag.qsb
index 586287e..0043bdf 100644
Binary files a/app/shaders/terminal_dynamic_raster3_burn1_frame1_chroma0.frag.qsb and b/app/shaders/terminal_dynamic_raster3_burn1_frame1_chroma0.frag.qsb differ
diff --git a/app/shaders/terminal_dynamic_raster3_burn1_frame1_chroma1.frag.qsb b/app/shaders/terminal_dynamic_raster3_burn1_frame1_chroma1.frag.qsb
index e0f8db4..080c989 100644
Binary files a/app/shaders/terminal_dynamic_raster3_burn1_frame1_chroma1.frag.qsb and b/app/shaders/terminal_dynamic_raster3_burn1_frame1_chroma1.frag.qsb differ
diff --git a/app/shaders/terminal_frame.frag b/app/shaders/terminal_frame.frag
index d14af75..f41393f 100644
--- a/app/shaders/terminal_frame.frag
+++ b/app/shaders/terminal_frame.frag
@@ -12,6 +12,7 @@ layout(std140, binding = 0) uniform ubuf {
float screenRadius;
vec2 viewportSize;
float ambientLight;
+ float frameShininess;
};
float min2(vec2 v) { return min(v.x, v.y); }
@@ -65,8 +66,10 @@ void main() {
float frameShadow = (e * 0.66 + w * 0.66 + n * 0.33 + s) * depth;
frameShadow *= smoothstep(0.0, edgeSoftPixels * 10.0, distPixels);
+ float frameAlpha = 1.0 - frameShininess * 0.4;
+
float inScreen = smoothstep(0.0, edgeSoftPixels, -distPixels);
- float alpha = mix(mix(0.7, 0.9, ambientLight), mix(0.0, 0.2, ambientLight), inScreen);
+ float alpha = mix(frameAlpha, mix(0.0, 0.2, ambientLight), inScreen);
float glass = clamp(ambientLight * pow(prod2(coords * (1.0 - coords.yx)) * 50.0, 0.25) * inScreen, 0.0, 1.0);
vec3 color = mix(frameColor.rgb * frameShadow, vec3(glass), inScreen);
diff --git a/app/shaders/terminal_frame.frag.qsb b/app/shaders/terminal_frame.frag.qsb
index dfe0b60..9dd69c7 100644
Binary files a/app/shaders/terminal_frame.frag.qsb and b/app/shaders/terminal_frame.frag.qsb differ
diff --git a/app/shaders/terminal_frame.vert b/app/shaders/terminal_frame.vert
index 5011043..deeedee 100644
--- a/app/shaders/terminal_frame.vert
+++ b/app/shaders/terminal_frame.vert
@@ -12,6 +12,7 @@ layout(std140, binding = 0) uniform ubuf {
float screenRadius;
vec2 viewportSize;
float ambientLight;
+ float frameShininess;
};
layout(location = 0) out vec2 qt_TexCoord0;
diff --git a/app/shaders/terminal_frame.vert.qsb b/app/shaders/terminal_frame.vert.qsb
index 512aca0..7be88ca 100644
Binary files a/app/shaders/terminal_frame.vert.qsb and b/app/shaders/terminal_frame.vert.qsb differ
diff --git a/app/shaders/terminal_static.frag b/app/shaders/terminal_static.frag
index 1a7d638..3ecc06f 100644
--- a/app/shaders/terminal_static.frag
+++ b/app/shaders/terminal_static.frag
@@ -84,7 +84,7 @@ void main() {
#endif
#if CRT_FRAME_SHININESS == 1
- vec3 reflectionColor = mix(bloomColor, finalColor, frameShininess * 0.5);
+ vec3 reflectionColor = mix(bloomColor * bloomAlpha * 2.0, finalColor, frameShininess * 0.5);
finalColor = mix(finalColor, reflectionColor, isReflection);
#endif
diff --git a/app/shaders/terminal_static_rgb0_bloom0_curve0_shine1.frag.qsb b/app/shaders/terminal_static_rgb0_bloom0_curve0_shine1.frag.qsb
index 6bba6e7..3f10083 100644
Binary files a/app/shaders/terminal_static_rgb0_bloom0_curve0_shine1.frag.qsb and b/app/shaders/terminal_static_rgb0_bloom0_curve0_shine1.frag.qsb differ
diff --git a/app/shaders/terminal_static_rgb0_bloom0_curve1_shine0.frag.qsb b/app/shaders/terminal_static_rgb0_bloom0_curve1_shine0.frag.qsb
index eade077..c96ddb8 100644
Binary files a/app/shaders/terminal_static_rgb0_bloom0_curve1_shine0.frag.qsb and b/app/shaders/terminal_static_rgb0_bloom0_curve1_shine0.frag.qsb differ
diff --git a/app/shaders/terminal_static_rgb0_bloom0_curve1_shine1.frag.qsb b/app/shaders/terminal_static_rgb0_bloom0_curve1_shine1.frag.qsb
index 9f97211..74d4c95 100644
Binary files a/app/shaders/terminal_static_rgb0_bloom0_curve1_shine1.frag.qsb and b/app/shaders/terminal_static_rgb0_bloom0_curve1_shine1.frag.qsb differ
diff --git a/app/shaders/terminal_static_rgb0_bloom1_curve0_shine1.frag.qsb b/app/shaders/terminal_static_rgb0_bloom1_curve0_shine1.frag.qsb
index d5658a9..6cb008d 100644
Binary files a/app/shaders/terminal_static_rgb0_bloom1_curve0_shine1.frag.qsb and b/app/shaders/terminal_static_rgb0_bloom1_curve0_shine1.frag.qsb differ
diff --git a/app/shaders/terminal_static_rgb0_bloom1_curve1_shine0.frag.qsb b/app/shaders/terminal_static_rgb0_bloom1_curve1_shine0.frag.qsb
index b4a2ec8..5028d5b 100644
Binary files a/app/shaders/terminal_static_rgb0_bloom1_curve1_shine0.frag.qsb and b/app/shaders/terminal_static_rgb0_bloom1_curve1_shine0.frag.qsb differ
diff --git a/app/shaders/terminal_static_rgb0_bloom1_curve1_shine1.frag.qsb b/app/shaders/terminal_static_rgb0_bloom1_curve1_shine1.frag.qsb
index 6b275b1..ab8a180 100644
Binary files a/app/shaders/terminal_static_rgb0_bloom1_curve1_shine1.frag.qsb and b/app/shaders/terminal_static_rgb0_bloom1_curve1_shine1.frag.qsb differ
diff --git a/app/shaders/terminal_static_rgb1_bloom0_curve0_shine1.frag.qsb b/app/shaders/terminal_static_rgb1_bloom0_curve0_shine1.frag.qsb
index 11ac6ac..b1bdbf2 100644
Binary files a/app/shaders/terminal_static_rgb1_bloom0_curve0_shine1.frag.qsb and b/app/shaders/terminal_static_rgb1_bloom0_curve0_shine1.frag.qsb differ
diff --git a/app/shaders/terminal_static_rgb1_bloom0_curve1_shine0.frag.qsb b/app/shaders/terminal_static_rgb1_bloom0_curve1_shine0.frag.qsb
index 5911d99..8deb869 100644
Binary files a/app/shaders/terminal_static_rgb1_bloom0_curve1_shine0.frag.qsb and b/app/shaders/terminal_static_rgb1_bloom0_curve1_shine0.frag.qsb differ
diff --git a/app/shaders/terminal_static_rgb1_bloom0_curve1_shine1.frag.qsb b/app/shaders/terminal_static_rgb1_bloom0_curve1_shine1.frag.qsb
index 8153274..4aba798 100644
Binary files a/app/shaders/terminal_static_rgb1_bloom0_curve1_shine1.frag.qsb and b/app/shaders/terminal_static_rgb1_bloom0_curve1_shine1.frag.qsb differ
diff --git a/app/shaders/terminal_static_rgb1_bloom1_curve0_shine1.frag.qsb b/app/shaders/terminal_static_rgb1_bloom1_curve0_shine1.frag.qsb
index 4ae50ea..052385a 100644
Binary files a/app/shaders/terminal_static_rgb1_bloom1_curve0_shine1.frag.qsb and b/app/shaders/terminal_static_rgb1_bloom1_curve0_shine1.frag.qsb differ
diff --git a/app/shaders/terminal_static_rgb1_bloom1_curve1_shine0.frag.qsb b/app/shaders/terminal_static_rgb1_bloom1_curve1_shine0.frag.qsb
index 705559c..114ebdd 100644
Binary files a/app/shaders/terminal_static_rgb1_bloom1_curve1_shine0.frag.qsb and b/app/shaders/terminal_static_rgb1_bloom1_curve1_shine0.frag.qsb differ
diff --git a/app/shaders/terminal_static_rgb1_bloom1_curve1_shine1.frag.qsb b/app/shaders/terminal_static_rgb1_bloom1_curve1_shine1.frag.qsb
index 085ed5b..daef878 100644
Binary files a/app/shaders/terminal_static_rgb1_bloom1_curve1_shine1.frag.qsb and b/app/shaders/terminal_static_rgb1_bloom1_curve1_shine1.frag.qsb differ