Writing a Vulkan renderer from scratch [Part 0]

Поделиться
HTML-код
  • Опубликовано: 13 дек 2024

Комментарии • 76

  • @yusufketen5998
    @yusufketen5998 3 года назад +112

    What a great series. We need deep knowledge instead of 24 hours game engine series, please go on.

    • @AngeTheGreat
      @AngeTheGreat  3 года назад +22

      Haha absolutely! 24h videos are entertaining don't get me wrong, unfortunately most projects actually take a bit more time 😅 Thanks for watching!

    • @halfbakedproductions7887
      @halfbakedproductions7887 2 года назад +1

      I've found most of those "24 Hour Games" or "Make x in y" examples are usually pretty rough. Non-extensible, often slapdash code and buggy, doing things the 'wrong' way, lacking polish and features. It compiles and it runs, therefore it's eh good enough.
      One guy did Breakout in 10 minutes in Unity and it didn't even have a scoring system, all you did was make blocks disappear by hard deleting them with the Destroy/Dispose and they were all the same colour. Nah.

  • @AngeTheGreat
    @AngeTheGreat  3 года назад +21

    Thanks for watching everyone! I know this is a shorter video than usual without a lot of progress shown but I can assure you the next video will not be the same... Hope you enjoyed it anyway and got some use out of it 🙏

    • @hezuikn
      @hezuikn 2 года назад

      a very comfortable short video

  • @offbeatstuff8473
    @offbeatstuff8473 3 года назад +41

    Writing bindings for vulkan is more fun than writing vulkan applications (at start)

  • @Norman_Fleming
    @Norman_Fleming Год назад +4

    It is always the third technology under your API that really solidifies your decisions. Onward and upward. Up n atom! To infinity and beyond!

  • @nimrod7785
    @nimrod7785 2 года назад +7

    Please continue investing on the series. Great content!

    • @AngeTheGreat
      @AngeTheGreat  2 года назад +2

      I'm planning on releasing a follow-up to this soon, I know it's been a while haha... Thanks for watching!

  • @bluebaldwin
    @bluebaldwin 3 года назад +19

    This is really cool, I’ve just finished my first year of Uni. Time to start learning about OpenGL and more about graphics rendering overall! Keep up the great work bro 🥳

    • @AngeTheGreat
      @AngeTheGreat  3 года назад +3

      That's a perfect time to start! The earlier the better. Good luck on your journey and thanks for watching!

  • @Skeffles
    @Skeffles 3 года назад +3

    Excellent video! It's great to see you start on this.

  • @rafante2
    @rafante2 Год назад +1

    feel just like you man! And the game is wayyyyyyy better now than when you posted this video

  • @AcidiFy574
    @AcidiFy574 2 года назад +1

    Finally some Vulkan content

  • @theRPGmaster
    @theRPGmaster 3 года назад +8

    A little tip for fixing performance in vulkan: make sure you don't have the "apidump" layer enabled (on windows, that's defined in the layer path environment variable). apidump can be useful, but it will trash your perfomance, and spam the console with every single vulkan call/command.

    • @AngeTheGreat
      @AngeTheGreat  3 года назад +2

      I'll remember that, thanks for the tip!

  • @syntaxed2
    @syntaxed2 Год назад +3

    1:53 what app is that logger util youre adding comments into? - EDIT: Anki was the name :)

  • @fxshlein
    @fxshlein 3 года назад +12

    Its so frustrating to find an amazing project and see its only five days old so you cant binge it... I will definitely keep watching!
    Im currently also reading through the spec, implementing my API along the way. I'm a Kotlin/JVM developer so I have to wrap everything vulkan has anyways lol

    • @AngeTheGreat
      @AngeTheGreat  3 года назад +2

      The struggle is real lol... Honestly, your API might be done before mine because I'm working on a bunch of stuff at the same time, but it will get done, I assure you. Thanks for watching and welcome to the channel!

  • @halfbakedproductions7887
    @halfbakedproductions7887 2 года назад +12

    I love it how you spend hours on something, you've written shedloads of code and it still doesn't work properly. You then look up someone else's example/tutorial and they've done the same thing in like 4 lines of bug-free perfection in a really slick way you'd never thought of.
    Makes me feel so small and so stupid. Like I should give up and work in a warehouse.

  • @theemeraldfalcon9184
    @theemeraldfalcon9184 3 года назад +2

    This is so cool!

    • @AngeTheGreat
      @AngeTheGreat  3 года назад

      Thank you and thanks for watching!

  • @dipperdesperado
    @dipperdesperado 3 года назад +3

    Congrats for making a video about writing a Renderer interesting. Didn't think it was possible haha

    • @AngeTheGreat
      @AngeTheGreat  3 года назад +1

      Thank you! It is a bit difficult to capture the process in a video but hopefully a few people found it useful. Thanks for watching!

    • @halfbakedproductions7887
      @halfbakedproductions7887 2 года назад

      Stuff like this just puts me more in awe of professionals. To think that AAA games have multiple renderers built in (you can switch between them) and look universally gorgeous while working like Swiss clockwork is just amazing. The sort of talent that works on that part of the codebase is simply inhuman.

  • @dazai826
    @dazai826 7 месяцев назад

    Please share all the anki cards you made & used.

  • @suncrafterspielt9479
    @suncrafterspielt9479 2 года назад +1

    Will this series continue?

  • @gasparmc
    @gasparmc Год назад

    that's ok for someone like me who isn't into 3d modelling of any sort but interested in knowing the least what is vulkan that people have been talking about

  • @element1111
    @element1111 Год назад

    How many flash cards do you end up with when studying a new topic?

  • @zenitsu7578
    @zenitsu7578 2 года назад

    Man thank you your a great teACHER, curious I noticed you used the sequencer for drums, but can't I just play those softs via the

    • @coolmanthecool603
      @coolmanthecool603 8 месяцев назад

      via the what? just gonna end there? why sooooo soon :(

  • @yoyo12345
    @yoyo12345 3 года назад +2

    I also want to learn vulkan, is there a way to code it in a phone

    • @AngeTheGreat
      @AngeTheGreat  3 года назад +3

      I don't have much experience with mobile development but I believe Vulkan does support mobile devices. That's about the limit of my knowledge lol... Thanks for watching!

    • @fxshlein
      @fxshlein 3 года назад +2

      Mobile is definitely supported - there are even features in the API that are commonly only useful on mobile devices!

    • @AngeTheGreat
      @AngeTheGreat  3 года назад +2

      Nice, I didn't know that. Thanks for sharing your knowledge!

    • @yoyo12345
      @yoyo12345 3 года назад +1

      @@fxshlein really!
      Then how do I code Vulkan in my phone, is there any app that supports it??

    • @fxshlein
      @fxshlein 3 года назад +1

      @@yoyo12345 I mean you have to make the app of course. I never used it for mobile debelopment. I only know Vulkan and that Vulkan Supports Mobile devices, but the mobile device has to Support Vulkan too of course.
      That being said, I think Unreal Engine works with Vulkan on mobile. If you want do develop on a lower level (meaning without an engine) there is a Vulkan API in the Android NDK. For apple devices you generally have to use MoltenVK as a compatibility layer because Apple only support their own graphics API, but since Apples API is the same across all devices MoltenVK should work on iOS as well.

  • @nullptr6650
    @nullptr6650 3 года назад +3

    My Experience with Vulkan was terrible xD. After I finished writing all the code to draw a triangle it just dropped the gpu and gave me a device lost error code :(

    • @AngeTheGreat
      @AngeTheGreat  3 года назад +1

      Lool that sucks... maybe I'm headed for a similar fate 😬 Thanks for watching and for sharing your tragic experience!

    • @gogadenis8938
      @gogadenis8938 3 года назад +2

      @Dragoo glfw is a library responsible for creating the window of your app. Glut is a library for graphics, so you basically render stuff (triangles, quads) inside your window you made with glfw.
      Glut is a library that works with opengl but it is very much abstracted and nobody uses it nowadays. I would recommend to start with glad or glew (they are mostly the same). The difference is that those 2 are basically raw opengl without any abstraction. So everything is a bit harder but it will make more sense than using something that does everything for you and you don't know whats happening behind the scene.
      After you learn opengl really really well (mostly won't happen soon) you can start using more low level api like vulkan or directx12.

    • @gogadenis8938
      @gogadenis8938 3 года назад +1

      @Dragoo Performance. For example vulkan gives you full control over the gpu drivers. One of the key points of using vulkan over opengl is that vulkan is thread friendly that means that you can make your renderer multi-threaded.
      Its the same as programming languages. For example why we use c++ instead of python.

    • @devantetoppin7879
      @devantetoppin7879 3 года назад +1

      @Dragoo vulkan-tutorial.com/Introduction make it through this and you have a solid footing to start with at least.

  • @basile5490
    @basile5490 2 года назад +2

    What purposes does implementing support for both OpenGL, DirectX and Vulkan serves ? I thought one would be enough to cover any hardware, is that wrong ? Great video anyway, congrats to you for managing to do such low level stuff.

    • @AngeTheGreat
      @AngeTheGreat  2 года назад +5

      On a practical level, you are correct that just supporting Vulkan or OpenGL is probably enough. However, there is a wide variety of hardware that one may want to target and you can't always assume that they will support Vulkan or OpenGL. For a serious game engine that intends to be cross-platform, having a solid abstraction layer is essential and in addition to this, writing an abstraction layer is a good learning experience and allows you to see similarities and patterns in the different APIs. Hopefully that answers your question, thanks for watching!

    • @LuaanTi
      @LuaanTi 2 года назад +1

      In short... DirectX usually has the best driver support, but is only available on Windows and X-Box, pretty much. If you want your game to run on Linux, Mac or in the browser, you'll need to use OpenGL. But OpenGL tends to have really poor driver support, and has a lot of annoying quirks - that's where Vulkan comes in. Vulkan is designed for absolutely minimal drivers in the first place - you have a much closer access to the hardware. That means opportunities for really deep and powerful tweaks and optimizations... but it also means that you're working with something that's _really_ annoying to use and it's a lot of effort to support a variety of graphics cards. Basically, Vulkan is designed for people like John Carmack, who are constantly let down by the limitations of graphics drivers :)
      Unless you already have an OpenGL background, DirectX is probably the most convenient and fun to use, but it does mean essentially Windows only. And giving the user a choice between OpenGL, DirectX and Vulkan can actually result in performance gains, since different computers will tend to perform differently using each of these, even with all else equal. I actually prefer Vulkan to OpenGL, but that might be my constant bad experiences with OpenGL over the decades :D

  • @kez963
    @kez963 2 года назад

    Awesome 😄 can you also make a software rendere? no gpu 😅

    • @AngeTheGreat
      @AngeTheGreat  2 года назад +1

      Well considering I made a ray tracer which is essentially a CPU only renderer, then I can probably manage a software rasterizer. My friend T3V made a software rasterizer, you can check it out on his channel. Thanks for watching!

  • @fayazmohammad2813
    @fayazmohammad2813 Год назад

    Should I study vulkan

  • @puppergump4117
    @puppergump4117 3 года назад +2

    Did you just tell me to study, that's criminal

    • @AngeTheGreat
      @AngeTheGreat  3 года назад +7

      Just wait until my "clean your room" video drops

    • @puppergump4117
      @puppergump4117 3 года назад +1

      @@AngeTheGreat Actually it's pretty clean except for everything on the floor

  • @AmauryChihuahua
    @AmauryChihuahua Год назад

    When next video

  • @holzi1182
    @holzi1182 2 года назад

    dad

  • @ironnoriboi
    @ironnoriboi 2 года назад

    boys cute

  • @hezuikn
    @hezuikn 2 года назад

    misread as "driver"

  • @anon3118
    @anon3118 2 года назад

    lmao you're pretty funny

  • @chemloaf3020
    @chemloaf3020 8 месяцев назад

    Why not size_t subs? 🤭

  • @ilypavan
    @ilypavan 10 месяцев назад

    I didn't understand a single thing

    • @twotamatos
      @twotamatos 7 месяцев назад

      Yah honestly I just started reading through books to learn c++ open GL & python and I’d say I probably retain 40% of each chapter at most. At first 3D design was so alien and hard for me now I know the hot keys how to bounce from Maya to c4d to blender u name it. Imma start taking some community college courses and continue to learn things like python at my art school but yah it’s a lot harder then anything I have ever learnt but 3D thought me if u put ur brain in anything you can learn it! U just gotta have the passion

  • @nyx1284
    @nyx1284 3 года назад +2

    5 hours? thats impossible.

    • @AngeTheGreat
      @AngeTheGreat  3 года назад +3

      Tbh I can't tell if you're being sarcastic or not haha... it actually was 5 hours though which kind of seems like a long time when I think about it. All I did was read through the Vulkan documentation and write some skeleton code, not much to it haha... thanks for watching!

  • @ChristopherGray00
    @ChristopherGray00 2 года назад

    no offense but this video is completely all over the place and unfocused

    • @AngeTheGreat
      @AngeTheGreat  2 года назад +2

      Lol I don't disagree with you. I want to delete it but I've kept it up because I want a historical record of my old videos, even bad ones