main.lua 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. function lovr.load()
  2. model = lovr.graphics.newModel('helmet/DamagedHelmet.glb')
  3. shader = lovr.graphics.newShader('standard', {
  4. flags = {
  5. normalTexture = false,
  6. indirectLighting = true,
  7. occlusion = true,
  8. emissive = true,
  9. skipTonemap = false
  10. }
  11. })
  12. skybox = lovr.graphics.newTexture({
  13. left = 'env/nx.png',
  14. right = 'env/px.png',
  15. top = 'env/py.png',
  16. bottom = 'env/ny.png',
  17. back = 'env/pz.png',
  18. front = 'env/nz.png'
  19. }, { linear = true })
  20. environmentMap = lovr.graphics.newTexture(256, 256, { type = 'cube' })
  21. for mipmap = 1, environmentMap:getMipmapCount() do
  22. for face, dir in ipairs({ 'px', 'nx', 'py', 'ny', 'pz', 'nz' }) do
  23. local filename = ('env/m%d_%s.png'):format(mipmap - 1, dir)
  24. local image = lovr.data.newTextureData(filename, false)
  25. environmentMap:replacePixels(image, 0, 0, face, mipmap)
  26. end
  27. end
  28. shader:send('lovrLightDirection', { -1, -1, -1 })
  29. shader:send('lovrLightColor', { .9, .9, .8, 1.0 })
  30. shader:send('lovrExposure', 2)
  31. shader:send('lovrSphericalHarmonics', require('env/sphericalHarmonics'))
  32. shader:send('lovrEnvironmentMap', environmentMap)
  33. lovr.graphics.setBackgroundColor(.18, .18, .20)
  34. lovr.graphics.setCullingEnabled(true)
  35. lovr.graphics.setBlendMode()
  36. end
  37. function lovr.draw()
  38. lovr.graphics.skybox(skybox)
  39. lovr.graphics.setShader(shader)
  40. model:draw(0, 1.5, -3, 1, lovr.timer.getTime() * .15 - 1)
  41. lovr.graphics.setShader()
  42. end