Advertisement
9551

ThreeDeeh 0.000001 spiral example

Nov 6th, 2021
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.84 KB | None | 0 0
  1. local main = require("engine")
  2. term.setPaletteColor(colors.yellow, 194/255,178/255,128/255)
  3. local width,height = term.getSize()
  4. local win = window.create(term.current(),1,1,width,height)
  5. local oldTerm = term.redirect(win)
  6. local sTime = os.epoch("utc")/1000
  7. local frames = 10000
  8.  
  9. local objects = {}
  10.  
  11. for i=1,40 do
  12.     objects[i] = main.objects.newCube()
  13.     objects[i].loc.z = -8
  14.     objects[i].loc.x = -6.5+i/3
  15.     objects[i].scale = vector.new(0.4,3,1)
  16.     local colorData = {
  17.         [2^math.random(0,14)] = true,
  18.         [2^math.random(0,14)] = true,
  19.         [2^math.random(0,14)] = true
  20.     }
  21.     local color = main.createColor(colorData)
  22.     objects[i].color = color
  23. end
  24.  
  25. local drawArgs = main.getProcessingArgs()
  26.  
  27. drawArgs.drawWireFrame = false
  28. drawArgs.drawTriangles = true
  29.  
  30. local distanceShader = {
  31.     [0] = {"O",colors.white},
  32.     [15] = {"o",colors.white}
  33. }
  34.  
  35. local function render()
  36.     local camPos = vector.new(0,0,0)
  37.     local camRot = vector.new(0,0,0)
  38.     for i=1,frames do
  39.         for i=1,#objects do
  40.             objects[i].rot = vector.new(os.epoch()/400+i*10,1,1)
  41.         end
  42.         local zBuffer = main.createZBuffer()
  43.         local perspertive = main.createPerspective(width,height,40)
  44.         local camera = main.createCamera(camPos,camRot)
  45.         local projected = main.transform(objects,perspertive,camera)
  46.         local dat = main.proccesTriangleData(zBuffer,projected,drawArgs)
  47.         local blit = main.convertBufferToDrawable(width,height,dat,distanceShader)
  48.         main.drawConverted(term,blit)
  49.         os.queueEvent("yielding")
  50.         os.pullEvent("yielding")
  51.     end
  52. end
  53. local ok,err = pcall(render)
  54. term.redirect(oldTerm)
  55. term.setCursorPos(1,1)
  56. if not ok then
  57.     print(err,0)
  58. end
  59. local eTime = os.epoch("utc")/1000
  60. local tDiff = eTime-sTime
  61. _G.FPS = frames/tDiff
  62. print("FPS: ".._G.FPS)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement