Здравствуйте ! Вы создаёте уникальный канал БЕЗ ВОДЫ !!! СПАСИБО !!!!! Но мне интересно увидеть применение шейдеров на практике (создание игры / программы). На RUclips сейчас очень поверхностный контент и этот канал, как остров по среди океана ! Держите планку !!!
Нифига себе "базовые вещи..." Я думал я базовые вещи уже освоил.... Где-то я видимо проскочил этот вопрос, опять заново базу штудировать..... p.s. Шикарный материал! Впрочем, как всегда. Это просто волшебство какое-то....
Шикарно, где-то было видео, где тоже рассматривался реймарчинг, но на него ругались из-за того, что когда много объектов (читай формул) - резко падает производительность. А оказывается, можно просто все в одну формулу объединить
@@cancent полигональная производительнее, хотя бы потому что видеокарты заточены под обсчет полигонов. Сейчас рейкастинг внедряют, так что может быть в ближайшие годы станет как минимум не бесполезно
Очень годный канал и видео. Сделал что-то похожее но попроще, ну собственно мне больше и не надо. Шар раскрашенный в цвета нормалей (normal / 2 + 0.5) на фоне шахматной доски с освещением и тенями + msaa 4x + туман вдали + небольшое затемнение по краям объектов... каеф))
потрясающе , ваш контент однозначно классный но , можете снять ролики по pyglet ? ведь он намного удобнее чем pygame если мы говорим об 3D граффике ведь pyglet основан на OpenGL , а pygame на SDL
Спасибо за видео. Конечно такой подход не решает все задачи. Потому что возможно делать только с примитивами. Отказываться от полигонов модели не имеет смысла. Но вот применить такой подход для дополнительного функционала к основному можно. И дало возможность задуматься.
Одно маленькое замечание: не «демосцена», а «демка» тогда уж. Ну или демонстрация. Кстати, советую глянуть демки от Conspiracy, «Clean Slate», например. Там явно много реймаршинга, иначе всё это в 64 кб не впихнуть.
Действительно интересно и познавательно! А вы не проводите частное обучение? Было бы очень интересно разобраться в этой тебе, особенно написание glsl шейдеров и использование их вместе с three.js например. Буду рад ответу по обучению
Сними дальше, ооооочень интересно. Кста я так подумал, все объекты там не материальные, что если их сделать непроходимыми и добавить туда хотьбу, как это было сделано в питоновом дууме.
Спасибо!)) Паралельно писал на телефоне это же.. ну в общем уже просто на сфере со всеми наворотами ФПС просел адски.. а к пека лень идти. Попробую уже в нормальном шейдере отрисовать потом.
А почему нельзя было просто запехать файлы моделей из блендера ? Для самой сцены важно иметь ТОЛЬКО кисти ландшафтов - для создания простейшего движка и создания файла для хранения обьектов и их координат, взятых из блендера ? И все готово ?
Здраствуйте! У меня ошибка при запуске: на 21 строчке во fragment.glsl использует тип данных int , в функции "sgn" И выводит float , что не даëт запуститься программе
Возможно ли на питоне рекомпилить шейдер в рантайме? А то без динамической топологии мира как-то ограничено всё. Я смог извратится и в Unity сделать частично динамическую топологию. Прокидываю в шейдер структурированный массив фигур, операций над ними и всех параметров. Весь массив является аналогом математического выражения записанного в обратной польской нотации. Каждый вызов Map запускает цикл по массиву, каждую итерацию switch выбирает между функциями фигур и операций. Результаты сэмпла фигур кладутся в стек. Для операций аргументы достаются из стека и результат кладётся в стек. Собственно switch и использование стека идут мимо архитектуры GPU и хоть и работают, но лютейше садят производительность. Больше всего мне в рэймарчинге нравится то, что каждый объект может быть идеально гладким кривым зеркалом. И таких зеркал в сцене может быть бесконечность. И все немного разные, и все работают как настоящие зеркала, а не как в играх извращаются с Reflection Probe, Screen Space Reflections и другими. RTX до таких масштабов тоже не годится.
Привет. Скажи пожалуйста, как также освоить moderngl? Я его использую для своей игры. С горем пополам научился отрисовывать текстуры в 2D. Сейчас хочу научиться 3Д делать и графики рисовать. До этого не имел дел с OpenGL. Как-то вообщене допираю, как это работает. Может надо с другого чего-то начать. Можешь дать пожалуйста ссылки на источники, по которым ты изучал?
@@ohnocoder смысЛ есть у каждого свой, в этом например что такая программа лично для меня была бы полезна, а так же такого вида программу что бы Scratch на питоне, никто не делал, и автор будет перооткрывателем.
А зачем дополнительные телодвижения если родная система координат OpenGL и так имеет точку 0,0 в центре экрана? Просто создать прямоугольник из координат от -1 до 1 по обеим осям и передавать эти координаты из вершинного шейдера во фрагментный. И тогда не будет привязки к разрешению экрана. Для чисел формата float обязательно надо использовать f в конце, без нее это double, то есть 1.0f это float, а 1.0 уже double. Может и не будет ошибок, но видеокарты с double работают на порядки медленнее А в целом поздравляю, Вы изобрели подход к процедурному моделированию аля Houdini
Привязку к экрану надо всё равно делать, так как надо подсчитать соотношения сторон экрана и поправить одну из осей после нормирования к (-1, 1). Иначе картинка была бы сплющена по оси. В GLSL по дефолту float если не указан литерал у числа с плавающей точкой.
Очень интересно. А можно в этот дворец добавить телевизор? Настоящий телевизор, который что-то показывает. Где подобное применяется? Для игр, так понимаю, есть движки, для 3д моделинга тоже софт есть, а вот в чистом виде, как Вы делаете.
Очень понравилось ваше видео, но когда пытался повторить, у меня не появляются тени (7:22), хотя делаю всё в точности как на видео. Помогите пожалуйста!
когда подключил библиотеку с 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
Не удалось запустить( fragment_shader =============== ERROR: 0:727: 'pMod1' : no matching overloaded function found (using implicit conversion) ERROR: 0:727: 'pMod1' : function is not known
Точно такая же ошибка с этой функцией( Её можно убрать из кода, но в таком случае в готовом рендере не будет этих арок. Есть какой-то способ заменить эту функцию?
Язык может быть какой угодно, просто нужен модуль для работы с OpenGL. А шейдеры все равно писать будете на GLSL независимо от используемого языка (C++, C#, Python, Java и т.п.)
Для чистоты эксперимента: в анриле создай сто сфер с материалом бетона (цвет, спекулар, рафнес, дисплейсмент или эмбиент окклюжн, и карта нормалей - стандарт, в общем), через консольные команды stat unit и stat rhi открой статистику, чтобы посмотреть, сколько занимает отрисовка на CPU и GPU... а затем попробуй воссоздать дисплейсмент, рафнес и спекулар текстуры через нойз ноду. Касательно очевидного вывода увеличения времени на обработку кадра на CPU и почти неизменного времени GPU мы можем сказать, что классическая графика жрет меньше при большом количестве объектов в сцене, но все шейдеры с G-buffer (PBR) все равно напиcаны на glsl или hlsl. именно для отдельных элементов (понтовых vfx) и срезают полигоны и размер текстур.
@@StandaloneCoder спасибо, ещё вопрос. Большинство уроков по openGL на c++, но я пишу на Java, по сути ведь не должно быть разницы синтаксиса в openGL в обертках на разные языки, ведь это одна и та же библиотека?
@@StandaloneCoder спасибо, не подскажешь ресурсы для изучения актуальной информации, я вот как раз на первом курсе подтянул знания по линалу и ангему, думаю должно хватить знаний вышмата
Это. Просто. О...!
Одно дело развлекаться с рей марчингом, и совершенно другое создавать с его помощью что-то осмысленное.
Здравствуйте ! Вы создаёте уникальный канал БЕЗ ВОДЫ !!! СПАСИБО !!!!! Но мне интересно увидеть применение шейдеров на практике (создание игры / программы). На RUclips сейчас очень поверхностный контент и этот канал, как остров по среди океана ! Держите планку !!!
Это просто великолепно!
Смотреть визуализацию кода в реальном времени - очень круто!
Ничего не понимаю, но мне нравится!
Глаза по-рублю и челюсть на полу ))))))) просто волшебство.........
Почему это не в реках если видно человек старается!
Весь ролик смотрится с открытым ртом.. Это вау конечно. Спасибо большое. Записывайте и дальше.
По превью даже сразу не понятно что это ваше видео. Очень информативно, спасибо!
Я про превью, а видео получилось ещё более информативным
Нифига себе "базовые вещи..." Я думал я базовые вещи уже освоил.... Где-то я видимо проскочил этот вопрос, опять заново базу штудировать.....
p.s. Шикарный материал! Впрочем, как всегда. Это просто волшебство какое-то....
Разве это база? База это писать программы используя только лишь бинарный код
Я б учился у тебя каждый день)
Спасибо за новое видео! Толко вышло, а уже ставлю лайк, ведь знаю что годно
С такими видео постоянно узнаю что то новое!
Гений 🙂, конечно ждём продолжение, любой ролит крутой нереально, тем более я начинающий, как и многие тут
Обожаю твои видео! С каждым разом всё интереснее и интереснее. Спасибо за всё.
Мне очень интересно к чему можно прийти если еще сильнее дорабатывать и дорабатывать ... Уже получилось красиво!
Почему я подумал что это канал Onigiri, только после открытия видео увидел в рекомендациях видео от Onigiri
Шикарно, где-то было видео, где тоже рассматривался реймарчинг, но на него ругались из-за того, что когда много объектов (читай формул) - резко падает производительность. А оказывается, можно просто все в одну формулу объединить
тоесть, при таком способе можно делать тяжелые игры при минимальной нагрузке пк? или полигональная графа производительней?
@@cancent полигональная производительнее, хотя бы потому что видеокарты заточены под обсчет полигонов. Сейчас рейкастинг внедряют, так что может быть в ближайшие годы станет как минимум не бесполезно
Очень круто. Спасибо за контент. Еще бы по GLSL туториал бы запилить
Как по мнению разработчиков Python создают Unreal Engine:
Отличнейшая подача материала, спасибо. Будем ждать следующих выпусков, в том числе про обозначенные в конце ролика фишки.
Крайне признателен за полезный контент.
Как всегда крутяк 😎 спасибо! Да, и про другие техники тоже было бы интересно посмотреть :)
Давай дальше про сглаживание, глобальное освещение, программные тени. Очень интересно. Тоже увлекаюсь этой темой!
Очень годный канал и видео. Сделал что-то похожее но попроще, ну собственно мне больше и не надо. Шар раскрашенный в цвета нормалей (normal / 2 + 0.5) на фоне шахматной доски с освещением и тенями + msaa 4x + туман вдали + небольшое затемнение по краям объектов... каеф))
Воу!😲) Дуже цікаво!) Ви молодець!))😁
Спасибо за видео. Очень круто
Спасибо за видео, очень интересно!
Блин! Очень крутой ролик! Давай продолжение!
Очень долго ждали, спасибо!
Я не против, очень жду следующее видео.
потрясающе , ваш контент однозначно классный
но , можете снять ролики по pyglet ? ведь он намного удобнее чем pygame если мы говорим об 3D граффике
ведь pyglet основан на OpenGL , а pygame на SDL
Ты гениален, респект :)
Спасибо за видео. Конечно такой подход не решает все задачи. Потому что возможно делать только с примитивами. Отказываться от полигонов модели не имеет смысла. Но вот применить такой подход для дополнительного функционала к основному можно. И дало возможность задуматься.
Это именно то, что я хотел
Вау крутяк спасибо очень интересно!
Для меня это очень необычно.
Одно маленькое замечание: не «демосцена», а «демка» тогда уж. Ну или демонстрация.
Кстати, советую глянуть демки от Conspiracy, «Clean Slate», например. Там явно много реймаршинга, иначе всё это в 64 кб не впихнуть.
Действительно интересно и познавательно! А вы не проводите частное обучение? Было бы очень интересно разобраться в этой тебе, особенно написание glsl шейдеров и использование их вместе с three.js например. Буду рад ответу по обучению
Ваааау, ещё немного и будет как в реальной жизни. И вопрос откуда ты берешь инфу?
Очень крутой видос. Ждём продолжения!
Офигеть! Большое спасибо за видеоролик!
Это ооочень круто, сам смотрю с удовольствием, но понимаю, что тут с моей математикой делать просто нечего (((
хуйня если знаешь математику хотя бы на уровне 11-го класса, то не сложно добавить знаний будет)
Огонь! Однозначно топ контент!
Мы почти такое же делали на 2 курсе по компьютерной графике.
Сними дальше, ооооочень интересно. Кста я так подумал, все объекты там не материальные, что если их сделать непроходимыми и добавить туда хотьбу, как это было сделано в питоновом дууме.
Ну так можешь сделать и поделиться результатом.
Великолепно. Я восхищен
Что я только что посмотрел? 0_о
теперь я знаю, что ни хрена не знаю и не умею в OpenGL...
Спасибо!)) Паралельно писал на телефоне это же.. ну в общем уже просто на сфере со всеми наворотами ФПС просел адски.. а к пека лень идти. Попробую уже в нормальном шейдере отрисовать потом.
Очень интересно, и познавательно!
Супер !!! Спасибо
А почему нельзя было просто запехать файлы моделей из блендера ? Для самой сцены важно иметь ТОЛЬКО кисти ландшафтов - для создания простейшего движка и создания файла для хранения обьектов и их координат, взятых из блендера ? И все готово ?
such a short and informative tutorial. i wish it was english. keeping up with the cc is hard
Спасибо за видео)
Отлично! Просто шикарно!
Чувак, ты крут!!!
Здраствуйте! У меня ошибка при запуске: на 21 строчке во fragment.glsl использует тип данных int , в функции "sgn" И выводит float , что не даëт запуститься программе
Можно ли объединять разные типы графики? Например Ray Marching и Voxel графику?
Пожалуйста расскажи про шум Перлина и процедурную генерацию, текстурирование.
Я подписан
Больше тянок на превью - больше просмотров, дерзай
Невероятно круто. Стало жаль, что в один момент плюнул на шейдерные языки
Молодец
Возможно ли на питоне рекомпилить шейдер в рантайме?
А то без динамической топологии мира как-то ограничено всё.
Я смог извратится и в Unity сделать частично динамическую топологию. Прокидываю в шейдер структурированный массив фигур, операций над ними и всех параметров. Весь массив является аналогом математического выражения записанного в обратной польской нотации. Каждый вызов Map запускает цикл по массиву, каждую итерацию switch выбирает между функциями фигур и операций. Результаты сэмпла фигур кладутся в стек. Для операций аргументы достаются из стека и результат кладётся в стек. Собственно switch и использование стека идут мимо архитектуры GPU и хоть и работают, но лютейше садят производительность.
Больше всего мне в рэймарчинге нравится то, что каждый объект может быть идеально гладким кривым зеркалом. И таких зеркал в сцене может быть бесконечность. И все немного разные, и все работают как настоящие зеркала, а не как в играх извращаются с Reflection Probe, Screen Space Reflections и другими. RTX до таких масштабов тоже не годится.
Saludos de México
Вот, оч круто!
Привет. Скажи пожалуйста, как также освоить moderngl? Я его использую для своей игры. С горем пополам научился отрисовывать текстуры в 2D. Сейчас хочу научиться 3Д делать и графики рисовать. До этого не имел дел с OpenGL. Как-то вообщене допираю, как это работает. Может надо с другого чего-то начать. Можешь дать пожалуйста ссылки на источники, по которым ты изучал?
Сделай видео про DirectPython
Круто!
Интересно
10/10
Сделай программу с механикой из Scratch, что бы можно было перетягивать плитки и делать так события, на python. Было бы очень интересно.
В топ!
Да, было бы очень круто! Можно сделать конструктор шейдеров!
@@ohnocoder я имел ввиду типа может игру так сделать из блочков, типа визуального программирования.
@@captain_ua А какой смысл?
@@ohnocoder смысЛ есть у каждого свой, в этом например что такая программа лично для меня была бы полезна, а так же такого вида программу что бы Scratch на питоне, никто не делал, и автор будет перооткрывателем.
Лучший 😍
очень круто!!!)))
А зачем дополнительные телодвижения если родная система координат OpenGL и так имеет точку 0,0 в центре экрана? Просто создать прямоугольник из координат от -1 до 1 по обеим осям и передавать эти координаты из вершинного шейдера во фрагментный. И тогда не будет привязки к разрешению экрана.
Для чисел формата float обязательно надо использовать f в конце, без нее это double, то есть 1.0f это float, а 1.0 уже double. Может и не будет ошибок, но видеокарты с double работают на порядки медленнее
А в целом поздравляю, Вы изобрели подход к процедурному моделированию аля Houdini
Привязку к экрану надо всё равно делать, так как надо подсчитать соотношения сторон экрана и поправить одну из осей после нормирования к (-1, 1). Иначе картинка была бы сплющена по оси. В GLSL по дефолту float если не указан литерал у числа с плавающей точкой.
Суффиксы GLSL согласно спецификации 4.6:
1.0f, 1.0F - float
1.0lf, 1.0LF - double
Сделай Майнкрафт на pyglet при помощи OpenGL. Я думаю это всем понравится
你好,视频6分20秒处的321倒计时是用glsl实现的吗?
алло, видео 6: 20 секунд на месте 321 обратного отсчета выполнено с помощью glsl?
不
Нормально))
Очень интересно. А можно в этот дворец добавить телевизор? Настоящий телевизор, который что-то показывает. Где подобное применяется? Для игр, так понимаю, есть движки, для 3д моделинга тоже софт есть, а вот в чистом виде, как Вы делаете.
Да, добавить можно, телевизор или изображение с камеры. Так ведь движки и софт на основе OpenGL (Vulkan, DirectX, Metal) сделаны
vertex_shader
=============
0(4) : error C0000: syntax error, unexpected '(', expecting "::" at token "("
Подскажите как решить данную проблему?????????
В описании есть ссылка на код проекта
А в этой реализации есть ведь возможносность добавления прозрачности объектам
Очень понравилось ваше видео, но когда пытался повторить, у меня не появляются тени (7:22), хотя делаю всё в точности как на видео. Помогите пожалуйста!
странно, а попробуйте реализовать тени так, как сделано в следующей части - ruclips.net/video/2fcO9RUOGg4/видео.html
Ну нифига себе
а покажи это ещё и с применением параллакса или же применением нормал мап (короче чтобы сгенерированная текстура была выпуклой )
когда подключил библиотеку с 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
Также самая проблема в функции fOpUnionID
как реализовать soft min функцию в вашем ray marching'е
Не удалось запустить(
fragment_shader
===============
ERROR: 0:727: 'pMod1' : no matching overloaded function found (using implicit conversion)
ERROR: 0:727: 'pMod1' : function is not known
Точно такая же ошибка с этой функцией(
Её можно убрать из кода, но в таком случае в готовом рендере не будет этих арок. Есть какой-то способ заменить эту функцию?
Можно теперь другие темы?
Можно ли реализовать это на C++? Что на счёт Unreal Engine?
Язык может быть какой угодно, просто нужен модуль для работы с OpenGL. А шейдеры все равно писать будете на GLSL независимо от используемого языка (C++, C#, Python, Java и т.п.)
Насколько openGl все еще держит планку в качестве граф. библы? Много кто говорит, что vulkan просто не оставляет шансов openGl
Тут в основном же шейдер программировали, он будет тот же что для OpenGL, что и для Vulkan
Что на счёт чего-то более знакомого? Pyglet?
здравствуйте, супер видео. а как вы изучали OpenGl? Может быть есть какие то ресурсы для этого?
Ресурсов много в сети, только старые уроки не смотрите, нужно направление - современный (modern) OpenGL, это про программируемый конвейер
ЕЕЕЕЕ быстро подписался
Что меньше ресурсов жрёт это или классическая графика?
Для чистоты эксперимента: в анриле создай сто сфер с материалом бетона (цвет, спекулар, рафнес, дисплейсмент или эмбиент окклюжн, и карта нормалей - стандарт, в общем), через консольные команды stat unit и stat rhi открой статистику, чтобы посмотреть, сколько занимает отрисовка на CPU и GPU... а затем попробуй воссоздать дисплейсмент, рафнес и спекулар текстуры через нойз ноду. Касательно очевидного вывода увеличения времени на обработку кадра на CPU и почти неизменного времени GPU мы можем сказать, что классическая графика жрет меньше при большом количестве объектов в сцене, но все шейдеры с G-buffer (PBR) все равно напиcаны на glsl или hlsl. именно для отдельных элементов (понтовых vfx) и срезают полигоны и размер текстур.
@@DenisTrebushnikov Спасибо
Привет, как думаешь, есть смысл учить openGL или сразу начинать учить Vulkan? Говорят, что многие компании отказываются от использования openGL
OpenGL более прост в изучении, чем Vulkan, хорошо изучать его как для старта. Тем более шейдеры на том же GLSL пишутся как в Вулкане, так и в OpenGL
@@StandaloneCoder спасибо, ещё вопрос. Большинство уроков по openGL на c++, но я пишу на Java, по сути ведь не должно быть разницы синтаксиса в openGL в обертках на разные языки, ведь это одна и та же библиотека?
@@user20213A большой разницы не будет, везде суть одна и та же - создание контекста, VAO, VBO, шейдеры
@@StandaloneCoder спасибо, не подскажешь ресурсы для изучения актуальной информации, я вот как раз на первом курсе подтянул знания по линалу и ангему, думаю должно хватить знаний вышмата
@@user20213A да, знаний в объеме первого курса техвуза вполне достаточно. Ресурсов много, тот же learnopengl вполне хорош
wow
Послушай!откуда ты такие крутые модули находишь?
Старая озвучка была круче!
Интересно, насколько ресурсоёмкий данный подход?
Интегированная графика в Ryzen7 5800h выдает 70 fps
Где голос Максим ☹️
Ламберт ламберт хер моржовый, ламберт ламберт вредный х… вспомнилось, так по какой там системе вы говорите, Ламберта?)
When in english?
done
@@StandaloneCoder really? great