main.lua 767 B

123456789101112131415161718192021222324252627
  1. -- Renders a side-by-side stereo image on a plane, resulting in a 3D effect
  2. function lovr.load()
  3. sbsTexture = lovr.graphics.newTexture('sbs_left_right.png', { mipmaps = false })
  4. sbsShader = lovr.graphics.newShader([[
  5. vec4 lovrmain() {
  6. return DefaultPosition;
  7. }
  8. ]], [[
  9. vec4 lovrmain() {
  10. vec2 newUV = clamp(UV, 0., 1.) * vec2(.5, 1.) + vec2(ViewIndex) * vec2(.5, 0.);
  11. // Use this instead for top-bottom stereo
  12. // vec2 newUV = clamp(UV, 0., 1.) * vec2(1., .5) + vec2(ViewIndex) * vec2(0., .5);
  13. return getPixel(ColorTexture, newUV);
  14. }
  15. ]])
  16. lovr.graphics.setBackgroundColor(.05, .05, .05)
  17. end
  18. function lovr.draw(pass)
  19. pass:setMaterial(sbsTexture)
  20. pass:setShader(sbsShader)
  21. pass:plane(0, 1, -2, 2.5, 2)
  22. end