Squeak said:
If any console was ever made for full screen passes it was the PS2. Sure there would be a hit, but I have a feeling it had more to do with not having time to experiment and the "good enough" mindset of many developers.
There were PS2 games that go as high as 40 operations per-pixel (some of it is overdraw, but still), it's hardly an issue of people not wanting to do things with pixel-math on PS2. It's probably the main thing where PS2 exclusives shined over other more capable platforms really.
Diffuse normal-mapping is just not that high on the list of visually interesting effects, so if it comes to 'either-or' situation, most people will chose something else.
You could do specular, even with vertex lighting, I think it was Galaxy or some other Wii game that did specular by subdeviding the polygon where the specular highlight was, something the PS2 would be just as, if not more well suited for, given its programmabilty.
I meant pixel-granular specular - what the masses generally call "bump-mapping" online, because the diffuse term lighting is too subtle for them.
Smooth specular highlights are easier to do with reflection maps, and have been standard fare in PS2 games really. I've played with subdivision idea briefly way back in the early days, but I didn't like the results I was getting.
Yeah, I read about that, years ago. It seems like a quite insane "because we can" showoff approach, when you have the GS with its enormous per pixel fillrate (even quite big today) sitting right there.
The fillrate and polygon setup still gets put to good use laying down attribute buffers. The 'insane' part about it is only the fact that getting attribute layers out of VRam requires reversing GIF bus, which was a clunky operation. If PS2 memory subsystem was architected like the PSP, the machine would be a very capable deferred shader.
which seems weird to me, since the general idea is the same with normal mapping and EMBM.
Two things - half of EMBM equation is constant in Flipper, which removes, well, most of the useful functionality. And even if you could use variable inputs, there's no vertex hardware to accelerate their setup, forcing you to revert to clunky CPU assisted methods.