Deferred Rendering on PS3 (Was KZ2 Tech Discussion)

Status
Not open for further replies.
I thought everybody had accepted this by now, that there was <8 megs difference at max.

the way I remember it was after a year they'd gotten down from around 96 to the low 50s and then down to around 40 or less second half of '08.
I've never heard this at all except from you two, which no offense intended, are not reputable insiders?

Does anyone seriously have any solid sources for this memory claim? It's pretty incredible, to say the least, if true and that's precisely why it's suspect.
 
I was under the impression this is how it was. That they had been cutting back both System RAM\VRAM for OS and it was within the realm of 10MB or less total. Framebuffer included, but I was told(?) that they ceased reserving VRAM for that?

Then again, wouldn't you need to put aside some memory on the RSX side for it?
 
Do either of you know the real numbers then, or are you just pondering suspicions? You don't need to share them, just explicitly state who is wrong, so that we can stop this "It Is" and "It Isn't" debate.
 
It would make great sense now if Sony have started caching OS specifics on the HD. Instead of reserving RAM, reserve HD space. The OS doesn't have to be uber fast. After all every PS3 has one.
 
Just wait for someone to leak the numbers. None of us here can tell whether the numbers are correct anyway.


Thanks!.

Does anyone have the GDC slides from a few years ago (2007?) that mentions numbers for culling among other things on the SPE's.

Please, PLEASE be fully aware that numbers are meaningless without a proper context to interpret them. I don't (usually) throw them around. Instead I try to use them to ask more questions within the specified context. Now with that out of the way...

I remember that presentation but oddly enough, I couldn't find it. I *think* it's a showcase for Sony's SPU scheduling framework (Or was it a NaughtyDog slides, or an earlier GG presentation ?). Some more hints may be helpful to locate it.


In any case, here're some numbers regarding SPU usage in id's engine (and may be game):

* Jon Olick's presentation (stolen from here):
http://s08.idav.ucdavis.edu/olick-current-and-next-generation-parallelism-in-games.pdf

1. Using 16KB groupings of joint data for SPU local store, 1/16 of 256KB local store.
2. Unit vector compression, 10bits per 2 smallest, largest computed, and extra sign/W bits.
3. Noted the RSX four vert mini cache used in primitive assembly.
4. Index decompression 6.5:1, very easy.
5. 30% increase in RSX performance doing SPU side vertex skinning.
6. 70% increase in RSX performance for shadow map generation.
7. Per vertex progressive meshes.
8. Average 60-70% of triangles do not contribute to raster output.
9. Get 10-20% improvement of balanced scene with SPU triangle culling.
10. Tight sync SPU ring buffer control via command buffer semaphores.
11. About 48M triangles per sec on 1 SPU for full pipeline.



Where memory is concerned... I feel that it is more fruitful to learn how developers use the available memory for their existing games (Instead of chasing how much Sony takes away). We all saw the results, here're the resources they used up. Timothy mentioned that they can reuse some of the memory buffers for shadow work. According to the Bioshock guys, they were able to spread their assets to both pools of memory without duplicating them; but I can't find any presentation on it.

NaughtyDog has a good 2008 slide outlining their memory layout (for Uncharted):
http://www.naughtydog.com/corporate/press/GDC 2008/UnchartedTechGDC2008.pdf

Insomniac talked about R&C memory usage in this Nov 2008 debrief:
http://www.insomniacgames.com/tech/articles/1108/files/Ratchet_and_Clank_WWS_Debrief_Feb_08.pdf




Off-topic: While I am at it (I found them anyway)...

Where physics is concerned...

Bullet Physics had a presentation in GDC 2008: http://www.bulletphysics.com/ftp/pub/test/physics/papers/GDC08_Erwin_Coumans_ParallelPhysics.pdf
I believe It's a free library

Bullet 3D Game Multiphysics Library provides state of the art collision detection, soft body and rigid body dynamics.

Used by many game companies in AAA titles on Playstation 3, XBox 360, Nintendo Wii and PC
Modular extendible C++ design with hot-swap of most components
Optimized back-ends with multi-threaded support for Playstation 3 Cell SPU and other platforms
Discrete and continuous collision detection (CCD)
Swept collision queries
Ray casting with custom collision filtering
Generic convex support (using GJK), capsule, cylinder, cone, sphere, box and non-convex triangle meshes.

Rigid body dynamics including constraint solvers, generic constraints, ragdolls, hinge, ball-socket
Support for constraint limits and motors
Soft body support including cloth, rope and deformable
Bullet is integrated into Blender 3D and provides a Maya Plugin
Supports import and export into COLLADA 1.4 Physics format
Support for dynamic deformation of non-convex triangle meshes, by refitting the acceleration structures

Erwin referenced Insomniac's SPU Physics pipeline comparison here:
http://www.insomniacgames.com/tech/articles/0108/files/CombinedSpuPhysics.pdf

Would love to get my hands on KZ2's physics work (Bouncing debris !), and how it integrates with the rendering.
 
To state the 360 has piles of memory would only be accurate if you accept that the PS3 has as well. They have hardware-wise the same amount of memory if you don't count the EDRAM, for which however, the RSX can have a bigger framebuffer than just the size of the EDRAM.

The trouble is that the PS3 has to keep the framebuffer which it renders into in main memory. Using 2xAA doubles it, using double buffering doubles it, using multiple render targets multiplies it. X360 does not have to keep the framebuffer and thus can use main memory for other purposes. Multiple render targets and other stuff can take up extra main RAM though, but it depends on the engine. Nevertheless, memory consumption for rendering itself on the 360 is generally lower.

What I personally find the most impressive about KZ2, which I have not yet seen properly explained or paid attention to, is the fact that it has 3-Dimensional (layer stacked on layer, as seen in RAGE demos) textures on walls and ground. This allows them to look realistically uneven, have different amounts of rock and gravel, etc.

There's no such thing going on in KZ2 or in any other game actually.

Using multiple texture layers is a pretty basic thing actually, but it doesn't make any texture "3-dimensional".
 
KZ2 isn't pulling off real HDR right? RSX has issues with AA and HDR if I remember.. Is it using nAO32?

It's not just about RSX features but memory consumption as well. Deferred rendering requires extra because of the various passes (normal, spec, albedo etc.) particularly with 2xAA.

I'm not sure on the NAO32 part though but I'd say something about the deferred rendering can screw with it...
 
The trouble is that the PS3 has to keep the framebuffer which it renders into in main memory. Using 2xAA doubles it, using double buffering doubles it, using multiple render targets multiplies it. X360 does not have to keep the framebuffer and thus can use main memory for other purposes. Multiple render targets and other stuff can take up extra main RAM though, but it depends on the engine. Nevertheless, memory consumption for rendering itself on the 360 is generally lower.


OS statistics aside, (which I promise I'm trying to get to the bottom of, because now I'm totally confuzzled ;)) how do most developers cope with this?

Also, are there any specific memory saving attributes that the PS3 has?

At any rate, Killzone 2 looks amazing. I'm having a hard time getting my head around it.
 
There's nothing special about it, other than the usual looks-better-then-direct-feed-when-photographed-from-a-TV effect.
 
No, I'm not talking about full scene raytracing. Aren't they using it for 2d texture surfaces? To create an illusion of depth?
 
No, I'm not talking about full scene raytracing. Aren't they using it for 2d texture surfaces? To create an illusion of depth?

I thought GG said in the video interview that it was for bullet holes?

Maybe some special bullet holes since in the IGN insider videos it sure isn't 'POM since you get to see some bullet holes really upclose.
Otherwise I've yet to se any surface using POM in the game in any video or image. But there is normal mapping, or maybe also environment bump mapping.
 
Raytracing within a fragment shader is a completely different thing than raytracing for actual rendering. I'd rather see them use a different name for it because it confuses the hell out of outsiders for nothing.
 
Status
Not open for further replies.
Back
Top