/* * splat.sl */ surface splat(color splatcolor = color(1, 1, 1); float radius = 1.0, amplitude_g = 1.0, sigma_g = 0.4, amplitude_e = 1.0, sigma_e = 0.16, percent_g = 1.0, exposure = 1.0 ) { float r; float value, value_g, value_e; float percent_e; color opacity; /* Set radius */ r = (1.0 - t)*radius; /* Set contribution from gaussian */ if (percent_g > 0.0) { value_g = amplitude_g*exp(-r*r/(sigma_g*sigma_g)); value_g = value_g*exposure; if (value_g > 1.0) value_g = 1.0; } else { value_g = 0.0; } /* Set contribution from exponential */ percent_e = 1.0 - percent_g; if (percent_e > 0.0) { value_e = amplitude_e*exp(-r/sigma_e); value_e = value_e*exposure; if (value_e > 1.0) value_e = 1.0; } else { value_e = 0.0; } /* Calculate sum of contributions */ value = percent_g*value_g + percent_e*value_e; /* Set opacity */ /* if (value >= 1.0) { * opacity = color(1, 1, 1); * } else { * opacity = color(1, 1, 1); * } */ /* Set output values */ Ci = splatcolor*value; Oi = Ci; }