I must create a rendering system for a civil engineering project (a webgl viewer ) .
I have mainly two object :
a beam or a column that have a polyline that must be extruded,
and a wall or system of shell, that have also a polyline that must be extruded.
The polyline is available for each object and several objects can share the same section(polyline).
I can have max 50/60 polylines for 10000 objects(is thae standard) .
Each object have 3 type of representation :
I use shaders and i think that i can share the same shader for drawing several object:
i have two options:
1)a pseudo istancing with a texture(data texture created by the state of the beam or wall objects for the selected/unselected and wireframe mode) or costants buffers sending the polyline in the texture or in a position bufer for each polyline(only once) ,next i send the extrude direction and the extrude depth.
I can do the extrusion in shader, is possible?I don't know well pseudo istancing
For the representation I can use a shader that render 3 types of representation , and a costant buffer var(a float ) for select the rendering type in the shader for the rendered current object.
At the end each object that have change is connected with an observer that write in the texture or in constant buffers the current state vars that i set or bind to the shared shader.
2) use a shader for each object , that semplify all ,but i get worst performances.
I don't well know the increase in performance with the 1) rendering system , can be correct?
is possible that the game worth the candle???
The main problem for me is send an id that identify the current object , then the current object can be identified in shader and can get the data(from the data texture or constants buffers)and can extrude and render the current object