sinclairzx81 / zero Goto Github PK
View Code? Open in Web Editor NEWA 3D renderer written in JavaScript and rendered to the terminal.
License: Other
A 3D renderer written in JavaScript and rendered to the terminal.
License: Other
While it would move away from being an ASCII renderer, sixel is not entirely unlike a standard for rendering graphics to the terminal.
I was casually browsing through the code out of curiosity, and it looks like the "mul" method in the fixed-dimension vector classes was accidentally copied from the "sub" method instead of containing the actual multiplication logic like in the variable-dimension vector class.
Are there any practical scenarios for this NPM package?🤔
Hello!
This is a very cool project and also an impressive job!
I've been tinkering with the source code a little and I've noticed that in the render loop using Node's function setImmediate
to set up the next iteration really outperforms setTimeout
in my text environment (Node.js 13.0.1).
The line I'm referring to is index.ts:79
, instead of
setTimeout(() => loop())
I've
setImmediate(() => loop())
or
setImmediate(loop)
with a substantial performance increase (on 120x28 the demo went from avg. ~65fps to ~250fps, on 237x70 it went from avg. ~30 fps to ~64 fps).
Functions set to run by setImmediate
respect I/O events and their callbacks like setTimeout
ones do. In this implementation it allows for the event handler that changes the rendering scene resolution to run on terminal window size change just like setTimeout
.
Other tests I did were with a while(1)
inside the loop function, converting the loop function to an async function and having it's callback call it again, and having the next iteration of the function set up to run with process.nextTick
. All of those are also faster than setTimeout
, but they seem to hang the process on the loop and disallow other event handlers and callbacks to run.
Is there a reason for why setImmediate
isn't used in the place of setTimeout
?
Related:
Thank you for reading and for the good job!
Thanks. Amazing work, BTW. My favorite novelty app in forever.
This is running perfectly on my 8-year-old Dell Latitude E6500 with 4GB RAM and Intel HD graphics and unremovable Windows Vista sticker attached via molecular annealing.
The current demo is amazing and crazy enough in itself. Frankly looking at it, I have this certain disbelief that I'm looking at an actual terminal window with 3D graphics.
That said, is there any chance to push it even further with colors? Really just wondering, awesome work already!
Hey, how difficult do you think it would be to add this as an alternative renderer for three.js?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.