Reputation: 441
I'm currently researching a way to produce non-photorealistic rendering in webgl. The best looking algorithm I've found so far for edge detection was implemented with OpenGL's geometry shader, here. Specifically GL_TRIANGLES_ADJACENCY.
I was wondering if there was an equivalent in WebGL or even how would I go about porting this code over to Javascript.
Upvotes: 12
Views: 21155
Reputation: 3481
Geometry shaders is not available in WebGL.
However there is plenty of ways to do edge detection. E.g. you can use image space based algorithms, such as
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.93.9731&rep=rep1&type=pdf
Or take a look in "Real-time Rendering - 3rd edition" (book). In this book there is a lot of examples of NPR, of which most will run fine on WebGL.
http://www.realtimerendering.com/
UPDATE Nov 4 2023:
With WebGL2, if you know the number of vertices you want to generate up front, you can use this technique:
https://webgl2fundamentals.org/webgl/lessons/webgl-drawing-without-data.html
This website is dedicated to examples of that:
https://www.vertexshaderart.com
Upvotes: 14
Reputation: 18243
WebGL currently only supports pixel shaders and vertex shaders not geometry shaders.
This is as close as it gets:
https://webgl2fundamentals.org/webgl/lessons/webgl-drawing-without-data.html
And here's a site dedicated to examples of that:
https://www.vertexshaderart.com
You have to specify the number of vertices you will generate up front.
Upvotes: 7