October 25, 2008
ah, 1997. or: nostalgia
So in 1996 and 1997 I wrote a 3D library called Plush. Here is a screenshot from then:
It was written in C, it tried to be very portable (reading through it now, I'd say almost to a fault -- kinda annoying ;). There were some nifty things about it:
Totally useless today. But it would run SO fast with 20x the power available...
- 256 color output with adaptive palette creation and management
- multiple light sources
- piecewise linear perspective corrected texture mapping
- Gouraud shading with color ramps that let you do fakePhong
- optional Z-buffering
- environment mapping
- object hierarchies
- frustum clipping
- matrix functions
- primitive generation
- very basic translucency
The code itself wasn't too bad, some stuff that I had spent ages tweaking and getting to run smoothly would surely be reusable.
So in about 8 hours of work I transformed it into Plush2, which is similar to the above, except simplified in C++, renders to 32 bit per pixel output, integrates with our LICE compositing engine, and supports the following new features:
- 24 bit color output
- multiple COLORED light sources
- Texture mapping (piecewise linear perspective corrected) with optional BILINEAR filtering and support for any sized texture, support for texture transparency.
- Colored Gouraud shading
- True surface transparency support
- Multitexture support (one or both textures can be used as environment maps)
- Full control over how pixels are combined at render -- add, mulitply are supported replace, all with alpha control.
- No limits on number of light sources, triangles, etc.
Yes yes I know 3D stuff has all been done a ton, just thought it was interesting bringing things back from the dead to see what would be reusable. Now I'm going to go hug my 2.4ghz multicore processor.
This will be a part of the next WDL release, in case anybody cares, ha ha. It does compile down to pretty small (though not small enough to go making a 4k demo with it)