Вы не авторизованы.

Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
Fragmenarium. Обсуждение, решение проблем.

ТЕМА: Адаптация GLSL к фрагментариуму.

Адаптация GLSL к фрагментариуму. 5 года 7 мес. назад #1395

  • SCORPION
  • SCORPION аватар
  • Вне сайта
  • Модератор я...
  • Всё получилось, а никто не заметил...(
  • Сообщений: 530
  • Сказали Отлично!: 464
  • Репутация: 38
В связи с всё возрастающим интересом пользователей к замечательной программе Vision Of Chaos (на Деми уже ажиотаж, но, надеюсь, так же будет и у нас) у пользователей возникают некоторые вопросы. Дело в том, что в программу Vision Of Chaos включено огромное количество пресетов GLSL шейдеров.
И это прекрасно, тем более, что практически все шейдеры анимированы, а в программе имеется прекрасная возможность вывода видео. Выводится секвенция, из которой тут же можно сделать видео MPEG4. Но проблемка в другом - недостаточно сглаженном изображении. Кроме этого - как вывести файл изображения неограниченного размера и прекрасного качества?
В программе Vision Of Chaos - никак. А вот тут на помощь нам приходит ещё одна не менее замечательная программа Fragmentarium. Вот в ней то мы можем и вывести сглаженную секвенцию и изображение очень хорошего разрешения из GLSL кода. Но если вы просто скопируете код GLSL из библиотеки Vision Of Chaos и вставите его в фрагментариум - ничего работать не будет. Не беда, сейчас заставим! :lols:

Я не выбираю специально, давайте откроем в программе Vision Of Chaos GLSL шейдер Sample IQ Deform Flower

4_2014-10-27.jpg


Красиво? Теперь сделаем вот что - найдём этот шейдер в библиотеке. Библиотеки у программы Vision Of Chaos расположены по пути:
C:\Users\Public\Documents\Visions Of Chaos (для Windows 7)

5_2014-10-27.jpg


Теперь откроем одноимённый файл, где в имени есть frag.glsl в блокноте.

6_2014-10-27.jpg


Скопируем код и вставим его в новое окно фрагментариума:

7_2014-10-27.jpg


Кликнем "Build" - ничего не работает. Другой бы расстроился и плюнул на это дело, но не SCORPION! :lols:
А я тоже голову поломал, пока догадался, как надо сделать. Дело в том, что GLSL имеет как бы "две половинки" - это вершинный и пиксельный шейдер. То, что мы подключили - это пиксельный шейдер. Где взять вершинный. А он уже есть в фрагментариуме. Причём две модификации. Это
2D.frag и Progressive2D.frag
Надо просто подключить тот или другой. Некоторые шейдеры работают с обеими модификациями, некоторые только с 2D.frag. Попробуем подключить Progressive2D.frag
Кроме того, надо дополнительно вставить строку
vec3 resolution = vec3(1.0/pixelSize.x, 1.0/pixelSize.y, 1.0);

Это необходимо для того, чтобы адаптировать готовый пиксельный шейдер к вершинному фрагментариума. В общем вставляем в самое начало кода две строки:
#include "Progressive2D.frag"
vec3 resolution = vec3(1.0/pixelSize.x, 1.0/pixelSize.y, 1.0);

Вот так:

8_2014-10-27.jpg


Но код по прежнему не запускается... Дело в том, что функция "main" уже есть в вершинном шейдере. И этот фраговский шейдер работает с функцией типа
vec3 color(vec2 J) , которая в конце должна иметь возврат. Что мы делаем? А вот что! Меняем строку void main(void) на vec3 color(vec2 J)
а в конце функции строку
gl_FragColor = vec4( col, 1.0 );
меняем на
return vec4( col, 1.0 );
.

9_2014-10-27.jpg


Ну вот, теперь шейдер нормально запустился на фрагментариуме! Можете включить и полюбоваться анимацией!
Можно было бы так и оставить, но... попробуем отрендерить изображение:

proba-9.jpg


Вот так :dntknw: Кроме того, если вы покрутите колёсико мыши и подвигаете курсором по окну превью с зажатой ЛКМ - ничего не изменится. Почему это происходит? Дело в том, что команда gl_FragCoord жёстко привязывает изображение к окну программы и мы не может двигать его и изменять размер. Меняем команду gl_FragCoord на coord и запускаем шейдер.

10_2014-10-27.jpg


Изображение в окне превью сместилось. Покрутите колёсиком и подвигайте курсором с зажатой ЛКМ. Теперь всё работает! Проверьте рендер - всё ОК!

На этом можно и нужно закончить в случае включения шейдера 2D.frag. Шейдер же Progressive2D.frag использует режим "прогрессиве" для сглаживания изображения.
В данном написании кода эта функция не работает. Дело в том, что у нас в функции vec3 color(vec2 J) есть переменная "J", которая никак не используется и не работает.
Так вот, чтобы режим "прогрессиве" заработал - впишем эту переменную вместо coord. Теперь запустим шейдер и включим в фрагментариуме режим "Progressive".
Визуально заметно улучшение, сглаживание изображения. Всё, мы заставили наши шейдеры работать на все 100%. Как видите, это совсем не сложно!
Да, ещё в коде может встретиться переменная "mouse". Тогда в код надо добавить строку
uniform vec3 mouse; slider[(-1,-1,0),(0,0,0),(1,1,1)]

Вот код GLSL, адаптированный к фрагментариуму:

ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


Ну и в заключение. Не все шейдеры работают с Progressive2D.frag. Некоторые не выдают ошибки, но картинка получается как бы переконтрастной и даже негативной. В этом случае используйте 2D.frag. Если в шейдере есть функция rand, то фраг тоже будет ругаться, можно её закоментить или использовать 2D.frag.
Если возникнут вопросы по какому либо конкретному шейдеру - спрашивайте - будем разбираться!
Кому это надо?
- Никому не надо...
Кому это нужно?
- Никому не нужно...
Последнее редактирование: 5 года 5 мес. назад от SCORPION.
Администратор запретил публиковать записи гостям.
Отлично! сказали: adminus, androceus

Адаптация GLSL к фрагментариуму. 5 года 7 мес. назад #1420

  • androceus
  • androceus аватар
  • Вне сайта
  • Администратор
  • Пришелец
  • Сообщений: 862
  • Сказали Отлично!: 771
  • Репутация: 21
А вот вам ещё домашнее задание! :mlne: Идём сюда: code.google.com/p/orion-flames/downloads/list и качаем такую штуку Orion flames. Распаковываем и запускаем файл OrionFlamesCSharpGui.exe. После нажимаем Start IFS и в выпадающем списке можно выбрать пресет. Прога с помощью GPU в real-time показывает fractal flames. А вот на вкладке справа Pixel shader Code есть код, по которому всё это осуществляется. С ним чего-нибудь можно сделать во Фраге?


ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]
Интернет полезности - мой канал на YouTube. Криптовалютные проекты + полезные советы. Перейти и ознакомится: goo.gl/JgDUJo
Администратор запретил публиковать записи гостям.

Адаптация GLSL к фрагментариуму. 5 года 7 мес. назад #1421

  • SCORPION
  • SCORPION аватар
  • Вне сайта
  • Модератор я...
  • Всё получилось, а никто не заметил...(
  • Сообщений: 530
  • Сказали Отлично!: 464
  • Репутация: 38
Потираю руки - попробую! Люблю такие задачки! А то как то быстро заскучиваю... Или заскучавываю? )))))))

P.S. если промолчу - ничего не получилось.....
Кому это надо?
- Никому не надо...
Кому это нужно?
- Никому не нужно...
Администратор запретил публиковать записи гостям.

Адаптация GLSL к фрагментариуму. 5 года 7 мес. назад #1430

  • androceus
  • androceus аватар
  • Вне сайта
  • Администратор
  • Пришелец
  • Сообщений: 862
  • Сказали Отлично!: 771
  • Репутация: 21
Надеюсь никакого молчания не будет.:)))
А по факту очень надо скомпоновать Fractal flames и скорость рендера GPU. Очень много хороших флеймов есть в Джее. Начал работать с анимацией. Всё бы хорошо, но МЕДЛЕННООООООООООООООООООООООО..... Тем более флеймы сложные, рендерятся долго. Сегодня посчитал: комп в среднем у меня работает 12 часов в день. Рендер в Фулл эйч ди протекает со скоростью (с качеством very High quality) 30-32 кадра за эти 12 часов!!! Грубо говоря 1 секунда видео (при скорости 29, 97 кадров в сек) в день. Это что получается? Но 15 минут ролик (15 минут х 60 сек = 900 сек), мне понадобится 900 дней? Поэтому решил рендерить на просто Эйч ди (1280 х 720), хоть более менее быстрее...
А в Visions of Chaos рендер на GPU? Он Fractal flames понимает? Может рендерить флеймы?
Интернет полезности - мой канал на YouTube. Криптовалютные проекты + полезные советы. Перейти и ознакомится: goo.gl/JgDUJo
Администратор запретил публиковать записи гостям.

Адаптация GLSL к фрагментариуму. 5 года 7 мес. назад #1435

  • SCORPION
  • SCORPION аватар
  • Вне сайта
  • Модератор я...
  • Всё получилось, а никто не заметил...(
  • Сообщений: 530
  • Сказали Отлично!: 464
  • Репутация: 38
О-хохо, там синтаксис другой и ползунки как то внутри кода программы прикручены. Вообще, тема интересная - фрактал flame в фрагментариуме. Но, боюсь, что что либо выйдет интересное... А то, что выйдет, будет лишь напоминать flame, но не быть таковым по сути. dsh3

По факту давно бы надо программистам это сделать! Но вот почему то этого не происходит... Фракториум у меня не работает с GPU. Начинает рендер, видно что видюха загружается, потом ошибка. Но фракториум тоже не справится с джеевскими флеймами. Ещё на GPU есть flam4, так тот тоже только с апошными флеймами работает. Вот и всё, пожалуй. Это пичалька. Если бы Андреас перевёл рендер в джее на GPU, программа бы сразу и навсегда вышла на новый уровень. Но почему это не делается? Я не программист - не могу объяснить...

Андрей, частоты кадров вполне и за глаза хватит 25. 29,97 взята из старого аналогового стандарта NTSC, который был привязан к частоте питающей сети 60 Гц. Вот оттуда и пошло.
Я никогда не делаю такую частоту - это лишнее. Ну и с качеством надо посмотреть. Заметь - если фильм среднего качества остановить стоп-кадром, то картинка будет просо ужасна. А в движении вроде всё нормально. Глаз как бы сам сглаживает движущуюся картинку. Далее - чтобы получить фильм приемлемого размера - его всё равно придётся сжимать кодеками. Это ещё потеря качества и очень значительная. Я вот смотрел с фрага. Несжатое AVI минут пять вешает 3-4 гига. Даже плеер не справляется - тормозит.
Эти пять минут можно сжать нормально и с минимальными потерями где то до 300мБ примерно. Дальше уже идут значительные потери. Ну вот и думай....

Visions of Chaos, собака, GLSL шейдеры обрабатывает на GPU в реальном времени и видео с них выводит так же, это естественно, а вот рендерит картинки на CPU.
Тоже непонятно, почему бы всё не делать на GPU.

Вот такие невесёлые итоги.... dsh3
Кому это надо?
- Никому не надо...
Кому это нужно?
- Никому не нужно...
Администратор запретил публиковать записи гостям.

Адаптация GLSL к фрагментариуму. 5 года 7 мес. назад #1436

  • androceus
  • androceus аватар
  • Вне сайта
  • Администратор
  • Пришелец
  • Сообщений: 862
  • Сказали Отлично!: 771
  • Репутация: 21
Ясненько! Ну ладно. Кстати. некоторая надежда на Fractorium всё же есть. Некоторые флеймы из Джея он всё таки воспринимает и рендерит. Но многие не понимает из-за отсутствия нужных плагинов. Flam4 мало того, что работает только с Апошными флеймами, но ещё только из старой версии принимает. А 30 кадров я делаю, из принципа, чем выше, тем плавнее анимация. Хотя может это и лишнее.
Кстати на форуме Джея, я где-то встречал пожелание Андреасу в будущем сделать рендер на GPU. Учитывая энтузиазм Андреаса, всё возможно! :))))
Интернет полезности - мой канал на YouTube. Криптовалютные проекты + полезные советы. Перейти и ознакомится: goo.gl/JgDUJo
Администратор запретил публиковать записи гостям.
Модераторы: SCORPION
Время создания страницы: 0.323 секунд
1. Erik_Wollo-Blue_Radiance Play
2. Astropilot_Solar Walk IV Play
3. GERMIND _ Cosmicleaf Records Series Vol.14 Play
4. Kyoto_-_Bodhisattva_(Original_Mix) Play
5. Play