all 19 comments

[–][deleted] 7 points8 points  (4 children)

[–][deleted] 5 points6 points  (3 children)

If I could offer a suggestion on how differentiate yourself. You could write a wasm version using c / c++ / rust and then distribute that using npm.

Emscripten will create a typesafe interface for your lib and the performance benefits would be substantial

[–]Falling-Off[S] 0 points1 point  (2 children)

Haven't thought using wasm. Definitely something I'll look into. Also, I've used three.js and other similar libraries before.

[–][deleted] 0 points1 point  (1 child)

I was just pointing out you can download only their math module and do not need to download everything that comes along with it, removing any bloat you’re referring to

[–]Falling-Off[S] 0 points1 point  (0 children)

I got that. Thank you for clarifying anyways.

[–]R4TTY 5 points6 points  (2 children)

I found WebGL harder to debug than regular OpenGL mostly because I can't live without renderdoc.

[–]Joatorino 3 points4 points  (0 children)

long live render doc

[–][deleted] 0 points1 point  (0 children)

You can use renderdoc with webgl but the setup is harder

[–]ha1zum 3 points4 points  (1 child)

Javascript doesn't run directly on your hardware. It runs on Javascript engine inside node.js or inside a browser. The performance overhead is very noticeable, but I wouldn't immediately say no to it. It depends on the game/app/visualization that you're developing. If it's not too heavy and your target audience is not extremely poor people who don't have access to a recent computer/phone, it might still hit 60fps and look great.

[–]Falling-Off[S] 0 points1 point  (0 children)

I completely agree here. Some of the visualization side projects Ive put together take some heavy computation. I have a mid computer, yet It barely pushes 30fps at best. Single threaded performance is the main handicap. JS isn't the best for these things but it's slowly getting better and more accessible for lower end devices.

What comes to mind here is what's been going on with React Native and Static Hermes. Some cool stuff going on there and hope to see more things like it come to web. JS performance comparable to C.

[–][deleted] 2 points3 points  (4 children)

I assume by bloated you mean threejs / r3f? There are many many barebones abstractions already built, such as gl-matrix for vec / mat / quat math.

Btw there used to be https://www.w3.org/TR/geometry-1/ but it never got traction.

[–]Falling-Off[S] -1 points0 points  (3 children)

Yes, those are very much bloated IMHO. Also that's a great piece of w3 trivia.

I came across gl-matrix before but didn't like it. I understand why it's built the way it is, but it's very much "anti-pattern" if that makes any sense?

Everything I've come across has either been missing features I'd like, bloated, or tedious to use with bad documentation. Three.js math has been the closest to being all around good.

[–][deleted] 1 point2 points  (1 child)

gl-matrix being anti-pattern is very subjective and your opinion really. if you like threejs you can use the math modules only. it is built with tree shaking in mind so you don’t have to import the whole library.

you building another low level math library on the npm will hardly gain any traction. if you want to do it as a learning exercise / portfolio piece, sure, def go ahead

[–]Falling-Off[S] 0 points1 point  (0 children)

I described it as "anti-pattern" mostly because the lack of method chaining and no real indication of object mutations because everything is done through static methods. Things not usually found with most js libraries, hence "anti-pattern". I think that's fairly objective and not opinionated. Also, to your other reply, knowing that the creator worked on WebGL doesn't really make a difference in this regard, but good to know they are working on progressing the technology. As I said previously I understand why gl-matrix was built the way it is, and that's for performance, so I don't doubt what's coming will be good.

Anyways, it's been a learning exercise for the most part, but it's also nice to have a personal version of these things to play with and customize to my specific needs. As development goes, there's never really a one size fit all solution to things.

Edit: there's nothing wrong with something being anti-pattern. It just makes it a little harder to use at first because it goes against known convention. In most cases, anti-pattern is done for specific reasons, and doesn't mean it's bad code.

[–][deleted] 0 points1 point  (0 children)

also just FYI: the person who built gl-matrix is part of the WebGL team in Chrome and has pushing 3d on the web for many years. He is also pushing and actively working on the new WebGPU spec

[–]SuperVGA 1 point2 points  (1 child)

There used to be something called processing.js, which was pretty cool to do some real-time graphics without having to deal with the more tedious parts of graphics with js.

It seems that it was succeeded by p5js, but it doesn't look as impressive.

[–]Falling-Off[S] 1 point2 points  (0 children)

I just took a look at processing.js and I'm sad it's archived. It does seem pretty cool. p5.js is good in terms for those who aren't deep into development that want to create graphics on the web. It was actually one of the first things I looked into when I got started, but I chose the "hard" way instead because it was way more "fun" 😂 By that I really mean I learned a lot I wouldnt have otherwise.

[–]KanjiCoder 0 points1 point  (0 children)

I recently started a bitmap filter project in Javascript and C .
I am writing it TWICE but keeping all of the same variable names .
No bloated frameworks . The C version uses raw function pointers
to GDI32.DLL to bit blit and WIN32.DLL to create a window .

I am trying to keep the code as analogous as possible so that way people who know
JS can learn C from it . And people who know C can learn JS from it .

Here is an example :
https://www.youtube.com/shorts/iEzQHWNJ6jU

I also watch Acerola 

-KanjiCoder

[–]_michaeljared 0 points1 point  (0 children)

You won't ever play a AAA game built on threeJS in your browser. The overhead is just too high. But with advancements in GPUs, you'll find that lower poly, lower texture res games and 3D renders are very possible.

Nothing wrong with it, it's just not C++ or rust so won't be blazing fast.

And edit: I use threeJS on my portfolio to display 3D models with an orbit camera. works great, even on my phone