Eu adoro o recurso de cor da janela invertida no compiz, no entanto, eu adoraria ser capaz de inverter apenas o brilho, preservando o tom original. O que eu gostaria ainda mais seria um recurso global em todas as janelas que o brilho inverta a janela, e se isso é mais escuro que o original, use isso, caso contrário, use o original. Então eu nunca teria que olhar para uma tela branca novamente;).
atualização:
Acho que fazer essa alteração no shader em neg.cpp
pode fazer a versão básica do que desejo. Eu encontrei rgb para hsv rgb código GLSL, injetado isso no shader original, defina o v
para 1.0 - v
(eu estou supondo que o intervalo para value
é 1,0, mas não tenho certeza), então converter o resultado de volta ao rgb e usá-lo como a cor final do pixel:
/* rgb:hsv conversion based on:
http://stackoverflow.com/questions/15095909/from-rgb-to-hsv-in-opengl-glsl */
static std::string fragment_function = " \n\
void neg_fragment () { \n\
// convert to hsv \n\
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); \n\
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); \n\
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); \n\
float d = q.x - min(q.w, q.y); \n\
float e = 1.0e-10; \n\
vec3 c = vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); \n\
// flip luminosity (value) \n\
c.z = 1.0 - c.z \n\
// convert back to rgb \n\
K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); \n\
p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); \n\
c = c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); \n\
// use converted rgb value \n\
gl_FragColor = vec4(c, gl_FragColor.a); \n\
} \n\
";
Eu encontrei o repositório compiz no bazar. Irá procurar o código-fonte e tentar descobrir onde o módulo de cores invertido está implementado
Para qualquer um que esteja se perguntando, o plugin é o plugin "negativo" ou "neg", e a parte relevante do código-fonte é here on bazaar.launchpad.net
Todos os três endereços de e-mail de contato no leia-me original do plug-in ficaram obscuros - se alguém tiver uma maneira de entrar em contato com o desenvolvedor original que seria muito apreciado.
Eu não tenho muito mais tempo para colocar isso, mas se alguém descobrir uma maneira de compilar para compilar e puder testar isso, eu aprecio isso!