Posted: Sat 12 Apr, 2008 11:34 am
Just a quick status update.
I've done some more work on the clipping code to get rid of a new bug I discovered. Sometimes I think I should just use the traditional clipping method and to hell with speed. Seems to be working fine for now though.
One major change I have made is a new routine which I call a "mirror transform"... I'm not sure if there is a real name for it. It was inspired by the 3D engine created by Vektor Graphics in the early 90's, which I have been doing some reverse engineering of.
The idea is that most objects are symmetrical about at least one axis. By using some highly abnormal matrix code, it is possible to achieve this mirroring using only addition and subtraction.
The performance benefits vary. There is a slight increase for a single axis mirror. For a 3-axis mirror the execution time drops from ~9000 to ~3000 T-states (!). Though that would only be useful for cubes.
I've done some work on the high-level routines. They give you a great deal of control (such as automatic animation) without being too complex. I'll expand on this sometime soon.
Also still working on improving the source to make it releasable. I've decided to write my own Timendus-style asmdoc utility. It gives me a bit more control by using a more structured format rather than trying to parse comments written for humans. I might post some more on this later to solicit your ideas/opinions.
That's all for now! I'm off to play with my new toy: A Commodore 64
I've done some more work on the clipping code to get rid of a new bug I discovered. Sometimes I think I should just use the traditional clipping method and to hell with speed. Seems to be working fine for now though.
One major change I have made is a new routine which I call a "mirror transform"... I'm not sure if there is a real name for it. It was inspired by the 3D engine created by Vektor Graphics in the early 90's, which I have been doing some reverse engineering of.
The idea is that most objects are symmetrical about at least one axis. By using some highly abnormal matrix code, it is possible to achieve this mirroring using only addition and subtraction.
The performance benefits vary. There is a slight increase for a single axis mirror. For a 3-axis mirror the execution time drops from ~9000 to ~3000 T-states (!). Though that would only be useful for cubes.
I've done some work on the high-level routines. They give you a great deal of control (such as automatic animation) without being too complex. I'll expand on this sometime soon.
Also still working on improving the source to make it releasable. I've decided to write my own Timendus-style asmdoc utility. It gives me a bit more control by using a more structured format rather than trying to parse comments written for humans. I might post some more on this later to solicit your ideas/opinions.
That's all for now! I'm off to play with my new toy: A Commodore 64