Originally posted by M3d10n+Sun, 2005-07-24 @ 03:01 PM--><div class='quotetop'>QUOTE(M3d10n @ Sun, 2005-07-24 @ 03:01 PM)</div><div class='quotemain'>I think a few (very few) Saturn games might have used such method for a few models, but using some sort of pre-processing tool, never in real time.
[post=137180]Quoted post[/post]
[/b]
Actually I think a lot of games used the "Texture slice" function of 3DEditor's tool "Texture List", which performs very similar operation as precomputation.
The Sonic-R effect is done in real-time, but as mentioned in the posts before, it's probably rendered by software only.
<!--QuoteBegin-M3d10n@Sun, 2005-07-24 @ 03:01 PM
Actually... since in real-world scenarios, very few objects would ever need the UVs to be regenerated in real time (envronment mapped objects), you could get better looking results by creating an offline tool out of your code, thus being able to generate higher quality textures. You could use bilinear/bicubic interpolation when generating the final textures.
[post=137180]Quoted post[/post]
[/quote]
The 3DEditor can do that, but you're right, I could make a similar (maybe even superior) tool from my code.
Remember the sky reflections in Daytona(not CCE) car windows? This one would be much more realistic and wouldn't take a lot of CPU time.
WIP info:
I could make a speedup in computation (texture coordinate mapping). The 3d (accurate, software only) sphere mapping is again using the slave, but the result is not correct (slave or not)
🙁
I found a general problem in sign extension:
Code:
// this one is always positive:
FIXED ang = slAtan();
// this is negative and positive:
ANGLE ang = slAtan();
// this workaround works with -O0 (optimized away otherwise)
ANGLE ang_tmp = slAtan();
FIXED ang = ang_tmp;
So how to do the sign extension explicitly on Saturn? The C book says complicate things about type casts and sign extension....
Remember that I can only take O0 plus all named optimization flags, but not -O1, -O2, -O3?
I tried it once again with -O2 and the only problem that comes up is due to the sign extension workaround from above, which is optimized away.
How to do sign extension in C?