Compiz plugins / filter - ordenação

2

Usando o Ubuntu 14.04. No Compiz, eu ativei Negative e OBS plugins (filtros de cores). O que eu quero é que o filtro A seja aplicado após o filtro B (eu quero poder controlar o pedido). Como posso conseguir isso?

Observação: em particular, quero que o filtro Negative seja aplicado antes das configurações de OBS . Para ver porque isso é necessário. Suponha que eu queira 70% de brilho (em OBS) e eu quero inverter as cores (prefiro branco em preto). O que eu quero é:

Original:  Black on White (#000 on #FFF)
After Negative:  #FFF on #000
After OBS (final):  #AAA on #000 (approx).

O que está acontecendo é que o OBS é aplicado primeiro, resultando em:

After OBS:  #000 on #AAA
After Negative (final):  #FFF on #444 (approx).

Como resultado, em geral, mais brilho do que eu quero e aumento de brilho.

    
por WorkWise 19.10.2014 / 11:55

1 resposta

3

Você tem uma boa pergunta. E confirmo que tenho o mesmo comportamento de Neg e OBS no Ubuntu 14.04.1 LTS.

Infelizmente, o desenvolvimento do Compiz para o Ubuntu pára após 10.04 LTS, portanto, nenhum relatório de bugs ou solicitações de recursos sobre o Compiz serão resolvidos mais. Pior ainda, o Ubuntu 12.04 LTS e o 14.04 LTS não possuem o Compiz Color Filter, que resolverá sua tarefa com facilidade (e muito mais).

Atualmente, não há uma solução direta para você. Mas há duas soluções mais ou menos úteis.

  1. Use qualquer janela ou imagem preta como plano de fundo e, na OBS, use Opacidade em vez de Brilho na sua janela de segmentação. Eu uso e funciona bem, mas é estranho quando muitas janelas são abertas.

  2. Existe uma maneira de modificar o filtro Neg para que ele possa escurecer a janela, mas apenas por um valor fixo ...

Um sistema sem CCF não é utilizável para mim. Então eu tomo algum desenvolvimento [1]. Finalmente eu encontrei uma boa maneira de emular CCF usando Neg. E também, erro duradouro com inversão de cores incorreta (inversão semelhante ao Windows (R) ou simples inversão de RGB) foi corrigido por mim. Como obtê-lo:

AVISO, não para máquinas de produção. Experimente primeiro na máquina de teste!

Verifique se você tem a versão correta, ambas as saídas devem corresponder:

$ compiz --version
Compiz 0.9.11.3

$ dd if=/usr/lib/compiz/libneg.so bs=1 skip=46052 count=505

void neg_fragment () {                                   
    vec3 color = vec3(1.0, 1.0, 1.0) - gl_FragColor.rgb; 
    gl_FragColor = vec4(color, gl_FragColor.a);          
}                                                        
 18PluginClassHandlerI9NegWindow10CompWindowLi0EE18PluginClassHandlerI9NegScreen10CompScreenLi0EEN10CompAction9ContainerE9NegScreen9NegWindowN10CompPlugin24VTableForScreenAndWindowI9NegScreen9NegWindowLi0EEE15NegPluginVTable
505+0 records in
505+0 records out

Crie o arquivo neg-patch . Note que "1.0" é o brilho de que você precisa:

void neg_fragment(){;
float l,d,i,a;
vec3 t;
i=gl_FragColor.r;
i=min(i,gl_FragColor.g);
i=min(i,gl_FragColor.b);
a=gl_FragColor.r;
a=max(a,gl_FragColor.g);
a=max(a,gl_FragColor.b);
l=i+a;
d=1.0-l;
t=vec3(gl_FragColor.r+d,gl_FragColor.g+d,gl_FragColor.b+d)*1.0;
gl_FragColor=vec4(t,gl_FragColor.a);
}

Backup:

sudo cp /usr/lib/compiz/libneg.so /usr/lib/compiz/libneg.so.bk

Patch:

printf '
$ dd if=/usr/lib/compiz/libneg.so bs=1 skip=46052 count=505
$ compiz --version
Compiz 0.9.11.3

$ dd if=/usr/lib/compiz/libneg.so bs=1 skip=46052 count=505

void neg_fragment () {                                   
    vec3 color = vec3(1.0, 1.0, 1.0) - gl_FragColor.rgb; 
    gl_FragColor = vec4(color, gl_FragColor.a);          
}                                                        
 18PluginClassHandlerI9NegWindow10CompWindowLi0EE18PluginClassHandlerI9NegScreen10CompScreenLi0EEN10CompAction9ContainerE9NegScreen9NegWindowN10CompPlugin24VTableForScreenAndWindowI9NegScreen9NegWindowLi0EEE15NegPluginVTable
505+0 records in
505+0 records out
' >> neg-patch; cat neg-patch | sudo dd of=/usr/lib/compiz/libneg.so bs=1 seek=46052 conv=notrunc

E verifique:

void neg_fragment(){;
float l,d,i,a;
vec3 t;
i=gl_FragColor.r;
i=min(i,gl_FragColor.g);
i=min(i,gl_FragColor.b);
a=gl_FragColor.r;
a=max(a,gl_FragColor.g);
a=max(a,gl_FragColor.b);
l=i+a;
d=1.0-l;
t=vec3(gl_FragColor.r+d,gl_FragColor.g+d,gl_FragColor.b+d)*1.0;
gl_FragColor=vec4(t,gl_FragColor.a);
}

Reinicie e viola, isso deve funcionar. Às vezes até leva para trabalhar imediatamente. Nós construímos nosso próprio filtro CCF!

E tudo isso mostra que toda a funcionalidade necessária para implementar o CCF existe dentro do atual Compiz. Portanto, não há razão real para remover o CCF tão útil do Compiz de Ububtu, exceto a preguiça?

Esta solução também é compatível com os efeitos da melatonina / cor fria / quente, como descrito nos posts de lian1238 em [1]. Note que você nunca deve exceder 500 bytes de tamanho do seu arquivo neg-patch !

Espero que ajude.

-jpka

[1] link

    
por jpka 19.01.2015 / 19:47