GetIntoGameDev

GetIntoGameDev

Hi, my name's Andrew and I'm learning to make games. Join me as I learn, fail, and fail to learn.

Discord: discord.gg/vU2PKasZdn

Patreon: patreon.com/user?u=58955910

WGPU for beginners 3: Shaders

WGPU for beginners 3: Shaders

Programming Bogeymen

Programming Bogeymen

Пікірлер

  • @azaias
    @azaiasМинут бұрын

    Congrats! I'm currently in a similar life situation lol. Your channel is a great resource, thanks again!

  • @kubiz198
    @kubiz198Сағат бұрын

    Congrats!

  • @Julian-mj7hy
    @Julian-mj7hy3 сағат бұрын

    Dude you are so cool!! Your C++ and OpenGL videos are helping me a lot, please keep doing what you do :)

  • @SkyFly19853
    @SkyFly198534 сағат бұрын

    Congratulations ! still in Thailand ?

  • @CoolestPossibleName
    @CoolestPossibleName4 сағат бұрын

    Congratulations on 10k subscribers 🎉

  • @natchadanisaisue1594
    @natchadanisaisue15944 сағат бұрын

    Always be an encouragement and support ,I love you💓

  • @GetIntoGameDev
    @GetIntoGameDev4 сағат бұрын

    Thankyou, love you too! 💓

  • @moistness482
    @moistness4826 сағат бұрын

    An entire part of my college course basically summed up in 10 minutes. Good job sir.

  • @DaminGamerMC
    @DaminGamerMC7 сағат бұрын

    what i dont get is why this is needed to be done by us. Its not like we are ever going to no use syncronization. I think it is good that vulkan gives us more control but some things are just not needed imo.

  • @GetIntoGameDev
    @GetIntoGameDev5 сағат бұрын

    You and me both, didn’t realize when I started down this path that I’d need to reverse engineer my graphics card 😬

  • @SkyFly19853
    @SkyFly1985319 сағат бұрын

    making progress, are we?

  • @GetIntoGameDev
    @GetIntoGameDev5 сағат бұрын

    It’s getting there!

  • @SkyFly19853
    @SkyFly198534 сағат бұрын

    @@GetIntoGameDev indeed !

  • @mattstroker3742
    @mattstroker374223 сағат бұрын

    You are a God. Thank you for teaching us. I've been wanting to create things like I saw in demos like future crew's second reality and panic ever since I was a kid. Now I have the time and soon the knowledge. In part thanks to you. So thank you very much! 👍😁😅

  • @adreto2978
    @adreto2978Күн бұрын

    Nice mate. Like you I was stuck on this for a couple days as im just learning OpenGL. knew how to use VAO and VBO but didnt 100% grasp the why until I watched this

  • @user-ry2nq7ng5e
    @user-ry2nq7ng5eКүн бұрын

    Great explanations! But aren't semaphores purely for GPU and fences GPU/CPU synchronizations? At 14:45.

  • @GetIntoGameDev
    @GetIntoGameDevКүн бұрын

    Correct!

  • @gedtoon6451
    @gedtoon6451Күн бұрын

    would numba just silently ignore the block if it could not compile it?

  • @GetIntoGameDev
    @GetIntoGameDevКүн бұрын

    It will print out a message along the lines of “nopython failed”

  • @rozt107
    @rozt107Күн бұрын

    Looks like they've changed winit significantly. There's no WindowBuilder now

  • @GetIntoGameDev
    @GetIntoGameDevКүн бұрын

    Yep, winit is a nightmare. Check out my glfw wgpu videos!

  • @user-qj7gw1kj3u
    @user-qj7gw1kj3u2 күн бұрын

    Your videos here are really a great resource for learning WebGPU. I really appreciate your effort. This part contains a lot of steps from making the shader to actually drawing it to the canvas, and I don't understand why many of the steps are necessary. I would struggle to recreate it on my own. I'll continue to the next videos, but I'd like to ask you if this is just something where I should continue and hang on, and at some point, it will make sense? Or if you think it would be more beneficial to read some theory to really grasp what encoders, pipelines, buffers etc. are? I know what these things are, but I struggle to remember and understand why all these data have to go through so many steps in the API.

  • @TheDev-ht9zv
    @TheDev-ht9zv2 күн бұрын

    you could consider creating courses for udemy, I would buy them.

  • @TheDev-ht9zv
    @TheDev-ht9zv2 күн бұрын

    hello, thanks for this content!

  • @davidmartin5351
    @davidmartin53512 күн бұрын

    If you get into the habit of using your batch file to execute the program (analogous to "make run"), you can have your batch file check if the GLSL source file is newer than the SPIR-V file, and then recompile as necessary. This covers the similar error of updating your C++ source code and forgetting to recompile with a single common mechanism.

  • @user-qj7gw1kj3u
    @user-qj7gw1kj3u2 күн бұрын

    When I add "@webgpu/types" to types in tsconfig, I get an error on the file: "Cannot find type definition file for '@webgpu/types'. The file is in the program because: Entry point of type library '@webgpu/types' specified in compilerOptionsts". I do have @webgpu/types v 0.1.43 installed though.

  • @user-qj7gw1kj3u
    @user-qj7gw1kj3u2 күн бұрын

    I figured out a solution by reading the readme of @webgpu/types a bit more closely. Today, it says to use _either_ types _or_ typeRoots in tsconfig, not both of them.

  • @SIRIUSNJ
    @SIRIUSNJ2 күн бұрын

    Oh my, I thought your intro was realtime render by you

  • @CoolestPossibleName
    @CoolestPossibleName2 күн бұрын

    sick intro 🤙

  • @Jovenel-v7s
    @Jovenel-v7s2 күн бұрын

    I have an issue with building the wheel for PyOpengl_accelerate

  • @Jovenel-v7s
    @Jovenel-v7s2 күн бұрын

    I have an error , when I tried to install opengl_accelerate. It said that failed building wheel for pyopengl_accelerate

  • @rushikeshbhavsar1564
    @rushikeshbhavsar15643 күн бұрын

    cant we just use alloc rather than doing char[1024]

  • @Mustlight
    @Mustlight3 күн бұрын

    I like the way you present and explain the stuff, keep up the good work man. It's great to see someone is explaining stuff entertaining and clear at the same time.

  • @meanmole3212
    @meanmole32123 күн бұрын

    Do you have a video on Rust + SDL2 when it comes to compiling executables for both Windows and Linux that the user can just run without any hassle? Is it possible to produce such binaries for both platforms directly from Linux only with cross-compiling?

  • @momodem2072
    @momodem20727 күн бұрын

    The menu font is quite difficult to read. For Thai people, it just appears as random characters.

  • @GetIntoGameDev
    @GetIntoGameDev7 күн бұрын

    Thanks for the feedback! ☺️

  • @Hector-bj3ls
    @Hector-bj3ls8 күн бұрын

    The matrix library could be used like this: const projection = mat4.perspective(mat4.create(), ...); The reason to accept an "out" as the first parameter is for performance reasons. It allows you to avoid creating temp objects. You can just pre allocate a bunch of matrices and then reuse them over and over. Helps avoid GC pauses.

  • @cappuch__
    @cappuch__8 күн бұрын

    Can't believe that this doesn't have any more views! Such a good series.

  • @luthecoder
    @luthecoder8 күн бұрын

    Any more Metal renderer videos coming?

  • @GetIntoGameDev
    @GetIntoGameDev8 күн бұрын

    Within the next few weeks

  • @oyalesalami
    @oyalesalami9 күн бұрын

    That menu intro looks really good

  • @LoveAustinVideos
    @LoveAustinVideos9 күн бұрын

    Thanks for the videos! Question for you on c++ and Metal, how can we handle keyboard and trackpad/mouse input on macOS? I’ve tried sfml and sdl2 with no luck on my Mac M3. Interested in making a game engine but need the controller input aspect.

  • @GetIntoGameDev
    @GetIntoGameDev9 күн бұрын

    I’m surprised SDL2 isn’t working, its event system should be cross platform. I’ll take a look at it when I get around to making a video on input.

  • @LoveAustinVideos
    @LoveAustinVideos9 күн бұрын

    @@GetIntoGameDev thanks a lot! Both libraries let me include the .framework in binary libraries but it gives me an “abort with payload” error when running, I thought it must have been my version of Xcode. I will try sdl2 again. I also considered adding keyboard input into the Appkit.h framework for c++, but it didn’t work when I tried adding it, because it seems the original AppKit had input/output features. I looked through coregraphics as well as quartzcore but they all seem to be missing the c++ for keyboards when the original obj c could have had a method. Whoever finds out a good way to do it will be helping macOS c++ majorly can’t imagine it’s Apple hardware and they just disregard an entire language keyboard access!

  • @GetIntoGameDev
    @GetIntoGameDev9 күн бұрын

    I hear you, macOS' lack of support for keyboard and mouse input has been criminal.

  • @LoveAustinVideos
    @LoveAustinVideos9 күн бұрын

    @@GetIntoGameDev another option is objective c++, where the keyboard is controlled with a .mm but it’s a little bit confusing combining languages, but I know it’s relatively simple in obj c

  • @trys10studios65
    @trys10studios6510 күн бұрын

    Numerical Analysis book on top of a drum pad, I think someone's learning Danny Carey.

  • @DaminGamerMC
    @DaminGamerMC11 күн бұрын

    was this the end of the series?

  • @GetIntoGameDev
    @GetIntoGameDev10 күн бұрын

    No way is this the end! I’m just currently overseas and my macbook doesn’t support shader objects. I will be back to my main setup next week.

  • @DaminGamerMC
    @DaminGamerMC10 күн бұрын

    @@GetIntoGameDev that's great news thank you

  • @chillbro2275
    @chillbro227512 күн бұрын

    I appreciate now why game engines exist.

  • @Hart8
    @Hart813 күн бұрын

    Thanks for your tutorials ❤

  • @shreyassk1515
    @shreyassk151514 күн бұрын

    How to lock fps

  • @Hector-bj3ls
    @Hector-bj3ls15 күн бұрын

    Not sure if it was available at the time, but you can do `vec3f` instead of `vec3<f32>` now.

  • @Hector-bj3ls
    @Hector-bj3ls15 күн бұрын

    You don't actually need to create a bind group layout or bind group if you're not using them. You can just have device.createPipelineLayout({ bindGroupLayouts: [] });

  • @CoolestPossibleName
    @CoolestPossibleName16 күн бұрын

    I'm getting the error "missing field `compilation_options`" in the structs wgpu::VertexState and wgpu::FragmentState Edit: it worked when I set those values to wgpu::PipelineCompilationOptions::default()

  • @SkyFly19853
    @SkyFly1985317 күн бұрын

    Whenever there is Python, here I am....

  • @azaias
    @azaias17 күн бұрын

    Yep, I'm here with you

  • @srinikethvelivela2692
    @srinikethvelivela269216 күн бұрын

    @@azaias wtf is this shit?

  • @gofudgeyourselves9024
    @gofudgeyourselves902417 күн бұрын

    struct ContentView: UIViewRepresentable { class Coordinator: NSObject, MTKViewDelegate { var parent: ContentView var device: MTLDevice! var commandQueue: MTLCommandQueue! init(parent: ContentView) { self.parent = parent if let device = MTLCreateSystemDefaultDevice() { self.device = device } self.commandQueue = device.makeCommandQueue() super.init() } func mtkView(_ view: MTKView, drawableSizeWillChange size: CGSize) { // Handle size change if needed } func draw(in view: MTKView) { guard let drawable = view.currentDrawable else { return } let commandBuffer = commandQueue.makeCommandBuffer() let renderPassDescriptor = view.currentRenderPassDescriptor! renderPassDescriptor.colorAttachments[0].clearColor = MTLClearColorMake(0.0, 0.5, 0.5, 1.0) renderPassDescriptor.colorAttachments[0].loadAction = .clear renderPassDescriptor.colorAttachments[0].storeAction = .store let renderEncoder = commandBuffer?.makeRenderCommandEncoder(descriptor: renderPassDescriptor) renderEncoder?.endEncoding() commandBuffer?.present(drawable) commandBuffer?.commit() } } func makeCoordinator() -> Coordinator { Coordinator(parent: self) } func makeUIView(context: Context) -> MTKView { let mtkView = MTKView() mtkView.delegate = context.coordinator mtkView.preferredFramesPerSecond = 60 mtkView.enableSetNeedsDisplay = true if let metalDevice = MTLCreateSystemDefaultDevice() { mtkView.device = metalDevice } mtkView.framebufferOnly = false mtkView.drawableSize = mtkView.frame.size return mtkView } func updateUIView(_ uiView: MTKView, context: Context) { // Update the UIView if needed } }

  • @ostralyan92
    @ostralyan9217 күн бұрын

    Awesome tutorial, I'm curious - at the very end of the tutorial, instead of setting the offset of the position to 5, I set it to 10 and I got the same clipping issue where it only renders half of the triangle at a time. Would you know what that is? position: [10, 0.0, 0.0],

  • @gofudgeyourselves9024
    @gofudgeyourselves902417 күн бұрын

    Your channel is highly underrated. You should start Membership on your channel

  • @gofudgeyourselves9024
    @gofudgeyourselves902417 күн бұрын

    Bro i just stated learning low level languages and was looking into creating something useful, you're channel is Gold. Please never stop

  • @Nallu_Swami
    @Nallu_Swami18 күн бұрын

    Incase you still get the error for glfw library not found , edit the cmake and add this "find_package(glfw3 3.3 REQUIRED)" in between "target_include_directories(Mathematics PRIVATE lib) target_link_libraries(Mathematics glfw)"

  • @blacklistnr1
    @blacklistnr119 күн бұрын

    I've no idea how I ended up here, but some feedback: I don't find the _type code in silence -> explain the code_ neither too engaging or time efficient My favourite style that I've found is narrating the goal via current thoughts before/while coding with breaks if relevant, e.g. "Ok, we have an initialized surface, this should be passed to the GPU device to draw on. To do that we need to go though an *typing & saying* instance.request_adapter *break* which is similar to the vulkan adapter if you've used that, *continue typing*..." Interesting nonetheless, keep it up!

  • @GetIntoGameDev
    @GetIntoGameDev19 күн бұрын

    Thanks for the feedback, appreciate it!