Расширения Gnome Shell: переназначение цветов в шейдере в соответствии с таблицей поиска - PullRequest
0 голосов
/ 07 октября 2019

Я пытаюсь написать расширение на основе https://extensions.gnome.org/extension/1041/invert-window-color/, которое сопоставляет цвета из определенных окон в соответствии с таблицей цветов и с помощью шейдера. Это для старого приложения, которое использует таблицы псевдоцветов, которые, насколько я знаю, больше не поддерживаются.

Мой первый подход - использование текстуры для таблицы поиска. Можно ли передать пользовательскую текстуру шейдеру отдельно от стандартной текстуры cogl? Я хочу передать текстуру color_lookup примерному шейдеру из extension.js ниже. Все найденные расширения используют только текстуры по умолчанию, предоставляемые cogl / clutter. Хотя существует возможность установки униформы в Clutter.ShaderEffect с помощью set_uniform_value, я не знаю, как загрузить или связать текстуру.

Я также уже пытался использовать массив (одинаковый / постоянный) в качестве таблицы поискано, похоже, его нельзя использовать с различными индексами, такими как значения, взятые из встроенной текстуры.

uniform sampler2D tex;  //default cogl texture
uniform sampler1D color_lookup;

void main(){
  vec4 color = texture2D(tex, cogl_tex_coord_in[0].st);
  color.rgb = texture1D(color_lookup, color.r).rgb;
  cogl_color_out = color;
}
...