Advertisement
9551

Untitled

Aug 26th, 2021
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.00 KB | None | 0 0
  1. local per = peripheral.wrap("back")
  2. local ar = per.canvas()
  3. local sx,sy = ar.getSize()
  4. local FPScap = 150
  5. local renderFrames = 10000
  6. local doFPScapEventYield = false
  7. local screenAR = {
  8.     x = sx *0.5,
  9.     y = sy *0.5
  10. }
  11. local dt = require("jig3D")
  12. local draw = require("jigAR")
  13. local wire = require("WireVR")
  14. wire.doMoveBack(false)
  15. local camOffset = wire.getVposARotation()
  16. local objList = {
  17.     c1 = dt.newCube(),
  18.     c2 = dt.newCube()
  19. }
  20. --for i=1,500 do objList[i] = dt.newCube() end
  21. local frames = 0
  22. local FPS = 0
  23. local sTime = os.time()
  24. local alive = true
  25. local cam = wire.getVposARotation()
  26. local projected = {}
  27. local calcFPS = function()
  28.     local cTime = os.time()
  29.     local tDif = (cTime-sTime)/0.02
  30.     FPS = frames/tDif
  31. end
  32. local engine = function()
  33. --for k in pairs() do print(k) end
  34. objList.c2.scale.x = 10
  35. objList.c2.scale.y = 0.1
  36. objList.c2.scale.z = 10
  37. objList.c2.loc.y = 3
  38. sleep(2)
  39. for i = 1, renderFrames do
  40.     frames = frames + 1
  41.     local ran = false
  42.     --[[for k in pairs(objList) do
  43.         objList[k].rot.y = os.time()*1500
  44.         objList[k].rot.z = os.time()*2000
  45.         objList[k].rot.x = os.time()*2500
  46.     end--]]
  47.     os.pullEvent("RENDERFRAME")
  48.     ar.clear()
  49.     for name,transformedVertices in pairs(projected) do
  50.         draw.drawSolidObj(ar,objList[name].indexList,transformedVertices,objList[name].colorList)
  51.     end
  52.     if not ran then calcFPS() end
  53.     print("Average FPS:"..math.floor(FPS).." total:"..("%d/%d"):format(math.floor(i),math.floor(renderFrames)))
  54. end
  55. alive = false
  56. wire.setState(alive)
  57. end
  58. local tracker = function()
  59.     while alive do
  60.         cam = wire.getVposARotation()
  61.         cam.loc = cam.loc:sub(camOffset.loc)
  62.         local objs = 0
  63.         for name,objectData in pairs(objList) do
  64.             objs = objs + 1
  65.             if objs == 1 then
  66.                 projected[name] = dt.screenTransform(objectData,screenAR,cam)
  67.             else
  68.                 objs = 0
  69.                 local ocl = cam.loc
  70.                 local ocr = cam.rot
  71.                 local cam = {
  72.                     loc = vector.new(ocl.x,-ocl.y,-ocl.z),
  73.                     rot = ocr
  74.                 }
  75.                 projected[name] = dt.screenTransform(objectData,screenAR,cam)
  76.             end
  77.         end
  78.         wire.eventYield()
  79.     end
  80. end
  81. local FPSCAP = function()
  82.     while alive do
  83.         for _=1,math.max(FPScap,20)/20 do
  84.             os.queueEvent("RENDERFRAME")
  85.             if doFPScapEventYield then wire.eventYield() end
  86.         end
  87.         sleep()
  88.     end
  89. end
  90. parallel.waitForAll(wire.launch,engine,tracker,FPSCAP)
  91. local eTime = os.time()
  92. if eTime < sTime then eTime = eTime + sTime end
  93. local tTime = (eTime-sTime)/0.02
  94. local totalP = 0
  95. for name,_ in pairs(objList) do
  96.     totalP = totalP + #objList[name].indexList
  97. end
  98. print("---------------------------------------")
  99. print("Finished scene with "..(totalP/3).." total polygons")
  100. print("Drew "..frames.." frames in "..tTime.." seconds")
  101. print("Average FPS: "..(frames/tTime))
  102.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement