/* William Schilthuis vsfx319 - Renderman Fire Shader - spring 2009 */ surface wgs_fire01( float Kfb = 1; float rim_width = 0.15; color colr[7] ={color(0.945, 0.718, 0.439), color(1.000, 0.965, 0.596), color(1.000, 0.929, 0.561), color(1.000, 0.781, 0.220), color(1.000, 0.737, 0.365), color(0.831, 0.615, 0.431), color(0.529, 0.794, 0.937)}; color opc[8] ={color(0.3), color(0.1), color(0.1), color(0.1), color(0.1), color(0.3), color(0.9), color(0.5)}; float amp = 0.8; float freq = 9; float top = 0.1; float low = 0; ) { normal n = normalize(N); normal nf = faceforward(n, I, n); float dist = 1 - t; vector i = normalize(-I); float dot = i.nf; float ns = noise(s*freq, t*freq); float tt = t + ns * amp; color surfcolor = 1; //"t" ramp for color //presented in tip to base order color color_ramp = spline(dist, colr[0], colr[0], colr[1], colr[1], colr[2], colr[2], colr[3], colr[4], colr[5], colr[6], colr[6]); surfcolor = color_ramp; // ramp for opacity color displace = mix(top, low, tt); color opac_ramp = spline(dist, opc[0], opc[0], opc[1], opc[1], opc[2], opc[3], opc[3], opc[4], opc[5], opc[6], opc[7], opc[7]); //"normal" ramp for opacity Oi = ((smoothstep(rim_width, 1 , dot)) - (opac_ramp)); Ci = Oi * Cs * (surfcolor + opac_ramp) * Kfb; } //notes// // http://www.fundza.com/rman_shaders/flame/flame_color_ramps/index.html // http://www.fundza.com/rman_shaders/surface/rim_effects/index.html // http://www.fundza.com/rman_shaders/smoothstep/index.html