Hi DC, I think we should clarify some aspects before going into the details. If I understand well, your problem can be split into 3 parts 1) You want to convert an existing model into meshlets. This is not related to OSG. But I found a git repository from NVIDIA doing this job. I will lookup the link and send it to you tomorrow. 2) For this to work you need task/mesh shaders doing their job on the GPU. This is also not related to OSG. Maybe you find some starting point in the repository as well. 3) You need to know how to load your shader and how to setup the data structures in OSG. I hope I can help you with that by providing some code snippets. Just let me know when you are ready for that step. But the code I provided already should help you. Werner
On 10. Mai 2022 16:12:40 MESZ, DC <[email protected]> wrote: >Hi Werner, > >Have you been able to implement this in OSG? > >I just started looking at mesh shaders and found your post. I'll need >to >learn how to generically break up a model into meshlets. > >Did you find any good tutorials that do more than just draw a triangle? > >Thanks, >DC > >On Tuesday, May 10, 2022 at 3:09:11 AM UTC-5 Werner Modenbach wrote: > >> Hi DC, >> it took me about one year, fully understanding task and mesh shader. >> I converted all my software to this technology and I'm fascinated by >it's >> functionality and performance. At what point did you stock? >> Werner >> >> >> On 10. Mai 2022 01:07:09 MESZ, DC <[email protected]> wrote: >>> >>> I'm very curious if you have had any luck getting this to work in >OSG. >>> After watching some of the online demo's regarding mesh shaders >>> (specifically Unreal), it would be great if there was a way for this >to be >>> implemented in OSG. >>> >>> On Wednesday, May 26, 2021 at 9:15:15 AM UTC-5 Werner Modenbach >wrote: >>> >>>> Hi users, >>>> >>>> I'm currently experimenting with the usage of meshlets in OSG. >>>> Robert already implemented the corresponding draw methods. Thanks >Robert! >>>> The main thing necessary to make it work is the indexed access to >almost >>>> every data given by the CPU, >>>> which is very limited in the traditional shader pipeline. I.e. a >vertex >>>> shader can only access 1 Vertex at a time. >>>> Mesh shaders can fetch any vertex by index and any number of >vertices. >>>> >>>> A typical use/definition of the shader structures may be: >>>> >>>> //-------------------------------------// transform_ub: Uniform >buffer for transformations// >>>> layout (std140, binding = 0) uniform uniforms_t { >>>> mat4 ViewProjectionMatrix; >>>> mat4 ModelMatrix;} transform_ub; >>>> //-------------------------------------// vb: storage buffer for >vertices.//struct s_vertex { >>>> vec4 position; >>>> vec4 color;}; >>>> >>>> layout (std430, binding = 1) buffer _vertices { >>>> s_vertex vertices[];} vb; >>>> >>>> //-------------------------------------// mbuf: storage buffer for >meshlets.//struct s_meshlet { >>>> uint vertices[64]; >>>> uint indices[378]; // up to 126 triangles >>>> uint vertex_count; >>>> uint index_count;}; >>>> >>>> layout (std430, binding = 2) buffer _meshlets { >>>> s_meshlet meshlets[];} mbuf; >>>> >>>> >>>> So all data is given via BufferObjects. >>>> >>>> Meshlet shaders are kind of compute shaders with output to the >>>> rasterizer and thus a fragment shader. >>>> The indexed access is like: >>>> >>>> uint mi = gl_WorkGroupID.x; >>>> uint thread_id = gl_LocalInvocationID.x; >>>> >>>> uint vertex_count = mbuf.meshlets[mi].vertex_count; >>>> for (uint i = 0; i < vertex_count; ++i) { >>>> uint vi = mbuf.meshlets[mi].vertices[i]; >>>> >>>> >>>> Precondition for the indexed access is having the data given via >>>> BufferObjects. >>>> In OSG we have only predefined types (Indices, Vertices and Images) >for >>>> BufferObjects. >>>> >>>> Has anybody any experience deriving a more general class for >putting >>>> arbitrary structs in BufferObjects (i.e. struct s_meshlet)? >>>> I think that shouldn't be such a big deal or am I overseeing >something. >>>> >>>> @Robert: Or can you provide any hints to me for creating such a >derived >>>> class? >>>> >>>> If I manage getting this working I'll provide it to the community >>>> because mesh shaders are really great for many applications! >>>> >>>> Many thanks in advance >>>> >>>> - Werner - >>>> >>>> > >-- >You received this message because you are subscribed to the Google >Groups "OpenSceneGraph Users" group. >To unsubscribe from this group and stop receiving emails from it, send >an email to [email protected]. >To view this discussion on the web visit >https://groups.google.com/d/msgid/osg-users/232b876b-46a2-47f8-98df-49088574c748n%40googlegroups.com. -- You received this message because you are subscribed to the Google Groups "OpenSceneGraph Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/osg-users/239c80f4-4c1f-4eac-97ef-52731091ef2e%40email.android.com.
