camera controls:
[w] forward | [a] left | [d] right | [s] back | [space] up | [c] down
world settings:
[1] or [2] mode | [e] shadows | [r] trails | [0] reverse
random position generation:
for the positions of the floating orbs, i randomly generated an x position between 3 & 5 and a y position between 0 & 1, then randomly generated an angle from 0 to 2pi.
blinn-phong shading:
i used blinn-phong shading on the central object to achieve the shiny orange color (and on the floating orbs but it's harder to tell)
alpha mapping and random color generation:
the central object has another sphere rotating around it. for this object, i texture mapped a black and white pattern onto it, then discarded the white values. for the remaining fragments, i generated a random value for the r and b of the color to get a moving static purple color
transparent gradient:
i was going to make some type of shadow for each floating object, but i decided it looked better with glowing orange look. for this effect, i drew a thin rectangle behind each orb. for the shading, i mapped on a black and white gradient and then determined the opacity of fragment based off the color of the texture. the length of the gradient is determined by how close the orb is to the center
trails:
each orb has a vector of objects that act as its trail. the positions of the trail objects are sent based off time and when a certain amount are placed, the end will replace itself at the front