• Hey, guest user. Hope you're enjoying NeoGAF! Have you considered registering for an account? Come join us and add your take to the daily discourse.

Why do Playstation 1 polys jitter when the camera pans?

Lack of proper perspective correction and sub-pixel vertex placement, I believe? You'd have to ask somebody else for a more specific breakdown as to what that entails, but it's why polygons and textures alike warp around in specific scenarios.
 
Isn't it the textures not the polygons themselves?
I don't know the technical answer but I know the aberration you are talking about
 

ArjanN

Member
dragon-ball-z-battle-of-z-img-4.jpg
 

TheYanger

Member
Ok, I'm no tech guy so I'm looking for a legitimate answer not trying to be snarky, but I thought the Z buffer was what controlled the system knowing what to draw? IE: the flickering when things are displaying objects from underneath each other would be accountable to no Z buffer, but the actual warping textures should be unrelated shouldn't it?
 

Clear

CliffyB's Cock Holster
Generally its the lack of Z-buffer, meaning that everything is drawn using the "painters algorithm" that stipulates you have to draw every poly from back-to-front within the scene.

What this means in practice is every view has a distinct sequential draw-order that shifts according to the perspective its viewed from. You could automate this, but the most efficient method was to store (typically 8, using an octant principle) independent sort-lists per object, plus a global scene order that is calculated algorithmically.

Key issue is that using the painters algorithm, not every shape will work from every angle causing flickering as the code does its best to do things in the right order.

Additionally the lack of perspective-correct texturing in hardware meant that you had to use tesselation in order to prevent things become a blurry mess. i.e you would subdivide one poly into multiple smaller ones and adjust the UV (texture coord) values accordingly to spread the image out correctly. This process is lossy due to precision issues and again could cause jittering as the new UV's failed to match up perfectly.
 

TheYanger

Member
Generally its the lack of Z-buffer, meaning that everything is drawn using the "painters algorithm" that stipulates you have to draw every poly from back-to-front within the scene.

What this means in practice is every view has a distinct sequential draw-order that shifts according to the perspective its viewed from. You could automate this, but the most efficient method was to store (typically 8, using an octant principle) independent sort-lists per object, plus a global scene order that is calculated algorithmically.

Key issue is that using the painters algorithm, not every shape will work from every angle causing flickering as the code does its best to do things in the right order.

Additionally the lack of perspective-correct texturing in hardware meant that you had to use tesselation in order to prevent things become a blurry mess. i.e you would subdivide one poly into multiple smaller ones and adjust the UV (texture coord) values accordingly to spread the image out correctly. This process is lossy due to precision issues and again could cause jittering as the new UV's failed to match up perfectly.

Ok THIS makes a lot of sense to me, thanks :)
 

efyu_lemonardo

May I have a cookie?
What this means in practice is every view has a distinct sequential draw-order that shifts according to the perspective its viewed from. You could automate this, but the most efficient method was to store (typically 8, using an octant principle) independent sort-lists per object, plus a global scene order that is calculated algorithmically.

If I understand correctly, does that mean the PSX wasn't actually rendering a 3D scene, but rather approximating it by interpolating between pre-calculated views?
 

Krejlooc

Banned
If I understand correctly, does that mean the PSX wasn't actually rendering a 3D scene, but rather approximating it by interpolating between pre-calculated views?

No, it means the draw order for object lists had to be provided manually, either through an algorithm or by hand, as opposed to automatically calculating z depth from a z buffer.
 

efyu_lemonardo

May I have a cookie?
No, it means the draw order for object lists had to be provided manually, either through an algorithm or by hand, as opposed to automatically calculating z depth from a z buffer.

If I understand correctly, 8 different draw orders were pre calculated per object. I assume these 8 lists corresponded to 8 different viewing angles. So what would the hardware do to render an object from an angle that wasn't close enough to one of those 8?

Some form of interpolation must have been performed..
 

Tain

Member
This is related to why it's impossible to make a general-use stereoscopic rendering solution for PSX emulation, right?
 

killbox

Member
most engines also allowed the artist to "push" object forward or back in the sort order to try and stop z fighting.

smaller polys helped the shimmer, but your tri count was very limited.

some engines were better with handling the shimmer....
I think Crash Team Racing had the most solid handle on it.
 

JPickford

Member
I think the jittering is more down to the lack of sub-pixel coords so each corner of a triangle effectively snaps to the nearest pixel making models looks sort of wobbly.

All the other stuff is true as well (lack of Z-buffer, perspective correction etc.).

N64 had all that so it was a much more sophisticated renderer. Unfortunately it was also a lot slower than PS1 and had a small texture cache so you got a lot of blurry textures.
 

Krejlooc

Banned
If I understand correctly, 8 different draw orders were pre calculated per object. I assume these 8 lists corresponded to 8 different viewing angles. So what would the hardware do to render an object from an angle that wasn't close enough to one of those 8?

Some form of interpolation must have been performed..

He's saying you would store 8 object order lists to efficiently switch between them, he's not saying those lists werent generated.

Presumably, if you need a new camera angle, you just recalculate the object order list.
 

MarkV

Member
Generally its the lack of Z-buffer, meaning that everything is drawn using the "painters algorithm" that stipulates you have to draw every poly from back-to-front within the scene.

What this means in practice is every view has a distinct sequential draw-order that shifts according to the perspective its viewed from. You could automate this, but the most efficient method was to store (typically 8, using an octant principle) independent sort-lists per object, plus a global scene order that is calculated algorithmically.

Key issue is that using the painters algorithm, not every shape will work from every angle causing flickering as the code does its best to do things in the right order.

Additionally the lack of perspective-correct texturing in hardware meant that you had to use tesselation in order to prevent things become a blurry mess. i.e you would subdivide one poly into multiple smaller ones and adjust the UV (texture coord) values accordingly to spread the image out correctly. This process is lossy due to precision issues and again could cause jittering as the new UV's failed to match up perfectly.

This is a very good explanation for such a little text, do you teach stuff?
 

efyu_lemonardo

May I have a cookie?
He's saying you would store 8 object order lists to efficiently switch between them, he's not saying those lists werent generated.

Presumably, if you need a new camera angle, you just recalculate the object order list.
He says the relative depth of all objects per any given viewing angle could be calculated in real time. But that's not the same as calculating the relative depth of all polygons in real time, which is what a true painter's algorithm would require.
 

WillyFive

Member
The jitter always bothered me when playing PS1 games, but it didn't bother me much with the Saturn for some reason. Turns out the poor colors of the PS1 visuals did a lot to exacerbate the problem for me.

Did the N64 support z-buffer ? Is that the reason why that console's graphics output was "cleaner" ?

That along with texture filtering and anti-aliasing helped the N64 visuals stand out from the PS1 and Saturn. Solid objects staying solid was great, it's easy to forget how good we have it now.
 

Krejlooc

Banned
He says the relative depth of all objects per any given viewing angle could be calculated in real time. But that's not the same as calculating the relative depth of all polygons in real time, which is what a true painter's algorithm would require.

You should be able to calculate the depth per poly from depth per object.
 
That along with texture filtering and anti-aliasing helped the N64 visuals stand out from the PS1 and Saturn. Solid objects staying solid was great, it's easy to forget how good we have it now.

Thanks. Though I still prefer the look of PSone games over the N64's. It might have had more jaggies, but it also had more detail, as opposed to the muddy and shitty-looking textures of the N64.
 

TheD

The Detective
Generally its the lack of Z-buffer, meaning that everything is drawn using the "painters algorithm" that stipulates you have to draw every poly from back-to-front within the scene.

What this means in practice is every view has a distinct sequential draw-order that shifts according to the perspective its viewed from. You could automate this, but the most efficient method was to store (typically 8, using an octant principle) independent sort-lists per object, plus a global scene order that is calculated algorithmically.

Key issue is that using the painters algorithm, not every shape will work from every angle causing flickering as the code does its best to do things in the right order.

Additionally the lack of perspective-correct texturing in hardware meant that you had to use tesselation in order to prevent things become a blurry mess. i.e you would subdivide one poly into multiple smaller ones and adjust the UV (texture coord) values accordingly to spread the image out correctly. This process is lossy due to precision issues and again could cause jittering as the new UV's failed to match up perfectly.


FFS, it has nothing to do with a lack of Z buffering! (or tessellation, which very few, if any games used).

The reason it jitters when an object or the camera moves is due to a lack of subpixel correct rasterization.
 

Metal-Geo

Member
I think it was due to the lack of floating point (precision) calculation. Not due to the lack of a Z-buffer. Because the reason the vertices move about isn't due to depth, but due to lack of precision.


But I'm not PlayStation hardware guru.
 

mattiewheels

And then the LORD David Bowie saith to his Son, Jonny Depp: 'Go, and spread my image amongst the cosmos. For every living thing is in anguish and only the LIGHT shall give them reprieve.'
Kind of related-yet-unrelated, but speaking of weird graphical issues, I always wondered why the graphics in the Dragon Quest games ported to DS were so wavy and warped. The screen was fully rotatable, but I don't think VII on PSX suffered from it, and that had the same rotatable screens. Was it a specific problem with the DS that made it that way? Always looked strange to me.

dq4c.jpg
 

sniperpon

Member
I've always heard that it wasn't the polygons "jittering", but the textures due to the lack of what has been coined "perspective correction." Is that correct?
 

clintar

Member
probably has to do with low precision when keeping the position of points in 3D space, so what would probably need to be at (22.1372942,-1.6243222) becomes something like (22.13,-1.62), so they kinda jump around in 3D space instead instead of going to an more exact spot.
 

- J - D -

Member
Swimmy vertices are great indicators of the era, but I'm glad we never have to deal with them again.

Now if we could only deal with aliasing on console games.
 

jett

D-Member
Kind of related-yet-unrelated, but speaking of weird graphical issues, I always wondered why the graphics in the Dragon Quest games ported to DS were so wavy and warped. The screen was fully rotatable, but I don't think VII on PSX suffered from it, and that had the same rotatable screens. Was it a specific problem with the DS that made it that way? Always looked strange to me.

dq4c.jpg

From what I remember, that's what DQ7 looked like on PS1. All a lot of stuff in the environment had this weird distorted look to it, that's how it was modeled.

oajIvcy.jpg


1399760-dragon_warrior_vii_us_3.jpg


This carried over to DQ5 on the PS2 too

dq5ps2_screen04_zps8e82a59d.jpg
 
Top Bottom