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