OK.  Thank you.

On Tuesday, May 10, 2022 at 12:59:37 PM UTC-5 Werner Modenbach wrote:

> 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] <http://href>> 
>>> 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/0a722088-d122-47e7-ba4b-e1ca7ca11ac9n%40googlegroups.com.

Reply via email to