diff --git a/app/app.pro b/app/app.pro
index 338e0a6..af3963b 100644
--- a/app/app.pro
+++ b/app/app.pro
@@ -62,13 +62,15 @@ for(rgb_shift, BINARY_FLAGS) {
for(chroma_on, BINARY_FLAGS) {
for(bloom_on, BINARY_FLAGS) {
for(curve_on, BINARY_FLAGS) {
- static_variant = terminal_static_rgb$${rgb_shift}_chroma$${chroma_on}_bloom$${bloom_on}_curve$${curve_on}
- static_output = $${VARIANT_SHADER_DIR}/$${static_variant}.frag.qsb
- static_target = shader_variant_$${static_variant}
- $${static_target}.target = $${static_output}
- $${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_CHROMA=$${chroma_on} -DCRT_BLOOM=$${bloom_on} -DCRT_CURVATURE=$${curve_on} -o $${static_output} $$STATIC_SHADER
- QMAKE_EXTRA_TARGETS += $${static_target}
+ for(shine_on, BINARY_FLAGS) {
+ static_variant = terminal_static_rgb$${rgb_shift}_chroma$${chroma_on}_bloom$${bloom_on}_curve$${curve_on}_shine$${shine_on}
+ static_output = $${VARIANT_SHADER_DIR}/$${static_variant}.frag.qsb
+ static_target = shader_variant_$${static_variant}
+ $${static_target}.target = $${static_output}
+ $${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_CHROMA=$${chroma_on} -DCRT_BLOOM=$${bloom_on} -DCRT_CURVATURE=$${curve_on} -DCRT_FRAME_SHININESS=$${shine_on} -o $${static_output} $$STATIC_SHADER
+ QMAKE_EXTRA_TARGETS += $${static_target}
+ }
}
}
}
diff --git a/app/qml/ShaderTerminal.qml b/app/qml/ShaderTerminal.qml
index 1a9bb92..c94737e 100644
--- a/app/qml/ShaderTerminal.qml
+++ b/app/qml/ShaderTerminal.qml
@@ -40,10 +40,12 @@ Item {
var chromaOn = appSettings.chromaColor > 0 ? 1 : 0;
var bloomOn = appSettings.bloom > 0 ? 1 : 0;
var curvatureOn = (appSettings.screenCurvature > 0 || appSettings.frameSize > 0) ? 1 : 0;
+ var shineOn = appSettings.frameShininess > 0 ? 1 : 0;
return "qrc:/shaders/terminal_static_rgb" + rgbShiftOn +
"_chroma" + chromaOn +
"_bloom" + bloomOn +
"_curve" + curvatureOn +
+ "_shine" + shineOn +
".frag.qsb";
}
diff --git a/app/qml/TerminalContainer.qml b/app/qml/TerminalContainer.qml
index 2974886..28b725b 100644
--- a/app/qml/TerminalContainer.qml
+++ b/app/qml/TerminalContainer.qml
@@ -27,6 +27,7 @@ ShaderTerminal {
property alias terminalSize: terminal.terminalSize
property real devicePixelRatio: terminalWindow.screen.devicePixelRatio
+ property bool loadBloomEffect: appSettings.bloom > 0 || appSettings._frameShininess > 0
id: mainShader
opacity: appSettings.windowOpacity * 0.3 + 0.7
@@ -53,7 +54,7 @@ ShaderTerminal {
// EFFECTS ////////////////////////////////////////////////////////////////
Loader {
id: bloomEffectLoader
- active: appSettings.bloom
+ active: loadBloomEffect
asynchronous: true
width: parent.width * appSettings.bloomQuality
height: parent.height * appSettings.bloomQuality
@@ -66,7 +67,7 @@ ShaderTerminal {
}
Loader {
id: bloomSourceLoader
- active: appSettings.bloom !== 0
+ active: loadBloomEffect
asynchronous: true
sourceComponent: ShaderEffectSource {
id: _bloomEffectSource
diff --git a/app/qml/resources.qrc b/app/qml/resources.qrc
index ecb5287..c954ded 100644
--- a/app/qml/resources.qrc
+++ b/app/qml/resources.qrc
@@ -80,22 +80,38 @@
../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_static_rgb0_chroma0_bloom0_curve0.frag.qsb
- ../shaders/terminal_static_rgb0_chroma0_bloom0_curve1.frag.qsb
- ../shaders/terminal_static_rgb0_chroma0_bloom1_curve0.frag.qsb
- ../shaders/terminal_static_rgb0_chroma0_bloom1_curve1.frag.qsb
- ../shaders/terminal_static_rgb0_chroma1_bloom0_curve0.frag.qsb
- ../shaders/terminal_static_rgb0_chroma1_bloom0_curve1.frag.qsb
- ../shaders/terminal_static_rgb0_chroma1_bloom1_curve0.frag.qsb
- ../shaders/terminal_static_rgb0_chroma1_bloom1_curve1.frag.qsb
- ../shaders/terminal_static_rgb1_chroma0_bloom0_curve0.frag.qsb
- ../shaders/terminal_static_rgb1_chroma0_bloom0_curve1.frag.qsb
- ../shaders/terminal_static_rgb1_chroma0_bloom1_curve0.frag.qsb
- ../shaders/terminal_static_rgb1_chroma0_bloom1_curve1.frag.qsb
- ../shaders/terminal_static_rgb1_chroma1_bloom0_curve0.frag.qsb
- ../shaders/terminal_static_rgb1_chroma1_bloom0_curve1.frag.qsb
- ../shaders/terminal_static_rgb1_chroma1_bloom1_curve0.frag.qsb
- ../shaders/terminal_static_rgb1_chroma1_bloom1_curve1.frag.qsb
+ ../shaders/terminal_static_rgb0_chroma0_bloom0_curve0_shine0.frag.qsb
+ ../shaders/terminal_static_rgb0_chroma0_bloom0_curve0_shine1.frag.qsb
+ ../shaders/terminal_static_rgb0_chroma0_bloom0_curve1_shine0.frag.qsb
+ ../shaders/terminal_static_rgb0_chroma0_bloom0_curve1_shine1.frag.qsb
+ ../shaders/terminal_static_rgb0_chroma0_bloom1_curve0_shine0.frag.qsb
+ ../shaders/terminal_static_rgb0_chroma0_bloom1_curve0_shine1.frag.qsb
+ ../shaders/terminal_static_rgb0_chroma0_bloom1_curve1_shine0.frag.qsb
+ ../shaders/terminal_static_rgb0_chroma0_bloom1_curve1_shine1.frag.qsb
+ ../shaders/terminal_static_rgb0_chroma1_bloom0_curve0_shine0.frag.qsb
+ ../shaders/terminal_static_rgb0_chroma1_bloom0_curve0_shine1.frag.qsb
+ ../shaders/terminal_static_rgb0_chroma1_bloom0_curve1_shine0.frag.qsb
+ ../shaders/terminal_static_rgb0_chroma1_bloom0_curve1_shine1.frag.qsb
+ ../shaders/terminal_static_rgb0_chroma1_bloom1_curve0_shine0.frag.qsb
+ ../shaders/terminal_static_rgb0_chroma1_bloom1_curve0_shine1.frag.qsb
+ ../shaders/terminal_static_rgb0_chroma1_bloom1_curve1_shine0.frag.qsb
+ ../shaders/terminal_static_rgb0_chroma1_bloom1_curve1_shine1.frag.qsb
+ ../shaders/terminal_static_rgb1_chroma0_bloom0_curve0_shine0.frag.qsb
+ ../shaders/terminal_static_rgb1_chroma0_bloom0_curve0_shine1.frag.qsb
+ ../shaders/terminal_static_rgb1_chroma0_bloom0_curve1_shine0.frag.qsb
+ ../shaders/terminal_static_rgb1_chroma0_bloom0_curve1_shine1.frag.qsb
+ ../shaders/terminal_static_rgb1_chroma0_bloom1_curve0_shine0.frag.qsb
+ ../shaders/terminal_static_rgb1_chroma0_bloom1_curve0_shine1.frag.qsb
+ ../shaders/terminal_static_rgb1_chroma0_bloom1_curve1_shine0.frag.qsb
+ ../shaders/terminal_static_rgb1_chroma0_bloom1_curve1_shine1.frag.qsb
+ ../shaders/terminal_static_rgb1_chroma1_bloom0_curve0_shine0.frag.qsb
+ ../shaders/terminal_static_rgb1_chroma1_bloom0_curve0_shine1.frag.qsb
+ ../shaders/terminal_static_rgb1_chroma1_bloom0_curve1_shine0.frag.qsb
+ ../shaders/terminal_static_rgb1_chroma1_bloom0_curve1_shine1.frag.qsb
+ ../shaders/terminal_static_rgb1_chroma1_bloom1_curve0_shine0.frag.qsb
+ ../shaders/terminal_static_rgb1_chroma1_bloom1_curve0_shine1.frag.qsb
+ ../shaders/terminal_static_rgb1_chroma1_bloom1_curve1_shine0.frag.qsb
+ ../shaders/terminal_static_rgb1_chroma1_bloom1_curve1_shine1.frag.qsb
../shaders/terminal_frame.frag.qsb
../shaders/burn_in.frag.qsb
fonts/unscii/unscii-8-thin.ttf
diff --git a/app/shaders/terminal_static.frag b/app/shaders/terminal_static.frag
index 50ef977..c154b21 100644
--- a/app/shaders/terminal_static.frag
+++ b/app/shaders/terminal_static.frag
@@ -9,6 +9,9 @@
#ifndef CRT_BLOOM
#define CRT_BLOOM 1
#endif
+#ifndef CRT_FRAME_SHININESS
+#define CRT_FRAME_SHININESS 1
+#endif
#ifndef CRT_CURVATURE
#define CRT_CURVATURE 1
#endif
@@ -92,24 +95,23 @@ void main() {
finalColor = mix(backgroundColor.rgb, fontColor.rgb, greyscale_color * shownDraw);
#endif
- vec3 bloomColor;
- float bloomAlpha;
-#if CRT_BLOOM == 1
+ vec3 bloomColor = finalColor;
+ float bloomAlpha = 0.0;
+#if CRT_BLOOM == 1 || CRT_FRAME_SHININESS == 1
vec4 bloomFullColor = texture(bloomSource, txt_coords);
bloomColor = convertWithChroma(bloomFullColor.rgb);
bloomAlpha = bloomFullColor.a;
-
- vec3 bloomOnScreen = bloomColor * isScreen;
- finalColor += clamp(bloomOnScreen * bloom * bloomAlpha, 0.0, 0.5);
-#else
- bloomColor = finalColor;
- bloomAlpha = 0.0;
#endif
- if (frameShininess > 0.0) {
- vec3 reflectionColor = mix(backgroundColor.rgb + bloomColor, finalColor, frameShininess * 0.5);
- finalColor = mix(finalColor, reflectionColor, isReflection);
- }
+#if CRT_BLOOM == 1
+ vec3 bloomOnScreen = bloomColor * isScreen;
+ finalColor += clamp(bloomOnScreen * bloom * bloomAlpha, 0.0, 0.5);
+#endif
+
+#if CRT_FRAME_SHININESS == 1
+ vec3 reflectionColor = mix(backgroundColor.rgb + bloomColor, finalColor, frameShininess * 0.5);
+ finalColor = mix(finalColor, reflectionColor, isReflection);
+#endif
finalColor *= screen_brightness;
fragColor = vec4(finalColor, qt_Opacity);
diff --git a/app/shaders/terminal_static_rgb0_chroma0_bloom0_curve0.frag.qsb b/app/shaders/terminal_static_rgb0_chroma0_bloom0_curve0.frag.qsb
index 262451f..47f35df 100644
Binary files a/app/shaders/terminal_static_rgb0_chroma0_bloom0_curve0.frag.qsb and b/app/shaders/terminal_static_rgb0_chroma0_bloom0_curve0.frag.qsb differ
diff --git a/app/shaders/terminal_static_rgb0_chroma0_bloom0_curve1.frag.qsb b/app/shaders/terminal_static_rgb0_chroma0_bloom0_curve1.frag.qsb
index 5e2d5d8..05c1064 100644
Binary files a/app/shaders/terminal_static_rgb0_chroma0_bloom0_curve1.frag.qsb and b/app/shaders/terminal_static_rgb0_chroma0_bloom0_curve1.frag.qsb differ
diff --git a/app/shaders/terminal_static_rgb0_chroma0_bloom1_curve0.frag.qsb b/app/shaders/terminal_static_rgb0_chroma0_bloom1_curve0.frag.qsb
index 056ed24..8fc19e2 100644
Binary files a/app/shaders/terminal_static_rgb0_chroma0_bloom1_curve0.frag.qsb and b/app/shaders/terminal_static_rgb0_chroma0_bloom1_curve0.frag.qsb differ
diff --git a/app/shaders/terminal_static_rgb0_chroma0_bloom1_curve1.frag.qsb b/app/shaders/terminal_static_rgb0_chroma0_bloom1_curve1.frag.qsb
index 5ba8006..130ef25 100644
Binary files a/app/shaders/terminal_static_rgb0_chroma0_bloom1_curve1.frag.qsb and b/app/shaders/terminal_static_rgb0_chroma0_bloom1_curve1.frag.qsb differ
diff --git a/app/shaders/terminal_static_rgb0_chroma1_bloom0_curve0.frag.qsb b/app/shaders/terminal_static_rgb0_chroma1_bloom0_curve0.frag.qsb
index a983004..27121ef 100644
Binary files a/app/shaders/terminal_static_rgb0_chroma1_bloom0_curve0.frag.qsb and b/app/shaders/terminal_static_rgb0_chroma1_bloom0_curve0.frag.qsb differ
diff --git a/app/shaders/terminal_static_rgb0_chroma1_bloom0_curve1.frag.qsb b/app/shaders/terminal_static_rgb0_chroma1_bloom0_curve1.frag.qsb
index 8b2924a..e87838f 100644
Binary files a/app/shaders/terminal_static_rgb0_chroma1_bloom0_curve1.frag.qsb and b/app/shaders/terminal_static_rgb0_chroma1_bloom0_curve1.frag.qsb differ
diff --git a/app/shaders/terminal_static_rgb0_chroma1_bloom1_curve0.frag.qsb b/app/shaders/terminal_static_rgb0_chroma1_bloom1_curve0.frag.qsb
index 347d934..3a32da6 100644
Binary files a/app/shaders/terminal_static_rgb0_chroma1_bloom1_curve0.frag.qsb and b/app/shaders/terminal_static_rgb0_chroma1_bloom1_curve0.frag.qsb differ
diff --git a/app/shaders/terminal_static_rgb0_chroma1_bloom1_curve1.frag.qsb b/app/shaders/terminal_static_rgb0_chroma1_bloom1_curve1.frag.qsb
index 33265ed..d6cee96 100644
Binary files a/app/shaders/terminal_static_rgb0_chroma1_bloom1_curve1.frag.qsb and b/app/shaders/terminal_static_rgb0_chroma1_bloom1_curve1.frag.qsb differ
diff --git a/app/shaders/terminal_static_rgb1_chroma0_bloom0_curve0.frag.qsb b/app/shaders/terminal_static_rgb1_chroma0_bloom0_curve0.frag.qsb
index e74c8da..e650cab 100644
Binary files a/app/shaders/terminal_static_rgb1_chroma0_bloom0_curve0.frag.qsb and b/app/shaders/terminal_static_rgb1_chroma0_bloom0_curve0.frag.qsb differ
diff --git a/app/shaders/terminal_static_rgb1_chroma0_bloom0_curve1.frag.qsb b/app/shaders/terminal_static_rgb1_chroma0_bloom0_curve1.frag.qsb
index e8b30ee..98dabd8 100644
Binary files a/app/shaders/terminal_static_rgb1_chroma0_bloom0_curve1.frag.qsb and b/app/shaders/terminal_static_rgb1_chroma0_bloom0_curve1.frag.qsb differ
diff --git a/app/shaders/terminal_static_rgb1_chroma0_bloom1_curve0.frag.qsb b/app/shaders/terminal_static_rgb1_chroma0_bloom1_curve0.frag.qsb
index 15a3a32..60c689a 100644
Binary files a/app/shaders/terminal_static_rgb1_chroma0_bloom1_curve0.frag.qsb and b/app/shaders/terminal_static_rgb1_chroma0_bloom1_curve0.frag.qsb differ
diff --git a/app/shaders/terminal_static_rgb1_chroma0_bloom1_curve1.frag.qsb b/app/shaders/terminal_static_rgb1_chroma0_bloom1_curve1.frag.qsb
index 7e3f33a..eaa0658 100644
Binary files a/app/shaders/terminal_static_rgb1_chroma0_bloom1_curve1.frag.qsb and b/app/shaders/terminal_static_rgb1_chroma0_bloom1_curve1.frag.qsb differ
diff --git a/app/shaders/terminal_static_rgb1_chroma1_bloom0_curve0.frag.qsb b/app/shaders/terminal_static_rgb1_chroma1_bloom0_curve0.frag.qsb
index 568fd32..9e39cf3 100644
Binary files a/app/shaders/terminal_static_rgb1_chroma1_bloom0_curve0.frag.qsb and b/app/shaders/terminal_static_rgb1_chroma1_bloom0_curve0.frag.qsb differ
diff --git a/app/shaders/terminal_static_rgb1_chroma1_bloom0_curve1.frag.qsb b/app/shaders/terminal_static_rgb1_chroma1_bloom0_curve1.frag.qsb
index 01d0979..cdebc26 100644
Binary files a/app/shaders/terminal_static_rgb1_chroma1_bloom0_curve1.frag.qsb and b/app/shaders/terminal_static_rgb1_chroma1_bloom0_curve1.frag.qsb differ
diff --git a/app/shaders/terminal_static_rgb1_chroma1_bloom1_curve0.frag.qsb b/app/shaders/terminal_static_rgb1_chroma1_bloom1_curve0.frag.qsb
index 76e9892..65290f0 100644
Binary files a/app/shaders/terminal_static_rgb1_chroma1_bloom1_curve0.frag.qsb and b/app/shaders/terminal_static_rgb1_chroma1_bloom1_curve0.frag.qsb differ
diff --git a/app/shaders/terminal_static_rgb1_chroma1_bloom1_curve1.frag.qsb b/app/shaders/terminal_static_rgb1_chroma1_bloom1_curve1.frag.qsb
index 5a6b759..cb2ef28 100644
Binary files a/app/shaders/terminal_static_rgb1_chroma1_bloom1_curve1.frag.qsb and b/app/shaders/terminal_static_rgb1_chroma1_bloom1_curve1.frag.qsb differ