#3 Minecraft с нуля на C++ - Основы шейдеров
Вставка
- Опубліковано 5 бер 2020
- РЕПОЗИТОРИЙ: github.com/Alex2772/Engine
Исходники Craftgame: github.com/Alex2772/Craftgame
Форум: alex2772.ru/forums/
Мой сайт: alex2772.ru
================================
В этом видео я расскажу основы шейдеров. - Наука та технологія
Если возникнут какие-либо проблемы, пожалуйста, пишите сюда: alex2772.ru/forums/
Годнота, даже если не набирает просмотры, мне кажется, что это видео будет очень полезно для твоего портфолио. Это большой и сложный проект)
Ура! Ты выполнил все мои желания и выпустил выпуск новый, спасибо :)
Паря, не смотря на количество просмотров и лайков, знай, ты невероятно крут! Если новички в кодинге - это дети, то ты сранный
Супермен!
Я всё равно ещё многого не до конца понимаю из твоих видосов, но на русскоязычном Ютубе ты единственный в своём роде!
Успехов тебе)
Ну, вроде, не единственный. Всё равно спасибо)
Очень благодарю за видео!
За пару дней изучения по докам моё очко стало диаметром в километр, а как происходит передача данных в шейдер и из шейдера я совсем никак не понимала. Всё это ты объяснил отлично, и вообще по OpenGL нет никого на русском ютубе лучше тебя(имхо)
спасибо!
10:25 * звуки счастья*
glsl плалгин прав кстати потому, что он в фоне создает OpenGL контекст, компилит шейдеры, если все плохо, то парсит вывод, чтобы указать строчки с ошибками
10:07 -- балдежная искоропково работающая винда, которая удобная и не ломается никогда..
Очень полезная видео.
Спасибо за уроки!
здравствуйте, подскажите что вы именно сделали в resharper ++ ?
как вы переименовали переменную name в path при помощи resharper и еще один вопрос почему когда вы переименовали переменную ошибка ушла веть код остался прежним ?
ЖИВ!!!!
Интересно - glsl компилирует всё при запуске бинарника. Поэтому кстати надо папку res кидать в папку с выхлопом. Тогда без компиляции можно будет шейдеры менять.
Это конечно не orx, который позволял на лету менять файлы, но всё же(тем более можно перезагрузить шейдер, будет то же самое).
6:33 -- енто он все верно сделал -- поскольку из стандарта выходит основной принцип -- все что похоже на декларацию функции -- будет ей являться. Для ентого и сделали возможным инит через фигурные скобки по сути....
7:17 -- а ты часто так на стеке такие большие массивы выделяешь?
7:13 ахах согл. Из-за этого нельзя просто запихнуть строку со считываемым файлом в загрузку шейдера
хм, я думаю тебе стоит немного меньше торопиться, больше уделять времени сложным моментам, и возможно выпускать отдельные видео с комментариями по предыдущей части, так как много кто не успевает. возможно стоит выпускать полные гайды по той или иной функции, которую ты использовал опять таки в предыдущей части. Очень печально сейчас ютуб переполнен детским контентом, и общество в большинстве случаев смотрит какой-то... "крутой контент". Я надеюсь что у тебя будет больше времени, что бы посвятить других людей в это. думаю у многих проблема лишь с тем что нет достаточно хорошего гайда по тому же ОГЛ. Я думаю что у тебя более, чем получается все это рассказывать, хотя я очень путаюсь, и рекомендую не торопиться (опять) и надеюсь на то, что новое видео выйдет рано. я пересмотрел 3 части этого гайда, и если мне это надо как то воспроизвести - у меня не получится без этого видео. Ты умещаешь слишком много материала в один отрывок времени, в 20 мин. стараешься уместить всю теему видеоролика. Пожалуй у меня все замечания и предложения. Надеюсь что ты ознакомишься с комментарием, и если что извини за ошибки и ли какую то несвязанную чепуху - очень тороплюсь
Спасибо за комментарий! По времени согласен. Очень много материала, о котором нужно рассказать. Далее буду дробить ролики, иначе видосы будут слишком длинными.
что ты юзал когда с++ учил? какие книги ? видеоролики? прост только пайтон знаю хотел бы с с++ познакомиться
alex2772.ru/%d1%81%d0%bf%d0%b8%d1%81%d0%be%d0%ba-%d0%b8%d1%81%d1%82%d0%be%d1%87%d0%bd%d0%b8%d0%ba%d0%be%d0%b2-%d0%ba%d0%be%d1%82%d0%be%d1%80%d1%8b%d0%bc-%d1%8f-%d1%81%d0%bb%d0%b5%d0%b4%d0%be%d0%b2%d0%b0%d0%bb/
ОНО ЖИВОЕ!
Привет а можно скачать эту игру и поиграть? Это возможно?
5:47 как вы сделали переменную puth и что для для этого требуется это веть не функция вижуал студио и возможно ли это сделать без сторонних програм
resharper++ плагин для вижуалки
@@Alex2772 а есть уроки как им пользоваться просто я установил и я все равно не понял как вы создали path и все же можно провести те действия без resharper++
Топ
А координаты нормалей тоже пихать в функцию addVertexBuffetObject?
Да
по поводу создания файла в проводнике, тоже гон, ты просто выбираешь создат файл например *.cpp а потом ему там же меняешь расширение
А потом огребаешь от вижуалки, потому что она пытается скомпилить твои шейдеры как C++ исходники. Их нужно будет исключать из проекта, тогда да
@@Alex2772 можно создавать не *.cpp, а например *.htm файлы
@@channelbarrel Это уже совсем какой-то зашквар
Выбираешь файл -> Properties -> Copy to Output Directory -> Copy always.
Также автоматически создаёт недостающие папки.
Кстати, для создания файлов шейдепрв, можно юзать обычный txt и уже в Visual Studio изменить расширение.
gl_Position...
Это не gl_position и не glPosition. Я так понимаю, для OpenGL изобрели under_Camel_Score_Case? странно, что не добавили v4 перед названием переменной.
Ага, а ещё удивляет, что они не додумались воткнуть 100500 нижних подчёркиваний в начале и конце названий
А как подключить несколько шейдеров с разными названиями ?
GL::Program p1(...);
GL::Program p2(...);
...
@@Alex2772 спасибо
Ролики будут выходить раз в 4 месяца?
Я в первом видео говорил, что не обещаю частые выходы видео.
пипец, а в настройки плагина не судьба зайти, чтобы ассоцировать шейдеры с расширением?
У этого плагина нет настроек
@@Alex2772 были,точно помню, там даже можно указать кастомный анализатор шейдеров. Если зайти в options и в поиске набрать glsl, можно найти список настроек. Вряд ли это исключили.
А еще я бы посоветовал использовать проект cmake в сочетании с vcpkg, чтобы любой желающий на любой системе мог собирать проект, vcpkg нужен для того, чтобы не копировать исходники библиотек руками, как ты делал с glm.
@@kovesik Нашёл, учту
@@Alex2772 если что, то я только из самых чистых побуждений
@@Alex2772 а у opengl есть polygon'ы?
Что у тебя только Майнкрафт. Сделай свою игру. А так круто
Клон майна проще сделать, чем, скажем, клон доты
@@Alex2772 так зачем делать клон? Можно же свой проект
@@Yan_Yagellon К сожалению, я не Кодзима, чтобы придумывать собственную механику игры, а что касается туторов - проще ориентироваться на существующую игру, тем более почти самую популярную в мире.
Эх, пацаны. Морока продолжается.
Такая беда: на моменте 12:12 у меня треугольник не окрашивается.. Проверял загрузку шейдеров: выводил в консоль буфер и коды шейдоров, которые загружались. Буфер ошибок чистый, код загружается правильный. Вроде как атрибуты биндил, программу линковал, метод use() вызывал, но треугольник выводится белый. Уже второй день над этим залипаю. Есть идеи, что может идти не так? Может быть ошибка в loadShader(), если буфер ошибкок пустой?
Лей код на гитхаб
@@Alex2772 github.com/aferprog/openGL.git
Надеюсь, еще не поздно..
Из-за ссылки ютуб закинул твой коммент в спам, сразу не заметил его. У тебя и так, судя по коду, должен быть серый треугольник. При отсутствии смешивания цветов alpha канал всегда должен быть равен единице. В шейдере переделай vec4(0.5, 0.5, 0.5, 0.5) в vec4(0.5, 0.5, 0.5, 1). Подставь рандомные число вместо "0.5"
23:46 Такой метод синуса через glm::sin() больше не актуален! Юзайте std::sin(). Результат один и тот же
ок спасибо
да-да, я на этот "bind" час потратил, поздно ))
что с качеством
все плохо
В исходниках в деструкторе класса Program ошибка: очищение памяти только от вершинного шейдера. Полагаю, имелось ввиду это:
GL::Program::~Program()
{
glDetachShader(mProgram, mVertexShader);
glDetachShader(mProgram, mFragmentShader );
//исправление
glDeleteShader(mVertexShader);
glDeleteShader(mFragmentShader );
//исправление
glDeleteProgram(mProgram);
}
?
Придётся делать перезалив
@@Alex2772 Еще в first.frag что-то с кодировкой случилось
@@user-ob2ne7dh3c поправил
Где новый видос?
По опенглю, или по чему-то ещё?
@@Alex2772 по openГЛ
@@user-bj6de1qg5o До конца апреля
Алёёёёёёё!!! ребят этот челове4 делает не возможно переносит майн с конченай лагучай джавай на норм С++ он делает то что не делает моджанг где много лайков и подписок?
Разработчики minecraft bedrock edition сделали это до меня. А разработчики minetest сделали это ещё раньше. Но я рад, что мне желают лайков и подписок
@@Alex2772 а пачему моджанг не хотят перенести с джавы на c++, какие паслетствия или что? Просто я в программировании не чего не знаю
@@user-ou4qf8pp9s Почему не хотят? Ещё как хотят, они уже это сделали давно на основе Minecraft PE, так как Minecraft PE написан на C++, так появился Minecraft Bedrock Edition. Дело не в языках программирования, дело в комъюнити, которое создало просто потрясающее количество качественных модов под Minecraft, который сейчас называется Minecraft Java Edition. Про людей на линуксах, макосях и седьмых виндах я вообще молчу, у них нет доступа к Minecraft Bedrock Edition. Поэтому весь мир как сидел на java майнкрафте, так и сидит. Даже официальный порт майнкрафта на С++ "уже не тот самый майнкрафт на java, который мы все любим".
@@Alex2772 а
Хачу сделать шейдера для своего друга у него видяокарта говно и нечо не тянет
ну как сделал?
сделай нормальное разрешение видео, смотреть невозможно
фуллхд недостаточно, нужно 4к?
@@Alex2772 8к ultra hd)
Ну а если серьезно то допустим на 5:50 все очень хреново видно и иногда не можешь разобрать буквы. а точнее нихрена не видно какие методы и т.д
@@ilnev3738 здесь обс записал в 720p поэтому пришлось хоть как-то увеличивать, чтобы хоть что-то было видно
@@Alex2772 а ну ок