Texture.hx 863 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package h3d.shader;
  2. class Texture extends hxsl.Shader {
  3. static var SRC = {
  4. @input var input : {
  5. var uv : Vec2;
  6. };
  7. @const var additive : Bool;
  8. @const var killAlpha : Bool;
  9. @const var specularAlpha : Bool;
  10. @range(0,1) @param var killAlphaThreshold : Float;
  11. @param var texture : Sampler2D;
  12. var calculatedUV : Vec2;
  13. var pixelColor : Vec4;
  14. var specColor : Vec3;
  15. function vertex() {
  16. calculatedUV = input.uv;
  17. }
  18. function fragment() {
  19. var c = texture.get(calculatedUV);
  20. if( killAlpha && c.a - killAlphaThreshold < 0 ) discard;
  21. if( additive )
  22. pixelColor += c;
  23. else
  24. pixelColor *= c;
  25. if( specularAlpha )
  26. specColor *= c.aaa;
  27. }
  28. }
  29. public function new(?tex) {
  30. super();
  31. this.texture = tex;
  32. killAlphaThreshold = h3d.mat.Defaults.defaultKillAlphaThreshold;
  33. }
  34. }