Reflection and refraction

I'm enchanted by Sonic R's beautiful reflective chrome Sonic head loading screen and wonder if the principles it employs could be utilised in order to create realistic reflection (mirrors) and refraction (water effects, maybe lenses) effects using the Saturn hardware.

Does anybody have any information on how this is accomplished?
 
Could you produce a BIN/CUE pair which uses 2352-byte blocks and therefore runs correctly in Cassini? None of the examples SaturnOrbit uses and nothing produced by compiled code will work because it uses the incorrect 2048-byte block size.

Cassini is the only emulator which runs correctly on my system, so I'm forced to use it for my testing.
 
Okay, I found the necessaries in CDRWIN to do that, so that's okay.

That explains how Sonic R does it - the model rotates while the texture stays in the same place. I assume the metallic sheen to it is a simple light vector? Or is there something else going on?
 
The texture just doesn't stay in place. The texture coordinate for each vertex is re-calculated based on the vertex screen position and it's screen normal at every frame.

There is no light whatsoever: it's all in the texture.
 
Quick Man said:
I assume the metallic sheen to it is a simple light vector? Or is there something else going on?

M3d10n said:
There is no light whatsoever: it's all in the texture.

It would work this way.

In Wipeout 2097, there is all in the texture. For Sonic R, I can't tell, since it seems to use all software rendering.

But for my TC stuff, there is no difference to normal polygons. Hence I can apply gouraud (in fact it's used in TC#3) and everything else.

Quick Man said:
That explains how Sonic R does it - the model rotates while the texture stays in the same place.

M3d10n said:
The texture just doesn't stay in place. The texture coordinate for each vertex is re-calculated based on the vertex screen position and it's screen normal at every frame.

Everything is relative. In my implementation, there is a 3D texture space, in which the intermediate surface on which the texture is mapped, too, stays in it's place.

To be correct: to my knowledge, the texture coordinates are computed from object/world space, not screen space.
 
AFAIK, "true" reflection is view dependant. You can get a quite cool effect by taking the X and Y components of the screen space normal, and X and Y components of the screen space vertex position, and scale them by different weigths, then multiply them together to get a U and V coordinates.

More weight for the vertex positions gives a more flat effect, more weight for the normals give a more distorted effect.
 
Back
Top