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