Renderer Flow and Submission | Game Engine series

แชร์
ฝัง
  • เผยแพร่เมื่อ 23 พ.ย. 2024

ความคิดเห็น • 58

  • @DRAGON_FullPower
    @DRAGON_FullPower 5 ปีที่แล้ว +149

    I want that extra video. The documentation and understanding is really important

    • @__jan
      @__jan 5 ปีที่แล้ว +6

      Extra video? Yes please!

    • @factorio5745
      @factorio5745 5 ปีที่แล้ว +4

      Yes please

    • @ultimateskibum6813
      @ultimateskibum6813 5 ปีที่แล้ว +1

      Agreed. To understand these concepts fully and to be able to apply them in our own innovative ways an explanation/diagram video would be very useful!

    • @MrKriegus
      @MrKriegus 4 ปีที่แล้ว +4

      Has he ever made that video?

  • @APlethora
    @APlethora 5 ปีที่แล้ว +66

    An extra video on the renderer architecture would be great!

  • @Puddlestomps
    @Puddlestomps 5 ปีที่แล้ว +57

    Would love to see that extra video. Understanding the concept and design is just as important as seeing the code itself.

  • @Tehnikification
    @Tehnikification 5 ปีที่แล้ว +30

    Nice video! Of course, we are interested in extra one

  • @brendanoconnell6007
    @brendanoconnell6007 2 ปีที่แล้ว +10

    Hey Cherno. I'm a bit late to the party, but I just wanted to express my undying gratitude for the tremendous amount of love and effort you put into your work. I've always been fascinated by the idea of creating a game engine, but it never seemed like a realistic goal for me. You alone have turned dreams into realities, for me and many others.
    Cheers, Cherno! And thank you for all that you do. Looking forward to progressing further in this series and plan to become a Patreon partner soon.

  • @1Infinitive1
    @1Infinitive1 5 ปีที่แล้ว +19

    Hey Cherno, I believe any function defined inside the class body is inlined by default so there's no need to mark it as such.

  • @kacperozieblowski3809
    @kacperozieblowski3809 5 ปีที่แล้ว +11

    did you say heavy optimizations? oooh that excites me

  • @frankxu9483
    @frankxu9483 5 ปีที่แล้ว +2

    I would love to see the extra video about the renderer architecture!

  • @xxdeadmonkxx
    @xxdeadmonkxx 4 ปีที่แล้ว +11

    From my experience when you need multiple/crossplatform implementation for some classes like renderer it is better to use pImpl idiom instead of virtual classes to nullify all overheads on function calls every frame. Also if you need virtualization always set final keyword on implementation class to allow compiler to optimize some things.

    • @giancedrick507
      @giancedrick507 4 ปีที่แล้ว +1

      how do you implement virtualization with the pimpl idiom?

    • @xxdeadmonkxx
      @xxdeadmonkxx 4 ปีที่แล้ว +3

      @@giancedrick507 in case of different platform versions you don't need virtualization at all, just different cpp files for each platform with same methods, we just need one level of "virtualization" and don't need to re-override those methods

    • @giancedrick507
      @giancedrick507 4 ปีที่แล้ว +3

      ​@@xxdeadmonkxx Thanks! thought of the exact same thing, I just haven't come around in verifying yet.

  • @vamidicreations
    @vamidicreations 5 ปีที่แล้ว +2

    That might be a code idea. I think most of the people saw the code and can now see the reason behind your architecture. This will clear a lot =D

  • @kariakistephen508
    @kariakistephen508 2 ปีที่แล้ว +1

    Your a good teacher

  • @alekseymishin7134
    @alekseymishin7134 4 ปีที่แล้ว +4

    Why do we define RendererAPI::s_API inside RendererAPI class instead of OpenGLRendererAPI? Or we can add Create method like in other renderer classes to set it to different api?

  • @kebluetugirafee7558
    @kebluetugirafee7558 5 ปีที่แล้ว +3

    At first, I thought that RenderCommand is a redundant wrapper of RendererAPI. It took me a long time to understand why RenderCommand exists. It's another way to judge which underlying graphics API(OpenGL or D3D) should be used, a little different from the abstraction of classes like VertexBuffer. It avoids the switch statement in every specific rendering function, like DrawIndexed.

  • @sam_is_people1170
    @sam_is_people1170 2 ปีที่แล้ว +1

    thanks

  • @giancedrick507
    @giancedrick507 4 ปีที่แล้ว +1

    "heavily optimize it"
    mhmm yesssss

  • @DRAGON_FullPower
    @DRAGON_FullPower 5 ปีที่แล้ว +3

    When you will reach at animation and texture, i hope that you will show us how to make an animation and how to put a texture to a 3D model

  • @JamesCubes-ne2iq
    @JamesCubes-ne2iq 4 ปีที่แล้ว +2

    Literally no one in the world could count how many times Yan said right in the first 10 minutes

  • @DRAGON_FullPower
    @DRAGON_FullPower 5 ปีที่แล้ว +4

    you forgot to put last video in playlist

  • @OmarChida
    @OmarChida 5 ปีที่แล้ว +1

    Please the video about the rendering architecture. THANKS ♥️

  • @deadyanothaikiropool1chait713
    @deadyanothaikiropool1chait713 5 ปีที่แล้ว +1

    That link to another class so crazy that my gcc couldn't compiled it ._.
    Look like api that worked for me gonna be looked so different
    ...so that I mix all into Renderer only and it's look very clean

  • @mario7501
    @mario7501 4 ปีที่แล้ว +3

    For some reason the ImGui rendering is messed up now if you drag around the window. Not sure what I did wrong

    • @mario7501
      @mario7501 4 ปีที่แล้ว +3

      This seems to be caused by clearing the depth buffer. If you only clear the color buffer it work works fine

  • @karanh
    @karanh 5 ปีที่แล้ว +1

    After this series is done can you please do a series on Data Structures and Algorithms using C++?? There is no good series for that as of now. Would be appreciated!

  • @BrianHarbauer
    @BrianHarbauer 5 ปีที่แล้ว +1

    First time commenter, long time follower here! Thanks for this awesome series. When it comes time for textures, would you be able to have a tutorial of video playback on poly surface? I can barely find any information on this topic. If not in this series, then at some point? Thanks!

  • @valizeth4073
    @valizeth4073 5 ปีที่แล้ว +2

    I get why you use the m_ prefix for member vars, but why s_

  • @totallynuts7595
    @totallynuts7595 5 ปีที่แล้ว +1

    Midweek supplement pleeaase =)))

  • @ultimateskibum6813
    @ultimateskibum6813 5 ปีที่แล้ว +1

    Hey Cherno, for some reason my mouse button input code for Imgui in our current build is not working properly. It keeps giving me an unhandled exception every time I try and click the ImGui UI. I was wondering if this was due to an update in your ImGui repo or something I did wrong?

    • @Sf37li0
      @Sf37li0 5 ปีที่แล้ว +1

      I have a very similar issue which happens mostly when I use the mouse scroll. Have you found the problem?

  • @xxXSashaBardXxx
    @xxXSashaBardXxx 3 ปีที่แล้ว +2

    Hello, Yan! I watched almost all your videos and you helped me to became a C++ developer at the first place. But in 29:53 you keep saying "Its a pointer to a class with no members, so its a 1 byte memory leak". I'm pretty sure you aware, then you create a vtable ( declaring at least one virtual function ), it need to be stored somewhere. Inside a class. So, sizeof an interface with bunch of virtual functions equals size of a pointer to that vtable, 8 bytes.

    • @Scotty-vs4lf
      @Scotty-vs4lf 2 ปีที่แล้ว +2

      yeah the pointer is 8 bytes, but the memory leak isnt the size of the pointer. the memory leak is how much memory is allocated but not freed on the heap, which for a class with no members is 1 byte. The variable itself (the 8 byte pointer) isn't a memory leak

  • @sc5shout
    @sc5shout 5 ปีที่แล้ว +5

    Is multithreading done in the paid version of the engine? I hugely consider buying it.

    • @pooria_garrett3020
      @pooria_garrett3020 5 ปีที่แล้ว +3

      there's no paid version

    • @sc5shout
      @sc5shout 5 ปีที่แล้ว +4

      @@pooria_garrett3020 Being a patreon is not for free :V

    • @jonathanmatai6235
      @jonathanmatai6235 5 ปีที่แล้ว +2

      @@sc5shout As far as I know It's the same series, it's just that the videos are released one week earlier for the patreons

    • @pooria_garrett3020
      @pooria_garrett3020 5 ปีที่แล้ว +2

      @@sc5shout It's not like there'll be some code remaining behind a paywall forever!

    • @sc5shout
      @sc5shout 5 ปีที่แล้ว +1

      @@pooria_garrett3020 I know, but I have a multithreading hype now and there is no point to me to buy a repo that has not got it. That is why I am asking.

  • @roxferesr
    @roxferesr 4 ปีที่แล้ว +1

    Is it just me or the RendererCommand class is redundant here? I might need to watch a couple of episodes more for it to make sense.

  • @konstantinseurer2653
    @konstantinseurer2653 5 ปีที่แล้ว +2

    vulkan

  • @JackyTeerapat
    @JackyTeerapat 5 ปีที่แล้ว +1

    pls. Make a new vdo about linked list c++

  • @amerthebest88
    @amerthebest88 5 ปีที่แล้ว +2

    Problem is that none of this applies to nextgen rendering when using API like vulkan, directx 12 or metal

  • @0xhex
    @0xhex 5 ปีที่แล้ว +1

    We need assembly language tutorial please 😭💔

  • @graph2001
    @graph2001 ปีที่แล้ว

    ChatGPT3.5 Generated content:
    - The transcript is part of a game engine series tutorial by China.
    - The video focuses on the critical part of the rendering architecture, the draw call, which is the command to actually draw something on the screen.
    - To render a 3D world, there are a few components needed, including a vertex array, a shader, information about the environment, and the material of the object to be rendered.
    - The tutorial covers how to submit geometry, meshes, and materials to render a scene and how to optimize it.
    - The video also covers API and clear color concepts in game development.

  • @rosalineden3654
    @rosalineden3654 3 ปีที่แล้ว +1

    An extra video on the renderer architecture would be great!