By using this site, you agree to our Privacy Policy and our Terms of Use. Close

Forums - Gaming Discussion - Shinen is using triple buffering for the gbuffer on Fast Racing Neo, bandwidth is not a problem

Hi there:

Its been sometime since shinen mentioned that Wii U has plenty of bandwidth and that with just 16MB of edram was enough for the 1080p framebuffer with duble buffering, still many doubted the wii u edram bandwidth despite the fact that xbox 360 edram of internal 256GB/s normally used for render targets like the framebuffer is just enough for the 720p with double buffering without msaa and in wii u with simple calculations you know that 7.1MB of edram is enough for the 720p with double buffering.

Well, right now shinen is taking adventage of the wii u edram bandith and using it for the g buffer on fast racing neo for the deffered rendering and likely the post processing effetcs(g buffers arent limited to the deffered rendering, they also can be used for the post processing  effects); you may not know this but gbuffers take large aount of bandwidth(it was rarely used in xbox 360 and ps3 due to the bandwidth limitations and develpers couldnt do it the conventional way but instead came up with ideas using the cpu-gpu interaction on 360 and the spus on ps3 but the implementation still had limits and could only use one gbuffer) to the point that even Ryse for the xbox one couldnt have msaa to the fullest eventhough microsoft has mentioend in his article about predictable tiling that msaa requires far less bandwidth than framebuffer, 2xmsaa en xbox 360 edram would be just about 2.5MB, this was due  that the framebuffer of 1600*900(this is about 50% more than 720p but they are likely using double buffering not triple as they dont specify it) and the gbuffer for the deffered rendering and post processing effects were already consuming must of the bandwidth available(from what i read they used temporal antialaising since has almost 2x better performance and bandwidth requirements werent as expensive as msaa, i also heard that seems like msaa is not possible to implement along with deffered rendering and thats why we have this other option available). Wii U edram on the other hand seems to have no problems with andwidth to the point that shinen can use triple buffering for the framebuffer requiring only 3.6MB for each buffer which makes it 10.8MB, and they still use the rest of the edram for the gbuffer, intermediate buffers and other things. The g buffer is also large, in xbox 360 develoeprs wanted to use it but needed 12MB of edram besides the 10MB for the 720p with double buffering

http://www2.disney.co.uk/cms_res/blackrockstudio/pdf/BlackRockStudioTechnology_Deferred_Shading.pdf

 

Since wii u requires 7.2MB of edram for 720p with double buffering and 360 needs 10MB, with some calculations that would mean that a gbuffer on wii u edram coul be around the 8.64MB, which combined with the 10.8MB of edram for the triple buffering with the framebuffer is 19.44MB out of the 32MB of edram and the 3MB of faster edram+sram, noe thats plenty of bandwidth

 

here

 

And here is the comment from crytek about the bandwidth limits on xbox one esram for the deffered rendering

http://www.eurogamer.net/articles/digitalfoundry-crytek-the-next-generation

"

 
 

Cevat Yerli: We put our most accessed render targets like the G-Buffer targets into ESRAM. Writing to ESRAM yields a considerable speed-up. While 32MB may not be enough to use something like MSAA to the fullest, with a smart memory management strategy it is possible to deal with that.
"

Ok, so whats so cool about deffered rendering?

The primary adventage is performance, unlike the classic forward rendering, the deffered rendering uses far less shader power to render multiple lights on the escene, of course that has some issues speically the fact that bandwidth requirments are larger then the other technique, but when you consider that in the worst case the forward rendering could require shader power equal to objects*lights to render the lights and deffered rendering would require shader power only about lighst+objects then the tradeoff looks promising if you have good amount of memory bandwidth

here

http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Deferred+Shading

"

What is Deferred Shading?

Deferred shading is an alternative approach to rendering 3d scenes. The classic rendering approach involves rendering each object and applying lighting passes to it. So, if an ogre head is affected by 6 lights, it will be rendered 6 times, once for each light, in order to accumulate the affection of each light. 
Deferred shading takes another approach : In the beginning, all of the objects render their "lighting related info" to a texture, often called the G-Buffer. This means their colours, normals, depths and any other info that might be relevant to calculating their final colour. Afterwards, the lights in the scene are rendered as geometry (sphere for point light, cone for spotlight and full screen quad for directional light), and they use the G-buffer to calculate the colour contribution of that light to that pixel.

See the links in Further Reading section to read more about it. It is recommended to understand deferred shading before reading this article, as the article focuses on implementing it in ogre, and not explaining how it works.

Deferred Shading Advantages

The main reason for using deferred shading is performance related. Classing rendering (also called forward rendering) can, in the worst case, require num_objects * num_lights batches to render a scene. Deferred shading changes that to num_objects + num_lights, which can often be a lot less. 
Another reason is that some new post-processing effects are easily achievable using the G-Buffer as input. If you wanted to perform these effects without deferred shading, you would've had to render the whole scene again.

Deferred Shading Disadvantages

There are several algorithmic drawbacks with deferred shading - transparent objects are hard to handle, anti aliasing can not be used in DX9 class hardware, additional memory consumption because of the G-Buffer. 
In addition to that, deferred shading is harder to implement - it overrides the entire fixed function pipeline. Pretty much everything is rendered using manual shaders - which probably means a lot of shader code.

"

As you can see, wii u edram may not just have more memory bandwidth than the xbox one(perhaps the rumor about the 500GB/s to the terabyte of bandwidth may be true) but also developers could take profit of it so that the lights in the escene would cost far less shader power than they did in the past generation and so use the extra shader power that was saved up for other things



Around the Network

Huh, thats pretty neat! I really do want to see this game in action already T_T



                  

PC Specs: CPU: 7800X3D || GPU: Strix 4090 || RAM: 32GB DDR5 6000 || Main SSD: WD 2TB SN850

All these technical details!
Now that I actually understand some of them, I can drool freely XD



You have no idea what triple buffering is supposed to do ...



Wii U may not be to much ahead in raw power against the ps3 and 360(must probably is about 2x the power pf the 360), but the new gpu that has been updated the past 8 years or so and the large amount of edram bandwidth can make a difference.

g-buffers for the deffered rendering and the post processing effects may require large bandwidth but seeing how shinen has no problems in wii u with that even using triple buffering(10.8MB of the main 32MB edram) then developers could take adventage of it so that they can save up large amount of Shader power when rendering multiple lights and use that shader power for oher graphical render purposes

 

fatslob-:O said:
You have no idea what triple buffering is supposed to do ...

not sure, although from what i can understand from what i read from them

"

We have a couple of failbacks to keep it stable. Triple Buffering also helps to get rid of peaks before anyone can notice.

"

 

must likely they are refering to the fast chnages that heappen when you are racing and so they put three buffers so that even with the fast changes while you are running the car and taking detours and such you will still not notice issues like that the position of the lights or the new lights were not present inmediatley when they were supposed to



Around the Network
megafenix said:
fatslob-:O said:
You have no idea what triple buffering is supposed to do ...

not sure, although from what i can understand from what i read from them

"

We have a couple of failbacks to keep it stable. Triple Buffering also helps to get rid of peaks before anyone can notice.

"

 

must likely they are refering to the fast chnages that heappen when you are racing and so they put three buffers so that even with the fast changes while you are running the car and taking detours and such you will still not notice issues like that the position of the lights or the new lights were not present inmediatley when they were supposed to

Nope, you don't know what it does, but not that it matters.

Wonder when they will show this game though.



megafenix said:

not sure, although from what i can understand from what i read from them

"

We have a couple of failbacks to keep it stable. Triple Buffering also helps to get rid of peaks before anyone can notice.

"

 

must likely they are refering to the fast chnages that heappen when you are racing and so they put three buffers so that even with the fast changes while you are running the car and taking detours and such you will still not notice issues like that the position of the lights or the new lights were not present inmediatley when they were supposed to

You still don't know what it does and that's all that matters ... 

You are severely ill-informed about this subject since it relates to almost nothing about performance ... 



fatslob-:O said:
megafenix said:

not sure, although from what i can understand from what i read from them

"

We have a couple of failbacks to keep it stable. Triple Buffering also helps to get rid of peaks before anyone can notice.

"

 

must likely they are refering to the fast chnages that heappen when you are racing and so they put three buffers so that even with the fast changes while you are running the car and taking detours and such you will still not notice issues like that the position of the lights or the new lights were not present inmediatley when they were supposed to

You still don't know what it does and that's all that matters ... 

You are severely ill-informed about this subject since it relates to almost nothing about performance ... 

??

really, then that means you didnt even bother to read the entire article at all cause i am not the one thats says that but developers themseleves

here

http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Deferred+Shading

"

What is Deferred Shading?

Deferred shading is an alternative approach to rendering 3d scenes. The classic rendering approach involves rendering each object and applying lighting passes to it. So, if an ogre head is affected by 6 lights, it will be rendered 6 times, once for each light, in order to accumulate the affection of each light. 
Deferred shading takes another approach : In the beginning, all of the objects render their "lighting related info" to a texture, often called the G-Buffer. This means their colours, normals, depths and any other info that might be relevant to calculating their final colour. Afterwards, the lights in the scene are rendered as geometry (sphere for point light, cone for spotlight and full screen quad for directional light), and they use the G-buffer to calculate the colour contribution of that light to that pixel.

See the links in Further Reading section to read more about it. It is recommended to understand deferred shading before reading this article, as the article focuses on implementing it in ogre, and not explaining how it works.

Deferred Shading Advantages

The main reason for using deferred shading is performance related. Classing rendering (also called forward rendering) can, in the worst case, require num_objects * num_lights batches to render a scene. Deferred shading changes that to num_objects + num_lights, which can often be a lot less. 
Another reason is that some new post-processing effects are easily achievable using the G-Buffer as input. If you wanted to perform these effects without deferred shading, you would've had to render the whole scene again.

Deferred Shading Disadvantages

There are several algorithmic drawbacks with deferred shading - transparent objects are hard to handle, anti aliasing can not be used in DX9 class hardware, additional memory consumption because of the G-Buffer. 
In addition to that, deferred shading is harder to implement - it overrides the entire fixed function pipeline. Pretty much everything is rendered using manual shaders - which probably means a lot of shader code.

"

or perhaps you would prefer

http://www.cse.chalmers.se/edu/year/2011/course/TDA361/Advanced%20Computer%20Graphics/DeferredRenderingPresentation.pdf

"

Deferred Rendering Pro

• Complexity

• Shades only visible pixels

• Few shaders

• Post-processing stuff ready

• Lots and lots of Lights!

 

Deferred Rendering Con

• Lots of memory

• Bandwidth!

• Transparency

– G-buffers store one value per pixel

• Antialiasing

– MSAA

"


about what i think thshinen is refering to, well, if you at least check what a buffer is and why developers tend to use double buffering for the framebuffer then you would udnesrtand why i mentioend that about their comment on the triple buffering; if you have any other ideas then just tell us

"

We have a couple of failbacks to keep it stable. Triple Buffering also helps to get rid of peaks before anyone can notice.

"

tell us what they are trying to mean in that paragraph if you do really know instead of just awaiting for the response of others and telling them they are wrong and dont even mention why



megafenix said:

??

really, then that means you didnt even bother to read the entire article at all cause i am not the one thats says that but developers themseleves

here

http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Deferred+Shading

"

What is Deferred Shading?

Deferred shading is an alternative approach to rendering 3d scenes. The classic rendering approach involves rendering each object and applying lighting passes to it. So, if an ogre head is affected by 6 lights, it will be rendered 6 times, once for each light, in order to accumulate the affection of each light. 
Deferred shading takes another approach : In the beginning, all of the objects render their "lighting related info" to a texture, often called the G-Buffer. This means their colours, normals, depths and any other info that might be relevant to calculating their final colour. Afterwards, the lights in the scene are rendered as geometry (sphere for point light, cone for spotlight and full screen quad for directional light), and they use the G-buffer to calculate the colour contribution of that light to that pixel.

See the links in Further Reading section to read more about it. It is recommended to understand deferred shading before reading this article, as the article focuses on implementing it in ogre, and not explaining how it works.

Deferred Shading Advantages

The main reason for using deferred shading is performance related. Classing rendering (also called forward rendering) can, in the worst case, require num_objects * num_lights batches to render a scene. Deferred shading changes that to num_objects + num_lights, which can often be a lot less. 
Another reason is that some new post-processing effects are easily achievable using the G-Buffer as input. If you wanted to perform these effects without deferred shading, you would've had to render the whole scene again.

Deferred Shading Disadvantages

There are several algorithmic drawbacks with deferred shading - transparent objects are hard to handle, anti aliasing can not be used in DX9 class hardware, additional memory consumption because of the G-Buffer. 
In addition to that, deferred shading is harder to implement - it overrides the entire fixed function pipeline. Pretty much everything is rendered using manual shaders - which probably means a lot of shader code.

"

 

about what i think thshinen is refering to, well, if you at least check what a buffer is and why developers tend to use double buffering for the framebuffer then you would udnesrtand

I didn't read the article because it provided no relevance to the subject at hand ... If you actually knew some of this stuff then you wouldn't be posting such trivial things. 

http://www.anandtech.com/show/2794

Anandtech has a good article on this subject and "Triple Buffering" allows for variable framerates in an environment where refresh rates are synchronized. To cut it short, YOU DIDN'T know anything about the subject initially. It's as simple as that ...



fatslob-:O said:
megafenix said:

??

really, then that means you didnt even bother to read the entire article at all cause i am not the one thats says that but developers themseleves

here

http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Deferred+Shading

"

What is Deferred Shading?

Deferred shading is an alternative approach to rendering 3d scenes. The classic rendering approach involves rendering each object and applying lighting passes to it. So, if an ogre head is affected by 6 lights, it will be rendered 6 times, once for each light, in order to accumulate the affection of each light. 
Deferred shading takes another approach : In the beginning, all of the objects render their "lighting related info" to a texture, often called the G-Buffer. This means their colours, normals, depths and any other info that might be relevant to calculating their final colour. Afterwards, the lights in the scene are rendered as geometry (sphere for point light, cone for spotlight and full screen quad for directional light), and they use the G-buffer to calculate the colour contribution of that light to that pixel.

See the links in Further Reading section to read more about it. It is recommended to understand deferred shading before reading this article, as the article focuses on implementing it in ogre, and not explaining how it works.

Deferred Shading Advantages

The main reason for using deferred shading is performance related. Classing rendering (also called forward rendering) can, in the worst case, require num_objects * num_lights batches to render a scene. Deferred shading changes that to num_objects + num_lights, which can often be a lot less. 
Another reason is that some new post-processing effects are easily achievable using the G-Buffer as input. If you wanted to perform these effects without deferred shading, you would've had to render the whole scene again.

Deferred Shading Disadvantages

There are several algorithmic drawbacks with deferred shading - transparent objects are hard to handle, anti aliasing can not be used in DX9 class hardware, additional memory consumption because of the G-Buffer. 
In addition to that, deferred shading is harder to implement - it overrides the entire fixed function pipeline. Pretty much everything is rendered using manual shaders - which probably means a lot of shader code.

"

 

about what i think thshinen is refering to, well, if you at least check what a buffer is and why developers tend to use double buffering for the framebuffer then you would udnesrtand

I didn't read the article because it provided no relevance to the subject at hand ... If you actually knew some of this stuff then you wouldn't be posting such trivial things. 

http://www.anandtech.com/show/2794

Anandtech has a good article on this subject and "Triple Buffering" allows for variable framerates in an environment where refresh rates are synchronized. To cut it short, YOU DIDN'T know anything about the subject initially. It's as simple as that ...

 

interesting article, but then again why you mention it has nothing to do with performance when reliable source articles say so?

here

http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Deferred+Shading

"

Deferred Shading Advantages

The main reason for using deferred shading is performance related. Classing rendering (also called forward rendering) can, in the worst case, require num_objects * num_lights batches to render a scene. Deferred shading changes that to num_objects + num_lights, which can often be a lot less. 

Another reason is that some new post-processing effects are easily achievable using the G-Buffer as input. If you wanted to perform these effects without deferred shading, you would've had to render the whole scene again.

 

Deferred Shading Disadvantages

There are several algorithmic drawbacks with deferred shading - transparent objects are hard to handle, anti aliasing can not be used in DX9 class hardware, additional memory consumption because of the G-Buffer. 
In addition to that, deferred shading is harder to implement - it overrides the entire fixed function pipeline. Pretty much everything is rendered using manual shaders - which probably means a lot of shader code.

"

or perhaps you would prefer

http://www.cse.chalmers.se/edu/year/2011/course/TDA361/Advanced%20Computer%20Graphics/DeferredRenderingPresentation.pdf

"

Deferred Rendering Pro

• Complexity

• Shades only visible pixels

• Few shaders

• Post-processing stuff ready

• Lots and lots of Lights!

 

Deferred Rendering Con

• Lots of memory

• Bandwidth!

• Transparency

– G-buffers store one value per pixel

• Antialiasing

– MSAA

"

 

Seems you again didnt care to read my response while i have read yours, what kind of respect is that?

sorry dude, you may have known more abut the triple buffering, but as for the gbuffers and deffered rendering either you knew nothing or maybe you just pretneded not to since wouldnt be convenient for your hidden purposes. And if you have doubts, yes the triple buffering they are talking baout is for the deffered rendering

"

Deferred rendering needs multiple framebuffers. We also store GPU computed intermediate buffers there for faster access.

"