| |
turtle Account closed
Registered: Mar 2005 Posts: 44 |
plasma ?? what is it
someone who can explain what plasma is? certainly many who wonder what it is =)
is it real time ?
or
|
|
... 39 posts hidden. Click here to view all posts.... |
| |
Luca
Registered: Apr 2002 Posts: 178 |
Quote: i personally would exactly recommend the opposite.... do NOT generate the dither chars automatically - hand drawn chars can be made to show a lot less blocky artefacts.
Mh, that's quite interesting, 'coz I used to hand drawn it too, but I guessed it would to be better if calculated... Hence, I did well and I didn't know yet :) |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
it really depends on your definition of "better" =) generating will always give you "perfect" dithered chars, but especially with effects like plasmas, where often the gradients are quite "sharp" they seem to show block artefacts more than other methods....
oh and well, i'd also recommend to not only play around with the usual dither characters (boooooring =P) - play with other stuff too, just as small animations (spinning thingies, jumping dots, deforming circles...whatever you can think of) which sometimes give very interisting results. |
| |
Luca
Registered: Apr 2002 Posts: 178 |
Quote: it really depends on your definition of "better" =) generating will always give you "perfect" dithered chars, but especially with effects like plasmas, where often the gradients are quite "sharp" they seem to show block artefacts more than other methods....
oh and well, i'd also recommend to not only play around with the usual dither characters (boooooring =P) - play with other stuff too, just as small animations (spinning thingies, jumping dots, deforming circles...whatever you can think of) which sometimes give very interisting results.
Yeah did'em too (although 16 chars deep only), but I really need the classic boring dithering, because I'm managing an ECM plasma, and colours really have to merge together. I'm just happy of the result, and it runs realtime and fullscreen at 2.5 frames, but hey, 64 chars deep dithering would be better anyway! =) |
| |
Luca
Registered: Apr 2002 Posts: 178 |
Ouch! What a damn stupid I am: if I apply a black-to-white linear gradient, it has to be not on 32 chars, but on 33 (the white one!). |
| |
Oswald
Registered: Apr 2002 Posts: 5094 |
Luca, for ECM plasma you should go through smash demos and ripp one from one of them :) |
| |
Graham Account closed
Registered: Dec 2002 Posts: 990 |
Better rip the original: Produkthandler Kom Her |
| |
Luca
Registered: Apr 2002 Posts: 178 |
Oh, no no, why? I'm so proud of my lil' hue-cycling 9 colours realtime fullscreen ECM plasma on Plus/4 (but easy to port on C64 too)! =)
After the 64 chars cure, now it looks this way:
ecm_plasma_prv.wmv - 2.73MB |
| |
Oswald
Registered: Apr 2002 Posts: 5094 |
wow, didnt know +4 has ecm :) a plasma should look really nice with some palette cycling :) tho 2.5 frame sounds pretty slow. use Graham's trick to add up the sines: lda (zppointertochartable+sine1+sine2),sine3+sine4 ;) |
| |
Shadow Account closed
Registered: Apr 2002 Posts: 355 |
I am intrigued by that 'Graham optimization' but I don't quite understand what that piece of pseudo code represents.
If we step away from ECM and goes to a normal, 8x8 char plasma with a wraparound charset, my routine looks like this:
Drawing routine (unrolled for each char on screen):
lda sinea+0
adc sineb+0
sta $0400+40*0+0
lda sinea+1
adc sineb+0
sta $0400+40*0+1
...
sine update routine (unrolled 256 times):
lda sine1+0,x
adc sine2+0,y
sta sinea+0
lda sine3+0,x
adc sine4+0,y
sta sineb+0
lda sine1+1,x
adc sine2+1,y
sta sinea+1
...
How would the 'Graham optimization' come into play here, or is it only applicable in ECM (where you do a table lookup before placing chars)
|
| |
Oswald
Registered: Apr 2002 Posts: 5094 |
with your labels it is: lda (sinea),sineb you have the (),y adressing mode do the addition.
you setup a bunch of zp pointers so, that the high byte points to your palette which is page aligned, and it either contains colors or in case of charmode: 0,1,2,3,... or 0,0,1,1.... etc. you get the idea.
the low byte contains your prepared sinea values.
now you have for each column one sinea zp pointer, and for each row one sineb value in a table (or vice versa).
then you can keep Y the same for each column (or row) the same so you dont have to reload it for each 'pixel'. and have the (),y do the final addition & tablelookup at the same time. |
Previous - 1 | 2 | 3 | 4 | 5 - Next |