Hexel by Ephidrena - Final Amiga Aga 060 demo Note: Requires about 1,5mb of chipram, boot from cli before starting the demo to avoid issues. Loaderror coded and did some graphics Frequent did the music Frequent writing: The soundtrack for this demo, called "Myk som en ugle", is based on the tune "Fjernorienteringsreferanse" taken from my ep with the same name, released in 2016. Composed in 96khz-24bit and downconverted to Ephidrena's special format for removal of 8-bit noice in 28603Hz resolution. Loaderror have during the last months been working on the visuals every single day and I'm really glad we finished the demo in time. Things started to take shape during February and by mid March all parts in the track were filled with visuals. This final version contains some speedups and rewrite due to unfortunate conditions who made the party version not running properly on several 060 Amiga models. Various greets to: Adapt, ADA, Boozombies, Carl. B, Cocoon,Dekadence, Darklite, Dead Hackers Society, Dekadence, Dreamweb, Elude, Excess, Focus Design, Fuse, Ghosttown, Haujobb, Gwem, Hoaxers, Kewlers, Lemon, Loonies, Mankind, Mawi, Nature, Ozone, Potion, Pacific, Paraguay, Playpsyco, Portal Process, RNO, Scarab, Scoopex, Software Failure, Spaceballs, Spookysys, The Black Lotus, Traktor, Tulou, Unique and forgotten. Loaderror writing: It is the third in the Neonsky series where we try to make some use of Amiga features instead of just doing c2p effects in 8 FPS. As Frequent wrote in the readme.txt we went through many iterations with pixelled logos and everything which had to be discarded because it either didn't match the tune or it looked like crap. The tune makes me think about surfing, sunset and summer. So I was watching surf videos and melancholic videos of people holding hands at the beach. Also the Miami Vice vaporwave thing was on my mind at the time. And then you try to match this to the stone cold effects in low color resolution which I had this time and it just didn't combine. After much cursing and wanting to scrap the whole thing we found some kind of common theme in underwater exploration. I was thinking for myself it was a submarine going to planet demo and diving into the ocean to map the new species (mostly finding old species though ;). Then some underwater techno display graphics were made and looked decent. At this point I was happy that at least the demo is not going to look like crap! After watching this with the soundtrack again and again I also got the feeling the track fits. And judging by the response so far it seemed to work out with many others as well. Some words about each effect 1 Interference A pair of independently scrolling 16 color images with slightly different colours. Palette is tuned so when they combine you get some transparency/additive blend mix of them. 2 Lowpass filtered pixellize The super mario world effect with horizontal+vertical lowpass filter. In 4 bitplanes. The copper is used to adjust the colors each line to create the slight underwater pulse. Uses that AGA feature which allows modifying one bank of colors while displaying another so you get a full line of time to modify colors. This is used on multiple effects in the whole demo. 3 Particles with turbulence and copper glow Particles are drawn randomly into bitplanes 0-3, when they overlap you get some free transparency effects. The particle velocity is controlled by a picture of a tornado from some weather scientists. Each particle has a color which is added to a buffer for the vertical line where it is present. This buffer is then low pass filtered and used as color base for modifying colors per scanline (as in 2). For the final the drawing is done to fast in bitplane format and then only dirty lines are copied back to chip ram. 4 Antialiased cubes This requires subpixel accuracy polygon filler. I draw each triangle five times, each to its own bitplane with 4 different sample positions organized in a rotated grid. The 5th bitplane is used for selecting white or glenz-black. The remaining 3 bitplanes contains the dezign pic. Then there is some palette organizing to make this appear as antialised pixels with a slight glenz effect. If two cubes overlap it messes up and the outer color of the cube has to be white or else. Particles were added to make it less dry and finally a copper rainbow to make it look less linear palette fashioned. I think this is a novel effect on Amiga (AA in bitplanes??) and perhaps could be done on Amiga 500? For the final all the draw operations are done to fast ram bitplanes and dirty lines are copied back to the chip ram buffers for display. 5 Generalized color cycling (vortex with orange light) For this one I made a color reduction algorithm which takes a RGB picture and does "color reduction" to 256 unique colors with heavy dithering. The difference from a traditional color reduction algorithm is in that the channels are not actually colors, but rather the RG channels are texture-UV and the B channel is light. When reducing you need to take into account that for repeating UVs the value 0 is closer to the value 255 than to the value 2 for example. If you use Gimp to downconvert the table as a normal image it will not recognize this and for example dithering will look wrong. When the table is reduced to 256 unique entries, it is run through a "shader" that does something like: for i = 0 to 255 { palette[i] = texture2D(tunneltex, table.rg ) + table.a * vec3(lightcolor) } Thus giving the appearance of a fullscreen moving truecolor tunnel with lights. Resolution is only limited by memory and processing is almost nothing. I was thinking of going superhires in the final, but the fear of messing up the DDFSTART and DDFSTOP values again made me put that away. I had a version of this where the copper was also changing colors every scanline to make the effect less coarse, but finally I had to admit that the horizontal artefacts arising from doing this were too ugly so I dropped it this time. 6 Hexagonal pipe voxel The unlimited rectangloids is now unlimited hexaloids. I think this effect was explained in the Neonsky writeup so I'll just add the hexagon transform. I made a minimum hexagon pattern that would repeat within one unit square and simply map it inside. The pattern contains offsets which say which neighbor texel it should visit to get real height and color. Center hexagon shape has offset 0, top left part has offset -1-1, bottom right part has offset +1+1. The original grid coordinate needs to be multiplied by 2 so that +1+1 and -1-1 offsets of neighboring hexels will reference the same shared hexel. This was the biggest problem of this effect. The precision of the raycasting was improved to get rid of the jumpyness seen in the Neonsky version. 7 Hexatables This uses the same hexagon offset and mapping technique as above. Every reference into the map needs to be x2 before applying the hexagon offset as above. Then a short anim is made (6 frames) that advance one hexagon unit ahead. On top of this the larger scale movements are done by cycling colors. Multiple color maps are added on top of each other to make it more bling. I spent a lot of time looking at wildly jumping hexels and ugly colors before finding something which looked good. 8 Voxelball A raycasted landscape with 360 degree field of view (like a VR movie) drawn onto a tunnel map looks like a ball! The texture is kept minimal to fit nicely in the cache to gain some speed for the deformation which consists of several maps sliding on top of each other. The shading is from a derivative map of these. The voxelball is c2ped into a sprite to get free transparency display on top of the bitplane background. The ball area is less than the screen size. This speeds it up a bit compared to the one in Software Make The Dance Foam Oil. The ball is in 16 colors with dither and a dynamic pulsing copper rainbow. I had a version where the sprite was updating 50Hz while the blob was blobbing away at a lower framerate. This used Amiga tasks to run the effect in a separate thread so to speak. Unfortunately the prioritization caused the ball to blob at half framerate so threw away that idea for the party. 9 Fullscreen voxelplasma Same as above, but with radial mirror and using a dithered table to mask the angular artefacts. Also not in a sprite, but just dumped directly to the screen. 10 Hexel logo Hexel logo in a sprite with copper rainbow. Bitplane/palette based crossfading in the background. 11 Greetings scroller Consider yourselves greeted! This is the antialiasing effect as above, but with only 4 bitplanes and another object. The list is roughly the same as in the Readme, but I don't think the scroller makes it through the full list before it ends. 12 *cough* Bilinear *cough* filtered voxel Or just using a large smooth height map of 2048x2048 to try to get rid of typical blocky voxel artefacts. A bit simplified edition of the hexavoxel above with added dithering. 13 Pixellized lowpass credits. As nr 2. I actually wanted to make a hexellize instead of a pixellize effect. Let's see if that can be done in the final.. Or. I will probably be making more hexagon stuff later. Other funny stuff The demo contains an at the moment very limited interpreter. In the future I hope to make this into a live-coding language for tweaking effects without recompiling/restarting the demo. Some files can be changed while the demo runs and get reloaded. This helps limit demo restart aswell. It's not exactly demo tool, but maybe in 10 years it will be.
Alek_NGI