Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: A conformant WebGL implementation for Node.js (github.com/stackgl)
57 points by 33a on May 26, 2016 | hide | past | favorite | 15 comments



It would be cool if you could talk to the graphics driver and other IO devices directly from NodeJS. I guess it would require a layer for cross platform standardization. But would be awesome if you could make a Graphics engine in NodeJS that just worked everywhere.

I've tried some of the graphics packages for nodeJS but failed at installing their dependencies. I want something that just works or installable via NPM.


It is a little buggy for production use at the moment. A bunch of basic things are broken, but we are working on fixing those issues in the near term:

https://github.com/stackgl/headless-gl/issues/62

BTW pretty sure OP is mikolalysenko, the author of stackgl. :) Heh, great work!


Ok, solved this. The validation for this part of the constant blending was a bit too strict https://www.khronos.org/registry/webgl/specs/1.0/#CONSTANT_C... .

Somehow the conformance suite didn't catch this problem (go figure).


Does this mean we can basically render any WebGL code server side and effectively stream the output?


You could, but it would be slow, or at least pretty heavy per client. That said if you have a beefy enough server I suppose it might work.


I don't really understand what's going on here.

Is there a practical use for this? When would rendering, server side, ever be beneficial (assuming that's what's going on here)?


Lots of places. For example:

* You want to generate preview images of WebGL content, such as in a gallery

* You are using WebGL to accelerate some computation in nodejs with a library like https://github.com/waylonflinn/weblas

* You want to test your WebGL code using continuous integration

etc.


I know that some medical image viewers use server side rendering for segmented volumes. Such tasks are computationally intensive and usually involves very large datasets. With server side rendering, you can easily and efficiently stream videos or even JPEGs to thin clients such as mobile devices.


And, if so, is it hardware accelerated or a software implementation?

Edit: And, how many concurrent context could it support?


It looks like it uses whatever native implementation of EGL there is behindt he scenes. So it should be hardware accelerated if there is a GPU on your server.

As for whether you can stream the output, looks like you can with `gl.readPixels`, but you'll probably want to compress it somehow. Sending a raw video stream is heavy.


That's a really bad idea, glReadPixels is usually a full pipeline flush + read back and stall which kills perf for all sorts of reasons.


Funny they mention a project called "node-webgl" being an opengl wrapper. Seems like they should have traded project names, since "headless-gl" sounds like an OpenGL thing and "node-webgl" sounds like a WebGL thing, while they're both the opposite! :)


Guess which one got there first and took the webgl name on npm? :)


This looks cool. Are there any demos we could try in our browser?


Is there chance to run threejs on it?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: