Size: a a a

Rust GameDev — русскоговорящее сообщество

2020 December 29

R

Roman in Rust GameDev — русскоговорящее сообщество
В общем каждый SDF объект задается кодом своей SDF
источник

R

Roman in Rust GameDev — русскоговорящее сообщество
на glsl например
источник

R

Roman in Rust GameDev — русскоговорящее сообщество
Пофигу. На чем-то что можно вставить в шейдер который марширует
источник

R

Roman in Rust GameDev — русскоговорящее сообщество
Для начала сойдет функция на glsl
источник

R

Roman in Rust GameDev — русскоговорящее сообщество
Я ее вставляю в код (шаблон intersection shader-а) и компилирую шейдер
источник

R

Roman in Rust GameDev — русскоговорящее сообщество
GPU трейсит лучик и находит потенциальное пересечение, потому что AABB объекта пересеклос с лучиком. Запускает его intersection shader, там идет маршировка и либо находится пересечение, либо нет.
Все, дальше разницы между SDF и полигонами нет
источник

IL

Ilya Lakhin in Rust GameDev — русскоговорящее сообщество
Ну мы тогда немного возвращаемся к вчерашней теме. Динамическая загрузка шейдеров, и в особенности таких объемных, которые строят модель человека, например, штука не быстрая. И она будет вам разрушать опять же всю конфигурацию пайплайна каждый раз.
источник

R

Roman in Rust GameDev — русскоговорящее сообщество
Конечно. Вот только новые объекты в сцене появляются почти никогда
источник

IL

Ilya Lakhin in Rust GameDev — русскоговорящее сообщество
Тогда будут исключительно статические сцены
источник

R

Roman in Rust GameDev — русскоговорящее сообщество
И я могу заранее при загрузке уровня создать библиотеку из всех шейдеров, какие только могу пригодится на этом уровне
источник

R

Roman in Rust GameDev — русскоговорящее сообщество
А если добавится еще что-то, ну ок, пересоздам библиотеку и пайплайн
источник

IL

Ilya Lakhin in Rust GameDev — русскоговорящее сообщество
Вообще, объемный шейдер для конструирования сложной модели может занимать тысячи строк glsl кода, и он будет загружаться вместе со всем пайплайном секунды, если не десятки секунд.
источник

R

Roman in Rust GameDev — русскоговорящее сообщество
При этом мне не надо останавливать рендеринг. Когда создастся новый пайплайн, тогда и подменю
источник

R

Roman in Rust GameDev — русскоговорящее сообщество
Все равно шейдер на CPU паралельно компилироваться будет
источник

IL

Ilya Lakhin in Rust GameDev — русскоговорящее сообщество
Но более существенный вопрос тут даже не в оптимизации, а, повторюсь, в том, как этот самый шейдер пользователь будет конструировать. Это практически не так просто
источник

IL

Ilya Lakhin in Rust GameDev — русскоговорящее сообщество
Ну, у вас будут сцены без анимаций по сути. Без реал-тайм анимаций
источник

R

Roman in Rust GameDev — русскоговорящее сообщество
Ну тут у меня есть пара идей
источник

R

Roman in Rust GameDev — русскоговорящее сообщество
Почему же без анимации?
источник

IL

Ilya Lakhin in Rust GameDev — русскоговорящее сообщество
Потому что шейдеры долго грузятся
источник

R

Roman in Rust GameDev — русскоговорящее сообщество
Никто не запрещает в шейдере переменные иметь
источник