/* * Aurora.sl * * Description: * Shader that generates lightwave-like pattern using turbulence technique. * * Parameters: turbfreq : use for increasing or decreasing the size and * the number of wave, working like zoom in, zoom out. * frame: use for changing the light wave pattern in order * to make different pattern. * lightcolor: color of light. * * Author: Akanee Mahasith */ #include "rmannotes.sl" surface Aurora(float Ka = .2, Kd = .8; float frame = 1; float turbfreq = 2; color lightcolor = color (0.051, 0.530, 1)) { point PP; float turb, f; float freq; color surface_color, layer_color; color surface_opac, layer_opac; surface_color = lightcolor; surface_opac = 1 ; PP = transform("shader", P) * turbfreq; turb = 0; freq = frame / 20; turb += abs(snoise(PP + freq * PI)); turb = pow((1 - turb), 8); layer_color = lightcolor; layer_opac = turb; surface_color = blend(surface_color, layer_color, layer_opac); Oi = surface_opac * turb; Ci = surface_color * turb * surface_opac; }