By random I came across a funny video on youtube showing the basics behind a simple raycaster like Wolfenstein 3D. I know the mathematics behind it for real rayshading and on a real Amiga it’s awefuly slow. So for me it was interesting which short-cuts they take to make it fast. It’s really not complicated to understand (if you know the mathematics already, if not I guess it stays a black box).
I tried to implement that into a FreePascal program (with some tiny changes (block size smaller for example, because of the smaller screens on Amiga)). It runs rather well, I did not want to code hardware, but use OS functions which make it a bit slow of course (especially the line drawing).
For the actual 3D image s I used RectFill but of course on a non-RTG Amiga thats very slow, therefore I changed that to write chunky pixels to a temp buffer and use WriteChunkyPixels to copy that to screen, already much faster but still not max speed. I found a funny patch (Blazewcp), which patches the WriteChunkyPixels function to be much faster, and voila really nice speed of already 12.5 fps, without turning OS of or Assembler/Hardware stuff, in pure FreePascal.
You want to have it? try it? Sure why not: Download (Source and Exe for m68k Amiga OS3.x 68020+ and FPU needed, but can be compiled and run for all Amiga-likes)
One comment to "Raycasting"
It runs between 25-50fps on my A2000/060+PicassoIV. Very cool!