home *** CD-ROM | disk | FTP | other *** search
/ Hackers Magazine 57 / CdHackersMagazineNr57.iso / Software / Multimedia / k3d-setup-0.7.11.0.exe / share / k3d / shaders / surface / k3d_decalplastic.sl < prev    next >
Encoding:
Text File  |  2008-01-23  |  1.5 KB  |  52 lines

  1. // K-3D
  2. // Copyright (c) 1995-2004, Timothy M. Shead
  3. //
  4. // Contact: tshead@k-3d.com
  5. //
  6. // This program is free software; you can redistribute it and/or
  7. // modify it under the terms of the GNU General Public
  8. // License as published by the Free Software Foundation; either
  9. // version 2 of the License, or (at your option) any later version.
  10. //
  11. // This program is distributed in the hope that it will be useful,
  12. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  14. // General Public License for more details.
  15. //
  16. // You should have received a copy of the GNU General Public
  17. // License along with this program; if not, write to the Free Software
  18. // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  19.  
  20. /** \file
  21.         \author Tim Shead (tshead@k-3d.com)
  22. */
  23.  
  24. surface k3d_decalplastic(
  25.     float Ka = 1.0;
  26.     float Kd = 0.5;
  27.     float Ks = 0.5;
  28.     float roughness = 0.1;
  29.     color specularcolor = 1.0;
  30.     string texturename = "";
  31.     float s0 = 0.0;
  32.     float s1 = 1.0;
  33.     float t0 = 0.0;
  34.     float t1 = 1.0;
  35.     )
  36. {
  37.     color Ct = Cs;
  38.     if(texturename != "")
  39.         {
  40.             float ss = mix(s0, s1, s);
  41.             float tt = mix(t0, t1, t);
  42.             float alpha = float texture(texturename[3], ss, tt);
  43.             Ct = (1.0 - alpha) * Cs + (alpha * color texture(texturename, ss, tt));
  44.         }
  45.  
  46.     normal Nf = faceforward(normalize(N), I);
  47.     vector V = -normalize(I);
  48.     Oi = Os;
  49.     Ci = Oi * Ct * (Ka * ambient() + Kd * diffuse(Nf)) + specularcolor * Ks * specular(Nf, V, roughness);
  50. }
  51.  
  52.