16

The PlayStation was notorious for texture warp, because it didn't have the transistor budget to implement perspective: Why do 3D models on the PlayStation 1 “wobble” so much?

But wait a minute. The Super Nintendo implements perspective in mode 7, and that's a previous generation machine. Play a game like Mario Kart and you can see perspective being implemented perfectly.

A comment on Where did Sony's 3D graphics hardware in the PS1 originate? reminded me of this:

Sony invested quite a few years into this, and their GPU is very simple. Given that it discards perspective, the work of filling each polygon scan line is really little beyond the work the SNES does for each line of the display in Mode 7.

... Little beyond? It looks to me like it is significantly less, as the SNES did implement perspective. Now to be sure, the SNES only did this for a single background layer, not for arbitrary triangles, but within that context, didn't it do more than the PS1?

What am I missing?

31

The SNES hardware doesn’t implement perspective, it implements affine transforms of the background layer. Affine transforms aren’t sufficient for perspective.

Perspective is implemented by changing the affine transform at every scanline, to change the scale. This is what allows parallel lines to be transformed so that they aren’t parallel on-screen, thus providing perspective...

The SNES does provide additional features which make all this possible; HDMA mode allows fast changes during the horizontal blank.

All this still only provides perspective on the projected background layer, so sprites still “float” without matching transforms. See this Ars story on bsnes’ HD mode 7 for some nice screenshots illustrating this.

Effectively, the SNES still allowed “racing the beam” techniques to be used to supplement its hardware capabilities in software. On platforms with full-scene rendering, such as the PlayStation, this was no longer possible.

12
  • 3
    @Andrea changing the scene at each scanline is what "racing the beam" means. The PS1 doesn't expose scanlines to the game at all.
    – OrangeDog
    Jan 6 at 19:16
  • 1
    @T.Sar discussing Star Fox doesn’t really fit in the scope of the question, because it adds hardware to the SNES, namely the Super FX chip — see this question for details. Jan 6 at 22:10
  • 4
    @Andrea then you’d have to figure out how to split the sprites up into the appropriate number of scanlines, which would effectively mean rendering the scene yourself, wouldn’t it? Jan 6 at 22:11
  • 1
    Affine transforms "warp" the image on the screen because it's using a linear interpolation rather than dividing the distance of each texel to get the proper projection. As a result, polygons have a concave appearance rather than looking like a flat plane. "Wobbling" images are the result of not using subtexel and subpixel accuracy, resulting in polygon edges "snapping" from one position to another. chrishecker.com/images/6/61/Gdmtex3.pdf Jan 7 at 12:38
  • 2
    @Arthur yup, and there’s a nice example of the wobbling effect in the Ars article: unrotated image, rotated image, rotated image with subpixels. Jan 7 at 12:44

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.