left/right - move x
up/down - move y
z/x - move z
slow as heck so it only updates every 100th pixel each frame, here is hoping for a pico 8 memory expansion in the future ;)
If you rendered into sprite memory, you could use sprite calls to rescale it to the screen. Then you could render a really low resolution version in near-real time. Might be a fun thing to try.
This is nice. Well done
I quite agree with slembcke: having a king of low but faster rendering when moving would be nice as it would allow the user to position the camera where he wants to by getting a preview.
It currently takes about 15s to render the full screen so raytracing on a 32x32 grid should take less than a second with your current implementation.
This is what I did with my terrain demo. Well it is not raytraced but rasterized but you get the idea of having two render modes: one fast for real time preview and one slow to get the beautiful stuff.
Some colors would be cool too!
Hey Netgrind, i'm a motion graphics designer working on the 2016 Game Developer's choice awards, and I was wondering if I could capture some video of your PICO-8 Cart and use it in the intro video for the awards show? If that's cool, let me know! :D Thanks!
This is super cool! It's quite fast for a pico-8 program.
I shortened it to 334 characters, 54 over a tweetcart, but at the cost of having no controls and no fancy colors.
cls()c=0t=.3f=1a=1z=128g=.5k=.25::s::c+=1c%=100for j=0,z^2do if(j%100==c)then d=j\z x=d/z e=j%z y=e/z r={g,g,k}for i=0,40do q={(r[1]%g)-k,(r[2]%g)-k,((r[3]+t)%g)-k}a=((q[1]^2)+(q[2]^2)+(q[3]^2))^g a=a-.1r[1]+=(x+x-1)/1*.4*a r[2]+=(y+y-1)/1*.4*a r[3]+=2*.4*a f=i\6/2 if(a<.01)break;end if(f%1==g)f+=(d+e)%2 pset(d,e,f%16)end end goto s |
edit: using bitwise operators you can save 1 character, and it might increase the speed slightly assuming bitwise are still faster than the normal ones; I also slightly rearranged the order of operations which saved 3.
cls()c=0t=.3f=1a=1z=128g=.5k=.25::s::c+=1c%=100for j=0,z^2do if(j&99==c)then d=j\z x=d/z e=j%z y=e/z r={g,g,k}for i=0,40do q={(r[1]%g)-k,(r[2]%g)-k,((r[3]+t)%g)-k}a=((q[1]^2)+(q[2]^2)+(q[3]^2))^g a=a-.1r[1]+=(x+x-1)/1*a*.4r[2]+=(y+y-1)/1*a*.4r[3]+=2*a*.4f=i\6/2 if(a<.01)break;end if(f%1==g)f+=(d+e)&1 pset(d,e,f&15)end end goto s |
[Please log in to post a comment]