Money was never the end goal – mrdoob – threejs creator
twitter.com
twitter.com
Even the Box2D library is written and maintained by one person as a passion project who happens to also have a successful tech job.
Very.
Backface culling, a lighting model, a little bit of trigonometry, new CSS color model features and much else took more than two minutes. The result does not have true perspective but looks okay-ish.
This experiment and the trifles made me appreciate three.js so much more!
Props to the creator.
Maybe you could have created the pyramid in 3D and rendered it ahead of time to SVG, so you could end up with a perfect perspective projection.
The pyramid also has layers and an initial routine where the layers get added, with a carousel made from details/summary elements to describe the layers. Clicking on the layers opens the respective details/summary and the colour changes.
The shading of the pyramid was particularly hard, since that changes as it rotates. I will have to do that in CSS too...
Most of them would be grateful for a $12 donation.
Why do I use $12 as a benchmark? If you paid a single open source project $1 a month, you could fund their VPS hosting for year by paying $12.
If you paid $24, you could pay their domain lease and VPS hosting as a single benefactor.
Think of some of the most underfunded, most used open source projects you use on a daily basis, and please consider donating what you surely spend less on coffee in a month at least one time a year.
I'm not talking about open source projects that have their own foundation, or limited private company. I'm talking about the random open source contributor whose project you love and use daily who is just an individual. Maybe they don't even get enough attention on GitHub but they're in all honesty publishing something that people (you!) want.
I've published open source projects for 15 years, almost a majority of them now are discontinued or archived, but the ones that are still maintained have been for over a decade. And I have had the opportunity to have my work shared with many people, others are not so fortunate.
It's nearly a full-time job to market them, and mrdoob is right, you end up sacrificing a lot to publish these things.
> 1 GB KVM VPS (2024's 11.11 Promo)
> 1x vCPU Core
> 14 GB PURE SSD RAID-10 Storage
> 1 GB RAM
> 2000GB Monthly Premium Bandwidth
> 1Gbps Public Network Port
> Full Root Admin Access
> 1 Dedicated IPv4 Address
> KVM / SolusVM Control Panel - Reboot, Reinstall, Manage rDNS, & much more
> Available in San Jose, Seattle, Dallas, Chicago, New York, and Atlanta
Source: LowEndBox. I own a software business that uses RackNerd as a downstream provider. We use their VPSs for a majority of our clients who have low traffic requirements.
Not that stretchoid & binaryEdge operating on Microsoft, Digital Ocean, Linode aren't doing the same.
Most all of the open source maintainers I know would LOVE to work on their projects full-time for a modest wage. But developers, teams, and companies have no interest or mechanisms to support that model... which is why VCs swept in to try to corrupt open source into a twisted product lead growth strategy.
Sorry to rant. I'm so glad mrdoob could do all this amazing work without needing revenue from it. I just get bristly at anyone who claims maintainers wanting to focus on their passions are "profit-driven".
I wouldn't call it 'corrupt', but rather a by-design "feature" of open-source: https://www.gnu.org/philosophy/open-source-misses-the-point....
> I just get bristly at anyone who claims maintainers wanting to focus on their passions are "profit-driven"
The person you replied to never said that.
Then, as three got popular he got lucky and google hired him full time to maintain it. Who knows where it would be without a corporate sponsor to fund it fulltime. it's unlikely he'd have been able to keep it going so long if he needed to spend all is time on other things to earn a living.
In other words, he is getting revenue from it. In fact on a google salary he's getting quite large revenue from in and he also takes donations in top of his $500k+ salary. https://github.com/sponsors/mrdoob
Super happy for him and super jealous. Wouldn't we all like a high paying corporate sponsor for our personal project
My point is you frame this like he planned to capitalized on it and was really lucky, but based on the context I think you've got it backwards. Mrdoob had already poured so much work and effort into this it would have been a foolish & unsustainable strategy if it was a way to "get clients and a great job". That's like deciding to do a startup as the best way to get really rich. I find it hard to believe given the consistent energy and progress of three.js that it's the product of someone with a "lottery winning" mentality.
On top of that, even if it wasn't a goal he did win the lotto in the end. There were 12 or so competing 3d js libraries back when three.js started. He won both the popularity lotto and then the sponsorship lotto.
It's multiple full time Phd level careers, and most people think it's easy and they could do all of it if given the opportunity.
But, take a game, or a movie. One needs render things very efficiently in a game, you have 33.3ms of frame budget. Today, raytracing in games either uses just 1 or 2 techniques (e.g. shadows) and calls it a day. If you want to do more, you probably need some help with machine learning (think DLSS). Not to mention, you need a system that accelerates the structures needed to perform it, and somehow marry all this with everything else in game that uses the GPU. You get animations into the mix and the complexity goes up in all areas.
In movies, you have more leeway, but the artists still need to iterate fast. You want them to be able to see something akin to the final product fast.
It intersects a lot of areas.
There’s a famous “ray tracing in a weekend” book even.
Color spaces and PBR also isn’t some magic. It’s just math. You implement it in shaders and color space conversion functions.
It gets really hard when you try to optimize it, like you said with render farms. IMO synchronization in Vulkan (and other low low level graphics APIs) is the really difficult stuff.
But nothing that requires a PhD or whatever.
For the curious “Real Time Rendering” is a really great textbook all about modern rendering techniques
What I'm used to, using hardware APIs, or software rendering: - Nodes - Edges - Triangles - Meshes - Shaders - Matrices - Quaternions (Or bivectors etc) - Projection (3d state to 2d screen)
I suppose I'm confused because the basics don't seem cosmic. It's a straightforward application of considering the state you need to store your 3D model in, then some linear algebra and quaternion operations to convert that 3d state to a 2d screen.
For quality level seen in media, it's different; all the additional techniques that make things realistic or have effects that get complicated. I suspect this is where the disconnect lies; if so, I suppose my point is that it's not 3D that's complicated; it's realistic 3D.
edit: I Looked up Gaussian Splats: Very cool!
rebuilding every feature of a 3d engine takes lots of time but getting to a lit model does not.
The math behind rendering is pretty straightforward and has been available since forever (Graphics Gems). On top of that, three.js was sort of a port of an existing library called away3D, which was a port of papervision, but that's another story.
I remember you from the good ol flash times. I didn't wanted to downplay your effort you put into threejs. <3
My point was that you don't have to have a PhD to write a 3D engine, the math is here, there's a plenty of literature, reference and libraries at hand that anyone can make their own toy 3D rendered on a weekend.
... to make that work in the browserland, that's whole another story. :)
I remember writing a tiny deeplinking "library", back in 2006. When I finished implementing the specification it had ~30 lines of code. At the time it was compatible with all common browsers it got to about 500. :)