Clone of mesa.
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

CH11-bumpmap.frag.txt 1003B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. //
  2. // Fragment shader for procedural bumps
  3. //
  4. // Authors: John Kessenich, Randi Rost
  5. //
  6. // Copyright (c) 2002-2006 3Dlabs Inc. Ltd.
  7. //
  8. // See 3Dlabs-License.txt for license information
  9. //
  10. varying vec3 LightDir;
  11. varying vec3 EyeDir;
  12. uniform vec3 SurfaceColor; // = (0.7, 0.6, 0.18)
  13. uniform float BumpDensity; // = 16.0
  14. uniform float BumpSize; // = 0.15
  15. uniform float SpecularFactor; // = 0.5
  16. void main()
  17. {
  18. vec3 litColor;
  19. vec2 c = BumpDensity * gl_TexCoord[0].st;
  20. vec2 p = fract(c) - vec2(0.5);
  21. float d, f;
  22. d = p.x * p.x + p.y * p.y;
  23. f = 1.0 / sqrt(d + 1.0);
  24. if (d >= BumpSize)
  25. { p = vec2(0.0); f = 1.0; }
  26. vec3 normDelta = vec3(p.x, p.y, 1.0) * f;
  27. litColor = SurfaceColor * max(dot(normDelta, LightDir), 0.0);
  28. vec3 reflectDir = reflect(LightDir, normDelta);
  29. float spec = max(dot(EyeDir, reflectDir), 0.0);
  30. spec *= SpecularFactor;
  31. litColor = min(litColor + spec, vec3(1.0));
  32. gl_FragColor = vec4(litColor, 1.0);
  33. }