SOPs are a bit slow because they run on the CPU so the solution is to use a geometry shader to generate geometry on the GPU. But geometry shaders have been removed. So how do you create a compute shader that does the same thing as a geometry shader i.e. how do you integrate a compute shader into the rendering pipeline - the vertex shader will need to read the vertex/triangle buffers that the compute shader writes to.

Hello,

I think it is not possible and geometry shader have been removed only on macos (metal), it continue to work on windows (openGL, Vulkan).

Geometry shader need to be after the vertex shader because it works with the coordinates of primitives and move/suppress/create it before the pixel shader who put colors on the primitive pixels.

Compute shader is another story, its just made to make very fast compute using all the GPU processors in paralell. Its pure algebric computation on pixels as vec4 variables. There is no idea of camera/perspective etc.

But there is an other possibility to change geometry in metal:

I think it is not possible and geometry shader have been removed only on macos (metal), it continue to work on windows (openGL, Vulkan).

Do you know how to create a geometry shader in TD? On Windows the dropdown in the GLSL node only seems to have vertex/pixel and compute shader options.

It’s possible in Unity but there is a lot of boilerplate code involved. Mesh shaders seem to be the solution to cross platform “geometry shaders”. Hopefully they will come to MoltenVK at some stage.

There is 2 solution (mainly):

– create a phong Mat, at the bottom of the parameters, there is a “Output Shader…” button, in the following dialog, you can choose “Include Geometry Shader” and you obtain a working Vertex/Geometry/Pixel shaders system with all the working connexions for infos between shaders.

Easy to do but the result contain many unused lines of code

– create a GLSL Mat, create a text Dat operator with a good name (as “glsl1_geometry”) and put that operator in the Geometry Shader line in the GLSL Mat parameters. You have to create all the glsl code in the shader and the links between shader but it could be more readable…