فهرست منبع

Update audio examples;

bjorn 3 سال پیش
والد
کامیت
ae95f2d6ea
3فایلهای تغییر یافته به همراه27 افزوده شده و 22 حذف شده
  1. 20 17
      examples/Audio/Directivity/main.lua
  2. 4 3
      examples/Audio/Mute/main.lua
  3. 3 2
      examples/Audio/Spatialization/main.lua

+ 20 - 17
examples/Audio/Directivity/main.lua

@@ -14,29 +14,32 @@ function lovr.update(dt)
   lovr.audio.setPose(lovr.headset.getPose())
 end
 
-function lovr.draw()
+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(
-    [[out vec3 vNormal;
-      vec4 position(mat4 p, mat4 t, vec4 v) {
-        vNormal = normalize(lovrNormalMatrix * lovrNormal);
-        return p * t * v;
-      }]],
-    [[in vec3 vNormal;
-      vec4 color(vec4 g, sampler2D i, vec2 uv) {
+    'unlit',
+    [[vec4 lovrmain() {
         vec3 L = vec3(0., 1., 0.);
-        vec3 N = normalize(vNormal);
+        vec3 N = normalize(Normal);
         float NoL = dot(N, L) * .5 + .5;
         return vec4(vec3(NoL), 1.);
       }
     ]]
   )
-  lovr.graphics.setShader(shader)
-  local length = .1
-  local r1, r2 = .06, .01
+  pass:setShader(shader)
+
+  local radius, length = .03, .05
   local x, y, z, angle, ax, ay, az = source:getPose()
-  lovr.graphics.cylinder(x, y, z, length, angle, ax, ay, az, r1, r2)
-  lovr.graphics.setShader()
-  if lovr.audio.getSpatializer() ~= 'phonon' then
-    lovr.graphics.print('Warning: phonon spatializer is not active', 0, 1.2, -1, .05)
-  end
+
+  -- 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

+ 4 - 3
examples/Audio/Mute/main.lua

@@ -12,7 +12,8 @@ function lovr.update()
   end
 end
 
-function lovr.draw()
-  lovr.graphics.print(muted and 'Muted' or 'Unmuted', 0, 1.7, -1, .1)
-  lovr.graphics.print('Press trigger to toggle mute', 0, 1.7 - lovr.graphics.getFont():getHeight() * .2, -1, .1)
+function lovr.draw(pass)
+  local font = lovr.graphics.getDefaultFont()
+  pass:text(muted and 'Muted' or 'Unmuted', 0, 1.7, -1, .1)
+  pass:text('Press trigger to toggle mute', 0, 1.7 - font:getHeight() * .2, -1, .1)
 end

+ 3 - 2
examples/Audio/Spatialization/main.lua

@@ -12,6 +12,7 @@ function lovr.update()
   source:setPose(x, 1, -1)
 end
 
-function lovr.draw()
-  lovr.graphics.sphere(mat4(source:getPose()):scale(.05))
+function lovr.draw(pass)
+  if lovr.timer.getTime() > 1 then error('oh') end
+  pass:sphere(mat4(source:getPose()):scale(.05))
 end