Shadows.hx 1.4 KB

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