Current Generation Games Analysis Technical Discussion [2023] [XBSX|S, PS5, PC]

Status
Not open for further replies.
I disagree with this; hardware support is different between RDNA 1 and RDNA 2 listed here:


  • On RDNA2 and newer, per-primitive output attributes are also supported.
There are other items under the hood as well I think, which largely leads yo why primitive shaders were abandoned. But basically you want fewer calls on AMD.
But PS5 is not strictly RDNA1. it's custom and based on RDNA2. like notably we know they use ray traced intersection hardware from RDNA2.
 
It's a popular Chinese MMO title, it's exact name is Justice Online, developed by NetEase and released in 2019 as a subscription based MMO, it was going to be released as an English version in late 2022, but the plan got delayed. You won't find many videos of it outside of China's social media sites.


These geometry counts look closer to a PS360 game. This is not 1.8 billion triangles.
 
I do suspect the high polycount is why RT is so expensive here compared to elsewhere.

I wouldn't say it's particularly expensive compared to other games. The requirement to go from no RT to full RT with PT at the same resolution and framerate is only 4070 to 4080 level. Yes that's a lot. But from no RT to PT that's actually quite modest compared to other game examples.
 
But PS5 is not strictly RDNA1. it's custom and based on RDNA2. like notably we know they use ray traced intersection hardware from RDNA2.
Unfortunately we don’t know so, so unless they come out saying they have mesh shader support, I’m just going to assume they don’t. The reality is the entire GPU market has moved to mesh shader support, even Apple’s mobile chips.

I would consider this a standard feature for GPUs now, and if it’s the same NGG hardware on PS5 pulled from RDNA 2, they should be able to map mesh shaders over to PS5. Would have been an easy announcement to make by now given how long they have had to do it.

I don’t think it really matters (performance wise it’s not looking great on RDNA2), but if we are just discussing a yes or no, I think it is a no. Whether it matters is probably worth debating, and I’m leaning on No at this moment in time unless something changes.
 
there are the same thing but 2 implementations , here in the mouth of David Wang (Senior Vice President , Engineering , Radeon Technologies Group, AMD):
also and i will quote :
Now, I understand that the Primitive Shader in AMD's GPU can be used like a Mesh Shader. However, the data structure of a 3D model in a game and the way the drawing pipeline operates differs between Primitive Shader and Mesh Shader and the traditional drawing pipeline. Therefore, from the game developer's perspective, the drawing pipeline design and data storage must be designed differently depending on whether the same title uses Primitive Shader/Mesh Shader or not. This is a hassle for game developers (*If the game engine supports Mesh Shader, it would be possible to reduce the effort to some extent).
 Mesh Shader became the industry standard as a new geometry pipeline, and things were good to the point where it effectively absorbed Primitive Shader. However, if it is actually necessary to create separate versions, the game developer may think, ``I don't want to actively use something that troublesome.'' This may be the reason why neither Primitive Shader nor Mesh Shader are actually used actively.
pretty-cool-cerny.gif
 
Last edited:
Just some cheap game taking Nvidia marketing money. Nvidia loves doing this and have a huge pot for it, these games rarely turn out well.

Speaking of devs taking Nvidia marketing money (notice how the AMD cards arbitrarily stop at a 6800xt on the RT recommended specs). Anyway PS5 devs have lower level access than PC, so a lot of mesh shader stuff can be emulated there with primitive shaders while it can't on PC. I do suspect the high polycount is why RT is so expensive here compared to elsewhere. Needing to move around that many triangles in a BVH is going to be super expensive, and isn't going to help actual ray traversal times either when it comes to it. UE5 does the smart thing and makes the RT scene much simpler while reserving it for GI(diffuse/specular) instead of shadows.

There are some research papers on ultra high poly tracing and bvh building: https://onlinelibrary.wiley.com/doi/abs/10.1111/cgf.14868 and https://graphics.cs.utah.edu/research/projects/ray-tracing-hw-adaptive-lod/ but these are new and aren't even in production yet for various reasons.
Tracing rays through a BVH is the most efficient way to handle raytracing. Was never a problem. Was the first thing nVidia talked about when Turing was released.

Thats the reason why games like Battlefield 5 and Control can provide image quality not possible with UE5. Cant do reflections with nothing.
 
Unfortunately we don’t know so, so unless they come out saying they have mesh shader support, I’m just going to assume they don’t. The reality is the entire GPU market has moved to mesh shader support, even Apple’s mobile chips.

I would consider this a standard feature for GPUs now, and if it’s the same NGG hardware on PS5 pulled from RDNA 2, they should be able to map mesh shaders over to PS5. Would have been an easy announcement to make by now given how long they have had to do it.

I don’t think it really matters (performance wise it’s not looking great on RDNA2), but if we are just discussing a yes or no, I think it is a no. Whether it matters is probably worth debating, and I’m leaning on No at this moment in time unless something changes.
Ignoring the amplification/task shader stage altogether for a second, you can get most of the mesh shading functionality even on first generation RDNA GPUs. Incidentally, this is how mesh shading is utilized in UE5 with nanite which spawns indirect draws for mesh shaders with no amplification/task shaders!

Also based on the experiments so far with Metal, the performance of mesh shaders are sub-optimal on tile based renderers including Apple's GPUs ...
 
I wouldn't say it's particularly expensive compared to other games. The requirement to go from no RT to full RT with PT at the same resolution and framerate is only 4070 to 4080 level. Yes that's a lot. But from no RT to PT that's actually quite modest compared to other game examples.

The minimum RT requirements for this title are ludicrous, you could run Jedi Survivor, with its RT reflections and GI and often next gen visuals, at almost 4k 60 for "1080p low RT" in Alan Wake II. The return of visuals to performance cost for RT was clearly not a consideration at all for this title, instead appearing to solely be a question of how far things can be pushed without consideration for optimization.
 
These geometry counts look closer to a PS360 game. This is not 1.8 billion triangles.
He is probably running the game at medium or low settings.
The minimum RT requirements for this title are ludicrous, you could run Jedi Survivor, with its RT reflections and GI and often next gen visuals, at almost 4k 60 for "1080p low RT" in Alan Wake II. The return of visuals to performance cost for RT was clearly not a consideration at all for this title, instead appearing to solely be a question of how far things can be pushed without consideration for optimization.
Let's wait for the game to be released and analyzed before we rush to any premature conclusions.
 
The minimum RT requirements for this title are ludicrous, you could run Jedi Survivor, with its RT reflections and GI and often next gen visuals, at almost 4k 60 for "1080p low RT" in Alan Wake II. The return of visuals to performance cost for RT was clearly not a consideration at all for this title, instead appearing to solely be a question of how far things can be pushed without consideration for optimization.

But that has little to do do with RT. The requirements are extremely high without RT.

"Minimum RT" based on the table is 1080p/30 DLSS Quality at medium settings and requires a 3070.

But you still require a 3070 for 1080p/60 at medium settings using DLSS Performance.

So essentially you get 720p/30 with RT vs 540p/60 without RT.

That doesn't look like an unusually high RT penalty to me.

Overall the game is incredibly heavy, but I don't see why that should be attributed to RT specifically.
 
A 4080 clocks about 50 fps at 1080p in CP2077 PT Ultra. If the Alan Wake 2 recommended specs are accurate then a 4080 is hitting 60 fps at 1080p PT. That would make Cyberpunk more demanding.
 
there are the same thing but 2 implementations , here in the mouth of David Wang (Senior Vice President , Engineering , Radeon Technologies Group, AMD):
also and i will quote :

pretty-cool-cerny.gif
Primitive shaders are designed to work with the input assembler stage of the pipeline and are responsible for processing the input primitives (points, lines, and triangles) and generating output primitives. They can be used to perform operations such as tessellation, culling, and clipping.

On the other hand, mesh shaders are designed to work with the vertex shading stage of the pipeline and are responsible for generating primitives from a mesh. They can be used to perform operations such as level-of-detail selection, view frustum culling, and meshlet generation.

The main difference between primitive shaders and mesh shaders is that primitive shaders operate on individual primitives while mesh shaders operate on entire meshes. Additionally, mesh shaders provide more flexibility in terms of how geometry is generated and processed in the pipeline.


Mesh Shaders Release the Intrinsic Power of a GPU - ACM SIGGRAPH Blog

"
In 2017, to accommodate developers’ increasing appetite for migrating geometry work to compute shaders, AMD introduced a more programmable geometry pipeline stage in their Vega GPU that ran a new type of shader called a primitive shader. According to AMD corporate fellow Mike Mantor, primitive shaders have “the same access that a compute shader has to coordinate how you bring work into the shader.” Mantor said that primitive shaders would give developers access to all the data they need to effectively process geometry, as well.

Primitive shaders led to task shaders, and that led to mesh shaders."

"Mesh shaders will expand the capabilities and performance of the geometry pipeline. Mesh shaders incorporate the features of Vertex and Geometry shaders into a single shader stage through batch processing of primitives and vertices data before the rasterizer. The shaders are also capable of amplifying and culling geometry."
 
Primitive shaders are designed to work with the input assembler stage of the pipeline and are responsible for processing the input primitives (points, lines, and triangles) and generating output primitives. They can be used to perform operations such as tessellation, culling, and clipping.
This statement doesn't make any sense in terms of modern AMD GPU architectures. AMD GPUs ever since the introduction of GCN doesn't have a dedicated input assembler stage and instead exclusively featured a "pull model" where fetching vertex attributes gets compiled into shader binaries as opposed to the "push model" where fetching vertex attributes is done with a fixed function hardware input assembler. The implications of this design can be seen in the Mantle API where "vertex buffers" simply don't exist like we see on many other graphics APIs ...

Primitive shaders as a topic are entirely adjacent to the input assembler ...
On the other hand, mesh shaders are designed to work with the vertex shading stage of the pipeline and are responsible for generating primitives from a mesh. They can be used to perform operations such as level-of-detail selection, view frustum culling, and meshlet generation.
Both primitive shaders and mesh shaders are alternative programmable geometry pipelines to the traditional programmable geometry pipeline involving vertex shaders and it's extensions. Most of the techniques you mentioned at the end can be done with geometry shaders too and the older geometry pipeline!
The main difference between primitive shaders and mesh shaders is that primitive shaders operate on individual primitives while mesh shaders operate on entire meshes. Additionally, mesh shaders provide more flexibility in terms of how geometry is generated and processed in the pipeline.
That is not true since both can operate on 'meshlets' which is understood to be a collection vertices and primitives. That's not how I'd rate them in terms of 'flexibility' so below is my assessment ...

RDNA2 primitive shaders > mesh shaders/RDNA1 primitive shaders
RDNA1 primitive shaders > old geometry pipeline
Mesh shaders ≯ RDNA1 primitive shaders
RDNA1 primitive shaders ≯ mesh shader
Mesh shaders ≯ old geometry pipeline(!!!)

In fact mesh shaders can be less flexible than our traditional geometry pipeline since they lack the functionality to do transform feedback or stream out. RDNA1 primitive shaders are a perfectly strict superset of our old geometry pipeline since the former contains all functionality of latter. Both falls short of each other in various disjoint ways. Primitive shaders on RDNA1 can't support amplification/task shaders while mesh shaders can't do transform feedback/stream out and doesn't offer us any other pre-mesh shading stage besides the default amplification/task shader stage ...
Mesh Shaders Release the Intrinsic Power of a GPU - ACM SIGGRAPH Blog

"
In 2017, to accommodate developers’ increasing appetite for migrating geometry work to compute shaders, AMD introduced a more programmable geometry pipeline stage in their Vega GPU that ran a new type of shader called a primitive shader. According to AMD corporate fellow Mike Mantor, primitive shaders have “the same access that a compute shader has to coordinate how you bring work into the shader.” Mantor said that primitive shaders would give developers access to all the data they need to effectively process geometry, as well.

Primitive shaders led to task shaders, and that led to mesh shaders."

"Mesh shaders will expand the capabilities and performance of the geometry pipeline. Mesh shaders incorporate the features of Vertex and Geometry shaders into a single shader stage through batch processing of primitives and vertices data before the rasterizer. The shaders are also capable of amplifying and culling geometry."
@Bold No, specifically with Nvidia's case they came about simultaneously together as another separate geometry pipeline. In AMD's case, primitive shaders came about in their attempts to unify mesh shading with the known traditional geometry pipeline ...

It's more accurate to describe primitive shaders as a direct precursor to the mesh shading stage and no primitive shaders did not lead to task shaders as they had no similar hardware stage for it. How task shaders came about on AMD HW is that they extended their hardware compute shader stage to support that functionality ...
 
nVidia has shown that a 4090 gets 30 FPS in native 4K:

That is better than Cyberpunk.

Nice in all, but they're only showing 30fps (native 4K) in non-intensive scenes (i.e., no enemies present). As for CP2077, only being sub 30fps at native 4K without DLSS, isn't always true. There are sections of the game where I can hit mid-30's, even low 40s, without DLSS assistance. Not always the case, but it does happen.

Anyhow, can't wait for AW2.
 
This statement doesn't make any sense in terms of modern AMD GPU architectures. AMD GPUs ever since the introduction of GCN doesn't have a dedicated input assembler stage and instead exclusively featured a "pull model" where fetching vertex attributes gets compiled into shader binaries as opposed to the "push model" where fetching vertex attributes is done with a fixed function hardware input assembler. The implications of this design can be seen in the Mantle API where "vertex buffers" simply don't exist like we see on many other graphics APIs ...

Primitive shaders as a topic are entirely adjacent to the input assembler ...

Both primitive shaders and mesh shaders are alternative programmable geometry pipelines to the traditional programmable geometry pipeline involving vertex shaders and it's extensions. Most of the techniques you mentioned at the end can be done with geometry shaders too and the older geometry pipeline!

That is not true since both can operate on 'meshlets' which is understood to be a collection vertices and primitives. That's not how I'd rate them in terms of 'flexibility' so below is my assessment ...

RDNA2 primitive shaders > mesh shaders/RDNA1 primitive shaders
RDNA1 primitive shaders > old geometry pipeline
Mesh shaders ≯ RDNA1 primitive shaders
RDNA1 primitive shaders ≯ mesh shader
Mesh shaders ≯ old geometry pipeline(!!!)

In fact mesh shaders can be less flexible than our traditional geometry pipeline since they lack the functionality to do transform feedback or stream out. RDNA1 primitive shaders are a perfectly strict superset of our old geometry pipeline since the former contains all functionality of latter. Both falls short of each other in various disjoint ways. Primitive shaders on RDNA1 can't support amplification/task shaders while mesh shaders can't do transform feedback/stream out and doesn't offer us any other pre-mesh shading stage besides the default amplification/task shader stage ...

@Bold No, specifically with Nvidia's case they came about simultaneously together as another separate geometry pipeline. In AMD's case, primitive shaders came about in their attempts to unify mesh shading with the known traditional geometry pipeline ...

It's more accurate to describe primitive shaders as a direct precursor to the mesh shading stage and no primitive shaders did not lead to task shaders as they had no similar hardware stage for it. How task shaders came about on AMD HW is that they extended their hardware compute shader stage to support that functionality ...

Thanks a lot for clarifying this!
 
nVidia has shown that a 4090 gets 30 FPS in native 4K:

That is better than Cyberpunk.
This game is also a corridor shooter? How is that even remotely impressive when the scale is a joke compared to cyberpunk? I mean, it’s expected that a corridor shooter with low amount of variability and a rather predictable rendering load should perform better?
 
Here is a blog about implementing mesh shaders on AMD hardware for the RADV Vulkan driver.


The are actually three posts. 1. Talks about mesh shaders in general. 2. Implementation of mesh shaders on AMD hardware. 3. Task shaders.

Link is to second post as it contains links to the other two.
 
Here is a blog about implementing mesh shaders on AMD hardware for the RADV Vulkan driver.


The are actually three posts. 1. Talks about mesh shaders in general. 2. Implementation of mesh shaders on AMD hardware. 3. Task shaders.

Link is to second post as it contains links to the other two.

This is as I expected. It's unlikely that the hardware is actually different between ps5 and seriesx. SeriesX supports mesh shaders because it uses Direct3D. PS5 does not support mesh shaders because it doesn't use Direct3D, but the hardware has the same capability. PS5 likely just uses primitive shaders because that maps closer to the actual hardware. From what I've heard about GNM, they basically rely on the simplest implementation that's as close to the hardware as possible. They don't have to worry about intel, nvidia or different generations of amd hardware. The AMD driver takes mesh shaders and translates/converts them to primitive shaders. On PS5 you'd just have a driver that exposes primitive shaders directly.
 
Status
Not open for further replies.
Back
Top