Флейм
GameDev.ru / Флейм / Форум / Практика процедурного текстурирования (22 стр)

Практика процедурного текстурирования (22 стр)

Поделиться

Страницы: 1 2 3 4 ... 12 ... 21 22 23 Следующая

foxesПостоялецwww9 окт. 201723:49#315
Mikle
А у тебя получиться каждый кирпич повернуть на какой то небольшой случайный угол в пределах десятых/сотых градуса, для эксперимента посмотреть на эффект? И немного сдвинуть центр

Правка: 9 окт. 2017 23:50

MikleМодераторwww10 окт. 20176:29#316
foxes
> А у тебя получиться каждый кирпич повернуть на какой то небольшой случайный
> угол в пределах десятых/сотых градуса, для эксперимента посмотреть на эффект? И
> немного сдвинуть центр
Для этого нужно переделать опорную функцию GenBricks. Это совсем не сложно, просто есть желание обойтись имеющимся в TFScript набором функций, чтобы под каждую новую текстуру не делать обновление TFScript.
Можно сделать это косвенно, как в предыдущей белой стенке - искривляя зазоры.
foxesПостоялецwww10 окт. 201719:15#317
Mikle
Можно это новым фильтром реализовать DistortBricks или с Distortion использовать карту смещения сгенерированую аналогом GenBricks. Но это в любом случае переработка TFScript. Вот по этой причине я отказался от генераторов в пользу чистого текста, особенно когда есть такая штука как shadertoy.

Правка: 10 окт. 2017 19:16

MikleМодераторwww10 окт. 201720:27#318
foxes
> Вот по этой причине я отказался от генераторов в пользу чистого текста,
> особенно когда есть такая штука как shadertoy.
Почему я стараюсь держаться за фиксированный набор функций - я всё ещё не оставил надежду сделать нодовый редактор и сохранение в байт-код, прописывать в нодовом редакторе пользовательские функции сопряжено с необходимостью их потом компилировать, что сложно, либо интерпретировать, что медленно.
foxes
> использовать карту смещения сгенерированую аналогом GenBricks
Да, такая возможность есть, сложнее в поворотами.

Правка: 10 окт. 2017 20:35

gammakerПостоялецwww10 окт. 201720:41#319
Mikle
> прописывать в нодовом редакторе пользовательские функции сопряжено с
> необходимостью их потом компилировать, что сложно, либо интерпретировать, что медленно.
Ну так GPU с шейдерами же напрашивается само собой.
MikleМодераторwww10 окт. 201720:46#320
gammaker
> Ну так GPU с шейдерами же напрашивается само собой.
На GPU куча своих проблем, тот же Normalize или Blur с немалым радиусом, сложные ветвления в программе.
}:+()___ [Smile]Постоялецwww10 окт. 201721:00#321
Mikle
> Blur с немалым радиусом
Гауссово размытие большого радиуса прекрасно ложиться на GPU, надо просто использовать правильные алгоритмы.
SuperInoyПостоялецwww10 окт. 201721:15#322
}:+()___ [Smile]
> Гауссово размытие большого радиуса прекрасно ложиться на GPU
интересно как.
ну и да:
> ложиться
}:+()___ [Smile]Постоялецwww11 окт. 20171:03#323
SuperInoy
> интересно как
(уменьшение в 2 раза с хорошим ядром)N × (основной фильтр с фиксированной сложностью) × (увеличение в 2 раза с хорошим ядром)N.
Я даже как-то пытался наваять статью по этому поводу.
gammakerПостоялецwww11 окт. 20171:05#324
Mikle
> На GPU куча своих проблем, тот же Normalize или Blur с немалым радиусом,
> сложные ветвления в программе.
Normalize можно сделать через O(log(N)) проходов. Или может даже используя построение мипмапов как-нибудь. А в GL 4.x/DX11 есть вычислительные шейдеры, атомарные операции и т.п.. С ними можно наверное и за 1 проход.
gammakerПостоялецwww11 окт. 20171:11#325
}:+()___ [Smile]
> Я даже как-то пытался наваять статью по этому поводу.
А реализации нет? Если будешь делать, можешь попробовать в моём генераторе (тема с информацией). К примеру, размыть эти кирпичи.

Правка: 11 окт. 2017 1:13

}:+()___ [Smile]Постоялецwww11 окт. 20171:57#326
gammaker
> А реализации нет?
Для GPU нет. Только на проце, но с использованием SSE2/AVX2, так что переложить на любую SIMD архитектуру проблем быть не должно.

> Если будешь делать, можешь попробовать в моём генераторе (тема с информацией).
Если будет время, то попробую, только делать полный 2D фильтр мне будет лень, в лучшем случае сделаю размытие в одном направлении.

MikleМодераторwww11 окт. 20179:18#327
gammaker
> вычислительные шейдеры
Это да, уже подходит, но системные требования завышать придётся довольно сильно.
А без вычислительных шейдеров слишком много костылей даже на простых фильтрах, например, последовательно DiffFree и Convex, каждая операция читает значения 4-х соседей, но в одном шейдере подряд Convex должен будет сначала для каждого соседа выполнять DiffFree, чтение соседей в DiffFree вырастает с 4-х до 16-ти раз (можно читать 9 раз, но несколько изменить расчёт). А если подряд не две, а три-четыре таких операции?

Правка: 11 окт. 2017 9:20

gammakerПостоялецwww11 окт. 201710:34#328
Mikle
> А без вычислительных шейдеров слишком много костылей даже на простых фильтрах,
> например, последовательно DiffFree и Convex, каждая операция читает значения
> 4-х соседей, но в одном шейдере подряд Convex должен будет сначала для каждого
> соседа выполнять DiffFree, чтение соседей в DiffFree вырастает с 4-х до 16-ти
> раз (можно читать 9 раз, но несколько изменить расчёт). А если подряд не две, а
> три-четыре таких операции?
Я же не предлагаю делать это всё за один проход в шейдере. Например мы с FordPerfect в моей онлайн-утилите делали текстуры в несколько проходов. Те же DiffFree и Convex можно сделать встроенными функциями и получить то же, что и у тебя в TFScript, только внутри это будет работать на шейдерах. Я даже собирался так сделать у себя, но свободного времени не хватает этим заняться. Ещё в приоритете сначала сделать оптимизатор шейдеров, чтобы они быстрее компилировались.
}:+()___ [Smile]Постоялецwww12 окт. 20170:34#329
}:+()___ [Smile]
> Если будет время, то попробую, только делать полный 2D фильтр мне будет лень, в лучшем случае сделаю размытие в одном направлении.
Короче, вот. Портировал свою CPU версию. Размывает только вдоль оси X, но все шейдеры для произвольного случая там есть.
Очень не хватает нормального способа передавать параметры в шейдеры (или он есть, только я его не нашел?)
Ну и, по-хорошему, byte4 мало, для промежуточных стадий надо повышать точность.

Страницы: 1 2 3 4 ... 12 ... 21 22 23 Следующая

/ Форум / Флейм / Программирование

2001—2017 © GameDev.ru — Разработка игр