main.lua 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. function lovr.load()
  2. source = lovr.audio.newSource('sine.wav')
  3. source:setEffectEnabled('spatialization')
  4. source:setDirectivity(.5, 2.0)
  5. source:setLooping(true)
  6. source:setVolume(.8)
  7. source:play()
  8. end
  9. function lovr.update(dt)
  10. local x, y, z = 0, 1, -1
  11. local yaw = lovr.timer.getTime() * 2
  12. source:setPose(x, y, z, yaw, 0, 1, 0)
  13. lovr.audio.setPose(lovr.headset.getPose())
  14. end
  15. function lovr.draw(pass)
  16. if lovr.audio.getSpatializer() ~= 'phonon' then
  17. pass:text('Warning: phonon spatializer is not active', 0, 1.2, -1, .05)
  18. end
  19. shader = shader or lovr.graphics.newShader(
  20. 'unlit',
  21. [[vec4 lovrmain() {
  22. vec3 L = vec3(0., 1., 0.);
  23. vec3 N = normalize(Normal);
  24. float NoL = dot(N, L) * .5 + .5;
  25. return vec4(vec3(NoL), 1.);
  26. }
  27. ]]
  28. )
  29. pass:setShader(shader)
  30. local radius, length = .03, .05
  31. local x, y, z, angle, ax, ay, az = source:getPose()
  32. -- Draw speaker cone
  33. pass:push()
  34. pass:translate(x, y, z)
  35. pass:translate(0, 0, -length)
  36. pass:rotate(angle + math.pi, ax, ay, az)
  37. pass:translate(0, 0, length)
  38. pass:cone(0, 0, 0, radius, length)
  39. pass:pop()
  40. end