123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- function lovr.load()
- source = lovr.audio.newSource('sine.wav')
- source:setEffectEnabled('spatialization')
- source:setDirectivity(.5, 2.0)
- source:setLooping(true)
- source:setVolume(.8)
- source:play()
- end
- function lovr.update(dt)
- local x, y, z = 0, 1, -1
- local yaw = lovr.timer.getTime() * 2
- source:setPose(x, y, z, yaw, 0, 1, 0)
- lovr.audio.setPose(lovr.headset.getPose())
- end
- function lovr.draw(pass)
- if lovr.audio.getSpatializer() ~= 'phonon' then
- pass:text('Warning: phonon spatializer is not active', 0, 1.2, -1, .05)
- end
- shader = shader or lovr.graphics.newShader(
- 'unlit',
- [[vec4 lovrmain() {
- vec3 L = vec3(0., 1., 0.);
- vec3 N = normalize(Normal);
- float NoL = dot(N, L) * .5 + .5;
- return vec4(vec3(NoL), 1.);
- }
- ]]
- )
- pass:setShader(shader)
- local radius, length = .03, .05
- local x, y, z, angle, ax, ay, az = source:getPose()
- -- Draw speaker cone
- pass:push()
- pass:translate(x, y, z)
- pass:translate(0, 0, -length)
- pass:rotate(angle + math.pi, ax, ay, az)
- pass:translate(0, 0, length)
- pass:cone(0, 0, 0, radius, length)
- pass:pop()
- end
|