This is just a simple algorithm for the TI-84+ CE to render simple voxels quickly and dynamically. For now it is just an engine/algorithm, but once it is in a ready stage, it will be used to make a couple games.
In main.c
, you will find some #define
's at the top. Just configure them to your needs. If you change any of the Z render distances or FOV, make sure to run powAZx50
found in /utils. This script pre-calculates any needed values. If you change anything regarding the Z render distance, FOV, or powAZx50
variables within main.c
, make sure to double check the Python script since it automatically handles constants in main.c
.
- Add functionality to render planes and polygons
- Darken colors for the further away from the camera it is (volumetric fog)
- Optimize algorithm (sacrifice of accuracy is acceptable, and may make the scene loop less calculated and and definitive - more natural)
- Clipping alorithm for panels
- Add
drawPlane()
- Look into smoother movements (I'll see what I can do. Right now this is the most important thing.)
- Render polygon instead of lines for panel, plane
- Make variables into constants
- Add
drawPillar()
- Direction control
- Write custom drawing routine for trapezoids
- Time delta for player movement
- Implement clipping detection for planes
- Add render distance detection for planes
- Add rotation control for planes
- Set palette to remove compiler warnings
- Find a way to render everything unclipped (will need help!!)
- Check if cache really helps performance
- Add common voxel coordinate lookup table to optimize rendering
-
Render screen coordinates using 8 bit values instead of 16 - will allow the right side of the screen to be used for stats
- Unplanned: Implement a lookup table for both powAZx50 variables - which are calculated every voxel
v0.2.7 - Added DrawBasePlane, multiple bug fixes, small optimizations, and code changes
v0.2.6 - Fully implement planes, optimize existing algorithms, updated trapezoid routine, other small changes
v0.2.5 - Fix clipping algorithm, improve powAZx50.py
script, fix render algorithm, add coordinate view, add basic drawPlane()
function - only able to lay flat.
- Note: v0.2.4 was skipped...I did a funny and accidentally labelled it as v0.2.5.
v0.2.3 - Add fully functioning sortCoordinateList()
method, optimize filling algorithm, add functionality for drawing only visible parts of an object.
v0.2.2 - Code cleanup, remove excess code, optimizations, removed vertex cache, currently the fastest version.
v0.2.1 - Added cache for common vertices. May be slower? We'll see, for now the cache is set to 1.
v0.2.0 - Massive speed boost, over 6x speed
v0.1.0 - First demo