scene.org File Archive

File download

<root>­/­parties­/­2018­/­revision18­/­amiga-demo/eph_hexel_final.lha

File size:
8 469 671 bytes (8.08M)
File date:
2018-05-29 05:25:40
Download count:
all-time: 3 288

Screenshot (by pouët.net)

Screenshot

Preview

  • data/bil_keyframes.kf 5.86K
  • data/blank_sprite.iff 1.29K
  • data/ccball_inside_00.chk 87.50K
  • data/ccball_inside_10.chk 87.50K
  • data/ccball_inside_20.chk 87.50K
  • data/ccball_inside_30.chk 87.50K
  • data/ccball_inside_40.chk 87.50K
  • data/ccball_inside_50.chk 87.50K
  • data/ccplane_00.chk 87.50K
  • data/ccplane_10.chk 87.50K
  • data/ccplane_20.chk 87.50K
  • data/ccplane_30.chk 87.50K
  • data/ccplane_40.chk 87.50K
  • data/ccplane_50.chk 87.50K
  • data/ccsubtunnel_00.chk 87.50K
  • data/ccsubtunnel_10.chk 87.50K
  • data/ccsubtunnel_20.chk 87.50K
  • data/ccsubtunnel_30.chk 87.50K
  • data/ccsubtunnel_40.chk 87.50K
  • data/ccsubtunnel_50.chk 87.50K
  • data/cctunnel_00.chk 87.50K
  • data/cctunnel_10.chk 87.50K
  • data/cctunnel_20.chk 87.50K
  • data/cctunnel_30.chk 87.50K
  • data/cctunnel_40.chk 87.50K
  • data/cctunnel_50.chk 87.50K
  • data/clouds.ppm 192.05K
  • data/clouds2.ppm 192.05K
  • data/colorcycle2.ppm 484B
  • data/colorcycle3.ppm 484B
  • data/colorcycle4.ppm 484B
  • data/colorcycle5.ppm 484B
  • data/colorcycle6.ppm 484B
  • data/compass.piff 4.35K
  • data/credits_back.iff 2.56K
  • data/cube_test.rmsh.face 148B
  • data/cube_test.rmsh.pnts 292B
  • data/cube_test.rmsh.uv 196B
  • data/ephidrena_water.iff 4.49K
  • data/font_0-1.rmsh.face 148B
  • data/font_0-1.rmsh.mat 52B
  • data/font_0-1.rmsh.pnts 124B
  • data/font_1-1.rmsh.face 112B
  • data/font_1-1.rmsh.mat 40B
  • data/font_1-1.rmsh.pnts 136B
  • data/font_2-1.rmsh.face 124B
  • data/font_2-1.rmsh.mat 44B
  • data/font_2-1.rmsh.pnts 148B
  • data/font_3-1.rmsh.face 124B
  • data/font_3-1.rmsh.mat 44B
  • data/font_3-1.rmsh.pnts 148B
  • data/font_4-1.rmsh.face 100B
  • data/font_4-1.rmsh.mat 36B
  • data/font_4-1.rmsh.pnts 124B
  • data/font_5-1.rmsh.face 124B
  • data/font_5-1.rmsh.mat 44B
  • data/font_5-1.rmsh.pnts 148B
  • data/font_6-1.rmsh.face 124B
  • data/font_6-1.rmsh.mat 44B
  • data/font_6-1.rmsh.pnts 124B
  • data/font_7-1.rmsh.face 76B
  • data/font_7-1.rmsh.mat 28B
  • data/font_7-1.rmsh.pnts 100B
  • data/font_8-1.rmsh.face 268B
  • data/font_8-1.rmsh.mat 92B
  • data/font_8-1.rmsh.pnts 220B
  • data/font_9-1.rmsh.face 124B
  • data/font_9-1.rmsh.mat 44B
  • data/font_9-1.rmsh.pnts 124B
  • data/font_a-1.rmsh.face 148B
  • data/font_a-1.rmsh.mat 52B
  • data/font_a-1.rmsh.pnts 148B
  • data/font_b-1.rmsh.face 268B
  • data/font_b-1.rmsh.mat 92B
  • data/font_b-1.rmsh.pnts 220B
  • data/font_c-1.rmsh.face 76B
  • data/font_c-1.rmsh.mat 28B
  • data/font_c-1.rmsh.pnts 100B
  • data/font_colon-1.rmsh.face 52B
  • data/font_colon-1.rmsh.mat 20B
  • data/font_colon-1.rmsh.pnts 100B
  • data/font_d-1.rmsh.face 100B
  • data/font_d-1.rmsh.mat 36B
  • data/font_d-1.rmsh.pnts 100B
  • data/font_dash-1.rmsh.face 28B
  • data/font_dash-1.rmsh.mat 12B
  • data/font_dash-1.rmsh.pnts 52B
  • data/font_dot-1.rmsh.face 28B
  • data/font_dot-1.rmsh.mat 12B
  • data/font_dot-1.rmsh.pnts 52B
  • data/font_e-1.rmsh.face 124B
  • data/font_e-1.rmsh.mat 44B
  • data/font_e-1.rmsh.pnts 148B
  • data/font_exclamation-1.rmsh.face 52B
  • data/font_exclamation-1.rmsh.mat 20B
  • data/font_exclamation-1.rmsh.pnts 100B
  • data/font_f-1.rmsh.face 100B
  • data/font_f-1.rmsh.mat 36B
  • data/font_f-1.rmsh.pnts 124B
  • data/font_g-1.rmsh.face 124B
  • data/font_g-1.rmsh.mat 44B
  • data/font_g-1.rmsh.pnts 148B
  • data/font_h-1.rmsh.face 124B
  • data/font_h-1.rmsh.mat 44B
  • data/font_h-1.rmsh.pnts 148B
  • data/font_i-1.rmsh.face 124B
  • data/font_i-1.rmsh.mat 44B
  • data/font_i-1.rmsh.pnts 148B
  • data/font_j-1.rmsh.face 100B
  • data/font_j-1.rmsh.mat 36B
  • data/font_j-1.rmsh.pnts 124B
  • data/font_k-1.rmsh.face 112B
  • data/font_k-1.rmsh.mat 40B
  • data/font_k-1.rmsh.pnts 136B
  • data/font_l-1.rmsh.face 52B
  • data/font_l-1.rmsh.mat 20B
  • data/font_l-1.rmsh.pnts 76B
  • data/font_m-1.rmsh.face 148B
  • data/font_m-1.rmsh.mat 52B
  • data/font_m-1.rmsh.pnts 172B
  • data/font_n-1.rmsh.face 124B
  • data/font_n-1.rmsh.mat 44B
  • data/font_n-1.rmsh.pnts 148B
  • data/font_o-1.rmsh.face 124B
  • data/font_o-1.rmsh.mat 44B
  • data/font_o-1.rmsh.pnts 148B
  • data/font_p-1.rmsh.face 124B
  • data/font_p-1.rmsh.mat 44B
  • data/font_p-1.rmsh.pnts 124B
  • data/font_q-1.rmsh.face 136B
  • data/font_q-1.rmsh.mat 48B
  • data/font_q-1.rmsh.pnts 136B
  • data/font_question-1.rmsh.face 100B
  • data/font_question-1.rmsh.mat 36B
  • data/font_question-1.rmsh.pnts 148B
  • data/font_r-1.rmsh.face 172B
  • data/font_r-1.rmsh.mat 60B
  • data/font_r-1.rmsh.pnts 172B
  • data/font_s-1.rmsh.face 124B
  • data/font_s-1.rmsh.mat 44B
  • data/font_s-1.rmsh.pnts 148B
  • data/font_t-1.rmsh.face 76B
  • data/font_t-1.rmsh.mat 28B
  • data/font_t-1.rmsh.pnts 100B
  • data/font_u-1.rmsh.face 76B
  • data/font_u-1.rmsh.mat 28B
  • data/font_u-1.rmsh.pnts 100B
  • data/font_v-1.rmsh.face 100B
  • data/font_v-1.rmsh.mat 36B
  • data/font_v-1.rmsh.pnts 124B
  • data/font_w-1.rmsh.face 148B
  • data/font_w-1.rmsh.mat 52B
  • data/font_w-1.rmsh.pnts 172B
  • data/font_x-1.rmsh.face 124B
  • data/font_x-1.rmsh.mat 44B
  • data/font_x-1.rmsh.pnts 148B
  • data/font_y-1.rmsh.face 88B
  • data/font_y-1.rmsh.mat 32B
  • data/font_y-1.rmsh.pnts 112B
  • data/font_z-1.rmsh.face 124B
  • data/font_z-1.rmsh.mat 44B
  • data/font_z-1.rmsh.pnts 148B
  • data/gradient.ppm 48.05K
  • data/hexel_water.iff 5.95K
  • data/hjula-1.rmsh.face 580B
  • data/hjula-1.rmsh.mat 196B
  • data/hjula-1.rmsh.pnts 628B
  • data/interference-fade.piff 46.72K
  • data/loadingbar.ldb 4B
  • data/np.86 7.08M
  • data/ol_antialiasing.iff 1.21K
  • data/ol_copperglow.iff 1.19K
  • data/ol_hexatables.iff 1.14K
  • data/particlesource.iff 9.51K
  • data/psylte_back.piff 4.80K
  • data/rarrix-1.rmsh.face 10.41K
  • data/rarrix-1.rmsh.mat 3.47K
  • data/rarrix-1.rmsh.pnts 5.97K
  • data/revision_water.iff 5.22K
  • data/scroller_back.piff 4.62K
  • data/shadertoy.pal 1.00K
  • data/shadertoy.pc 4B
  • data/shadertoy.plct 240.00K
  • data/skyskrapers_heightmap.iff 61.72K
  • data/skyskrapers_keyframes.kf 5.86K
  • data/skyskrapers_texture2.iff 55.62K
  • data/sprite256x256.iff 5.28K
  • data/subsea.iff 2.69K
  • data/tekstfjas.piff 8.28K
  • data/tekstfjas2.piff 8.08K
  • data/thecube_back.piff 3.12K
  • data/thecube_keyframes.kf 5.86K
  • data/turb1_256.iff 76.76K
  • data/turb2_256.iff 76.54K
  • data/voxel_heightmap2048.pgm 4.00M
  • data/voxel_keyframes.kf 5.86K
  • data/voxel_texture2048.pgm 4.00M
  • Eph-Hexel-Final_run 112.12K
  • expressions.expr 464B
  • readme.txt 9.51K
  • script4.eph 4.56K

file_id.diz

::::::::
readme.txt
::::::::
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.