Size: a a a

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

2020 December 17

IL

Ilya Lakhin in RU Rust GameDev — русскоговорящее сообщество
@adeeee6622 Привет! Ну тут вопрос в задачах. Вообще говоря для ознакомления с темой я бы рекомендовал сайт Иниго Квилеза: https://www.iquilezles.org/www/index.htm Это статьи с разными практическими прикладными решениями в этой области.
источник

IL

Ilya Lakhin in RU Rust GameDev — русскоговорящее сообщество
Что именно требуется от такой библиотеки?
источник

IL

Ilya Lakhin in RU Rust GameDev — русскоговорящее сообщество
Какая конечная цель?
источник

A

Adevald in RU Rust GameDev — русскоговорящее сообщество
Конечная цель научить её её рендерить большие 3д сцены с использованием технологии SDF.

Научить её съедать определённо форматированный в формулах кусок текста, который будет превращаться непосредственно в шейдеры (но это неточно) .
источник

A

Adevald in RU Rust GameDev — русскоговорящее сообщество
Хотелось бы придумать более удобный метод создания и модификации комплексных SDF обьектов
источник

A

Adevald in RU Rust GameDev — русскоговорящее сообщество
И их визуализацию
источник

IL

Ilya Lakhin in RU Rust GameDev — русскоговорящее сообщество
А чем вариант просто сразу в шейдере писать не устраивает?
источник

A

Adevald in RU Rust GameDev — русскоговорящее сообщество
Он не удобен для быстрого создания. Хотим попробовать создать модуль в какой-нибудь 3д софтине для удобного создания сдф визуальный методом
источник

A

Adevald in RU Rust GameDev — русскоговорящее сообщество
Никто же полигональнве сетки сейчас в ручную не задаёт
источник

A

Adevald in RU Rust GameDev — русскоговорящее сообщество
Ilya Lakhin
@adeeee6622 Привет! Ну тут вопрос в задачах. Вообще говоря для ознакомления с темой я бы рекомендовал сайт Иниго Квилеза: https://www.iquilezles.org/www/index.htm Это статьи с разными практическими прикладными решениями в этой области.
Этот сайт знаю
источник

IL

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

Но тут вопрос, повторюсь, именно в целях. Сцена - это очень широкое понятие, как и SDF. SDF это не технология, это просто термин, которым обозначается функция расстояния до поверхности. А маршировка лучей - это техника, по которой можно визуализировать поверхность, заданную такой функцией. Но как строить саму функцию, и как с помощью этого получать конечную сцену - вопрос открытый
источник

IL

Ilya Lakhin in RU Rust GameDev — русскоговорящее сообщество
Ну и самое главное, о каких именно сценах идет речь.
источник

A

Adevald in RU Rust GameDev — русскоговорящее сообщество
Весьма обширная тема. Скорее хотелось бы знать об ограничениях на сам процесс передачи шейдеров из цпу в гпу
источник

A

Adevald in RU Rust GameDev — русскоговорящее сообщество
Для меня тема этого взаимодействия покрыта мраком
источник

IL

Ilya Lakhin in RU Rust GameDev — русскоговорящее сообщество
Ну, для загрузки шейдера в GPU можно действительно воспользоваться обычным OpenGL фрагментным или компью-шейдером
источник

IL

Ilya Lakhin in RU Rust GameDev — русскоговорящее сообщество
Это само по себе относительно тривиально(в случае OpenGL во всяком случае)
источник

IL

Ilya Lakhin in RU Rust GameDev — русскоговорящее сообщество
Вы просто берете текст кода шейдера на языке glsl и загружаете его кажется буквально одной функций. Конкретно как это в OpenGL делается я не помню, нужно API посмотреть, но там в общем-то довольно просто
источник

IL

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

IL

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

IL

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