resync and updated
This commit is contained in:
@@ -23,6 +23,10 @@ uniform vec4 uGradient3;
|
|||||||
uniform vec4 uGradient4;
|
uniform vec4 uGradient4;
|
||||||
uniform vec4 uGradient5;
|
uniform vec4 uGradient5;
|
||||||
|
|
||||||
|
//new
|
||||||
|
uniform bool uRandomColor;
|
||||||
|
uniform float uSeed;
|
||||||
|
|
||||||
// These may be configurable in the future.
|
// These may be configurable in the future.
|
||||||
const float EDGE_FADE = 70.0;
|
const float EDGE_FADE = 70.0;
|
||||||
const float FADE_WIDTH = 0.1;
|
const float FADE_WIDTH = 0.1;
|
||||||
@@ -58,6 +62,36 @@ vec4 getFireColor(float v) {
|
|||||||
return colors[4];
|
return colors[4];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vec4 getFireColorV2(float v, vec4 c0, vec4 c1, vec4 c2, vec4 c3, vec4 c4)
|
||||||
|
{
|
||||||
|
float steps[5];
|
||||||
|
steps[0] = 0.0;
|
||||||
|
steps[1] = 0.2;
|
||||||
|
steps[2] = 0.35;
|
||||||
|
steps[3] = 0.5;
|
||||||
|
steps[4] = 0.8;
|
||||||
|
|
||||||
|
vec4 colors[5];
|
||||||
|
colors[0] = c0;
|
||||||
|
colors[1] = c1;
|
||||||
|
colors[2] = c2;
|
||||||
|
colors[3] = c3;
|
||||||
|
colors[4] = c4;
|
||||||
|
|
||||||
|
if (v < steps[0]) {
|
||||||
|
return colors[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < 4; ++i) {
|
||||||
|
if (v <= steps[i + 1]) {
|
||||||
|
return mix(colors[i], colors[i + 1],
|
||||||
|
vec4(v - steps[i]) / (steps[i + 1] - steps[i]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return colors[4];
|
||||||
|
}
|
||||||
|
|
||||||
// This method requires the uniforms from standardUniforms() to be available.
|
// This method requires the uniforms from standardUniforms() to be available.
|
||||||
// It returns two values: The first is an alpha value which can be used for the window
|
// It returns two values: The first is an alpha value which can be used for the window
|
||||||
// texture. This gradually dissolves the window from top to bottom. The second can be used
|
// texture. This gradually dissolves the window from top to bottom. The second can be used
|
||||||
@@ -114,7 +148,28 @@ void main() {
|
|||||||
noise *= effectMask.y;
|
noise *= effectMask.y;
|
||||||
|
|
||||||
// Map noise value to color.
|
// Map noise value to color.
|
||||||
vec4 fire = getFireColor(noise);
|
vec4 fire = vec4(0.0);
|
||||||
|
|
||||||
|
if (uRandomColor)
|
||||||
|
{
|
||||||
|
vec3 baseColor0 = offsetHue(vec3(1.0,0.0,0.0), hash11(uSeed));
|
||||||
|
vec3 baseColor1 = offsetHue(baseColor0, 0.1);
|
||||||
|
vec3 baseColor2 = offsetHue(baseColor1, 0.1);
|
||||||
|
|
||||||
|
//hardcoding alpha values
|
||||||
|
vec4 c0 = vec4(baseColor0,0.0);
|
||||||
|
vec4 c1 = vec4(baseColor0,0.3);
|
||||||
|
vec4 c2 = vec4(baseColor1,0.6);
|
||||||
|
vec4 c3 = vec4(baseColor1,0.9);
|
||||||
|
vec4 c4 = vec4(baseColor2,1.0);
|
||||||
|
|
||||||
|
|
||||||
|
fire = getFireColorV2(noise,c0,c1,c2,c3,c4);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fire = getFireColor(noise);
|
||||||
|
}
|
||||||
|
|
||||||
// Get the window texture.
|
// Get the window texture.
|
||||||
vec4 oColor = getInputColor(iTexCoord.st);
|
vec4 oColor = getInputColor(iTexCoord.st);
|
||||||
|
|||||||
@@ -147,6 +147,28 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
|
|
||||||
|
<child>
|
||||||
|
<object class="AdwActionRow">
|
||||||
|
<property name="title" translatable="yes">Use Random Color</property>
|
||||||
|
<property name="activatable-widget">fire-random-color</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkSwitch" id="fire-random-color">
|
||||||
|
<property name="valign">center</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="reset-fire-random-color">
|
||||||
|
<property name="icon-name">edit-clear-symbolic</property>
|
||||||
|
<property name="valign">center</property>
|
||||||
|
<property name="tooltip-text" translatable="yes">Reset to Default Value</property>
|
||||||
|
<style>
|
||||||
|
<class name="flat" />
|
||||||
|
</style>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
|
||||||
<child>
|
<child>
|
||||||
<object class="AdwActionRow">
|
<object class="AdwActionRow">
|
||||||
<property name="title" translatable="yes">Gradient</property>
|
<property name="title" translatable="yes">Gradient</property>
|
||||||
|
|||||||
@@ -242,6 +242,12 @@ SPDX-License-Identifier: CC0-1.0
|
|||||||
<description>The size of the fire.</description>
|
<description>The size of the fire.</description>
|
||||||
</key>
|
</key>
|
||||||
|
|
||||||
|
<key name="fire-random-color" type="b">
|
||||||
|
<default>false</default>
|
||||||
|
<summary>use a random color for the fire</summary>
|
||||||
|
<description>use a random color of the fire</description>
|
||||||
|
</key>
|
||||||
|
|
||||||
<key name="fire-3d-noise" type="b">
|
<key name="fire-3d-noise" type="b">
|
||||||
<default>false</default>
|
<default>false</default>
|
||||||
<summary>Fire 3D Noise</summary>
|
<summary>Fire 3D Noise</summary>
|
||||||
|
|||||||
@@ -12,6 +12,8 @@
|
|||||||
// SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
|
// SPDX-FileCopyrightText: Simon Schneegans <code@simonschneegans.de>
|
||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
// modified by Justin Garza <JGarza9788@gmail.com>
|
||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
import Gio from 'gi://Gio';
|
import Gio from 'gi://Gio';
|
||||||
@@ -58,6 +60,9 @@ export default class Effect {
|
|||||||
shader._uScale = shader.get_uniform_location('uScale');
|
shader._uScale = shader.get_uniform_location('uScale');
|
||||||
shader._uMovementSpeed = shader.get_uniform_location('uMovementSpeed');
|
shader._uMovementSpeed = shader.get_uniform_location('uMovementSpeed');
|
||||||
|
|
||||||
|
shader._uRandomColor = shader.get_uniform_location('uRandomColor');
|
||||||
|
shader._uSeed = shader.get_uniform_location('uSeed');
|
||||||
|
|
||||||
// And update all uniforms at the start of each animation.
|
// And update all uniforms at the start of each animation.
|
||||||
shader.connect('begin-animation', (shader, settings) => {
|
shader.connect('begin-animation', (shader, settings) => {
|
||||||
for (let i = 1; i <= 5; i++) {
|
for (let i = 1; i <= 5; i++) {
|
||||||
@@ -68,6 +73,8 @@ export default class Effect {
|
|||||||
|
|
||||||
// clang-format off
|
// clang-format off
|
||||||
shader.set_uniform_float(shader._u3DNoise, 1, [settings.get_boolean('fire-3d-noise')]);
|
shader.set_uniform_float(shader._u3DNoise, 1, [settings.get_boolean('fire-3d-noise')]);
|
||||||
|
shader.set_uniform_float(shader._uRandomColor, 1, [settings.get_boolean('fire-random-color')]);
|
||||||
|
shader.set_uniform_float(shader._uSeed, 1, [Math.random()]);
|
||||||
shader.set_uniform_float(shader._uScale, 1, [settings.get_double('fire-scale')]);
|
shader.set_uniform_float(shader._uScale, 1, [settings.get_double('fire-scale')]);
|
||||||
shader.set_uniform_float(shader._uMovementSpeed, 1, [settings.get_double('fire-movement-speed')]);
|
shader.set_uniform_float(shader._uMovementSpeed, 1, [settings.get_double('fire-movement-speed')]);
|
||||||
// clang-format on
|
// clang-format on
|
||||||
@@ -107,6 +114,7 @@ export default class Effect {
|
|||||||
dialog.bindAdjustment('fire-movement-speed');
|
dialog.bindAdjustment('fire-movement-speed');
|
||||||
dialog.bindAdjustment('fire-scale');
|
dialog.bindAdjustment('fire-scale');
|
||||||
dialog.bindSwitch('fire-3d-noise');
|
dialog.bindSwitch('fire-3d-noise');
|
||||||
|
dialog.bindSwitch('fire-random-color');
|
||||||
dialog.bindColorButton('fire-color-1');
|
dialog.bindColorButton('fire-color-1');
|
||||||
dialog.bindColorButton('fire-color-2');
|
dialog.bindColorButton('fire-color-2');
|
||||||
dialog.bindColorButton('fire-color-3');
|
dialog.bindColorButton('fire-color-3');
|
||||||
@@ -129,6 +137,33 @@ export default class Effect {
|
|||||||
// Initialize the fire-preset dropdown.
|
// Initialize the fire-preset dropdown.
|
||||||
Effect._createFirePresets(dialog);
|
Effect._createFirePresets(dialog);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// enables and disables the color buttons
|
||||||
|
function EnableDisableColorButtons(dialog, state) {
|
||||||
|
|
||||||
|
for (let i = 1; i <= 5; i++) {
|
||||||
|
dialog.getBuilder().get_object('fire-color-' + i).set_sensitive(!state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const switchWidget = dialog.getBuilder().get_object('fire-random-color');
|
||||||
|
if (switchWidget) {
|
||||||
|
// Connect to the "state-set" signal to update preferences dynamically based on
|
||||||
|
// the switch state.
|
||||||
|
switchWidget.connect('state-set', (widget, state) => {
|
||||||
|
EnableDisableColorButtons(dialog,
|
||||||
|
state); // Update sensitivity when the state changes.
|
||||||
|
});
|
||||||
|
|
||||||
|
// Manually call the update function on startup, using the initial state of the
|
||||||
|
// switch.
|
||||||
|
const initialState =
|
||||||
|
switchWidget.get_active(); // Get the current state of the switch.
|
||||||
|
EnableDisableColorButtons(dialog, initialState);
|
||||||
|
} else {
|
||||||
|
// Log an error if the switch widget is not found in the UI.
|
||||||
|
log('Error: \'fire-random-color\' switch widget not found.');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------- API for extension.js
|
// ---------------------------------------------------------------- API for extension.js
|
||||||
|
|||||||
Reference in New Issue
Block a user