Make a mesh out of a point in the geometry shader


#1

Hello,

I’d like to create a GPU particle system where each particule is created in the Geometry shader. A GL_POINTS that returns a cone for example. I whould like not to do the math that creates the cone in the Geometry shader and use a mesh that was previously loaded in a VBO instead and use a lookup table to setup the new triangles.

Who should I proceed ? My idea is to use the texture() function and point to an FBO that represents the geometry I’m using.

Any better Idea ?

Thanks

Nico


#2

The example app in examples/gl/gpuParticleSystem is a GPU particle system that creates a square for each GL_POINT. Maybe you try to modify that geometry shader to obtain your mesh.


#3

Thanks @edapx but it’s not the point. This examle shows how to created verticies programmatically. In my case, I want to get the positions of the verticies to generate from a Buffer which location is passed in the uniforms.


#4

Hi !

I found a technique quite different from what I was trying to do but leads to the same kind of result.

The process is explained in the openGl’s documentation
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glDrawArraysInstanced.xhtml

ofVbo provides a setAttributeDivisor methode that wraps glVertexAttribDivisor(), and a drawElementsInstanced methode to wrap glDrawArraysInstanced.

I’ll try this when I have time and share it.


#5

oh yes. Have a look at examples/gl/vboMeshDrawInstancedExample


#6

Thanks for the hint :slight_smile:

Has one ever managed to to something similare using a geometry shader, where the mesh to generate is stored only once in a buffer ?


#7

what you want to do is called feedback transform, there’s also an example in the gl folder that shows how to do it


#8

Its not what I’m looking for but interesting anyway :smiley:

This technique is a way to feed the vertex position array, but it’s not transforming a point into a mesh in the Geometry shader.


#9

ah i thought you wanted to store the results of the geometry shader in a buffer