8-bit raymarching
category: general [glöplog]
For the 8-bit machines the raymarching has to be of low quality because of low CPU power.
Are there any techniques to speed up the render except from 4 to 1 interpolation with extra scans if the objects on the adjacent pixels don't match? This was used in Inferno Guide #5 (intro) and Mission Highly Improbable ("furmark" part).
I though about scanning with double steps then returning back half-step (or maybe smaller steps) but will it work? This can corner the borders of objects.
Are there any techniques to speed up the render except from 4 to 1 interpolation with extra scans if the objects on the adjacent pixels don't match? This was used in Inferno Guide #5 (intro) and Mission Highly Improbable ("furmark" part).
I though about scanning with double steps then returning back half-step (or maybe smaller steps) but will it work? This can corner the borders of objects.
i think you will find out that even raycasting isnt very well suited for those machines....
what resolution do aim for? 16*9 pixels ? :)
what resolution do aim for? 16*9 pixels ? :)
Even on 16-bit-Machines (~7-14MHz -> Amiga) it´s still a pita to get sth at an acceptable framerate! ;) It starts to work out with many tricks at 40MHz or sth! Still then the Resolution is divided by 4 (4*4-pixel-blocks).
Keep Dreaming!
@groepaz, something like 40x40 pixels :)
interesting you even consider it. you can test your ideas in shadertoy. that torus in the 2nd linked demo is raymarched? too slow and ugly and lores. I prefer the very lowpoly toruses on speccy.
Raymarching was the very first concept I thought out when started writing Wolfenstein clone for ZX in 1996 :)
what abour more pwerful 8bit machines like the CPC? =)
sam can do it too!
Crap, y'all beat me to it. Was hoping to do something like this on 808x
bet raymarching works fine on the oversteroided ZX=)
Actually, raymarching works halfway well on a sega mega drive (7.61 MHz 68k CPU) - someone recently ported Wolfenstein 3D:
Forum thread: http://gendev.spritesmind.net/forum/viewtopic.php?t=1537&postdays=0&postorder=asc&start=165
Youtube: http://www.youtube.com/watch?v=bjnsNzGzN1U
Forum thread: http://gendev.spritesmind.net/forum/viewtopic.php?t=1537&postdays=0&postorder=asc&start=165
Youtube: http://www.youtube.com/watch?v=bjnsNzGzN1U
Is it me, or are people confusing raycasting with raymarching here?
Isn't raycasting just 2D raymarching?
Gargaj: Not really. Raycasting usually means "shoot some rays" without the full raytraced reflections and whatnot. Raymarching is the concept of marching along a ray to find intersections. Many raycast-enginges did their intersection tests using raymarching, though.
Well, I guess the terminology is rather vague... but as far as I'm concerned:
Ray casting is a technique where you calculate the intersection point between a ray and an object (can be 2d or 3d).
Ray tracing is like ray casting, but is applied recursively, so that reflection and refraction can be handled.
Ray marching is an iterative form of the above: you 'march' along the ray, and at each point you merely classify the point: on which side of the surface of the object am I? As soon as you go from 'out' to 'in', you have found the surface.
Ray casting is a technique where you calculate the intersection point between a ray and an object (can be 2d or 3d).
Ray tracing is like ray casting, but is applied recursively, so that reflection and refraction can be handled.
Ray marching is an iterative form of the above: you 'march' along the ray, and at each point you merely classify the point: on which side of the surface of the object am I? As soon as you go from 'out' to 'in', you have found the surface.
Scali: I think our terminologies are pretty much the same, except in my definition ray marching is a way to implement ray casting, not necessarily full ray tracing.
That being said, when I talk of "ray marching" in a scene context, I usually use it interchangeably with "shitty twisted cubes with horrible reflections, aliasing like hell".
Quote:
Scali: I think our terminologies are pretty much the same, except in my definition ray marching is a way to implement ray casting, not necessarily full ray tracing.
I wrote my reply before you posted, so it was not meant as a response.
But indeed... With 'the above' I meant both casting and tracing. Ray marching is an iterative form of ray casting, and may or may not be applied recursively ('full ray tracing' as in reflections/refractions).
..as a response to you. It was a response to Gargaj.
Well, when I searched the scientific literature about the terminology I was surprised, basically what Scali says, raycasting stops when hits a surface ones, raytracing continues tracing reflected rays. But we used to call raycasting the one in wolfenstein. But then, if raymarching is now going in steps instead of instantly solving ray-object intersection, then technically even wolfenstein is 2d raymarching since it goes block by block, but also a raycasting since it hits and stops once (but what if you did wolfenstein engine with mirrors reflecting columns, hehe :). So, we basically have it all screwed up and people also claim wrongly that Doom is using raycasting because of the column rendering, but not the raycasting algorithm. Ok,. I messed up :)
Back to the main question, not 8bit but the closest to low CPU could be this. Ok, it's actually boxes, it could be like improve the classic wolfenstein algorithm to 3d and per pixel (I would actually always wanted to try this, maybe someday). But interesting nevertheless..
yup, I did confuse these 2 terms
@Optimus, i'd better made this cubical landscape from textured cubes, that will be faster. But it requires perspective texturing, this is not for Speccy.
Acorn is I guess atleast one magnitude faster than the usual 8 bits, and still it can barely reach an acceptable speed in quite lo-res. it would be even slower and even more lores on a 8 bit.