Russian Qt Forum
Апрель 24, 2024, 17:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Стакан воды  (Прочитано 10722 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #15 : Июнь 11, 2020, 11:36 »

Предположим, что GLASS_ETA - IOR воздуха к IOR стакана. А коэффициенты - реализация дисперсии.
Но это не точно.

З.Ы. Жаль автор шейдера удалился с геймдева и не раскрыл его тайны.
Ну чего он хотел - и так ясно. Пусть карта отражения = белое пятно на черном фоне. Тогда очень может быть что красная компонента "дотянется" до пятна, а зеленая нет (или наоборот), получится нечто типа радуги.

Да, в реальной жизни такие эффекты есть, за счет того что различные световые волны имеют разные коэффициенты преломления/отражения.Но разница эта очень мала, поэтому надо очень постараться чтобы увидеть радугу. К данной реализации это не имеет никакого отношения. Ну.. программист имеет имеет право на (творческий) вымысел  Улыбающийся

Я думаю с таким надо прямиком топать на shadertoy.com и искать похожие примеры. Ихний местный гуру Inigo Quilez с демо-команды RGBA и основатель этого ресурса охотно помогает советами и даже кодом, когда видит что кто-то мучается с шейдерами и у него это плохо выходит...

Вот еще статья из гугла, вроде как описывает сам процесс и шаги:
https://developer.nvidia.com/gpugems/gpugems2/part-ii-shading-lighting-and-shadows/chapter-19-generic-refraction-simulation
Какой энергичный, предприимчивый молодой человек Улыбающийся Конечно просторы инета безграничны, и вероятность "найти лучшее" есть всегда. Но ведь найденное нужно как-то осмыслить и оценить, как у Вас с этим?  Улыбающийся

Ссылку Вы дали хорошую, только вот за стакан воды там не берутся. Действительно, для подводного дна - все корректно (разумеется с ограничениями техники карт). Но то же самое для стакана - нет.

Впрочем трудно упрекать автора - ведь та же ошибка делается (и рекомендуется) в "канонических" тьюториалах (видел парочку), откуда все переписывают. Причем очевидно что сквозь стакан мы видим ну совсем не то что должны, но.. так написано в "ссылочке" - и все молчат. Не раз замечал что "технология", увы, работает как "машина отупления". Люди старшего поколения свято верили что все что написано в газете - правда, это было вполне простительно, тогда было другое время. Но сейчас доверять всякой ссылке - ой  Плачущий

Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #16 : Июнь 15, 2020, 07:02 »

Как работает карта/текстура "окружения". Считается что любая точка (что мы сейчас шейдим) стоит в центре бесконечно большой сферы/куба на котором наша текстура. Позиция объекта игнорируется, используется только вектор напр-я, он вычисляется в зависимости от использования (view, reflect, refract). Эта работает хорошо в роли sky/background, но для близлежащих объектов нет. Ведь как-то "облететь окружение" или "зайти за него" нельзя,  мы можем только находиться внутри него. Напр на картинках выше злополучная трубочка поведет себя очень странно и быстро исчезнет если облетать стакан камерой слева или справа.

В случае преломления (refract) мы не получим даже корректного sky. Ведь объект имеет по меньшей мере еще одну заднюю стенку которая тоже преломляет и которую тоже надо учитывать. А так получается что мы смотрим на небо сквозь бесконечную толщу стекла.

В общем, всю эту затею с textureCube следует признать "попыткой с негодными средствами". Какой-то разумной альтернативы не видно, а главное - не видно приличных рез-тов, хотя бы картинок, про анимацию уж молчу, дальше набросков типа выше дело не идет.

Вот тебе, бабушка, и "технология". Заставили учить встроенный язык, осваивать не маленькое API и его обертки (в том же Qt). Понимаю, если хотим задействовать технологию - ей придется овладеть, надо так надо. Но елы-палы, почему для совершенно стандартной, банальной, повседневной и.т.п. задачи данная технология никаких средств не предоставляет Непонимающий Плачущий
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #17 : Июнь 15, 2020, 19:44 »

Наверное не совсем то, что надо, но это стакан, правда без воды  Улыбающийся

https://www.shadertoy.com/view/4s2GDV
Записан

Гугль в помощь
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #18 : Июнь 16, 2020, 06:34 »

Наверное не совсем то, что надо, но это стакан, правда без воды  Улыбающийся

https://www.shadertoy.com/view/4s2GDV
Да, видел там интересные, но увы, они все hard-coded, т.е. модель/специфика стакана вбита в код. Меня бы устроило напр так но видимо придется "закатать губу" Плачущий
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.048 секунд. Запросов: 22.