#3 Minecraft с нуля на C++ - Основы шейдеров

Поділитися
Вставка
  • Опубліковано 5 бер 2020
  • РЕПОЗИТОРИЙ: github.com/Alex2772/Engine
    Исходники Craftgame: github.com/Alex2772/Craftgame
    Форум: alex2772.ru/forums/
    Мой сайт: alex2772.ru
    ================================
    В этом видео я расскажу основы шейдеров.
  • Наука та технологія

КОМЕНТАРІ • 94

  • @Alex2772
    @Alex2772  4 роки тому +3

    Если возникнут какие-либо проблемы, пожалуйста, пишите сюда: alex2772.ru/forums/

  • @polioann
    @polioann 4 роки тому +18

    Годнота, даже если не набирает просмотры, мне кажется, что это видео будет очень полезно для твоего портфолио. Это большой и сложный проект)

  • @mtasanandreas664
    @mtasanandreas664 4 роки тому +7

    Ура! Ты выполнил все мои желания и выпустил выпуск новый, спасибо :)

  • @Pumple
    @Pumple 4 роки тому +3

    Паря, не смотря на количество просмотров и лайков, знай, ты невероятно крут! Если новички в кодинге - это дети, то ты сранный
    Супермен!
    Я всё равно ещё многого не до конца понимаю из твоих видосов, но на русскоязычном Ютубе ты единственный в своём роде!
    Успехов тебе)

    • @Alex2772
      @Alex2772  4 роки тому

      Ну, вроде, не единственный. Всё равно спасибо)

  • @user-gb1ch8rf1e
    @user-gb1ch8rf1e 3 роки тому +3

    Очень благодарю за видео!
    За пару дней изучения по докам моё очко стало диаметром в километр, а как происходит передача данных в шейдер и из шейдера я совсем никак не понимала. Всё это ты объяснил отлично, и вообще по OpenGL нет никого на русском ютубе лучше тебя(имхо)

  • @ilnev3738
    @ilnev3738 3 роки тому +3

    10:25 * звуки счастья*

  • @kovesik
    @kovesik 4 роки тому +5

    glsl плалгин прав кстати потому, что он в фоне создает OpenGL контекст, компилит шейдеры, если все плохо, то парсит вывод, чтобы указать строчки с ошибками

  • @safocl9768
    @safocl9768 Рік тому

    10:07 -- балдежная искоропково работающая винда, которая удобная и не ломается никогда..

  • @cppprograms5868
    @cppprograms5868 4 роки тому +4

    Очень полезная видео.

  • @user-ob2ne7dh3c
    @user-ob2ne7dh3c 4 роки тому +3

    Спасибо за уроки!

  • @user-xv4hq9qp4h
    @user-xv4hq9qp4h 2 роки тому

    здравствуйте, подскажите что вы именно сделали в resharper ++ ?

  • @user-xv4hq9qp4h
    @user-xv4hq9qp4h 2 роки тому

    как вы переименовали переменную name в path при помощи resharper и еще один вопрос почему когда вы переименовали переменную ошибка ушла веть код остался прежним ?

  • @C3rf1g1337
    @C3rf1g1337 4 роки тому +4

    ЖИВ!!!!

  • @c4llv07e
    @c4llv07e 3 роки тому +1

    Интересно - glsl компилирует всё при запуске бинарника. Поэтому кстати надо папку res кидать в папку с выхлопом. Тогда без компиляции можно будет шейдеры менять.
    Это конечно не orx, который позволял на лету менять файлы, но всё же(тем более можно перезагрузить шейдер, будет то же самое).

  • @safocl9768
    @safocl9768 Рік тому

    6:33 -- енто он все верно сделал -- поскольку из стандарта выходит основной принцип -- все что похоже на декларацию функции -- будет ей являться. Для ентого и сделали возможным инит через фигурные скобки по сути....

  • @safocl9768
    @safocl9768 Рік тому

    7:17 -- а ты часто так на стеке такие большие массивы выделяешь?

  • @linedown9195
    @linedown9195 6 місяців тому +1

    7:13 ахах согл. Из-за этого нельзя просто запихнуть строку со считываемым файлом в загрузку шейдера

  • @kotazzz
    @kotazzz 4 роки тому +3

    хм, я думаю тебе стоит немного меньше торопиться, больше уделять времени сложным моментам, и возможно выпускать отдельные видео с комментариями по предыдущей части, так как много кто не успевает. возможно стоит выпускать полные гайды по той или иной функции, которую ты использовал опять таки в предыдущей части. Очень печально сейчас ютуб переполнен детским контентом, и общество в большинстве случаев смотрит какой-то... "крутой контент". Я надеюсь что у тебя будет больше времени, что бы посвятить других людей в это. думаю у многих проблема лишь с тем что нет достаточно хорошего гайда по тому же ОГЛ. Я думаю что у тебя более, чем получается все это рассказывать, хотя я очень путаюсь, и рекомендую не торопиться (опять) и надеюсь на то, что новое видео выйдет рано. я пересмотрел 3 части этого гайда, и если мне это надо как то воспроизвести - у меня не получится без этого видео. Ты умещаешь слишком много материала в один отрывок времени, в 20 мин. стараешься уместить всю теему видеоролика. Пожалуй у меня все замечания и предложения. Надеюсь что ты ознакомишься с комментарием, и если что извини за ошибки и ли какую то несвязанную чепуху - очень тороплюсь

    • @Alex2772
      @Alex2772  4 роки тому +2

      Спасибо за комментарий! По времени согласен. Очень много материала, о котором нужно рассказать. Далее буду дробить ролики, иначе видосы будут слишком длинными.

  • @The_Mr_Professor
    @The_Mr_Professor 4 роки тому +3

    что ты юзал когда с++ учил? какие книги ? видеоролики? прост только пайтон знаю хотел бы с с++ познакомиться

    • @Alex2772
      @Alex2772  4 роки тому

      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/

  • @LOKSLEKSUS
    @LOKSLEKSUS 4 роки тому +1

    ОНО ЖИВОЕ!

  • @I_greencat
    @I_greencat 2 роки тому

    Привет а можно скачать эту игру и поиграть? Это возможно?

  • @user-xv4hq9qp4h
    @user-xv4hq9qp4h 2 роки тому

    5:47 как вы сделали переменную puth и что для для этого требуется это веть не функция вижуал студио и возможно ли это сделать без сторонних програм

    • @Alex2772
      @Alex2772  2 роки тому

      resharper++ плагин для вижуалки

    • @user-xv4hq9qp4h
      @user-xv4hq9qp4h 2 роки тому

      @@Alex2772 а есть уроки как им пользоваться просто я установил и я все равно не понял как вы создали path и все же можно провести те действия без resharper++

  • @rubiks7196
    @rubiks7196 4 роки тому +1

    Топ

  • @ilnev3738
    @ilnev3738 3 роки тому

    А координаты нормалей тоже пихать в функцию addVertexBuffetObject?

  • @kovesik
    @kovesik 4 роки тому +1

    по поводу создания файла в проводнике, тоже гон, ты просто выбираешь создат файл например *.cpp а потом ему там же меняешь расширение

    • @Alex2772
      @Alex2772  4 роки тому +2

      А потом огребаешь от вижуалки, потому что она пытается скомпилить твои шейдеры как C++ исходники. Их нужно будет исключать из проекта, тогда да

    • @channelbarrel
      @channelbarrel 4 роки тому

      @@Alex2772 можно создавать не *.cpp, а например *.htm файлы

    • @Alex2772
      @Alex2772  4 роки тому

      @@channelbarrel Это уже совсем какой-то зашквар

    • @cbg_1893
      @cbg_1893 4 роки тому

      Выбираешь файл -> Properties -> Copy to Output Directory -> Copy always.
      Также автоматически создаёт недостающие папки.

    • @cbg_1893
      @cbg_1893 4 роки тому

      Кстати, для создания файлов шейдепрв, можно юзать обычный txt и уже в Visual Studio изменить расширение.

  • @c4llv07e
    @c4llv07e 3 роки тому

    gl_Position...
    Это не gl_position и не glPosition. Я так понимаю, для OpenGL изобрели under_Camel_Score_Case? странно, что не добавили v4 перед названием переменной.

    • @Alex2772
      @Alex2772  3 роки тому +1

      Ага, а ещё удивляет, что они не додумались воткнуть 100500 нижних подчёркиваний в начале и конце названий

  • @ilnev3738
    @ilnev3738 3 роки тому +1

    А как подключить несколько шейдеров с разными названиями ?

    • @Alex2772
      @Alex2772  3 роки тому

      GL::Program p1(...);
      GL::Program p2(...);
      ...

    • @ilnev3738
      @ilnev3738 3 роки тому

      @@Alex2772 спасибо

  • @amdryzen1932
    @amdryzen1932 4 роки тому

    Ролики будут выходить раз в 4 месяца?

    • @Alex2772
      @Alex2772  4 роки тому +1

      Я в первом видео говорил, что не обещаю частые выходы видео.

  • @kovesik
    @kovesik 4 роки тому

    пипец, а в настройки плагина не судьба зайти, чтобы ассоцировать шейдеры с расширением?

    • @Alex2772
      @Alex2772  4 роки тому

      У этого плагина нет настроек

    • @kovesik
      @kovesik 4 роки тому

      @@Alex2772 были,точно помню, там даже можно указать кастомный анализатор шейдеров. Если зайти в options и в поиске набрать glsl, можно найти список настроек. Вряд ли это исключили.
      А еще я бы посоветовал использовать проект cmake в сочетании с vcpkg, чтобы любой желающий на любой системе мог собирать проект, vcpkg нужен для того, чтобы не копировать исходники библиотек руками, как ты делал с glm.

    • @Alex2772
      @Alex2772  4 роки тому +1

      @@kovesik Нашёл, учту

    • @kovesik
      @kovesik 4 роки тому

      @@Alex2772 если что, то я только из самых чистых побуждений

    • @user-fd5tw9hp1u
      @user-fd5tw9hp1u 4 роки тому

      @@Alex2772 а у opengl есть polygon'ы?

  • @Yan_Yagellon
    @Yan_Yagellon 4 роки тому +2

    Что у тебя только Майнкрафт. Сделай свою игру. А так круто

    • @Alex2772
      @Alex2772  4 роки тому +3

      Клон майна проще сделать, чем, скажем, клон доты

    • @Yan_Yagellon
      @Yan_Yagellon 4 роки тому +1

      @@Alex2772 так зачем делать клон? Можно же свой проект

    • @Alex2772
      @Alex2772  4 роки тому +4

      @@Yan_Yagellon К сожалению, я не Кодзима, чтобы придумывать собственную механику игры, а что касается туторов - проще ориентироваться на существующую игру, тем более почти самую популярную в мире.

  • @user-tb7su2nj4b
    @user-tb7su2nj4b 3 роки тому

    Эх, пацаны. Морока продолжается.
    Такая беда: на моменте 12:12 у меня треугольник не окрашивается.. Проверял загрузку шейдеров: выводил в консоль буфер и коды шейдоров, которые загружались. Буфер ошибок чистый, код загружается правильный. Вроде как атрибуты биндил, программу линковал, метод use() вызывал, но треугольник выводится белый. Уже второй день над этим залипаю. Есть идеи, что может идти не так? Может быть ошибка в loadShader(), если буфер ошибкок пустой?

    • @Alex2772
      @Alex2772  3 роки тому

      Лей код на гитхаб

    • @user-tb7su2nj4b
      @user-tb7su2nj4b 3 роки тому

      @@Alex2772 github.com/aferprog/openGL.git
      Надеюсь, еще не поздно..

    • @Alex2772
      @Alex2772  3 роки тому

      Из-за ссылки ютуб закинул твой коммент в спам, сразу не заметил его. У тебя и так, судя по коду, должен быть серый треугольник. При отсутствии смешивания цветов alpha канал всегда должен быть равен единице. В шейдере переделай vec4(0.5, 0.5, 0.5, 0.5) в vec4(0.5, 0.5, 0.5, 1). Подставь рандомные число вместо "0.5"

  • @nyvyme
    @nyvyme 3 роки тому +1

    23:46 Такой метод синуса через glm::sin() больше не актуален! Юзайте std::sin(). Результат один и тот же

    • @ilnev3738
      @ilnev3738 3 роки тому +1

      ок спасибо

  • @limeniye4634
    @limeniye4634 3 роки тому

    да-да, я на этот "bind" час потратил, поздно ))

  • @ogn1k110
    @ogn1k110 4 роки тому

    что с качеством

  • @user-ob2ne7dh3c
    @user-ob2ne7dh3c 4 роки тому

    В исходниках в деструкторе класса Program ошибка: очищение памяти только от вершинного шейдера. Полагаю, имелось ввиду это:
    GL::Program::~Program()
    {
    glDetachShader(mProgram, mVertexShader);
    glDetachShader(mProgram, mFragmentShader );
    //исправление
    glDeleteShader(mVertexShader);
    glDeleteShader(mFragmentShader );
    //исправление
    glDeleteProgram(mProgram);
    }
    ?

    • @Alex2772
      @Alex2772  4 роки тому

      Придётся делать перезалив

    • @user-ob2ne7dh3c
      @user-ob2ne7dh3c 4 роки тому

      @@Alex2772 Еще в first.frag что-то с кодировкой случилось

    • @Alex2772
      @Alex2772  4 роки тому

      @@user-ob2ne7dh3c поправил

  • @user-bj6de1qg5o
    @user-bj6de1qg5o 4 роки тому +1

    Где новый видос?

    • @Alex2772
      @Alex2772  4 роки тому

      По опенглю, или по чему-то ещё?

    • @user-bj6de1qg5o
      @user-bj6de1qg5o 4 роки тому

      @@Alex2772 по openГЛ

    • @Alex2772
      @Alex2772  4 роки тому

      @@user-bj6de1qg5o До конца апреля

  • @user-ou4qf8pp9s
    @user-ou4qf8pp9s 4 роки тому

    Алёёёёёёё!!! ребят этот челове4 делает не возможно переносит майн с конченай лагучай джавай на норм С++ он делает то что не делает моджанг где много лайков и подписок?

    • @Alex2772
      @Alex2772  4 роки тому +2

      Разработчики minecraft bedrock edition сделали это до меня. А разработчики minetest сделали это ещё раньше. Но я рад, что мне желают лайков и подписок

    • @user-ou4qf8pp9s
      @user-ou4qf8pp9s 4 роки тому

      @@Alex2772 а пачему моджанг не хотят перенести с джавы на c++, какие паслетствия или что? Просто я в программировании не чего не знаю

    • @Alex2772
      @Alex2772  4 роки тому

      @@user-ou4qf8pp9s Почему не хотят? Ещё как хотят, они уже это сделали давно на основе Minecraft PE, так как Minecraft PE написан на C++, так появился Minecraft Bedrock Edition. Дело не в языках программирования, дело в комъюнити, которое создало просто потрясающее количество качественных модов под Minecraft, который сейчас называется Minecraft Java Edition. Про людей на линуксах, макосях и седьмых виндах я вообще молчу, у них нет доступа к Minecraft Bedrock Edition. Поэтому весь мир как сидел на java майнкрафте, так и сидит. Даже официальный порт майнкрафта на С++ "уже не тот самый майнкрафт на java, который мы все любим".

    • @user-ou4qf8pp9s
      @user-ou4qf8pp9s 4 роки тому

      @@Alex2772 а

  • @iceshott8506
    @iceshott8506 2 роки тому

    Хачу сделать шейдера для своего друга у него видяокарта говно и нечо не тянет

    • @Moneygender
      @Moneygender 2 роки тому +1

      ну как сделал?

  • @ilnev3738
    @ilnev3738 3 роки тому

    сделай нормальное разрешение видео, смотреть невозможно

    • @Alex2772
      @Alex2772  3 роки тому +1

      фуллхд недостаточно, нужно 4к?

    • @ilnev3738
      @ilnev3738 3 роки тому +1

      @@Alex2772 8к ultra hd)
      Ну а если серьезно то допустим на 5:50 все очень хреново видно и иногда не можешь разобрать буквы. а точнее нихрена не видно какие методы и т.д

    • @Alex2772
      @Alex2772  3 роки тому

      @@ilnev3738 здесь обс записал в 720p поэтому пришлось хоть как-то увеличивать, чтобы хоть что-то было видно

    • @ilnev3738
      @ilnev3738 3 роки тому

      @@Alex2772 а ну ок