Shadows.hx 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import hxd.Math;
  2. class Shadows extends SampleApp {
  3. var time : Float = 0.;
  4. var spheres : Array<h3d.scene.Object>;
  5. var dir : h3d.scene.fwd.DirLight;
  6. var shadow : h3d.pass.DefaultShadowMap;
  7. override function init() {
  8. super.init();
  9. var floor = new h3d.prim.Cube(10, 10, 0.1);
  10. floor.addNormals();
  11. floor.translate( -5, -5, 0);
  12. var m = new h3d.scene.Mesh(floor, s3d);
  13. m.material.mainPass.enableLights = true;
  14. m.material.shadows = true;
  15. var sphere = new h3d.prim.Sphere(1, 32, 24);
  16. sphere.addNormals();
  17. spheres = [];
  18. for( i in 0...15 ) {
  19. var p = new h3d.scene.Mesh(sphere, s3d);
  20. p.scale(0.2 + Math.random());
  21. p.x = Math.srand(3);
  22. p.y = Math.srand(3);
  23. p.z = Math.random() * p.scaleX;
  24. p.material.mainPass.enableLights = true;
  25. p.material.shadows = true;
  26. p.material.color.setColor(Std.random(0x1000000));
  27. }
  28. s3d.camera.zNear = 6;
  29. s3d.camera.zFar = 30;
  30. cast(s3d.lightSystem,h3d.scene.fwd.LightSystem).ambientLight.set(0.5, 0.5, 0.5);
  31. dir = new h3d.scene.fwd.DirLight(new h3d.Vector(-0.3, -0.2, -1), s3d);
  32. dir.enableSpecular = true;
  33. shadow = s3d.renderer.getPass(h3d.pass.DefaultShadowMap);
  34. addSlider("Power", function() return shadow.power, function(p) shadow.power = p, 0, 100);
  35. addSlider("Radius", function() return shadow.blur.radius, function(r) shadow.blur.radius = r, 0, 20);
  36. addSlider("Quality", function() return shadow.blur.quality, function(r) shadow.blur.quality = r);
  37. addSlider("Bias", function() return shadow.bias, function(r) shadow.bias = r, 0, 0.1);
  38. s3d.camera.pos.set(12, 12, 6);
  39. new h3d.scene.CameraController(s3d).loadFromCamera();
  40. }
  41. override function update( dt : Float ) {
  42. time += dt * 0.6;
  43. dir.setDirection(new h3d.Vector(Math.cos(time), Math.sin(time) * 2, -1));
  44. }
  45. static function main() {
  46. new Shadows();
  47. }
  48. }