Finally a triangle! I knew I was in for a journey and a half with vulkan but this has been fun! Thanks for having one of the only resources in existence for how to use vulkan with python, and double thanks for making it so thorough!
@mayonnaise4days57120 сағат бұрын
Oh i was hoping for phase 2 of the teeko game somehow
@mayonnaise4days571Күн бұрын
Okay, morning tutorial complete, I'm gonna' get some dishes done now. You're great, I'm gonna check out your new stuff later!
@mayonnaise4days571Күн бұрын
long live jumble board and print board
@mayonnaise4days571Күн бұрын
And now back to our Rust mentor in the field of bamboo:
@mayonnaise4days571Күн бұрын
Aw shucks is this going to spiral into a Teeko addiction for me, now?
@mayonnaise4days571Күн бұрын
Antonin Carette is a legend
@webgpu2 күн бұрын
5:25 "i dont use these (workgroup)" - workgroup is the most important address space for PARALLEL ALGORITHMS.
@BakerMerlin2 күн бұрын
75910 Dimitri Shoals
@mayonnaise4days5712 күн бұрын
Thank you for making this tutorial series! 😊😊
@woohoocares15153 күн бұрын
I very much enjoyed the format of this video. While the line-by-line tutorials are very nice, I also like the code-review style as it forces me to actually go through and implement stuff more on my own.
@woohoocares15155 күн бұрын
your description of what to do with your fingers around the 14:00 mark was very unintuitive and confusing, everything else was great though :D
@user-zq4lo2cb2t6 күн бұрын
It's little bit old tutorial I googled it, and found some way to fix this tutorial for newer version (2024.9) first, GPURenderPassEncoder should be like this: const renderPass: GPURenderPassEncoder = commandEncoder.beginRenderPass({ colorAttachments: [ { view: textureView, clearValue: { r: 0.5, g: 0.0, b: 0.25, a: 1.0 }, loadOp: 'clear' as GPULoadOp, storeOp: 'store' as GPUStoreOp, }, ], }); you must explicitly define types for loadOp, storeOp using "as" operation second, wgsl language doesn't support @stage no longer. so. instead of "@stage(vertex)" => use "@vertex" this same goes for fragment. you just need to type "@fragment" only. after this, You'll see a triangle. sorry for my short english language. (I'm Korean)
@greg.matthews6 күн бұрын
Is this series going to continue? I hope so. The multithreading is good, but I wonder whether there is more to prevent the command buffer from being fully rerecorded every frame. That seems to slow the whole thing.
@twenty-fifth4206 күн бұрын
Huh, I just forked wgpu. This is going to be interesting. WebGpu imo is the future of OpenGL. It is nice to have something that is not locked down like metal or direct x 12 or have the need to bust out the rune book for vulkan. Edit 1:55 Ah, yes, I am familiar with this design pattern. It is called ‘just stuff all your data in a class and your methods are safe enough to work!’m
@GetIntoGameDev6 күн бұрын
🤣
@rahuldas83937 күн бұрын
0:23 Yeah back in the 19000000000s things were different
@RavikulRao8 күн бұрын
hello there, great video
@Kaoson738 күн бұрын
You do not need the line: find_package(OpenGL REQUIRED). This is needed when your app calls OpenGL directly. Your app uses GLAD. You also don't need to write OpenGL::GL under the target_link_libraries function's library list (same reason). Just write "GL" (without the quotes) and you are good to go (if not, add "dl" (without the quotes) to the list). All this policy setting that you needed to do with cmake_policy() is because of this confusion. BTW congrats for finding how to resolve this confusion that you created yourself. Have a good day.
@RavikulRao8 күн бұрын
@31.44 waifu domination hell yeah !!
@WesleyJane-w2r8 күн бұрын
Schimmel Lock
@GetIntoGameDev8 күн бұрын
Velvet Frost
@Stav_Bodik9 күн бұрын
in 30:14 we search for the new min,max corners after applying the transformation model in order to trace the blas boxes with world ray , hmm why we can't trace the blas boxes without applying the transformation to them using the object world ray ? hmmm is that because the tlas is goin to be dynamic ? like changing location and rotation ? and in order to rebuild it each time we need to consider the new transformation's of tlas ?
@GetIntoGameDev8 күн бұрын
Great question! So the tradeoff here is that AABBs have fairly simple intersection tests (compared to oriented bounding boxes), but need to be rebuilt. I haven’t looked at this code in a while but it’s probably possible to use a sort of inverse model technique here too.
@JulesPelak-p5n9 күн бұрын
Clementine Junctions
@Stav_Bodik9 күн бұрын
Thanks you very much for all the amazing work I really appreciate this ! Question, when converting the normal from obj space to world_space (21:47) why do we use the Barycentric method to calculate the normal, we could use the normal that we calculated using the cross of 2 edges cross(edge_ab, edge_ac) ? Why did we add a normal for the 3 vertexes/corners of a triangle , I think it is the same normal on all the plane of the triangle ?
@Stav_Bodik9 күн бұрын
If its same normal, and it should be because on a flat plane all the normals has same direction and same size (normalized) (1.0 - u - v) * tri.normal_a + u * tri.normal_b + v * tri.normal_c = (1.0 - u - v) * NORMAL + u * NORMAL + v * NORMAL = NORMAL -NORMAL*u - NORMAL*v + u * NORMAL + v * NORMAL = NORMAL ???
@GetIntoGameDev9 күн бұрын
Great question! So if we’re treating these triangles as true geometric triangles then it’s true we’re pretty much done. However I’m treating the triangles as parts of the model, where triangles are representing curved surfaces with per-vertex normals. In this sense there’s a difference between the geometric normal and the display normal, hence the interpolation with barycentric coordinates.
@Stav_Bodik9 күн бұрын
@@GetIntoGameDev But its only treatment right ? They are not curved they are flat same as we loaded them from file and set all corners to same normal, it is only for study ? I mean they are geometric, no one changed them ?
@GetIntoGameDev9 күн бұрын
That’s right, it’s just for lighting/reflections. The correct (flat) normal is used for intersection tests.
@Stav_Bodik9 күн бұрын
@@GetIntoGameDev Do you have maybe more advanced tutorials ? when I finish this one I have to study about "Dynamic Fragment Buffer" ?
@ffuhro9 күн бұрын
Pretty cool 😊
@twenty-fifth42010 күн бұрын
It is hilarious I am now subbed to a channel that I, as a Unix-Rationalist (I use Arch, btw) describes himself/themself as 'windows maximalist'. Thanks to you, I am sort of accelerating to reading the Ada core books. It isnt my first rodeo, I actually am very closely tied to Swift and D, but I like using words. Maybe it is because before this, I was a writer. I don't know.
@GetIntoGameDev10 күн бұрын
Welcome! I’m sort of playing the windows thing up a bit for the video. I’m glad I’m getting you into Ada! It’s a great language ☺️
@twenty-fifth42010 күн бұрын
"If a routine does not return a value, it is called a procedure, if a routine does return a value, it is called a function. That is it!" In Swift, I am used to treating plain functions to start, very procedure like where-as later I optimize them into generic, higher order functions if I think it will be more data structure like, or a method if I think it will be more type/operation like. I think what is great that I feel like anyone should rip off for future design is the express explicitness strong types give you, so you sort map and later design overtime whether you are using procedures/functions. In a game, lets say you want to return a 3-D map, so a matrix grid with 3 rows and three columns (I interpret this as a 3-D cube whereas height and angle matter). This can accurately demonstrate a full world, and you can probably optimize this with a game camera by choosing to sort of treat a single row as a 'rotor' that only moves on a single axis in complex number space. Cool, yeah, would I use a procedure or a function? For me, I would use a procedure if I just want to do a subtle operation on the matrix map, and sort of just hide it behind the scenes. If I wanted to do some express mutability for both say my player and myself, I would use a function and probably return that map, another generic, whatever else etc. I like opinionated language design. It makes teaching and reasoning easier. Sometimes I feel like my favorite Swift, is a bit too unopinionated. And if you coded in it, you can maybe see why.
@SilverXenolupus11 күн бұрын
I really appreciate these prep tutorials! As a game/graphics dev with very little experience in Web Dev besides working in CSS/HTML, this is really helpful.
@SilverXenolupus12 күн бұрын
It is wild to me that your workgroup size was 1x1. I have never seen anyone go below 8x8.
@rafamichalski615012 күн бұрын
There are problems running each Finished project: C1083 Cannot open source file: 'control\app.cpp': No such file or directory . They disappear only after edition of the .vcproj.filters and .vcproj files. Can you commit a working solution?
@twenty-fifth42012 күн бұрын
“I am really interested in data oriented design.” Same. I knew that whenever I constructed my first Magic Deck Mana Curve, and the game I made was an RPG, I knew I just like numbers 😂
@bro.why675013 күн бұрын
This was extremely useful, and your voice is very soothing. Thank u
@ivanyosifov262913 күн бұрын
Can I ask for future videos to increase the font size of Visual Studio. It's very hard to read. Thank you so much.
@GetIntoGameDev13 күн бұрын
Easy, thanks for the feedback!
@ivanyosifov262913 күн бұрын
@@GetIntoGameDev No problem man. I really enjoy your tutorials
@ffuhro13 күн бұрын
Loved the pacing, thanks!
@SkyFly1985313 күн бұрын
I hope that one did NOT come with Windows 11...
@GetIntoGameDev13 күн бұрын
Let's just say it didn't come with Windows 12...
@SkyFly1985313 күн бұрын
@@GetIntoGameDev I plan to install Windows 10 or BSD system if I ever get a new PC...
@artahir12314 күн бұрын
is this the last video of the series ?
@azaias14 күн бұрын
I recently implemented abstractions for Render Passes and Render Pipelines in python, they're pretty useful for anything that uses multiple render passes, like post processing. Could you possibly make a video on something like this?
@azaias15 күн бұрын
I like the current font, I think it fits the aesthetic of the game pretty nicely
@JulianSpencer-tf7sq16 күн бұрын
What type of game is Nak?
@GetIntoGameDev15 күн бұрын
It’s a 2D platformer with arena combat
@binkbonkbones340216 күн бұрын
Hi, I actually have a question Is there an easy way to set a fixed rendering resolution that doesn't require extra processing with a shader? Particularly in something like unity? I want to create the illusion of like a super Nintendo inspired 3d style, but where the rendering resolution is low enough to make it look retro and pixelated without a voxel engine or an advanced shader, I want it to run on phones, and ideally the retro aesthetic should reduce the work load, not increase it
@GetIntoGameDev16 күн бұрын
You could try reducing the framebuffer size, then using glViewPort to tell OpenGL to render to that size, then drawing that framebuffer to the screen. I’d also use gl_nearest texture filtering on the framebuffer Edit: this is with rendering to one external framebuffer then presenting that to the default framebuffer
@grrsa18 күн бұрын
7:00 - This pattern for removal would put the array out of order. Would the "active" range of the array just be re-sorted as part of a `pre-update`? Edit: clarity and grammar.
@GetIntoGameDev18 күн бұрын
Actually having it in order was just for illustration, the array does not need to be sorted at all!
@charfractal944118 күн бұрын
i was doing Vulkan for a month and after some point it got so hard, i then found your playlist, and it feels now a lot of things are making sense, thank you for this !! really helped a lot !!
@therealvbw19 күн бұрын
Thank you for the breakdown. Are these things fixed once the pipeline is created or can they be modified on an existing pipeline?
@SkyFly1985319 күн бұрын
Oh... Lists... perfect for tile map.
@shailmurtaza908220 күн бұрын
Thanks! You made this algorithm very easy to understand.
@RonaldAnthon21 күн бұрын
Rust Lang --> Get Good!! 😇
@Udinanon22 күн бұрын
This is a very Useful tutorial, but in my case when I capture the scene, the renderdoc scene is basically empty, even though the program is running correctly. I can't figure out if its an issue of the Python libraries being used, of Linux, of RenderDoc or what it is.
@Alexander-il9yx23 күн бұрын
This is awesome man! This is great news for python game developers. (: