2
0

Shadow.hx 758 B

1234567891011121314151617181920212223242526272829303132
  1. package h3d.shader;
  2. class Shadow extends hxsl.Shader {
  3. static var SRC = {
  4. @global var shadow : {
  5. map : Channel,
  6. proj : Mat3x4,
  7. color : Vec3,
  8. power : Float,
  9. bias : Float,
  10. };
  11. var pixelColor : Vec4;
  12. var transformedPosition : Vec3;
  13. var pixelTransformedPosition : Vec3;
  14. @private var shadowPos : Vec3;
  15. function fragment() {
  16. var shadowPos = pixelTransformedPosition * shadow.proj;
  17. var depth = shadow.map.get(screenToUv(shadowPos.xy));
  18. var zMax = shadowPos.z.saturate();
  19. var delta = (depth + shadow.bias).min(zMax) - zMax;
  20. var shade = exp( shadow.power * delta ).saturate();
  21. pixelColor.rgb *= (1 - shade) * shadow.color.rgb + shade;
  22. }
  23. };
  24. public function new() {
  25. super();
  26. }
  27. }