1 Attachment(s)
Custom Compiz color filter
Hi all!
I just wanted to share with the community a color filter for the Color Filter plugin in Compiz that I had thought of and made, by looking at the sample filters. I used to love the negative plugin, which inverts the colors of the screen. I use it in the nighttime when the screen is just too bright for reading text or for coding. I prefer white text on a black background and maybe that's just me. But for those of you use the Negative plugin for the same reason as I do, read on!
What I don't like about the Negative plugin is that it also inverts the colors and it makes it hard to recognize some icons, such is the status icons in your IM client (green for online, red for busy, etc). So I've made a plugin for the Color Filter plugin (not the Negative plugin) which inverts black and white but keeps the original color. Here is the code for the filter:
Code:
!!ARBfp1.0
TEMP temp, neg, red, green, blue;
TEX temp, fragment.texcoord[0], texture[0], RECT;
RCP neg.a, temp.a;
MAD temp.rgb, -neg.a , temp, 1.0;
MUL temp, temp.a, temp;
ADD green, temp.r, temp.b;
ADD red, temp.g, temp.b;
ADD blue, temp.r, temp.g;
MUL red, red, 0.5;
MUL green, green, 0.5;
MUL blue, blue, 0.5;
MOV temp.r, red;
MOV temp.b, blue;
MOV temp.g, green;
MUL temp, fragment.color, temp;
MOV result.color, temp;
END
To use this, run the following commands:
Code:
cd /usr/share/compiz/filters/
sudo gedit nightmode
Copy and paste the code for the filter into the text editor, save it and close it.
Now open ccsm (CompizConfig Settings Manager) and turn on the Color Filter. Set your preferred keybindings and click New. Find the filter file in /usr/share/compiz/filters.
That's it. :D
I have attached a screenshot of the result.
Please comment and tell me what you think and if you have better code to get the same result, let me know! After all, I didn't know what I was coding. It was trial-and-error and took me about 50 minutes to get this.
Re: Custom Compiz color filter
Very cool! Thanks for sharing.
How did you figure out how to write it, though? I haven't found any documentation on the scripting language. :confused:
Re: Custom Compiz color filter
Quote:
Originally Posted by
BionicSeahorse
Very cool! Thanks for sharing.
How did you figure out how to write it, though? I haven't found any documentation on the scripting language. :confused:
You're welcome!
I found this documentation:
http://wiki.compiz.org/Plugins/Colorfilter
which links to
OpenGL Fragment Program, the language used for the filters.
For the most part, it was trial-and-error. I looked at the negative filter and the "swapping colors" filters for reference.
Re: Custom Compiz color filter
How would one only invert non-menu elements of a window?
Re: Custom Compiz color filter
Quote:
Originally Posted by
baisong
How would one only invert non-menu elements of a window?
It's not possible with this plugin. I'm not sure that it's even possible to do it with compiz.
Re: Custom Compiz color filter
I have made some changes to the filter. This new one has better contrast, and I've changed the way the color is calculated.
Code:
!!ARBfp1.0
TEMP temp, mean, diff;
TEX temp, fragment.texcoord[0], texture[0], RECT;
MUL mean, temp.r, 0.3;
MAD mean, temp.g, 0.59, mean;
MAD mean, temp.b, 0.11, mean;
MAD diff, -2.0, mean, 1.0;
ADD_SAT temp.r, temp.r, diff;
ADD_SAT temp.g, temp.g, diff;
ADD_SAT temp.b, temp.b, diff;
MUL temp, fragment.color, temp;
MOV result.color, temp;
END
***Note: There is still a problem with filtering the window decorations, so please turn that off in the Color Filter plugin. The alpha of the shadow from the window decoration seems to get flipped.
Re: Custom Compiz color filter
Anyone knows how to add the colorfilter to startup? So I wouldn't need to press <super>+d every time I turn the pc on?
Re: Custom Compiz color filter
Never mind solved adding to startup a scrip with the following code
Code:
#!/bin/bash
sleep 20s && dbus-send --type=method_call --dest=org.freedesktop.compiz /org/freedesktop/compiz/colorfilter/allscreens/toggle_screen_key org.freedesktop.compiz.activate string:'root' int32:`xwininfo -root | grep id: | awk '{ print $4}'` &
I'm working with a fake RGBA color filter:
Code:
!!ARBfp1.0
TEMP texv, rep;
TEX texv, fragment.texcoord[0], texture[0], RECT;
MOV rep, {0.196078431, 0.196078431, 0.192156863};
SUB rep, rep, texv;
ABS rep, rep;
MAX rep.b, rep.b, rep.r;
MAX rep.b, rep.b, rep.g;
SUB rep.b, rep.b, 0.0001;
CMP rep.b, rep.b, 0.9, 1;
MUL texv, texv, rep.b;
MOV result.color, texv;
END
but I'd like to filter more than 1 color... Is there a way to load more than one filter at once in colorfilter? Or anyone knows how to change the code above to add more colors?
Re: Custom Compiz color filter
Just to share a little bit as well I added two filters to my setup. Both of them are red based, very helpful for when you want to keep your night vision intact, like when you are out at sea and have the night watch. Of course they even work on my Windows XP VirtualBox so you would be able to use those win programs you might miss.
First one is night-vision-negative
Code:
!!ARBfp1.0
TEMP temp, neg;
TEX temp, fragment.texcoord[0], texture[0], RECT;
RCP neg.a, temp.a;
MAD temp.rgb, -neg.a, temp, 1.0;
MUL temp.rgb, temp.a, temp;
MUL temp, fragment.color, temp;
SUB temp.gb, temp, temp;
MOV result.color, temp;
END
Second one is just night-vision, it is slightly brighter
Code:
!!ARBfp1.0
TEMP temp, neg;
TEX temp, fragment.texcoord[0], texture[0], RECT;
RCP neg.a, temp.a;
MUL temp.rgb, temp.a, temp;
MUL temp, fragment.color, temp;
SUB temp.gb, temp, temp;
MOV result.color, temp;
END
Thanks Compiz guys, great code!!
Re: Custom Compiz color filter
Wow, the documentation on this is intense.
I am looking for a filter that filters all blue light out. Kind like through a red or amber lense.
I am not sure if this coincides with night vision BUT when blue light hits your eyes it basically tells your brain not to produce melatonin. I have been using blue blockers sunglasses (remember those?) at night to use my computer to not mess up my sleep. The white in the text using the above filters has to much blue light in the white.
Any help would be great. Tried a few things.
The best seems to be the first one by jsgoodall. Thank you.