RSX: Vertex input limited? *FKATCT

Wow, this escalated fast. It's definitely exceeded my comfort zone though so I've used a new bogus email address to register here to make tracking me more difficult. I think I'm gonna stick to lurking from now on as I'd like to keep my job ;) But there's a few things that need to be cleared up. I'll try to keep it short, so I'm only quoting parts of peoples posts:

"He is complaining about doing extra work to get performance to match what can be obtained on another vendors hardware."

Not exactly. I prefer working with hardware that helps me, not hinders me. The more time I have to spend getting around hardware quirks/limitations means less time to add new cool features, and the longer it takes to get the game into your hands. There are some coders that love the challenge that quirky hardware poses. My preference though is to spend my time on making the best visuals and adding new features that were impossible on old gen.

"Complaining about having to pre-cull geometry on the SPU before sending to the GPU... The fact that the Cell is good at that should be listed as a strength, but he cites it as a weakness because he does not want to spend the effort to tap that performance."

Normally i would agree with you. In this case though it's not a strength, its a requirement because you have to do it to help the PS3 keep pace with the 360. Remember as well, we already lose one spu to redundency, and another to Sony. We're left with 6, but now we need to spend some of those to help the rsx. I'd far prefer using spu's for full cloth sim on all characters, collision code, animations, etc. I don't mind learning new hardware, me and others do it all the time.

"...would not be surprised if ppl working on 360 and suddenly dropping their datasets onto RSX would not observe good numbers (and viceversa)"

This is far more true going from 360->PS3 than the other way around, again assuming gpu to gpu only. The 360 isn't flawless to be sure. Having to tile because of the tiny amount of edram is a pain, and edram resolves while quick, can still add up (you don't need to resolve on PS3). Still though, I'm far more impressed with the 360's gpu and I'm comfortable saying that feeding an identical 3d scene to PS3 and 360 will result in better framerate on 360.

"Who’s to say he isn’t jaded by his own personal feeling about Sony or it’s hardware."

I have no allegiance to with Sony or Microsoft. In fact, the PS2 is my third favorite console of all time behind the NES and the 2600.

"That and difficulty tuning his code seem to have him bitter. "

Reading back my posts, I suppose I can see how I'd be viewed as being bitter. It's more a mixture of frustration and dissapointment I'd say. I'll never understand why Sony chose that particular rev of NVidia hardware.

"The PS3 makes me work hard... screw that!"

Heh, this one is slightly amusing. We work very hard I assure you ;) My preference is to work hard on stuff that makes the game pop, not spending tons of time just to get the machine to do the basics. That's my preference of course, we have people on staff that love the challenge of getting the PS3 to render as quick as the 360.

"But at the same time he treats the GPU as both the beggining and end of the graphics subsystem, where we know in PS3 the Cell is set to play an ever larger role as tme goes on."

That's part of the problem. I was hoping the gpu would handle itself like a modern gpu. Instead we have to use spu's to help it. The more spu's you have to use to help rsx, the less you have to spend on cool gameplay items like physics simulations.

"nyhow, I found many post by this guy (with the same residing area and screen name) asking some of the simplest questions on how to hook up his tivo to his TV. Or what’s the difference between optical audio cables and coax digital audio cable. To me even a guy with his background can figure that out by himself."

That's definitely not me. We've had tivo since 2000, and I have numerous components with either coax or optical digital out which I can hook up myself thanks ;) The 'joker454' username is not one i chose. I picked 'joker' which was taken, and 'joker454' was suggested by the auto name generator. I suspect there are other 'joker454's out there.

"What I responded to didn't really sound like something a dev would say and contained a lot of fishy information, so I pushed it."

Ya, my first few posts were kinda ******-ish, I probably shouldn't have done that ;) I leveled out my posts later.

"His concern over vertex attributes are very avoidable in various ways (many of which trade shader cycles for data, but since the shader instructions often don't cost you as much, it's often worth it)."

This only partly helps. It's true that in many cases is faster to just recalculate things in the vertex shader rather than passing precalculated data via vertex inputs. We already do this here and there, using PIX on a case by case basis on 360 to see where it makes sense, and likewise benchmarking PS3 to see how it likes it. But that only gets you so far. Bottom line, a next generation game uses lots of lookup maps for a variety of effects, which leads to lots of vertex inputs. Of course there are ways to simply this like packing your data, combining maps so some uv's can be tossed, etc. But you will still hit the vertex delays on rsx because some like 'position' and 'normal' are a must, so you don't have much room left to play with.

"Though I'm not sure why he's so hot on FP8... I would at least assume he meant FP10."

That's a typo on my part, 2/10/10/10 is the floating point format we need (FP10).

"There is always the possibility they are using fairly branchy pixel shaders or may have some heavy vertex work that may not port over well in a limited 2-4 month window"

Our shaders are very expensive. But then again, they look really good, and that's what nex gen is all about ;) We can optimize them some more (we have already), but optimized shaders would still run faster on 360. Porting is not so much the problem in this case as is the rsx's unwillingless to deal with verticies. If you read the rsx docs, they are pretty much saying "please, please, please don't send verticies to rsx". The whole reason for using spu's is to do backface culling on all your verts first, that way you can send a smaller subset of verts to the rsx to get around its limited vertex processing. The rsx can backface cull them itself of course, and this does cut out pixel shader computation, but it still must run thru the vertex shader, which means it still must incur the one cycle penalty per vert input which brings rsx to its knees.

In the end my beef is with the PS3 gpu which I still feel is disappointing compared to the 360's. I have no beef with Sony or the PS3 itself. To make a nex gen game that looks of gears of war quality needs three things. Great shaders, more geometry, and lots of lookup maps. RSX has a hard time with all of those. It seems like an odd choice to me to go head to head with 360.

"we can see that many Xbox to PS ports this fall did have some issues, especially with getting framerates up. Next fall? It could be reversed.

This may very well be true! We'll have to wait and see. Spu's will help, I'll know more once I code for them in the new year.
 
welcome to the boards joker! thank you for replying in a sensible, intelligent and mature manner to some of those that were a bit hasty in their replies.
 
Last edited by a moderator:
Wow.

80% of what you said Joker made very little sense to me but I'm still glad you came and posted.

I don'tt hink there's quite a board like tihs one on the web.. Welcome aboard from another 2600 fan! :cool:


Peace.
 
"But at the same time he treats the GPU as both the beggining and end of the graphics subsystem, where we know in PS3 the Cell is set to play an ever larger role as tme goes on."

That's part of the problem. I was hoping the gpu would handle itself like a modern gpu. Instead we have to use spu's to help it. The more spu's you have to use to help rsx, the less you have to spend on cool gameplay items like physics simulations.

Joker, first of all I'm glad you accepted my thread/forum invite. :)

Since this piece of text you responded to is my own, I'll respond only to this.

Firstly I understand your angle here. But from a practical standpoint, the RSX indeed does function like a modern GPU. It *is* a modern GPU. It is not Xenos, but then again Xenos is... ultra-modern? Not that it doesn't have it's own constraints, however. But I don't see the point in feeling 'disappointed' in Sony/NVidia in this regard. For better or for worse, it is simply the case that ATI and Microsoft had corporate strategies that more closely aligned to one another in their coalescing around the R500 project than Sony and NVidia did on their own end. ATI had already begun development on unified architectures, and for some effort customizing it to the world of consoles, MS was going to essentially fund a whole lot more.

Sony signed up for what at the time would have ideally been a chip to ship in March of '07; and that architecture was G71 derived. If they had an original timeframe of Fall '07 instead, maybe the RSX could ave been a little more exciting - who knows? But I don't think the lowered count to 6 SPEs should be a cause of concern for you; as the knowledge base expands, it should be more than enough for you to get your cloth sims in there and address any geometry shortfalls you may feel exist with RSX.

It's like you said; you haven't tried them out yet. Give 'em a shot next year and see how you like them. :cool:

Anyway, I wouldn't worry about losing your job for posting here... nobody else has! I think you'll find also that this is a more appropriate venue overall compared to AVS in which to have your ideas both challenged and applauded on their merits.
 
This only partly helps. It's true that in many cases is faster to just recalculate things in the vertex shader rather than passing precalculated data via vertex inputs. We already do this here and there, using PIX on a case by case basis on 360 to see where it makes sense, and likewise benchmarking PS3 to see how it likes it. But that only gets you so far. Bottom line, a next generation game uses lots of lookup maps for a variety of effects, which leads to lots of vertex inputs. Of course there are ways to simply this like packing your data, combining maps so some uv's can be tossed, etc. But you will still hit the vertex delays on rsx because some like 'position' and 'normal' are a must, so you don't have much room left to play with.
Yeah, we ran into a few snags on this front when we considered shrinking or removing attributes. We tried dropping one of the basis vectors and recalculating it with a cross product in the shader -- unfortunately, that screws with you when artists start mirroring UVs and causes normal/parallax maps to flip at the seam, so that idea didn't last very long. Also tried determining various things offline to see what could be dropped from the vertex stream, but that really ballooned the build times.

We considered reducing the total number of UV channels coming into the vertex shaders, as well as double-packing them (two UV coords in each 4-vector, so you only use 1 attribute to get 2 UV coords)... that works out well for us, especially since 90% of our assets only uses 2 UV coordinate sets, all of which are 2d (even though having 10+ maps isn't out of the ordinary). Characters almost never have more than one. Things like layered blends were all done using different tiling factors on the same UVs. The real hit we take for these kinds of arrangements, though, is that a lot of materials carry a lot of constants with them. Still, while it sounds restrictive as opposed to "more maps = more UV sets", it also just so happens that there's no motivation to suggest we need to expand further.

In general, though, the things that help the most aren't so much data format, but really trimming what you send. Z-prepasses, software skinning/progressive meshes, etc. And this is all a win on the 360 as well, since the vertex throughput rate on the same geometry with Xenos is hardly all that impressive there either. I'm not about to say that the attribute read rate of RSX isn't among the crappiest hindrances to progress, but you make it sound like having to free-climb over the Great Wall of China.
 
Yeah, we ran into a few snags on this front when we considered shrinking or removing attributes. We tried dropping one of the basis vectors and recalculating it with a cross product in the shader -- unfortunately, that screws with you when artists start mirroring UVs and causes normal/parallax maps to flip at the seam, so that idea didn't last very long. Also tried determining various things offline to see what could be dropped from the vertex stream, but that really ballooned the build times.

wouldn't they flip anyway, if sharing the seam vertices?

were you doing:

binorm = cross(tangent.xyz,normal) * tangent.w; // where tangent.w is 1 or -1

?
 
wouldn't they flip anyway, if sharing the seam vertices?
Well, our exporters would make sure the seam vertices are duplicated when there's a flip like that or when using symmetry in modelling/texturing, so they don't really share the same verts per se. The mirrored UVs would mean that somewhere along the surface, the basis switches from right-handed to left-handed, but as long as you just let that happen and you duplicate the seam verts where the other copy has a different basis-space, things stay consistent appearance-wise.

In reality, we didn't run across that case as often as one might think (for instance, it would never happen on characters), but it did happen a fair bit on complex large pieces of architecture where various texture layers had different tiling factors.

binorm = cross(tangent.xyz,normal) * tangent.w; // where tangent.w is 1 or -1
Just the cross-product, actually. And yeah, if you were sharing verts, you would see a flip, or at least a kink right around the seam either way.
 
Joker,

Thanks for your very well written post. It is informative and not overly techincal so many can understand vs. just a few.

I think the RSX is being limited because it was not customized. It was an off the shelf product with minimal tweaks and was the best Nvidia was willing to do likely due to Sony's last min "oh crap, we need go out and buy a GPU." Wasn't the Cell all Sony needed at some point or they were going to design their own GPU of some sort before they went shopping for one? I believe reading something like that many moons ago.

Ati and MS however collaborated on a much deeper level and Xenos was produced. It probably doesn't hurt either that MS has the DirectX team behind them giving pointers.....
 
Yeah, we ran into a few snags on this front when we considered shrinking or removing attributes. We tried dropping one of the basis vectors and recalculating it with a cross product in the shader -- unfortunately, that screws with you when artists start mirroring UVs and causes normal/parallax maps to flip at the seam, so that idea didn't last very long.
This problem is easily fixable, just store an additional bit per vertex that let you reconstruct the original tangent basis vectors. In HS we store a bit like that in the most significant bit of the w component of our position vectors so that we to reconstruct binormals we do something like that:

float4 binormal = sign(position.w) * cross( normal, tangent );

very cheap and effective.

We considered reducing the total number of UV channels coming into the vertex shaders, as well as double-packing them (two UV coords in each 4-vector, so you only use 1 attribute to get 2 UV coords)... that works out well for us, especially since 90% of our assets only uses 2 UV coordinate sets, all of which are 2d (even though having 10+ maps isn't out of the ordinary).
We do something like that either. Artists are free to use all the UV sets they want, then our shaders generator automatically detects how many unique UV sets are really needed and it packs them accordingly, in order to use less input attributes.
More clever optmizations could be done as well, as packing multiple UV coordinates per attribute components (the same trick could be also used to store your tangent+normal vectors in a single attribute at full precision) but we did not go that route cause our VS are so long and complex that in the end would have not made any difference (ie we are almost never attributes limited).
To speed up simple rendering passes as z pre passes or shadow map one just needs to split vertex data in at least 2 streams: one for position and the other one for all the rest..that way one can basicly achieve VS throughput wise some number pretty close to the theoretical capabilities of the chip.
So in the end I really don't understand all this complaining, it's not really that hard nor complex to overcome these 'problems'. ppl were complaining in the same way in the old PS2 days while on the PS2 you needed A LOT more work to make things work as expected and ppl did it anyway.
I'm not about to say that the attribute read rate of RSX isn't among the crappiest hindrances to progress, but you make it sound like having to free-climb over the Great Wall of China.
Exactly. I was almost laughing at the GOW comment..I wonder what's so impressive in GOW that RSX could not do. At this time I really fail to see how 360 titles are so much better that PS3 titles graphics wise.. (while devs have more experience on the former platform..)
GPU wise I think 360 and PS3 have more or less the same power; once devs will start to use SPUs to speed up RSX things will start to be even more interesting (and a few titles are already doing that..)
 
  • Like
Reactions: one
So in the end I really don't understand all this complaining, it's not really that hard nor complex to overcome these 'problems'. ppl were complaining in the same way in the old PS2 days while on the PS2 you needed A LOT more work to make things work as expected and ppl did it anyway.

Exactly!! :D


Exactly. I was almost laughing at the GOW comment..I wonder what's so impressive in GOW that RSX could not do. At this time I really fail to see how 360 titles are so much better that PS3 titles graphics wise.. (while devs have more experience on the former platform..)
GPU wise I think 360 and PS3 have more or less the same power; once devs will start to use SPUs to speed up RSX things will start to be even more interesting (and a few titles are already doing that..)

:cool:
 
Wow, this escalated fast. It's definitely exceeded my comfort zone though so I've used a new bogus email address to register here to make tracking me more difficult.

<skip>

This may very well be true! We'll have to wait and see. Spu's will help, I'll know more once I code for them in the new year.

thanks for your perspective and welcome!

BTW Mods.... perhaps thread title change? :)
 
BTW Mods.... perhaps thread title change? :)

:p Changed. Hopefully that fits better now.

Anyway, guys, leave the GeoW discussion outside, will ya. This is the technical part of the forums and -nomen est omen- it should be a more technical discussion.

Anyway, devs keep feeding us nice infos. :cool: Anything else you found challenging, etc?

EDIT:
In case anyone is wondering what FKATCT means "formerly known as the Charlatan thread".
 
I don't know what the situation is like abroad, but I work at a major Japanese publisher, and have friends also working at big name publishers throughout Japan, and NONE of them had PS3 devkits/tools anywhere near the same time as the 360. So, as far as the Japanese side is concerned there has/is a lot more further development going on on the 360 side.

In the end I don't really think it matters what game is using what type of work-around or hardware specific technology. If the game looks great to the player, and it's fun then it's a success.

I too was not totally blown away by Gears of War. Personally I think MotorStorm looks just as good, but that doesn't really matter because blowing guys away in Gears is just as fun as slamming a buggy into a cliff at 150mph!
 
I think joker explained himself completely and succintly in his post. And I find him to be honest especially as a MULTI-PLATFORM developer. Some of the comments since his response read kind of... strange.

Every dev has their own perspective... I find it interesting to see what comes across as lecturing from other folks who may/may not be devs or folks who may/may not be multi...

Can't we all just get along?
 
I think joker explained himself completely and succintly in his post. And I find him to be honest especially as a MULTI-PLATFORM developer. Some of the comments since his response read kind of... strange.

Every dev has their own perspective... I find it interesting to see what comes across as lecturing from other folks who may/may not be devs or folks who may/may not be multi...

Can't we all just get along?

This is a technology forum. No one has been mean spirited in this thread. Ideas are meant to be shared here and position are meant to explored for the merit.

However, if no one else will say it I will say that just because a developer works with one platform or another this does not invalidate their assertions or color them as biased. What is said here is validated or invalidated based on it's merit not by whether one is a PS3 dev or a X360 dev or a Wii dev or developes on multiple platforms. It simply is not fair to the individuals that post here to give what they say any less credence than anyone else based on the what platform they work with. If what is said is meritous this all that should matter here.

The opinions of multi-platform developers do not belong to placed on pedestal above others out of hand. It should not even matter what kind of developer you are beyond having a perched view one can share from that others do not. Even then what is given/posited is judged by it's merit. If a multi-platform handheld developers posits that global illumination is a snap on the handhelds...just being a multi-handheld developer does not lend anything to the validity of that claim.

This is technology forum. Ideas are meant to shared. Positions are meant to be challenged based on their merit alone.

Nothing personal to you blackjedi. I simply think people should be respected for what they say not who they do or do not work for.
 
good points scificube but it has been rare to hear from a dev that has any experience on both systems and is nice to hear a new perspective. I don't think one is valuing one over the other as much as pleased to see someone who can speak from experience on both.

I hope that continues and that joker can share some more (so long as nobody else tracks him down and tries to take him out) ;)
 
Back
Top