3Angle
3Angle
  • Видео 89
  • Просмотров 38 678
WebGPU with C# | Part 9 | Using Textures
In this tutorial video we cover texture usage
If you would like to support me: www.buymeacoffee.com/lerkapic Repository: github.com/luka712/youtube_wgpu_fps_csharp/tree/part9_using_textures
Discord: discord.com/invite/MwQq3H3q9W
#webgpu #dotnet #csharp #bindgroup #uniformbuffer
Просмотров: 79

Видео

WebGPU with C# | Part 8 | Texture
Просмотров 8428 дней назад
In this tutorial video we cover texture creation. If you would like to support me: www.buymeacoffee.com/lerkapic Repository: github.com/luka712/youtube_wgpu_fps_csharp/tree/part8_texturing Discord: discord.com/invite/MwQq3H3q9W #webgpu #dotnet #csharp #bindgroup #uniformbuffer
WebGPU with C# | Part 7 | Bind Groups
Просмотров 137Месяц назад
In this tutorial video we cover Bind Groups and passing of Global(uniform) data. If you would like to support me: www.buymeacoffee.com/lerkapic Repository: github.com/luka712/youtube_wgpu_fps_csharp/tree/part7_bind_groups Discord: discord.com/invite/MwQq3H3q9W #webgpu #dotnet #csharp #bindgroup #uniformbuffer
WebGPU with C# | Part 6 | Index Buffer
Просмотров 88Месяц назад
In this tutorial video we cover Index Buffer and indexed drawing. If you would like to support me: www.buymeacoffee.com/lerkapic Repository: github.com/luka712/youtube_wgpu_fps_csharp/tree/part6_index_buffer Discord: discord.com/invite/MwQq3H3q9W #webgpu #dotnet #csharp #indexbuffer #indexeddrawing
WebGPU with C# | Part 5 | Buffers
Просмотров 1382 месяца назад
In this tutorial video we pass data from CPU to the GPU with WGPUBuffer. If you would like to support me: www.buymeacoffee.com/lerkapic Repository: github.com/luka712/youtube_wgpu_fps_csharp/tree/part5_buffer Discord: discord.com/invite/MwQq3H3q9W #webgpu #dotnet #csharp
WebGPU with C# | Part 4 | Rendering
Просмотров 1672 месяца назад
In this tutorial video we setup we finally render something to the screen. If you would like to support me: www.buymeacoffee.com/lerkapic Repository: github.com/luka712/youtube_wgpu_fps_csharp/tree/part4_rendering Discord: discord.com/invite/MwQq3H3q9W #webgpu #dotnet #csharp
WebGPU with C# | Part 3 | Clearing Screen
Просмотров 1502 месяца назад
In this tutorial video we setup we implement basic render pass and clear screen to some default value. If you would like to support me: buymeacoffee.com/lerkapic Code Repository: github.com/luka712/youtube_wgpu_fps_csharp/tree/part3_clear_window Discord: discord.com/invite/MwQq3H3q9W #webgpu #dotnet #csharp
WebGPU with C# | Part 2 | WebGPU Setup
Просмотров 2252 месяца назад
In this tutorial video we setup WebGPU by creating Instance, Adapter, Surface and Device. If you would like to support me: buymeacoffee.com/lerkapic WebGPU documentation used in video: docs.rs/wgpu/latest/wgpu/ Code Repository: github.com/luka712/youtube_wgpu_fps_csharp/tree/part2_init_webgpu Discord: discord.com/invite/MwQq3H3q9W #webgpu #dotnet #csharp
WebGPU with C# | Part 1 | Window
Просмотров 4893 месяца назад
Part 1 of WebGPU C#. In this video we just discuss what WebGPU is and setup a Window. Visual Studio: visualstudio.microsoft.com/ Rider: www.jetbrains.com/rider/ Code on Github: github.com/luka712/youtube_wgpu_fps_csharp/tree/part1_window If you want to support me you can do it through here: buymeacoffee.com/lerkapic
3D PONG | Metal | WebGPU Outro
Просмотров 1103 месяца назад
Just a small outro video for related series and intro for the next ones. If you liked content so far, you can also support me here buymeacoffee.com/lerkapic
3D PONG | Beginner Guide in WebGPU API | Split Screen | Part 18
Просмотров 1793 месяца назад
In this part of tutorial series we learn how to do split screen. Start Code: github.com/luka712/youtube_webgpu_pong/tree/part17 End Code: github.com/luka712/youtube_webgpu_pong/tree/part18 Discord: discord.com/invite/MwQq3H3q9W #webgpu #webgpu #typescript #graphics #gamedev #splitscreen
3D PONG | Beginner Guide in Metal API | Split Screen | Part 18
Просмотров 623 месяца назад
In this video we learn how to do split screen. Start Code: github.com/luka712/youtube_metal_pong/tree/part17 End Code: github.com/luka712/youtube_metal_pong/tree/part18 Discord: discord.gg/MwQq3H3q9W #metal #metalapi #swift #graphics #gamedev #collision #splitscreen #split
3D PONG | Beginner Guide in WebGPU API | Gameplay and Collisions | Part 17
Просмотров 1064 месяца назад
In this part of tutorial series we learn how to do collisions and work bit on a gameplay. Start Code: github.com/luka712/youtube_webgpu_pong/tree/part16 End Code: github.com/luka712/youtube_webgpu_pong/tree/part17 Discord: discord.com/invite/MwQq3H3q9W #webgpu #webgpu #typescript #graphics #gamedev #collision
3D PONG | Beginner Guide in Metal API | Gameplay and Collisions | Part 17
Просмотров 344 месяца назад
In this video we learn how to apply shadows and do the shadow mapping. Start Code: github.com/luka712/youtube_metal_pong/tree/part16 End Code: github.com/luka712/youtube_metal_pong/tree/part17 Discord: discord.gg/MwQq3H3q9W #metal #metalapi #swift #graphics #gamedev #collision #axisaligned #boundingbox
3D PONG | Beginner Guide in WebGPU API | Shadow Mapping | Part 16b
Просмотров 1254 месяца назад
In this part of tutorial series we learn how to do shadows. Start Code: github.com/luka712/youtube_webgpu_pong/tree/part15 End Code: github.com/luka712/youtube_webgpu_pong/tree/part16 Discord: discord.com/invite/MwQq3H3q9W #webgpu #webgpu #typescript #graphics #gamedev #shadow #shadowmapping #shadow_mapping
3D PONG | Beginner Guide in WebGPU API | Shadow Mapping | Part 16a
Просмотров 2184 месяца назад
3D PONG | Beginner Guide in WebGPU API | Shadow Mapping | Part 16a
3D PONG | Beginner Guide in Metal API | Shadow Mapping | Part 16b
Просмотров 235 месяцев назад
3D PONG | Beginner Guide in Metal API | Shadow Mapping | Part 16b
3D PONG | Beginner Guide in Metal API | Shadow Mapping | Part 16a
Просмотров 355 месяцев назад
3D PONG | Beginner Guide in Metal API | Shadow Mapping | Part 16a
3D PONG | Beginner Guide in WebGPU API | Specular Lighting | Part 15
Просмотров 1255 месяцев назад
3D PONG | Beginner Guide in WebGPU API | Specular Lighting | Part 15
3D PONG | Beginner Guide in Metal API | Specular Lighting | Part 15
Просмотров 605 месяцев назад
3D PONG | Beginner Guide in Metal API | Specular Lighting | Part 15
3D PONG | Beginner Guide in WebGPU API | Lights Attenuation | Part 14
Просмотров 985 месяцев назад
3D PONG | Beginner Guide in WebGPU API | Lights Attenuation | Part 14
3D PONG | Beginner Guide in Metal API | Lights Attenuation | Part 14
Просмотров 535 месяцев назад
3D PONG | Beginner Guide in Metal API | Lights Attenuation | Part 14
3D PONG | Beginner Guide in WebGPU API | Point Lights | Part 13
Просмотров 1876 месяцев назад
3D PONG | Beginner Guide in WebGPU API | Point Lights | Part 13
3D PONG | Beginner Guide in Metal API | Point Lights | Part 13
Просмотров 546 месяцев назад
3D PONG | Beginner Guide in Metal API | Point Lights | Part 13
3D PONG | Beginner Guide in WebGPU API | Lighting | Part 12
Просмотров 1376 месяцев назад
3D PONG | Beginner Guide in WebGPU API | Lighting | Part 12
3D PONG | Beginner Guide in Metal API | Lighting | Part 12
Просмотров 496 месяцев назад
3D PONG | Beginner Guide in Metal API | Lighting | Part 12
3D PONG | Beginner Guide in WebGPU API | Scene & Refactoring | Part 11
Просмотров 1137 месяцев назад
3D PONG | Beginner Guide in WebGPU API | Scene & Refactoring | Part 11
3D PONG | Beginner Guide in Metal API | Scene & Refactoring | Part 11
Просмотров 797 месяцев назад
3D PONG | Beginner Guide in Metal API | Scene & Refactoring | Part 11
3D PONG | Beginner Guide in WebGPU API | View Matrix | Part 10
Просмотров 1747 месяцев назад
3D PONG | Beginner Guide in WebGPU API | View Matrix | Part 10
3D PONG | Beginner Guide in Metal API | View Matrix | Part 10
Просмотров 587 месяцев назад
3D PONG | Beginner Guide in Metal API | View Matrix | Part 10

Комментарии

  • @TwitchingShark
    @TwitchingShark 8 часов назад

    This video series is pure gold! Keep 'em coming!

  • @chrislanejones
    @chrislanejones 10 дней назад

    Very good Francesco, I'm likely going to learn Rust in the future for WEBGPU stuff. It also pays to know Linux commands/tools like Cat and Buffer to understand how this works.

  • @viktorgrozdanovski9552
    @viktorgrozdanovski9552 15 дней назад

    Great series for webGpu! Is general purpose programming in webGpu covered in some of your videos?

    • @3Angle_
      @3Angle_ 15 дней назад

      By general purpose you mean GPGPU ? Not yet, I was planning to cover it for creating mip map textures, but generally not more then that for now. Maybe in future, would be fun for sure.

  • @pedrofrazaopacheco
    @pedrofrazaopacheco 22 дня назад

    Man I never comment on RUclips but I want to thank you from the bottom of my heart for these videos. Super helpful and just straight to the point. A real dawg Cheers 🙌🙌

  • @yanlongyang323
    @yanlongyang323 24 дня назад

    thanks, The browser itself only has 60 frames per second, so there shouldn't be such a problem, right?

    • @3Angle_
      @3Angle_ 24 дня назад

      Yes, swapchain present mode is already configured with browser implementation of WebGPU. Really there is no way to change it either, so you don't have to worry about it. It's either double or triple buffering I assume.

  • @OldShoolGames
    @OldShoolGames Месяц назад

    Awesome content, keep it up!

  • @yanlongyang323
    @yanlongyang323 Месяц назад

    @3Angle 您好, 我在后处理中想开启 MASS, 将配置 const sampleCount = 4; const pipeline = device.createRenderPipeline({ ... multisample: { count: sampleCount, }, }); const texture = device.createTexture({ size: [canvas.width, canvas.height], sampleCount, format: presentationFormat, usage: GPUTextureUsage.RENDER_ATTACHMENT, }); 这种方式始终通不过,目前一直报以下一些错误,您能帮忙解读一下,我哪里写错了吗? index.html:1 Sample type for multisampled texture binding was TextureSampleType::Float. - While validating entries[1] - While validating [BindGroupLayoutDescriptor "vs:quad_vert_wgsl fs:fxaa_shader 2"] - While calling [Device "device"].CreateBindGroupLayout([BindGroupLayoutDescriptor "vs:quad_vert_wgsl fs:fxaa_shader 2"]). 15:37:36.056 index.html:1 [Invalid BindGroupLayout "vs:quad_vert_wgsl fs:fxaa_shader 2"] is invalid. - While calling [Device "device"].CreatePipelineLayout([PipelineLayoutDescriptor "vs:quad_vert_wgsl fs:fxaa_shader"]). 15:37:36.056 index.html:1 [Invalid BindGroupLayout "vs:quad_vert_wgsl fs:fxaa_shader 2"] is invalid. - While validating [BindGroupDescriptor] against [Invalid BindGroupLayout "vs:quad_vert_wgsl fs:fxaa_shader 2"] - While calling [Device "device"].CreateBindGroup([BindGroupDescriptor]). 15:37:36.056 index.html:1 [Invalid PipelineLayout "vs:quad_vert_wgsl fs:fxaa_shader"] is invalid. - While calling [Device "device"].CreateRenderPipeline([RenderPipelineDescriptor "quad_vert_wgsl|fxaa_shader"]).

  • @yanlongyang323
    @yanlongyang323 Месяц назад

    你太厉害了,发生报错的时候,我看到后毫无思路,您很快就解决了!厉害!

  • @hipno3477
    @hipno3477 Месяц назад

    Thanks for making these videos! Trying to wrap my head around all these rendering concepts and boilerplate code. But I'm learning alot!

  • @kashnigahbaruda
    @kashnigahbaruda Месяц назад

    Please blow up the font my love, your screen has enough empty real estate

  • @redboss5429
    @redboss5429 Месяц назад

    const maxDt = 1; // Maximum delta time in seconds (e.g., 100 ms) const now = performance.now(); let dt = (now - lastTimeRef.current) / 1000; dt = Math.min(dt, maxDt); // Cap `dt` to prevent large jumps due to switching tabs in the browser helps handle odd behaviour with speed due to window.requestAnimationLoop

  • @korigamik
    @korigamik 2 месяца назад

    Can you create written articles for us to follow?

    • @3Angle_
      @3Angle_ 2 месяца назад

      I was thinking about webpage or blog, but it's hard right now due to how much time it would take. Would be nice to have it in written format as well though.

  • @yanlongyang323
    @yanlongyang323 2 месяца назад

    我感觉c# 版本的WebGPU 比web 版本的更复杂

    • @3Angle_
      @3Angle_ 2 месяца назад

      It is, mainly due to this being low level bindings. However I think that after a while you become used to it and then other low level stuff becomes way easier as well. Flow of these bindings is somewhat similar to Vulkan for me.

  • @3Angle_
    @3Angle_ 2 месяца назад

    If you're not interested in presentation info and are already familiar with how graphics work 06:25

  • @hipno3477
    @hipno3477 2 месяца назад

    Thank you so much for putting these videos together. It is helping me alot! I've been wanting to work with wgpu and C# for some time now, but it seemed like such a daunting task. Really hope you will continue with this series of videos!

    • @3Angle_
      @3Angle_ 2 месяца назад

      Glad that you found it helpful! Yes I agree, it's bit daunting and weird to start with, especially because of unamanged C# and it feels more like C/C++ api then C# one with these binding. Good side is, it's just couple of new concepts which sink in rather quick.

    • @hipno3477
      @hipno3477 2 месяца назад

      @@3Angle_ Definately. Also having to translate concepts from the rust docs due to the lacking C# docs for these bindings makes it even harder... But yeah, thanks again! Very helpful stuff :)

  • @yanlongyang323
    @yanlongyang323 2 месяца назад

    “Hello World!” go on!

  • @yanlongyang323
    @yanlongyang323 3 месяца назад

    为什么您选择c#,而不使用c++ 或 rust呢?c#的性能与JavaScript相比会有提升吗?

    • @3Angle_
      @3Angle_ 3 месяца назад

      I just kinda wanted to do it in C#, since I haven't seen tutorials for it. It should generally be faster then JavaScript, but unless something really heavy is done, I think performance should not play major role in either.

    • @yanlongyang323
      @yanlongyang323 3 месяца назад

      @@3Angle_ 感谢您的回答,我特别想学习C++版本的WebGPU的相关接口开发,C#的课程我也一直会听下去,我觉得内部的逻辑应该是差不多的

  • @yanlongyang323
    @yanlongyang323 3 месяца назад

    声音有些小

    • @3Angle_
      @3Angle_ 3 месяца назад

      Thanks for note, I'll try to increase it for next video!

  • @angelo1716
    @angelo1716 3 месяца назад

    you have no idea how much i’ve been looking for this lol there’s almost nothing on webgpu in c#

  • @browsermage
    @browsermage 3 месяца назад

    Looking forward to the series

  • @kseo-u
    @kseo-u 3 месяца назад

    Thank you for the hard work. I'm hoping to go from 0 to the end and see what I can learn best about it. My hope is that I can actually make some sort of "2d game framework" with metal

    • @3Angle_
      @3Angle_ 3 месяца назад

      I think you should be set after couple of videos. I don't have 2d renderer example for Metal, but have for WebGPU. It should be very similar, since two API's are similar. Anyway even without 2d examples for Metal, it should not be too hard. I wish you luck!

  • @pixelusion2311
    @pixelusion2311 3 месяца назад

    Is it possible to use WebGPU without webpack and node.js stuff? Just pure WebGPU and browser?

    • @3Angle_
      @3Angle_ 3 месяца назад

      Sure , it is. I just used this setup to have strong types.

  • @yanlongyang323
    @yanlongyang323 3 месяца назад

    Thank you very much, learned more!

  • @quantumarium
    @quantumarium 3 месяца назад

    It was amazing! Thank you!

  • @yanlongyang323
    @yanlongyang323 3 месяца назад

    是否可以考虑重复使用渲染管线pipeline, 不使用pipeline2, 更改相机,更新渲染管线pipeline, 更新viewport , 然后重新渲染呢?

    • @3Angle_
      @3Angle_ 3 месяца назад

      It is, but you have to create second render pass encoder and make sure not to clear it. So you can create the same one as we had, but just set loadOp: load in order not to clear top half. So something like this - Create Render Pass Encoder - Set Viewport for top half - Draw Pipelines - End Encoder - Create 2nd Render Pass Encoder ( Do not clear it!) - Set Viewport for bottom half - Set 2nd camera on pipelines - Draw Pipelines with 2nd encoder - End 2nd Encoder

    • @yanlongyang323
      @yanlongyang323 3 месяца назад

      @@3Angle_ YES, Thanks

  • @yanlongyang323
    @yanlongyang323 3 месяца назад

    excellent!

  • @yanlongyang323
    @yanlongyang323 3 месяца назад

    Get

  • @yanlongyang323
    @yanlongyang323 4 месяца назад

    Thanks

  • @yanlongyang323
    @yanlongyang323 4 месяца назад

    Webgpu development tools recommend using "webgpu inspector"

  • @yanlongyang323
    @yanlongyang323 5 месяцев назад

    👏👏👏

  • @yanlongyang323
    @yanlongyang323 5 месяцев назад

    非常感谢,学到了很多!

  • @monahf
    @monahf 6 месяцев назад

    thx

  • @PatrikReal
    @PatrikReal 6 месяцев назад

    Amazing

  • @yanlongyang323
    @yanlongyang323 6 месяцев назад

    另外normalMatrix 是不是可以在WGSL中直接通过worldMatrix计算?

    • @3Angle_
      @3Angle_ 6 месяцев назад

      wgsl does not have invert function, so it might be hard to write it. Otherwise I would keep it on CPU since it's done once, instead of for each vertex.

    • @yanlongyang323
      @yanlongyang323 6 месяцев назад

      @@3Angle_ I known,,thanks!

  • @yanlongyang323
    @yanlongyang323 6 месяцев назад

    哦,学习了,非常棒,非常感谢! 点光源会考虑加入衰减吗? 后续还会加入聚光灯吗?

    • @3Angle_
      @3Angle_ 6 месяцев назад

      Glad that you're enjoying series :) Yes, I will cover attenuation but not sure about spotlight. They don't really fit current game. I still have to do specular light as well and am planning shadow mapping.

    • @yanlongyang323
      @yanlongyang323 6 месяцев назад

      @@3Angle_ OK!

  • @yanlongyang323
    @yanlongyang323 6 месяцев назад

    又来关注您有没有更新了,哈哈!

    • @3Angle_
      @3Angle_ 6 месяцев назад

      Should be published rather soon :)

  • @yanlongyang323
    @yanlongyang323 6 месяцев назад

    下一次是不是会把 specular light 也加入?元宵节快乐!

    • @3Angle_
      @3Angle_ 6 месяцев назад

      I was actually planning on creating point lights with diffuse lighting for next time first. Specula probably video behind that one.

    • @yanlongyang323
      @yanlongyang323 6 месяцев назад

      @@3Angle_ 期待,我正在写这块的功能,顺便再和您学习一下

  • @snc0lt
    @snc0lt 6 месяцев назад

    👏👏👏 thank you for this, learning a lot.

  • @yanlongyang323
    @yanlongyang323 6 месяцев назад

    waiting update 😀

    • @3Angle_
      @3Angle_ 6 месяцев назад

      should be next day or day after 😁

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

    Learned, thank you very much!

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

    不理解旋转矩阵为什么这样写的? [ Rx, Ux, Fx, 0, Ry, Uy, Fy, 0, Rz, Uz, Fz, 0, 0, 0, 0,1 ]

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

      You mean why math works correctly ? Well because of forward vetor and orthogonality. We get forward first and then based on it and desired up we orthogonal vectors that can represent right and up.

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

    Very much thanks!

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

    相机向上移动,显示的结果与我们看到的不一致,这一部分我看了两遍,不知道理解的对不对,是不是因为我们在构建投影矩阵的时候就把Y轴给翻转了,因为我们要适配屏幕的坐标,所以与我们理解的正好相反呢

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

      Excately, we need to bring everything to screen space, that's why it's reversed. If we could move screen space there would be no need to reverse it, but we cannot. It's bit unusual, because if you're used to Unity, Blender or similar software , you never really think about it, considering that that part is abstracted away.

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

    Great content. Is this supposed to be watched before/after your webgpu 2d tutorial or is it standalone? P.S: please make the audio louder, I can barely hear what you say on max volume. Without subtitles it would be really hard to follow the tutorial.

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

      It is standalone. Just focuses on different kind of game and techniques. Thank you for pointing out about audio. For some reason youtube lowers sound and it's really annoying. Newer videos should not have such issues.

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

    I hear you. I'll write more comments. hahahahaha.

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

    whenever you get a warning in vscode, you can just hover your mouse cursor over an underlined variable to see what the issue is

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

    Cool. Waiting for WebGPU

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

    const transforms: Array<Mat4x4> = [] const transforms2: Float32Array= new Float32Array(100 * 16) for (let i = 0; i < 100; i++) { const trans = Mat4x4.translation( Math.random() * 20 - 10, Math.random() * 20 - 10, Math.random() * 10 + 10, ) transforms2.set(trans, i * 16) transforms.push(trans) // transformsBubffer.update(trans,i*Mat4x4.BYTE_SIZE) } transformsBubffer.update(transforms2) 这里也可以通过transforms2 一次更新,这样效率是不是会更好

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

      It should be as you say. You can probably extend Mat4x4.translation to take Float32Array and some offset, and then write transform directly to Float32Array. I would do something like that for efficiency, as it would get rid of new calls In Mat4x4.translation.

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

    why different

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

      @yanlongyang323 hi, can you just let me know on what are you referring to, I would love to help.

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

    Your explanation of orthogonal projection was very easy to understand. I finally grasped the origin of this matrix. Thank you!