Writing a Vulkan renderer from scratch [Part 0]

  Рет қаралды 77,856

AngeTheGreat

AngeTheGreat

Күн бұрын

I share my experience using Vulkan for the first time. I didn't get much done in this devlog, but this is very much on purpose. I spent a lot of time familiarizing myself with how Vulkan works and the theory behind its operation.
Useful Links for Learning Vulkan (and other things)
Vulkan specification: www.khronos.org/registry/vulk...
Vulkan samples: github.com/KhronosGroup/Vulka...
Vulkan hello-triangle: github.com/KhronosGroup/Vulka...
Anki: apps.ankiweb.net/
Check out my ray-tracing video plz: • Rendering a car with m...
This video looks at the following topics:
- How I learn a new API
- Vulkan
- Game engine development
As of the recording of this video, the game is under the working title of "Cereal Adventure." It's an indie game in which a sentient cereal box must navigate a dangerous 2.5D world in order to beat out his breakfast competitors.
More videos are planned and on the way! Subscribe so you don't miss out.
#gamedev #indiegamedev #gamedevelopment #devlog
Check out the source code for this game!
github.com/ange-yaghi/cereal-...
Check out my GitHub!
github.com/ange-yaghi
Check out my game engine! [Still in development]
github.com/ange-yaghi/delta-s...
Join my Discord!
/ discord
Follow me on Instagram!
/ ange.the.great
If you like my work and would like to support me, consider donating!
ko-fi.com/angethegreat
Thanks for watching!

Пікірлер: 75
@yusufketen5998
@yusufketen5998 3 жыл бұрын
What a great series. We need deep knowledge instead of 24 hours game engine series, please go on.
@AngeTheGreat
@AngeTheGreat 3 жыл бұрын
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 Жыл бұрын
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.
@offbeatstuff8473
@offbeatstuff8473 3 жыл бұрын
Writing bindings for vulkan is more fun than writing vulkan applications (at start)
@AngeTheGreat
@AngeTheGreat 3 жыл бұрын
Maybe I should try that lol
@AngeTheGreat
@AngeTheGreat 3 жыл бұрын
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 Жыл бұрын
a very comfortable short video
@bluebaldwin
@bluebaldwin 3 жыл бұрын
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 жыл бұрын
That's a perfect time to start! The earlier the better. Good luck on your journey and thanks for watching!
@Skeffles
@Skeffles 3 жыл бұрын
Excellent video! It's great to see you start on this.
@AngeTheGreat
@AngeTheGreat 3 жыл бұрын
Thank you!
@Norman_Fleming
@Norman_Fleming Жыл бұрын
It is always the third technology under your API that really solidifies your decisions. Onward and upward. Up n atom! To infinity and beyond!
@rafante2
@rafante2 9 ай бұрын
feel just like you man! And the game is wayyyyyyy better now than when you posted this video
@nimrod7785
@nimrod7785 2 жыл бұрын
Please continue investing on the series. Great content!
@AngeTheGreat
@AngeTheGreat 2 жыл бұрын
I'm planning on releasing a follow-up to this soon, I know it's been a while haha... Thanks for watching!
@AcidiFy574
@AcidiFy574 Жыл бұрын
Finally some Vulkan content
@fxshlein
@fxshlein 3 жыл бұрын
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 жыл бұрын
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!
@theemeraldfalcon9184
@theemeraldfalcon9184 3 жыл бұрын
This is so cool!
@AngeTheGreat
@AngeTheGreat 3 жыл бұрын
Thank you and thanks for watching!
@theRPGmaster
@theRPGmaster 3 жыл бұрын
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 жыл бұрын
I'll remember that, thanks for the tip!
@halfbakedproductions7887
@halfbakedproductions7887 Жыл бұрын
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.
@dipperdesperado
@dipperdesperado 3 жыл бұрын
Congrats for making a video about writing a Renderer interesting. Didn't think it was possible haha
@AngeTheGreat
@AngeTheGreat 3 жыл бұрын
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 Жыл бұрын
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.
@gasparmc
@gasparmc 11 ай бұрын
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
@syntaxed2
@syntaxed2 8 ай бұрын
1:53 what app is that logger util youre adding comments into? - EDIT: Anki was the name :)
@dazai826
@dazai826 2 ай бұрын
Please share all the anki cards you made & used.
@element1111
@element1111 Жыл бұрын
How many flash cards do you end up with when studying a new topic?
@zenitsu7578
@zenitsu7578 Жыл бұрын
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 3 ай бұрын
via the what? just gonna end there? why sooooo soon :(
@suncrafterspielt9479
@suncrafterspielt9479 Жыл бұрын
Will this series continue?
@kez963
@kez963 2 жыл бұрын
Awesome 😄 can you also make a software rendere? no gpu 😅
@AngeTheGreat
@AngeTheGreat 2 жыл бұрын
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!
@basile5490
@basile5490 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 жыл бұрын
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 Жыл бұрын
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
@yoyo12345
@yoyo12345 3 жыл бұрын
I also want to learn vulkan, is there a way to code it in a phone
@AngeTheGreat
@AngeTheGreat 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 жыл бұрын
Mobile is definitely supported - there are even features in the API that are commonly only useful on mobile devices!
@AngeTheGreat
@AngeTheGreat 3 жыл бұрын
Nice, I didn't know that. Thanks for sharing your knowledge!
@yoyo12345
@yoyo12345 3 жыл бұрын
@@fxshlein really! Then how do I code Vulkan in my phone, is there any app that supports it??
@fxshlein
@fxshlein 3 жыл бұрын
@@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 жыл бұрын
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 жыл бұрын
Lool that sucks... maybe I'm headed for a similar fate 😬 Thanks for watching and for sharing your tragic experience!
@gogadenis8938
@gogadenis8938 3 жыл бұрын
@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 жыл бұрын
@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 жыл бұрын
@Dragoo vulkan-tutorial.com/Introduction make it through this and you have a solid footing to start with at least.
@puppergump4117
@puppergump4117 2 жыл бұрын
Did you just tell me to study, that's criminal
@AngeTheGreat
@AngeTheGreat 2 жыл бұрын
Just wait until my "clean your room" video drops
@puppergump4117
@puppergump4117 2 жыл бұрын
@@AngeTheGreat Actually it's pretty clean except for everything on the floor
@fayazmohammad2813
@fayazmohammad2813 Жыл бұрын
Should I study vulkan
@AmauryChihuahua
@AmauryChihuahua 11 ай бұрын
When next video
@ironnoriboi
@ironnoriboi Жыл бұрын
boys cute
@hezuikn
@hezuikn Жыл бұрын
misread as "driver"
@holzi1182
@holzi1182 Жыл бұрын
dad
@anon3118
@anon3118 2 жыл бұрын
lmao you're pretty funny
@AngeTheGreat
@AngeTheGreat 2 жыл бұрын
Lol I try at least
@ilypavan
@ilypavan 5 ай бұрын
I didn't understand a single thing
@twotamatos
@twotamatos 2 ай бұрын
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
@chemloaf3020
@chemloaf3020 3 ай бұрын
Why not size_t subs? 🤭
@nyx1284
@nyx1284 2 жыл бұрын
5 hours? thats impossible.
@AngeTheGreat
@AngeTheGreat 2 жыл бұрын
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 Жыл бұрын
no offense but this video is completely all over the place and unfocused
@AngeTheGreat
@AngeTheGreat Жыл бұрын
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
Making Minecraft from scratch in 48 hours (NO GAME ENGINE)
16:38
GDC 2018   Getting explicit How Hard is Vulkan really
1:01:03
Spot The Fake Animal For $10,000
00:40
MrBeast
Рет қаралды 160 МЛН
НРАВИТСЯ ЭТОТ ФОРМАТ??
00:37
МЯТНАЯ ФАНТА
Рет қаралды 6 МЛН
아이스크림으로 체감되는 요즘 물가
00:16
진영민yeongmin
Рет қаралды 62 МЛН
БАБУШКИН КОМПОТ В СОЛО
00:23
⚡️КАН АНДРЕЙ⚡️
Рет қаралды 15 МЛН
ALL IT TAKES... A Vulkan Story
29:10
The Cherno
Рет қаралды 128 М.
Rendering a car with my own ray-tracer
13:53
AngeTheGreat
Рет қаралды 283 М.
Should you learn Vulkan(C++)? Can beginners  learn it?
8:49
codergopher
Рет қаралды 62 М.
How long does it take to learn Vulkan?
6:16
GetIntoGameDev
Рет қаралды 11 М.
When Your Game Is Bad But Your Optimisation Is Genius
8:52
Vercidium
Рет қаралды 1,4 МЛН
INSTANCED RENDERING in my Game Engine
24:57
The Cherno
Рет қаралды 72 М.
How I Made a 3D Platformer in 2D Game Engine
21:23
ggenije
Рет қаралды 453 М.
I Optimised My Game Engine Up To 12000 FPS
11:58
Vercidium
Рет қаралды 602 М.
Всегда проверяйте зеркала
0:19
Up Your Brains
Рет қаралды 21 МЛН
I meet Mr.Beast
0:15
ARGEN
Рет қаралды 26 МЛН
19 июля 2024 г.
0:20
мишук круглов
Рет қаралды 9 МЛН
19 июля 2024 г.
0:20
мишук круглов
Рет қаралды 9 МЛН
LEVITATING MAGIC REVEALED 😱😳
0:18
Milaad K
Рет қаралды 30 МЛН