I really enjoy those kind of videos when someone has been long enough in the industry to walk you through the evolution of that field. Architectures and APis are getting more complicated over time, so understanding the intuitions behind those decisions are even more important than the implementation itself.
Thanks for this, I'm not certified in this or even educated in it, just another Gamer, but I actually sat down and listened to it all, I didn't fall asleep or doze off, actually started to think of massive worlds and the potential this technology has for it.
Thanks for this! Much more useful content than the stuff put out by nvidia on this topic so far. Gotta love it when APIs gets simpler! (so rare to see people taking the time to simplify)
You can generate geometry out of thin air in vertex shader. Bind empty vertex buffer and use SV_VertexId as the only input. I use it all the time in D3D11 for quads and such. You should have told why doing so with MS is more efficient, about better on-chip cache utilization due to vertices shared across triangles.
Can a Mesh Shader be aware of the Meshlet being drawn and, if so, can custom logic be implemented? Something similar to what Bone Indexes (aka Blend Indices, skinweights, etc) are used for animation? The reason I ask is because, years ago, I couldn't use Unity3D because it has a technical limitation in which Unity 3D cannot draw skinweight models in batch so I had no choice but to use DirectX11 with Instancing due to performing issues. I use it (still using it) to create a game's world's terrain, which is literally a chessboard and each square has a bone weight, ensuring that the terrain is never flat. The terrain is being built at run-time, and only selected "squares" are drawn, which means it doesn't really matter the size of the game's world. However, with this idea about meshlets, I could just forget about instancing (I have some unwanted bugs I've been meaning to fix) and focus on meshlets. After all, each square is just 4 vertices, four textcoords, one blendindice vector (this one specifies the height of each corner) and just two triangles. So far, this Mesh Shader looks very, very interesting technology! Great Job!!!
Depending on where you are, start by learning basic concepts, which are also present in more user friendly API's like D3D11. Tutorials published on UA-cam can help (I watched ChiliTomatoNoodle's videos for D3D11 and TheCherno's for C++). Then learn new fundamental concepts introduced in D3D12 (like Command Lists, Resources and Resource Descriptors). There are tutorials for these topics too, but mostly in written form (the best I had found is on a website called 3dgep (learning-directx-12)). At that point, you should have a good conceptual understanding of how things are done in graphics programming and should be able to grasp the (sadly poorly commented) sample applications provided by Microsoft on Github. Technical details that are good to know when implementing things yourself are documented on the DirectX-Specs site. I am a highschool student and I managed to learn how to write (graphics) code this way in roughly two years. Good luck!
@@chilinouillesdepommesdeter819 Have you tried programming something on your own already? It really isn't as hard as you'd imagine and even math doesn't play as big of a role (depending on the type of application of course). This is because you can always write functions and abstract everything away, once the section you are working on is complete. For example, you might need to understand how Mesh Shaders work in detail and might need to come up with complex algorithms, but once you have implemented everything relating to it, you can essentially forget every detail and only remember what a Mesh Shader is and what it is used for. In the end, you only have to tell your application "Hey, generate a Mesh Shader for me based on this file an artist gave me and use it at that location.". And it just works without even having to give it a single thought. I think such an end result is highly rewarding and it is what makes programming so fanscinating for me. It's well worth the cost of sitting on your desk and trying to understand some math or whatever for a short period of time.
This guy knows his stuff, its like he probably has no social skills or anything else but 100% of him has gone into what he loves. I take my hat off to all at Microsoft they have really hit it out the park with the XBSX
Mesh Shaders were introduced by Nvidia in geforce RTX ~2 years ago. Microsoft just supports it in the API. It's inspired by tech first invented by Sony for PlayStation... 2 (!) in the form of programmable geometry pipeline and then wrongly abandoned for 2 decades...
Kaz that programming model was much harder to use than this, so it was not discarded without reason. Usability is important too (the more iterations you can do on your game, the better it will be).
@@iestynne Doesnt matter. The ps2 had some insanely unique and amazing features that were abandoned for the sake of complexity. Those vector units were also badass. The problem is they should NOT have abandoned this for a couple decades...
Yeah PS2 was amazing, and fun to work on if you like playing with technology. PS3 too. And you're right, this more accessible formulation of free-form programmability seems obvious enough in hindsight that it could have been proposed sooner... but things rarely evolve so cleanly.
The goal post moving ponies have infiltrated. 1st it was no game in 2023 is using it. Now it's that Alan Wake 2 isn't doing it fully. Mind you, ponies are big mad and seething that this tech is going to keep being used after Alan Wake just showed how it could be implemented and yield higher performance on Series X and S. 😂 Make up ya minds.
Dear Shawn Hargreaves, thank you for this helpful video. You are a great teacher and speaker.
This was a fantastic talk, simple to understand, informative and fun! I really wish I could see more content from Shawn!
I came to this video after watching a recent Techquickie video on mesh shaders. This has been tremendously informative.
I really enjoy those kind of videos when someone has been long enough in the industry to walk you through the evolution of that field. Architectures and APis are getting more complicated over time, so understanding the intuitions behind those decisions are even more important than the implementation itself.
Thanks for this, I'm not certified in this or even educated in it, just another Gamer, but I actually sat down and listened to it all, I didn't fall asleep or doze off, actually started to think of massive worlds and the potential this technology has for it.
Thanks for this! Much more useful content than the stuff put out by nvidia on this topic so far. Gotta love it when APIs gets simpler! (so rare to see people taking the time to simplify)
LG hlhhhjnnnjj#mmkmmmnnj&kg g by hhlkhnhhjhhhhhhhhmh&jmbbHD. 2nd BBC c. .
You can generate geometry out of thin air in vertex shader. Bind empty vertex buffer and use SV_VertexId as the only input. I use it all the time in D3D11 for quads and such.
You should have told why doing so with MS is more efficient, about better on-chip cache utilization due to vertices shared across triangles.
Can a Mesh Shader be aware of the Meshlet being drawn and, if so, can custom logic be implemented? Something similar to what Bone Indexes (aka Blend Indices, skinweights, etc) are used for animation? The reason I ask is because, years ago, I couldn't use Unity3D because it has a technical limitation in which Unity 3D cannot draw skinweight models in batch so I had no choice but to use DirectX11 with Instancing due to performing issues. I use it (still using it) to create a game's world's terrain, which is literally a chessboard and each square has a bone weight, ensuring that the terrain is never flat. The terrain is being built at run-time, and only selected "squares" are drawn, which means it doesn't really matter the size of the game's world.
However, with this idea about meshlets, I could just forget about instancing (I have some unwanted bugs I've been meaning to fix) and focus on meshlets. After all, each square is just 4 vertices, four textcoords, one blendindice vector (this one specifies the height of each corner) and just two triangles.
So far, this Mesh Shader looks very, very interesting technology! Great Job!!!
Will you be adding new projects to the samples that include mesh shading. Or is there one in particular that you recommend.
never mind, I was looking under the master branch.
Programmable geo < 3 Would love to start leveraging this pipeline for certain projects.
Where is the Meshletbuilder sample? I dont see it on github
I see DX12 and all I can think is Allegro... Good times
Have you looked into SYCL project? Could it be somehow integrated? Seems like you working towards a common goal.
How they learn thoes diffcult things?
I really want to be a good graphics programmer
Depending on where you are, start by learning basic concepts, which are also present in more user friendly API's like D3D11. Tutorials published on UA-cam can help (I watched ChiliTomatoNoodle's videos for D3D11 and TheCherno's for C++). Then learn new fundamental concepts introduced in D3D12 (like Command Lists, Resources and Resource Descriptors). There are tutorials for these topics too, but mostly in written form (the best I had found is on a website called 3dgep (learning-directx-12)). At that point, you should have a good conceptual understanding of how things are done in graphics programming and should be able to grasp the (sadly poorly commented) sample applications provided by Microsoft on Github. Technical details that are good to know when implementing things yourself are documented on the DirectX-Specs site. I am a highschool student and I managed to learn how to write (graphics) code this way in roughly two years. Good luck!
@@weltlos But it's much harder,subjects like physics,numerical method and a lot of diffcult math is requred,not to say programming part.
@@weltlos I really doubt whether I can implement this before I die.
@@chilinouillesdepommesdeter819 Have you tried programming something on your own already? It really isn't as hard as you'd imagine and even math doesn't play as big of a role (depending on the type of application of course). This is because you can always write functions and abstract everything away, once the section you are working on is complete. For example, you might need to understand how Mesh Shaders work in detail and might need to come up with complex algorithms, but once you have implemented everything relating to it, you can essentially forget every detail and only remember what a Mesh Shader is and what it is used for. In the end, you only have to tell your application "Hey, generate a Mesh Shader for me based on this file an artist gave me and use it at that location.". And it just works without even having to give it a single thought. I think such an end result is highly rewarding and it is what makes programming so fanscinating for me. It's well worth the cost of sitting on your desk and trying to understand some math or whatever for a short period of time.
nice
Welcome to Allegro
PS2 VU1 rolling in their grave
Oh my poor GTX 1080, I’m gonna be out of this new future, I’m not gonna get a new GPU any time soon.
It will still work on the GTX 1080
This guy knows his stuff, its like he probably has no social skills or anything else but 100% of him has gone into what he loves. I take my hat off to all at Microsoft they have really hit it out the park with the XBSX
Mesh Shaders were introduced by Nvidia in geforce RTX ~2 years ago. Microsoft just supports it in the API. It's inspired by tech first invented by Sony for PlayStation... 2 (!) in the form of programmable geometry pipeline and then wrongly abandoned for 2 decades...
Kaz that programming model was much harder to use than this, so it was not discarded without reason. Usability is important too (the more iterations you can do on your game, the better it will be).
@@iestynne Doesnt matter. The ps2 had some insanely unique and amazing features that were abandoned for the sake of complexity. Those vector units were also badass. The problem is they should NOT have abandoned this for a couple decades...
Yeah PS2 was amazing, and fun to work on if you like playing with technology. PS3 too.
And you're right, this more accessible formulation of free-form programmability seems obvious enough in hindsight that it could have been proposed sooner... but things rarely evolve so cleanly.
2023...and no games using mesh shader...Xbox is gona die if their first party don't take advantage of it...
Alan Wake 2 is finally using it.
@@dough1595 yes but not fully
in the future it will be fully utilized , mesh shader are the future , there is no turning back @@jrpeegy8294
The goal post moving ponies have infiltrated. 1st it was no game in 2023 is using it.
Now it's that Alan Wake 2 isn't doing it fully.
Mind you, ponies are big mad and seething that this tech is going to keep being used after Alan Wake just showed how it could be implemented and yield higher performance on Series X and S. 😂
Make up ya minds.
marketers