Pico3D is a 3d engine I have been working on. The engine is finished or at least 99% there. What is missing is proper documentation for use (there is some present in tab 3 of the carts but it needs to be better worded and more explanatory). The intent is for anyone to be able to use it for 3d rendering in pico 8! Its highly optimized and feature packed. It includes drawing of polygons, lines, spheres, textures in 3d space and textured polygons as well as angle based lighting or distance based fog, custom resolutions and fov. A bunch of functions that are necessary to make the 3d rendering work are included as separate functions that can easily be reused. It should be stated though that there are some drawbacks/faults. Firstly the way faces are sorted may lead to incorrect drawing order, there is not a better alternative that i have found that would fix the problem without presenting other drawbacks, what can be done is manually splitting the scene up so that its drawn in correct order. Second is that there is bad texture warping for textured polygons, done this way for the sake of speed. Third, if polygons get to big they stop being drawn correctly because of integer overflow, can be overcome by scaling everything down or splitting larger faces.
I hope this will be a useful contribution to the pico 8 community :)
Special thanks to: (note, I am not affiliated, nor do i know any of these people)
Electricgryphon, huge inspiration and an incredible reference for how 3d in pico 8 can be done
Freds72, incredible example of what is possible in pico 8
Mot, another huge inspiration and fantastic example of 3d in pico 8
Yellowbaron, Tiny Sim - polygon draw function taken from here
The community as a whole.

Pico3D engine (tab 2) and example code written for internal testing. sorry if its a bit messy and not very optimized.
wasd to move shift and alt to go up and down, mouse to look, mouse 1 and 2 to roll
code for the head gif (old version of engine)



there is not, sorry. if you want it in a more readable format I suggest using an AI to unminify it. towards the tail end of the project all changes were done directly on the minified code and no other version exists
[Please log in to post a comment]