Playing around a little bit with a stylized rendering idea for a 2D platformer that popped into my head (looks better in motion).
This is pretty much just a laundry-list of features with some pretty pictures.
- Flexible scene-graph with multiple render targets
- Virtual File System for seamless loading from regular directories, Quake PAK archives, or ZIP files.
- Limited GUI support (transparent text windows which can be dragged around or typed into, great for debugging)
Level formats supported
- Quake level loading (.BSP, version 0x1D)
- Quake II level loading (.BSP, version 0x26)
- Quake III level loading (.BSP, version 0x2E)
Model formats supported
- Quake II model loading (.MD2)
- Quake III model loading (.MD3)
- Molecule loader (.M3D)
- 3DS loading (.3DS, incomplete)
- Q2 .WAL
- Q3 .shader
- Infinite 3D grid
- Tie-dye (composite effect)
- Sinus Scanlines
- Iterated function systems with multiple morph modes and pre-defined matricies for the morphers: Binary, Coral, Crystal, Dragon, Fern, Floor, Spiral, Swirl, Tree, Triangle, and Zig-zag
- Particle systems: Snow, rain, grid-bugs, explosion debris
- Radial blur
- Roto blur
- Motion blur
- Glow blur
- Rectangular prism
- Elliptic Torus
- PQ torus knots
- Bezier curves
- Spherical harmonics
- Texture-mapped fonts
- For a neat effect, text strings can be bound to any of the path objects, such as the PQ torus knot.
- Skydome (including real sun position and CIE clear/cloudy sky luminace)
- FBm generated heightmaps
- Heightmap from image
Generated surfaces (no parameters):
- Pisot Triaxial
- Triaxial Tritorus
- Pillow Shape
- Whitney Umbrella
These are all generated using a general purpose parameterized-surface generator with different parameter matricies.
Here are a few images from my real-time raytracer (taken on a 900 MHz Athlon):
It supports temporal supersampling, where only a fraction of the pixels are rendered in any given frame, so the image is rendered at interactive rates with degraded quality when being moved, but it converges to an optimal solution if the camera is left alone for a second or so (not enabled on these pictures).
I intend to add adaptive sub-sampling to increase speed without much loss in quality, and as an extension, the level of subdivision can be increased when the camera is still. This should give the speed advantages of sub-sampling without the problems in static images (missing small objects), although it will still have aliasing in animation if an object projects to something smaller than the initial grid resolution and falls fully inside of a grid cell.
It currently only supports spheres and planes, another area for expansion.
Note: The scene files are from an computer graphics course I saw online a long time ago, but I don’t remember exactly where they came from. If anyone has contact information, please let me know and I’ll add it here.
Chilik is similar in concept to Nullsoft’s excellent AVS plugin for Winamp, extended to 3D. It presents a tree-view of a scene graph, where the user can insert or move different models, special effects (such as particle systems), or scene modifiers (blurs, clones).
Continue reading “Chilik Screen Saver”