diff --git a/prefs.js b/prefs.js index 392e57c..9dc4ae4 100644 --- a/prefs.js +++ b/prefs.js @@ -48,6 +48,7 @@ var PreferencesDialog = class PreferencesDialog { this._bindSwitch('destroy-dialogs'); this._bindAdjustment('flame-movement-speed'); this._bindAdjustment('flame-scale'); + this._bindSwitch('flame-3d-noise'); this._bindColorButton('fire-color-1'); this._bindColorButton('fire-color-2'); this._bindColorButton('fire-color-3'); diff --git a/resources/ui/gtk3.ui b/resources/ui/gtk3.ui index 2f89d09..0c01ee4 100644 --- a/resources/ui/gtk3.ui +++ b/resources/ui/gtk3.ui @@ -426,6 +426,70 @@ + + + 10 + 10 + 10 + 10 + 0 + 0 + + + 8 + + + vertical + 3 + + + Use a 3D Noise + 0 + start + center + 1 + + + + + Makes the fire look more interesting at the cost of performance. + 0 + start + center + 1 + + + + + + + + end + center + + + + + + + edit-clear-symbolic + 1 + + + Reset to Default Value + + + + + + + + 10 diff --git a/resources/ui/gtk4.ui b/resources/ui/gtk4.ui index 4db7634..0cb151e 100644 --- a/resources/ui/gtk4.ui +++ b/resources/ui/gtk4.ui @@ -355,6 +355,59 @@ + + + 0 + + + + + vertical + 3 + + + Use a 3D Noise + 0 + start + center + 1 + + + + + Makes the fire look more interesting at the cost of performance. + 0 + start + center + 1 + + + + + + + + end + center + + + + + edit-clear-symbolic + Reset to Default Value + + + + + + + + 0 diff --git a/schemas/org.gnome.shell.extensions.burn-my-windows.gschema.xml b/schemas/org.gnome.shell.extensions.burn-my-windows.gschema.xml index 08e45c5..d19bbf3 100644 --- a/schemas/org.gnome.shell.extensions.burn-my-windows.gschema.xml +++ b/schemas/org.gnome.shell.extensions.burn-my-windows.gschema.xml @@ -41,6 +41,12 @@ The size of the flames. + + false + Flame 3D Noise + Use a 3D noise for the flames. + + "rgba(76, 51, 25, 0.0)" Fire Color 1 diff --git a/src/extension/FireShader.js b/src/extension/FireShader.js index d330d70..62de0eb 100644 --- a/src/extension/FireShader.js +++ b/src/extension/FireShader.js @@ -124,8 +124,12 @@ var FireShader = GObject.registerClass({Properties: {}, Signals: {}}, // Get a noise value which moves vertically in time. vec2 uv = cogl_tex_coord_in[0].st * vec2(uSizeX, uSizeY) / FIRE_SCALE; uv.y += uTime * FIRE_SPEED; - float noise = noise2D(uv * 7.5, 5); - // float noise = noise3D(vec3(uv*7.5, uTime*FIRE_SPEED*4.0), 5); + + #if ${settings.get_boolean('flame-3d-noise') ? 1 : 0} + float noise = noise3D(vec3(uv*7.5, uTime*FIRE_SPEED*3.0), 5); + #else + float noise = noise2D(uv * 7.5, 5); + #endif // Modulate noise by effect mask. vec2 effectMask = effectMask(HIDE_TIME, FADE_WIDTH, EDGE_FADE);