What is the name of this effect?

category: code [glöplog]
What is the name of this effect: https://youtu.be/e-WWfNNAK5k?t=65

Please can you explain me how it works?
added on the 2018-11-28 18:20:56 by UnlkA0 UnlkA0
Basically 2D blobs where you use the final brightness and angle as a texture lookup. Not sure if there's a name aside from "table effect" I guess.
added on the 2018-11-28 18:26:55 by Gargaj Gargaj
move.w (a2)+,d2
(add.w (a3)+,d2)
move.b (a1,d2.l),(a0)+
added on the 2018-11-28 18:42:04 by dodke dodke
tunnel blobs
added on the 2018-11-28 18:42:28 by skarab skarab
I've heard them called bitmap tunnels. Tutorial here: http://sol.gfxile.net/gp/ch17.html

Basically you have a table of distance-from-center and around-the-circle values which you use as texture u/v lookup values. Those tables can be made in different ways (the example you gave doesn't have a straight tunnel but has a sphere in the middle), and when you offset the tables and sum them together you get all sorts of fun things. You can also have one tunnel going in one way and another one in another, etc..
added on the 2018-11-28 18:59:54 by sol_hsa sol_hsa
Great demo, and this effect looks more complicated than it actually is, or an 060 would be required to process it. As for the artwork, I always loved Cyclone's "Garden of Eden" picture in this prod.
added on the 2018-11-29 08:45:11 by Foebane72 Foebane72
i am sorry for the dumb question but the video is pointing at 1:05 where there are some spheres that look like a polar coordinates plasma is mapped onto them including lighting?

i don't see a tunnel here?

BB Image
added on the 2018-11-29 21:12:19 by ws ws
It's still a tunnel for some definition of a tunnel :) The table is just different and doesn't contain a perspective.

Pseudocode for this effect:

Code: for (int y = 0; y < screenHeight; y++) { for (int x 0; x < screenWidth; x++) { int u = 0; int v = 0; for (int i = 0; i < numTunnels; i++) { //tunnels[] contains center points int centerX = tunnels[i].x; int centerY = tunnels[i].y; //the tunnel table is for example twice the size of the screen in both dimensions //we assume the coordinates are sensible so we don't read out of the screen int offsetToTable = (x + centerX) + (y + centerY) * tableWidth; u += table1[offsetToTable]; v += table2[offsetToTable]; } //classic 256x256 texture int pixel = texture[(u & 255) + (v & 255) * textureWidth]; //shading is left as an exercies for the reader :) screen[x + y * screenWidth] = pixel; } }

(might contain bugs, it's been like 20 years...)
added on the 2018-11-29 22:28:57 by Preacher Preacher
BB Image

Well, you'll need some offset coordinates to make the darn texture-coordinates move like "flux-lines" in an electric field (though sort of fake simulated), and then the lens-effect on top of that.
added on the 2018-11-30 03:05:53 by rudi rudi
If it is done like 2d-blobs, then of course its easy-peasy to just final = blob1+blob2+blob3. and then pixel = texture[final]..
added on the 2018-11-30 03:07:21 by rudi rudi
There is also distortion outside of blobs, so you do something like z^2 = abs(r - x^2 + y^2) and it wraps upwards. So, you have the wrap outside the sphere like here https://youtu.be/h6pF4gIAsuI?t=119. Then you can add three of these maybe.
added on the 2018-11-30 08:22:36 by Optimus Optimus
abs(r - x^2 - y^2)
added on the 2018-11-30 08:23:23 by Optimus Optimus
How are 2D blobs done fast anyway?
added on the 2018-12-01 15:54:53 by raer raer
Additive blended sprites.
added on the 2018-12-01 16:12:43 by Gargaj Gargaj
exponential tunnel!
Additive blended sprites.

On software-rendering platforms? GBA can't do Sprite on Sprite blending, thus you have to do it "by foot", which is slow...
added on the 2018-12-01 20:00:21 by raer raer
It is most likely one table (tableA) of a tunnel/sphere thingie. then another table (tableB) with 4 different "offsets (x,y) lookups of tableA" added together combined. if each memory-locations is a byte long and wrapping it may cause the effect we see when they combine, looks like they cancel eachother out in different "sine"-distortions. in addition to that to make the texture move there is yet another (or two) offsets that moves the lookup in x and/or y direction.
added on the 2018-12-01 21:55:59 by rudi rudi
BB Image
added on the 2018-12-02 18:45:44 by krabob krabob
thus you have to do it "by foot", which is slow

2D blobs have soft gradients and can nicely be blown up using linear interpolation. I tried that years ago on PC, 80x50 to 320x200, looked good. No idea about performance, I had no clue what I was doing then and was just fooling around.
added on the 2018-12-04 08:08:52 by Moerder Moerder