Тёмный

Процедурная 3D Графика. Ray Marching Tutorial [ OpenGL / GLSL ] 

Standalone Coder
Подписаться 31 тыс.
Просмотров 82 тыс.
50% 1

Это Туториал по созданию процедурной 3D графики при использовании техники трассировки сфер - Ray Marching. В реализации используется библиотека ModernGL для языка Python, а вся работа ведется с OpenGL путем написания фрагментного шейдера GLSL
Ссылка на файл с SDF функциями:
mercury.sexy/hg...
Код проекта:
github.com/Sta...
Inigo Quilez (Полезное по Ray Marching`у):
iquilezles.org...
#standalonecoder

Опубликовано:

 

3 окт 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 153   
@kunalamvet
@kunalamvet 2 года назад
Это. Просто. О...! Одно дело развлекаться с рей марчингом, и совершенно другое создавать с его помощью что-то осмысленное.
@bro_fedka3951
@bro_fedka3951 2 года назад
Здравствуйте ! Вы создаёте уникальный канал БЕЗ ВОДЫ !!! СПАСИБО !!!!! Но мне интересно увидеть применение шейдеров на практике (создание игры / программы). На RU-vid сейчас очень поверхностный контент и этот канал, как остров по среди океана ! Держите планку !!!
@re1elv
@re1elv 2 года назад
Ничего не понимаю, но мне нравится!
@avdim88
@avdim88 2 года назад
Это просто великолепно! Смотреть визуализацию кода в реальном времени - очень круто!
@gandrew8102
@gandrew8102 Год назад
Глаза по-рублю и челюсть на полу ))))))) просто волшебство.........
@honeybadger256
@honeybadger256 2 года назад
По превью даже сразу не понятно что это ваше видео. Очень информативно, спасибо!
@honeybadger256
@honeybadger256 2 года назад
Я про превью, а видео получилось ещё более информативным
@VladKochetov
@VladKochetov 2 года назад
Спасибо за новое видео! Толко вышло, а уже ставлю лайк, ведь знаю что годно
@Maine__Coon__1
@Maine__Coon__1 2 года назад
Я б учился у тебя каждый день)
@mark-tin
@mark-tin 2 года назад
С такими видео постоянно узнаю что то новое!
@Sfinxsx
@Sfinxsx 2 года назад
Нифига себе "базовые вещи..." Я думал я базовые вещи уже освоил.... Где-то я видимо проскочил этот вопрос, опять заново базу штудировать..... p.s. Шикарный материал! Впрочем, как всегда. Это просто волшебство какое-то....
@ACclams1e
@ACclams1e Год назад
Разве это база? База это писать программы используя только лишь бинарный код
@mark-tin
@mark-tin 2 года назад
Почему это не в реках если видно человек старается!
@МаратЯнгличев-й8н
@МаратЯнгличев-й8н 2 года назад
Весь ролик смотрится с открытым ртом.. Это вау конечно. Спасибо большое. Записывайте и дальше.
@Maine__Coon__1
@Maine__Coon__1 2 года назад
Гений 🙂, конечно ждём продолжение, любой ролит крутой нереально, тем более я начинающий, как и многие тут
@ДанилЗарипов-ч5ы
@ДанилЗарипов-ч5ы 2 года назад
Обожаю твои видео! С каждым разом всё интереснее и интереснее. Спасибо за всё.
@NauzRem
@NauzRem 2 года назад
Шикарно, где-то было видео, где тоже рассматривался реймарчинг, но на него ругались из-за того, что когда много объектов (читай формул) - резко падает производительность. А оказывается, можно просто все в одну формулу объединить
@cancent
@cancent 2 года назад
тоесть, при таком способе можно делать тяжелые игры при минимальной нагрузке пк? или полигональная графа производительней?
@NauzRem
@NauzRem 2 года назад
@@cancent полигональная производительнее, хотя бы потому что видеокарты заточены под обсчет полигонов. Сейчас рейкастинг внедряют, так что может быть в ближайшие годы станет как минимум не бесполезно
@Gretanit
@Gretanit 2 года назад
Мне очень интересно к чему можно прийти если еще сильнее дорабатывать и дорабатывать ... Уже получилось красиво!
@timkiryachek9114
@timkiryachek9114 2 года назад
Крайне признателен за полезный контент.
@artromfun
@artromfun 2 года назад
Очень долго ждали, спасибо!
@RigidLight
@RigidLight 2 года назад
Отличнейшая подача материала, спасибо. Будем ждать следующих выпусков, в том числе про обозначенные в конце ролика фишки.
@Shelep524
@Shelep524 Год назад
Как по мнению разработчиков Python создают Unreal Engine:
@dmiyan4204
@dmiyan4204 2 года назад
Спасибо за видео. Очень круто
@MrYankyfanky
@MrYankyfanky 2 года назад
Блин! Очень крутой ролик! Давай продолжение!
@6556
@6556 9 месяцев назад
Очень круто. Спасибо за контент. Еще бы по GLSL туториал бы запилить
@semseriou9763
@semseriou9763 2 года назад
Спасибо за видео, очень интересно!
@SirusStarTV
@SirusStarTV 2 года назад
Почему я подумал что это канал Onigiri, только после открытия видео увидел в рекомендациях видео от Onigiri
@bionicman285
@bionicman285 2 года назад
Как всегда крутяк 😎 спасибо! Да, и про другие техники тоже было бы интересно посмотреть :)
@Anonim-im6ln
@Anonim-im6ln 2 года назад
Воу!😲) Дуже цікаво!) Ви молодець!))😁
@FXUNDPLXGG
@FXUNDPLXGG 2 года назад
Ты гениален, респект :)
@vialomur__vialomur5682
@vialomur__vialomur5682 2 года назад
Вау крутяк спасибо очень интересно!
@yaroslavlukyanets1007
@yaroslavlukyanets1007 2 года назад
Очень годный канал и видео. Сделал что-то похожее но попроще, ну собственно мне больше и не надо. Шар раскрашенный в цвета нормалей (normal / 2 + 0.5) на фоне шахматной доски с освещением и тенями + msaa 4x + туман вдали + небольшое затемнение по краям объектов... каеф))
@rustamtermenusmack7165
@rustamtermenusmack7165 2 года назад
Давай дальше про сглаживание, глобальное освещение, программные тени. Очень интересно. Тоже увлекаюсь этой темой!
@MrMagno-ni5lf
@MrMagno-ni5lf 2 года назад
Это именно то, что я хотел
@alex.artechtattoo
@alex.artechtattoo 2 года назад
Огонь! Однозначно топ контент!
@dancostudio1133
@dancostudio1133 2 года назад
Я не против, очень жду следующее видео.
@beshkekart3909
@beshkekart3909 2 года назад
Очень крутой видос. Ждём продолжения!
@elnurbda
@elnurbda 2 года назад
Офигеть! Большое спасибо за видеоролик!
@vasylcf
@vasylcf 2 года назад
Супер !!! Спасибо
@TheLokomotivbj
@TheLokomotivbj 2 года назад
Спасибо за видео)
@TamerlanSerik-c9h
@TamerlanSerik-c9h 2 года назад
потрясающе , ваш контент однозначно классный но , можете снять ролики по pyglet ? ведь он намного удобнее чем pygame если мы говорим об 3D граффике ведь pyglet основан на OpenGL , а pygame на SDL
@leshalozhkin
@leshalozhkin 2 года назад
Для меня это очень необычно.
@igor6185
@igor6185 2 года назад
Очень интересно, и познавательно!
@vplotnikov
@vplotnikov 2 года назад
Великолепно. Я восхищен
@alexdubkov6998
@alexdubkov6998 2 года назад
Отлично! Просто шикарно!
@ильяесин-х7ш
@ильяесин-х7ш 2 года назад
Мы почти такое же делали на 2 курсе по компьютерной графике.
@dataadvantage1890
@dataadvantage1890 2 года назад
Чувак, ты крут!!!
@limesborderline-indiegame995
@limesborderline-indiegame995 2 года назад
Спасибо за видео. Конечно такой подход не решает все задачи. Потому что возможно делать только с примитивами. Отказываться от полигонов модели не имеет смысла. Но вот применить такой подход для дополнительного функционала к основному можно. И дало возможность задуматься.
@ltva8781
@ltva8781 2 года назад
Одно маленькое замечание: не «демосцена», а «демка» тогда уж. Ну или демонстрация. Кстати, советую глянуть демки от Conspiracy, «Clean Slate», например. Там явно много реймаршинга, иначе всё это в 64 кб не впихнуть.
@ex-format
@ex-format 2 года назад
Спасибо!)) Паралельно писал на телефоне это же.. ну в общем уже просто на сфере со всеми наворотами ФПС просел адски.. а к пека лень идти. Попробую уже в нормальном шейдере отрисовать потом.
@user-nb5mg7zk8f
@user-nb5mg7zk8f 2 года назад
Сними дальше, ооооочень интересно. Кста я так подумал, все объекты там не материальные, что если их сделать непроходимыми и добавить туда хотьбу, как это было сделано в питоновом дууме.
@israinddertou5973
@israinddertou5973 2 года назад
Ну так можешь сделать и поделиться результатом.
@sM1LE289
@sM1LE289 3 месяца назад
Ваааау, ещё немного и будет как в реальной жизни. И вопрос откуда ты берешь инфу?
@максКозлов-ф3ш
@максКозлов-ф3ш 2 года назад
Это ооочень круто, сам смотрю с удовольствием, но понимаю, что тут с моей математикой делать просто нечего (((
@ИльдарБулатов-т4х
@ИльдарБулатов-т4х 2 года назад
хуйня если знаешь математику хотя бы на уровне 11-го класса, то не сложно добавить знаний будет)
@akinat0
@akinat0 2 года назад
Вот, оч круто!
@KiraLis39
@KiraLis39 9 месяцев назад
Что я только что посмотрел? 0_о теперь я знаю, что ни хрена не знаю и не умею в OpenGL...
@ДмитрийЯковлев-д6э
очень круто!!!)))
@DenIndustries
@DenIndustries 11 месяцев назад
Молодец
@VEAGAMES
@VEAGAMES 2 года назад
Круто!
@IshuckShow
@IshuckShow 2 года назад
Лучший 😍
@sayochikun3288
@sayochikun3288 2 года назад
such a short and informative tutorial. i wish it was english. keeping up with the cc is hard
@dmusiienko
@dmusiienko 2 года назад
Интересно
@Центрпочвенногоплодородия
Действительно интересно и познавательно! А вы не проводите частное обучение? Было бы очень интересно разобраться в этой тебе, особенно написание glsl шейдеров и использование их вместе с three.js например. Буду рад ответу по обучению
@hpw-dev
@hpw-dev 2 года назад
Нормально))
@jsonmen
@jsonmen 2 года назад
Сделай видео про DirectPython
@casuale1200
@casuale1200 2 года назад
Пожалуйста расскажи про шум Перлина и процедурную генерацию, текстурирование. Я подписан
@gabrielite5305
@gabrielite5305 2 года назад
Saludos de México
@segeus
@segeus 2 года назад
Можно ли объединять разные типы графики? Например Ray Marching и Voxel графику?
@engineer.s
@engineer.s 2 года назад
Ну нифига себе
@captain_ua
@captain_ua 2 года назад
Сделай программу с механикой из Scratch, что бы можно было перетягивать плитки и делать так события, на python. Было бы очень интересно.
@Dnn324
@Dnn324 2 года назад
В топ!
@ohnocoder
@ohnocoder 2 года назад
Да, было бы очень круто! Можно сделать конструктор шейдеров!
@captain_ua
@captain_ua 2 года назад
@@ohnocoder я имел ввиду типа может игру так сделать из блочков, типа визуального программирования.
@ohnocoder
@ohnocoder 2 года назад
@@captain_ua А какой смысл?
@captain_ua
@captain_ua 2 года назад
@@ohnocoder смысЛ есть у каждого свой, в этом например что такая программа лично для меня была бы полезна, а так же такого вида программу что бы Scratch на питоне, никто не делал, и автор будет перооткрывателем.
@Gangstar-nd9fm
@Gangstar-nd9fm Год назад
Привет. Скажи пожалуйста, как также освоить moderngl? Я его использую для своей игры. С горем пополам научился отрисовывать текстуры в 2D. Сейчас хочу научиться 3Д делать и графики рисовать. До этого не имел дел с OpenGL. Как-то вообщене допираю, как это работает. Может надо с другого чего-то начать. Можешь дать пожалуйста ссылки на источники, по которым ты изучал?
@darkhunter777
@darkhunter777 5 месяцев назад
А почему нельзя было просто запехать файлы моделей из блендера ? Для самой сцены важно иметь ТОЛЬКО кисти ландшафтов - для создания простейшего движка и создания файла для хранения обьектов и их координат, взятых из блендера ? И все готово ?
@guysures125
@guysures125 2 года назад
ЕЕЕЕЕ быстро подписался
@ValeGoG
@ValeGoG 2 года назад
10/10
@Дигидроген
@Дигидроген 2 года назад
Сделай Майнкрафт на pyglet при помощи OpenGL. Я думаю это всем понравится
@MagicMightNew
@MagicMightNew 2 года назад
Невероятно круто. Стало жаль, что в один момент плюнул на шейдерные языки
@Collapse640
@Collapse640 2 года назад
а покажи это ещё и с применением параллакса или же применением нормал мап (короче чтобы сгенерированная текстура была выпуклой )
@TT0tem4ik22
@TT0tem4ik22 11 месяцев назад
Здраствуйте! У меня ошибка при запуске: на 21 строчке во fragment.glsl использует тип данных int , в функции "sgn" И выводит float , что не даëт запуститься программе
@int_DrBass
@int_DrBass 2 года назад
А зачем дополнительные телодвижения если родная система координат OpenGL и так имеет точку 0,0 в центре экрана? Просто создать прямоугольник из координат от -1 до 1 по обеим осям и передавать эти координаты из вершинного шейдера во фрагментный. И тогда не будет привязки к разрешению экрана. Для чисел формата float обязательно надо использовать f в конце, без нее это double, то есть 1.0f это float, а 1.0 уже double. Может и не будет ошибок, но видеокарты с double работают на порядки медленнее А в целом поздравляю, Вы изобрели подход к процедурному моделированию аля Houdini
@antonki8
@antonki8 2 года назад
Привязку к экрану надо всё равно делать, так как надо подсчитать соотношения сторон экрана и поправить одну из осей после нормирования к (-1, 1). Иначе картинка была бы сплющена по оси. В GLSL по дефолту float если не указан литерал у числа с плавающей точкой.
@StandaloneCoder
@StandaloneCoder 2 года назад
Суффиксы GLSL согласно спецификации 4.6: 1.0f, 1.0F - float 1.0lf, 1.0LF - double
@kainwarder8841
@kainwarder8841 2 года назад
Больше тянок на превью - больше просмотров, дерзай
@renab5125
@renab5125 2 года назад
vertex_shader ============= 0(4) : error C0000: syntax error, unexpected '(', expecting "::" at token "(" Подскажите как решить данную проблему?????????
@StandaloneCoder
@StandaloneCoder 2 года назад
В описании есть ссылка на код проекта
@RuVl_13
@RuVl_13 2 года назад
Очень понравилось ваше видео, но когда пытался повторить, у меня не появляются тени (7:22), хотя делаю всё в точности как на видео. Помогите пожалуйста!
@StandaloneCoder
@StandaloneCoder 2 года назад
странно, а попробуйте реализовать тени так, как сделано в следующей части - ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-2fcO9RUOGg4.html
@红警西湖
@红警西湖 2 года назад
你好,视频6分20秒处的321倒计时是用glsl实现的吗? алло, видео 6: 20 секунд на месте 321 обратного отсчета выполнено с помощью glsl?
@StandaloneCoder
@StandaloneCoder 2 года назад
@DimPerch
@DimPerch 2 года назад
Не удалось запустить( fragment_shader =============== ERROR: 0:727: 'pMod1' : no matching overloaded function found (using implicit conversion) ERROR: 0:727: 'pMod1' : function is not known
@Shayth-
@Shayth- 2 года назад
Точно такая же ошибка с этой функцией( Её можно убрать из кода, но в таком случае в готовом рендере не будет этих арок. Есть какой-то способ заменить эту функцию?
@clashes4d34
@clashes4d34 2 года назад
wow
@dabll0236
@dabll0236 2 года назад
Насколько openGl все еще держит планку в качестве граф. библы? Много кто говорит, что vulkan просто не оставляет шансов openGl
@StandaloneCoder
@StandaloneCoder 2 года назад
Тут в основном же шейдер программировали, он будет тот же что для OpenGL, что и для Vulkan
@valera_kardan
@valera_kardan 2 года назад
Что меньше ресурсов жрёт это или классическая графика?
@DenisTrebushnikov
@DenisTrebushnikov 2 года назад
Для чистоты эксперимента: в анриле создай сто сфер с материалом бетона (цвет, спекулар, рафнес, дисплейсмент или эмбиент окклюжн, и карта нормалей - стандарт, в общем), через консольные команды stat unit и stat rhi открой статистику, чтобы посмотреть, сколько занимает отрисовка на CPU и GPU... а затем попробуй воссоздать дисплейсмент, рафнес и спекулар текстуры через нойз ноду. Касательно очевидного вывода увеличения времени на обработку кадра на CPU и почти неизменного времени GPU мы можем сказать, что классическая графика жрет меньше при большом количестве объектов в сцене, но все шейдеры с G-buffer (PBR) все равно напиcаны на glsl или hlsl. именно для отдельных элементов (понтовых vfx) и срезают полигоны и размер текстур.
@valera_kardan
@valera_kardan 2 года назад
@@DenisTrebushnikov Спасибо
@last8exile
@last8exile 2 года назад
Возможно ли на питоне рекомпилить шейдер в рантайме? А то без динамической топологии мира как-то ограничено всё. Я смог извратится и в Unity сделать частично динамическую топологию. Прокидываю в шейдер структурированный массив фигур, операций над ними и всех параметров. Весь массив является аналогом математического выражения записанного в обратной польской нотации. Каждый вызов Map запускает цикл по массиву, каждую итерацию switch выбирает между функциями фигур и операций. Результаты сэмпла фигур кладутся в стек. Для операций аргументы достаются из стека и результат кладётся в стек. Собственно switch и использование стека идут мимо архитектуры GPU и хоть и работают, но лютейше садят производительность. Больше всего мне в рэймарчинге нравится то, что каждый объект может быть идеально гладким кривым зеркалом. И таких зеркал в сцене может быть бесконечность. И все немного разные, и все работают как настоящие зеркала, а не как в играх извращаются с Reflection Probe, Screen Space Reflections и другими. RTX до таких масштабов тоже не годится.
@exuler525
@exuler525 2 года назад
как реализовать soft min функцию в вашем ray marching'е
@РоманКруглов-и8в
@РоманКруглов-и8в 2 года назад
когда подключил библиотеку с sdf функиями сразу заругалось что одна из функций возвращает значение другого типа... как это исправить? чтобы если функция возвращает float, а после return стоит целое число, то это число преобразовалось бы в нужный тип float? moderngl.error.Error: GLSL Compiler failed fragment_shader =============== 0:189(2): error: `return' with wrong type int, in function `sgn' returning float
@TT0tem4ik22
@TT0tem4ik22 11 месяцев назад
Также самая проблема в функции fOpUnionID
@Devyatyi9
@Devyatyi9 2 года назад
А в этой реализации есть ведь возможносность добавления прозрачности объектам
@user20213A
@user20213A 2 года назад
Привет, как думаешь, есть смысл учить openGL или сразу начинать учить Vulkan? Говорят, что многие компании отказываются от использования openGL
@StandaloneCoder
@StandaloneCoder 2 года назад
OpenGL более прост в изучении, чем Vulkan, хорошо изучать его как для старта. Тем более шейдеры на том же GLSL пишутся как в Вулкане, так и в OpenGL
@user20213A
@user20213A 2 года назад
@@StandaloneCoder спасибо, ещё вопрос. Большинство уроков по openGL на c++, но я пишу на Java, по сути ведь не должно быть разницы синтаксиса в openGL в обертках на разные языки, ведь это одна и та же библиотека?
@StandaloneCoder
@StandaloneCoder 2 года назад
@@user20213A большой разницы не будет, везде суть одна и та же - создание контекста, VAO, VBO, шейдеры
@user20213A
@user20213A 2 года назад
@@StandaloneCoder спасибо, не подскажешь ресурсы для изучения актуальной информации, я вот как раз на первом курсе подтянул знания по линалу и ангему, думаю должно хватить знаний вышмата
@StandaloneCoder
@StandaloneCoder 2 года назад
@@user20213A да, знаний в объеме первого курса техвуза вполне достаточно. Ресурсов много, тот же learnopengl вполне хорош
@falongor6836
@falongor6836 2 года назад
Можно теперь другие темы?
@segeus
@segeus 2 года назад
Можно ли реализовать это на C++? Что на счёт Unreal Engine?
@StandaloneCoder
@StandaloneCoder 2 года назад
Язык может быть какой угодно, просто нужен модуль для работы с OpenGL. А шейдеры все равно писать будете на GLSL независимо от используемого языка (C++, C#, Python, Java и т.п.)
@sergioostanioni5390
@sergioostanioni5390 2 года назад
Очень интересно. А можно в этот дворец добавить телевизор? Настоящий телевизор, который что-то показывает. Где подобное применяется? Для игр, так понимаю, есть движки, для 3д моделинга тоже софт есть, а вот в чистом виде, как Вы делаете.
@StandaloneCoder
@StandaloneCoder 2 года назад
Да, добавить можно, телевизор или изображение с камеры. Так ведь движки и софт на основе OpenGL (Vulkan, DirectX, Metal) сделаны
@АбдурахмонНугманов
Послушай!откуда ты такие крутые модули находишь?
@qazwsxertyuhg2875
@qazwsxertyuhg2875 2 года назад
здравствуйте, супер видео. а как вы изучали OpenGl? Может быть есть какие то ресурсы для этого?
@StandaloneCoder
@StandaloneCoder 2 года назад
Ресурсов много в сети, только старые уроки не смотрите, нужно направление - современный (modern) OpenGL, это про программируемый конвейер
@Дигидроген
@Дигидроген 2 года назад
Что на счёт чего-то более знакомого? Pyglet?
@MAKSOS_91
@MAKSOS_91 2 года назад
Ламберт ламберт хер моржовый, ламберт ламберт вредный х… вспомнилось, так по какой там системе вы говорите, Ламберта?)
@antoniopripizduchi858
@antoniopripizduchi858 Год назад
каким образом он создал игровой движок на пайтоне за 16 минут?
@zener_blitz
@zener_blitz 2 года назад
Старая озвучка была круче!
@aargh95
@aargh95 2 года назад
Где голос Максим ☹️
@denbiggy3835
@denbiggy3835 2 года назад
Интересно, насколько ресурсоёмкий данный подход?
@StandaloneCoder
@StandaloneCoder 2 года назад
Интегированная графика в Ryzen7 5800h выдает 70 fps
Далее
Пишем свой движок 3D-графики
19:25
ОВР Шоу:  Семейные понты  @ovrshow_tnt
07:21
Signed Distance Functions & Ray-Marching
24:14
Просмотров 30 тыс.
An introduction to Raymarching
34:03
Просмотров 142 тыс.
I Made A Blob Shooting Game With Ray Marching
13:33
Просмотров 40 тыс.
It Takes Two, lava lamps, Raymarching in Godot 4.1.
12:42
Пишу 3D Движок на Python [ Pygame + Numpy ]
21:56
Ray Marching for Dummies!
29:46
Просмотров 236 тыс.