Saturn transparencies

it290

Established Member
Okay, I've often heard that the Saturn lacks transparancies. However, I was just playing some Sonic 3D Blast, and on the Rusty Ruin stage, there is this mist that descends over the level . It looks great and lacks the usual 'checkered' effect that you usually see when transparency is attempted on the system. So what's the deal? Is this just some software trick?
 

lordofduct

Established Member
I always said the same thing. Even on that same exact level (and the music for that level just kicks IMO). In a lot of games I see certain things pulled off that the Saturn supposedly can't do, I think its all just people trying to trash the Saturn without ever playing it before. Shit even if they have they will because they never noticed it, they don't even know what a transparency is but just wanna sound smart. (you know kinda like moi! :D )
 

ExCyber

Staff member
I don't know about Sonic 3D Blast in particular, but from my fuzzy memory and skimming of the VDP1 manual:

Saturn does support semitransparency, both among sprites and between sprites and VDP2 backgrounds (these two operations are largely distinct). The reason the crosshatch mode is used so often is that it's easy to do and works with pretty much everything, while doing "real" semitransparency correctly requires more of an orchestrated effort and only works for color modes in which actual RGB is written to the VDP1 framebuffer. Aside from direct RGB it seems there is a 4-bit local CLUT mode that works this way. The rest of the paletted modes actually feed the VDP2 palette hardware, which means that the VDP1 has no actual color data to work with. The manual helpfully mentions that you can turn semitransparency on anyway, but "the results are not guaranteed", which is typically a euphemism for "the engineers didn't care what would happen" (chances are it blindly treats the data as it would for one of the supported modes; there might be potential for some black magic here). Also, semitransparent VDP1 rendering takes six times longer than regular rendering. :ph34r:
 

antime

Extra Hard Mid Boss
The speed issue is hands-down the biggest reason meshing is used, but there's at least two more issues to add to ExCyber's list: the sprite half-transparency is just that, half of the sprite you're drawing and half of the underlying one. There are no other blending modes which is why explosions and other special effects that use transparency look so dull compared to other platforms.

The other issue is that due to the rather odd method the Saturn uses to draw its sprites some screen pixels may be drawn more than once, leading to dark spots as the brightness is continually reduced.
 
Originally posted by antime@Thu, 2005-01-06 @ 07:55 AM

The other issue is that due to the rather odd method the Saturn uses to draw its sprites some screen pixels may be drawn more than once, leading to dark spots as the brightness is continually reduced.

[post=127206]Quoted post[/post]​


You get to see opaque lines along the semi-transparent surface. The amount of lines increase with the quad distortion (zero artifacts on non distorted sprites), so developers avoided using it for 3D objects. When the quad distortion is too big (ie.: a 3D surface being seen at a steep angle), the amount of pixel re-drawn is so high that the transparency becomes nearly disabled. You can see that in Pandemonium's shadows.

The cheapest way to get good looking transparency is probably the VPD1 -> VPD2 transparency, where some pixels in the VDP1 buffer can be set to blend against one of the VPD2's layers, or something like that. It's possible to do aditive blending that way.

The major problem with that approach is that the sprites won't blend against each other: it's the final buffer result that'll blend against the VDP2 layers. Sprites will be drawn opaque as always, so a sprite draw behind a blended one will be invisible. You can notice this in a bunch of games, like Guardian Heroes and Shining Force 3, where the characters will not appear behind the spell effects.

But it's very fast.

I remember reading some interview where someone said that Sonic R would not run as fast on the Playstation, because the alpha-blended fog effect would use too much fillrate.
 

it290

Established Member
The speed issue is hands-down the biggest reason meshing is used, but there's at least two more issues to add to ExCyber's list: the sprite half-transparency is just that, half of the sprite you're drawing and half of the underlying one. There are no other blending modes which is why explosions and other special effects that use transparency look so dull compared to other platforms.

Not sure what you mean by 'half' exactly. Do you mean color value-wise, or something else?
 
BTW, you can check how those transparency modes work using 3DEditor.exe in the Saturn SDK, since it's quad render looks very close to the Saturn's (but running at high resolution). The pixel redraw bug is in there, but it's a bit different than in the real thing (it's not as intense).

You can toggle between all sprite transparency modes and even the pixel redraw bug is there. It also shows the curved "effect" on convex quads (there are even some samples that rely on this).
 
The saturn has no problem doing transparencies in 2D mode, its when it comes to 3D environments this the problems occur with transparency. If you noticed most games that used non crossed transparences in the early days of the saturn were 2D games. Transparencies in a 3D environment were used a lot near the end of the saturns life as better dev kits became available and hardware hacks were used. Its in the 3d environments that the saturns features were harder to implement.
 
Huh... the Saturn doesn't have distinction between "2D mode" and "3D mode". All 3D stuff was just distorted 2D sprites, with hardware color operations to simulate lighting (flat or gouraud) in some cases.

But I get your point. It was just that the VDP2 transparency effects were easier to setup: having a VDP2 layer blend against another VDP2 layer (example: semi-transparent clouds scrolling over a sky background), or a VDP2 layer blend against the VDP1 buffer (isn't it really the other way around? I'm not sure). The second method was largely used to draw semi-transparent HUD/GUI/Windows. Some games cleverly used it to fake envronmental effects (mist in Sonic 3D Blast, sunlight in Grandia etc.).
 

ExCyber

Staff member
Huh... the Saturn doesn't have distinction between "2D mode" and "3D mode". All 3D stuff was just distorted 2D sprites, with hardware color operations to simulate lighting (flat or gouraud) in some cases.

AFAIK, most "3D" hardware of that time has no notable concept of a Z axis; that was expected to be taken care of by the CPU Z-sorting the display list. IIRC PSX is like this, although it has a special linked-list DMA mechanism that makes it a bit less of a hassle. N64's RDP probably is too but virtually nobody programmed that directly anyway.
 

antime

Extra Hard Mid Boss
Originally posted by ExCyber@Mon, 2005-01-10 @ 04:59 AM

AFAIK, most "3D" hardware of that time has no notable concept of a Z axis; that was expected to be taken care of by the CPU Z-sorting the display list. IIRC PSX is like this, although it has a special linked-list DMA mechanism that makes it a bit less of a hassle.
The SCU indirect DMA mode can be used to achieve something similar.

N64's RDP probably is too but virtually nobody programmed that directly anyway.

The N64 hardware works in 3D all the way. One of the problems with the small amount of RAM in the N64 was that the Z-buffer (if used) took up a disproportionate chunk of it.
 

Borisz

Ban Hammered
So the only transparency effect that the Saturn can pull out from hardware is the VDP2 backgrounds blending together?
 

Borisz

Ban Hammered
So, that means it could:

- make the VDP2s transparent in any way

- make the sprites transparent compared to each other

- make the sprites transparent compared to the Backgrounds

and combine all of those?
 
Okay I know nothing about this aspect of the Saturn's hardware really, at least not to such levels as people are showing in this topic...

But I am still curious... how were the transparencies in Burning Rangers pulled off then? Was it in a similar method to as already described?
 
I'm wondering about the transparencies used in D-Xhird, more specifically the ones used in the Ice arena stage. That had mist which sounds like the Sonic R one someone mentioned earlier. The arena walls were obviously transparent pixels, you can see them. But what I found interesting about the walls was they didn't appear to cancel each other out. None of the transparencies appeared to cancel each other out, as is the case in other Saturn games. The other one that peeks my interest is the transparency trick used on Karen's skirt. That skirt doesn't seem like a transparency I've seen before for Saturn. It's kinda hard to explain but it looks different when viewed from above than when viewed normally, from the side.
 
I gave D-xhird more play time than it deserved, so I can explain about it's tricks...

The ice arena walls are blended against VDP2 layers. Nothing extraordinary here. Since you can do "mode7" on two VDP2 layers, it's possible to fake 2 3D planes using 2D backgrounds. Same for the semi-transparent cloth walls in that chinese stage.

I remember Karen's skirt being transluscent... it's prolly sprite-to-sprite transparency (always 50% blended). The reason it looks different depending on the angle is due to some pixels in the quads being drawn more than once (and thus becoming more and more opaque at each redraw) when the quad distortion increases.

Pixels in the VDP1 buffer that are blended against the VDP2 have a blend ratio property. Sonic R simply increases the ratio for polygons that are further from the camera, until they fade out completly.

Burning Rangers was a special case. It rendered the same scene TWO times, into two different buffers.

First it draws all the non-transluscent stuff normally, with textures, lighting and so on, to the backbuffer.

Then it draws everything - including transluscent stuff - at half resolution, using black polygons for all opaque geometry (walls, the characters) and drawing transluscent objects normally, to an off-screen buffer that is draw as a VDP2 layer on TOP of the VDP1 buffer using the VDP2 additive blend mode. That's why all additive blended objects looked extra pixelated: because they really were.

How it does that exactly is beyond me - I suspect it uses a software renderer to draw directly to the VDP2 bitmap memory, since I suppose the Saturn doesn't store textures in the VDP1 ram, and therefore cannot "render to texture", like the PSX and N64 can.
 
Top