Hmmm...
 This is a very global question.
Read the articles about mesh shaders and how to tailor them for optimal 
hardware usage.

On 1. Juni 2022 13:05:00 MESZ, Trajce Nikolov NICK 
<[email protected]> wrote:
>Ya, you're right 😀. I made it work with paged terrain data.
>
>Any hints for optimal settings?
>
>On Wed, Jun 1, 2022, 11:17 Werner Modenbach <
>[email protected]> wrote:
>
>> Hi Nick,
>> I think this is really the point where it is leaving meshlet specific
>> support.
>> This is the standard developers work.
>> Werner
>>
>>
>> On 1. Juni 2022 09:39:41 MESZ, Trajce Nikolov NICK <
>> [email protected]> wrote:
>>>
>>> Yea, but I have a handle on that part. Can ve done via read callback
>in
>>> the registry, or saved as well, I saw there is serialization
>support.
>>>
>>> I wrote a simple visitor that should convert a loaded model into
>>> meshlets. I had it working nicely until I started to experiment with
>>> threaded access.
>>>
>>> Attached is the source. Not elegant at all but I would be happy if
>you
>>> can have a look and maybe spot the problem
>>>
>>> Thanks a bunch!
>>>
>>> On Wed, Jun 1, 2022, 09:25 Werner Modenbach <
>>> [email protected]> wrote:
>>>
>>>> Hi Nick,
>>>> good to hear you are getting closer.
>>>> Due to the fact that standard classes of paged data handle vertex
>arrays
>>>> etc. autonomously and mesh shaders work different I think you have
>to look
>>>> up where this handling is done and write your own derived class.
>>>> Werner
>>>>
>>>>
>>>> On 31. Mai 2022 21:28:08 MESZ, Trajce Nikolov NICK <
>>>> [email protected]> wrote:
>>>>>
>>>>> Hi again Werner,
>>>>>
>>>>> I think I got it after reading few articles, actually the main one
>from
>>>>> NVIDIA. Do you have experience in using this with paged data?
>>>>>
>>>>> On Sat, May 28, 2022 at 8:35 PM Trajce Nikolov NICK <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Hi Werner!
>>>>>>
>>>>>> Thanks soo much for the shared code and the hints!!! I have a
>better
>>>>>> understanding now how all works together wrt. buffers. Just this
>snippet,
>>>>>> if you are willing to provide more hints.
>>>>>>
>>>>>> int startVertex = 1;
>>>>>>
>>>>>>     int anzahl = _anzahlVertices;
>>>>>>
>>>>>>     for (auto i=0; i<workgroupsInGeometry; ++i) {
>>>>>>
>>>>>>         (*MeshletInfosArray)[i][0] = startVertex;
>>>>>>
>>>>>>         (*MeshletInfosArray)[i][1] = min(TS_WORKGROUP_SIZE,
>anzahl);
>>>>>>
>>>>>>         startVertex += TS_WORKGROUP_STEP;
>>>>>>
>>>>>>         anzahl -=TS_WORKGROUP_STEP;
>>>>>>
>>>>>>     }
>>>>>>
>>>>>>
>>>>>> The ideal is to have a working code, a bit more robust then the
>one I found in the repo in the meshshaders branches. But I am getting
>there slowly :-)
>>>>>>
>>>>>>
>>>>>> This is indeed a big thing!
>>>>>>
>>>>>>
>>>>>> Big thanks!
>>>>>>
>>>>>> Nick
>>>>>>
>>>>>>
>>>>>>
>>>>>>
><https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
>Virus-free.
>>>>>> www.avast.com
>>>>>>
><https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
>>>>>>
><#m_-3014163763068044663_m_-7378692753233440497_m_-4127028168198206277_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
>>>>>>
>>>>>> On Sat, May 28, 2022 at 3:09 PM Trajce Nikolov NICK <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> Okay. Thanks a buch for these  hints! I am starting next week
>with
>>>>>>> this. Will post findings
>>>>>>>
>>>>>>> On Sat, May 28, 2022, 14:44 Werner Modenbach <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> Yes, that is the only (?) way.
>>>>>>>>
>>>>>>>>
>>>>>>>> On 28. Mai 2022 12:23:48 MESZ, Trajce Nikolov NICK <
>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>> Hi!
>>>>>>>>>
>>>>>>>>> I haven't looked at the code yet, just want to clarify one
>thing:
>>>>>>>>> you are providing the meshlets verts uvs normals through 1d
>texture?
>>>>>>>>>
>>>>>>>>> On Wed, May 25, 2022, 12:17 Trajce Nikolov NICK <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> Hi!
>>>>>>>>>>
>>>>>>>>>> Thanks a bunch! Is your code in the repo so I can have a
>look?
>>>>>>>>>>
>>>>>>>>>> On Wed, May 25, 2022, 09:17 Werner Modenbach <
>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi Nick,
>>>>>>>>>>> There is nothing special in the contents of the buffers.
>They are
>>>>>>>>>>> just arrays like vertex array. Special is the definition as
>buffer objects
>>>>>>>>>>> and "overlaying" them with a texture like shown in my code.
>In the shader
>>>>>>>>>>> you have the instance ID and from that you access the
>meshlet info via the
>>>>>>>>>>> 1D texture. Get your operation parameters from there and
>fetch vertices,
>>>>>>>>>>> normals, colors etc. also via the textures.
>>>>>>>>>>> The only difficulty is the size limit of the textures. So
>you
>>>>>>>>>>> eventually have to split the arrays.
>>>>>>>>>>> That's it.
>>>>>>>>>>> Werner
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On 24. Mai 2022 22:59:52 MESZ, Trajce Nikolov NICK <
>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>> Hi,
>>>>>>>>>>>>
>>>>>>>>>>>> I am also researching this subject. Have you succeeded? Any
>>>>>>>>>>>> hints about the meshelts buffer objects? Any other hints?
>>>>>>>>>>>>
>>>>>>>>>>>> Thank you a bunch for any shared info!
>>>>>>>>>>>>
>>>>>>>>>>>> Nick
>>>>>>>>>>>>
>>>>>>>>>>>> On Wed, May 11, 2022 at 5:35 PM DC <
>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Thanks Werner!
>>>>>>>>>>>>> This will certainly help me get started.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Much appreciated,
>>>>>>>>>>>>> DC
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Wednesday, May 11, 2022 at 4:13:08 AM UTC-5 Werner
>Modenbach
>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Hi DC,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> here is the link:
>>>>>>>>>>>>>> https://github.com/nvpro-samples/gl_vk_meshlet_cadscene
>>>>>>>>>>>>>> This should help you with items 1) and 2)
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> For item 3) see my code below.
>>>>>>>>>>>>>> The way I assign the data structures in OSG is like that:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     // ----------------------
>>>>>>>>>>>>>>     // Create Meshlet primitive    //
>----------------------
>>>>>>>>>>>>>>    
>_geode->getOrCreateStateSet()->getOrCreateUniform(TASK_INVOCATIONS_PER_MESHLET,
>osg::Uniform::INT)->set(taskInvocationsPerMeshlet);
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     osg::ref_ptr<osg::Geometry> geometry = new
>osg::Geometry;
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     osg::ref_ptr<osg::ProxyPrimitive> proxyPrimitive =
>new osg::ProxyPrimitive;
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     proxyPrimitive->drawMeshTasks = new
>osg::DrawMeshTasks(0, workgroupsInGeometry *
>taskInvocationsPerMeshlet);
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     geometry->setUseDisplayList(false);
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     geometry->addPrimitiveSet(proxyPrimitive.get());
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     _geode->addChild(geometry);
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     // ----------------------
>>>>>>>>>>>>>>     // Vertices
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     // ----------------------
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     osg::ref_ptr<osg::Vec4Array> osgVertices = new
>osg::Vec4Array(toCopy);
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     for (auto i=0; i<toCopy; ++i) {    // fill array     
>  // Fill buffer
>>>>>>>>>>>>>>     }
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     // Create Buffer and Texture
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     osg::ref_ptr<osg::VertexBufferObject>
>verticesBufferObject = new osg::VertexBufferObject();
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     verticesBufferObject->setUsage(GL_DYNAMIC_READ_ARB);
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>    
>osgVertices->setBufferObject(verticesBufferObject.get());
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     osg::ref_ptr<osg::TextureBuffer> vertexTexture = new
>osg::TextureBuffer(osgVertices.get());
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     vertexTexture->setInternalFormat(GL_RGBA32F_ARB);
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>    
>vertexTexture->setInternalFormatMode(Texture::USE_USER_DEFINED_FORMAT);
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>    
>stateSet->setTextureAttributeAndModes(MESH_VERTEX_ARRAY_TEXTURE_UNIT,
>vertexTexture.get());
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     // ----------------------
>>>>>>>>>>>>>>     // MeshletInfos
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     // ----------------------
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     osg::ref_ptr<Vec4uiArray> MeshletInfosArray = new
>Vec4uiArray(workgroupsInGeometry);
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     int startVertex = 1;
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     int anzahl = _anzahlVertices;
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     for (auto i=0; i<workgroupsInGeometry; ++i) {
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>         (*MeshletInfosArray)[i][0] = startVertex;
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>         (*MeshletInfosArray)[i][1] =
>min(TS_WORKGROUP_SIZE, anzahl);
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>         startVertex += TS_WORKGROUP_STEP;
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>         anzahl -= TS_WORKGROUP_STEP;
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     }
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     // Create Buffer and Texture
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     osg::ref_ptr<osg::VertexBufferObject>
>meshInfosBufferObject = new osg::VertexBufferObject();
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     meshInfosBufferObject->setUsage(GL_DYNAMIC_READ_ARB);
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>    
>MeshletInfosArray->setBufferObject(meshInfosBufferObject.get());
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     osg::ref_ptr<osg::TextureBuffer> meshInfosTexture =
>new osg::TextureBuffer(MeshletInfosArray.get());
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     meshInfosTexture->setInternalFormat(GL_RGBA32UI_EXT);
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>    
>meshInfosTexture->setInternalFormatMode(Texture::USE_USER_DEFINED_FORMAT);
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>    
>stateSet->setTextureAttributeAndModes(MESH_INFOS_ARRAY_TEXTURE_UNIT,
>meshInfosTexture.get());
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>     // ----------------------
>>>>>>>>>>>>>>     // Create and assign the Task- and Mesh shader as
>usual by using the corresponding shader type    //
>----------------------
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Am 10.05.2022 um 21:20 schrieb DC:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> 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
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>> --
>>>>>>>>>>>>> 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/7680959c-297e-41ff-9159-464b38c8df73n%40googlegroups.com
>>>>>>>>>>>>>
><https://groups.google.com/d/msgid/osg-users/7680959c-297e-41ff-9159-464b38c8df73n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>>>>>>>> .
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> trajce nikolov nick
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>> 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/eb4531f5-3420-4c75-be46-539490c5c659%40email.android.com
>>>>>>>>>>>
><https://groups.google.com/d/msgid/osg-users/eb4531f5-3420-4c75-be46-539490c5c659%40email.android.com?utm_medium=email&utm_source=footer>
>>>>>>>>>>> .
>>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>> 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/3fd7dcac-1cec-43d9-ac91-04e22f331bd9%40email.android.com
>>>>>>>>
><https://groups.google.com/d/msgid/osg-users/3fd7dcac-1cec-43d9-ac91-04e22f331bd9%40email.android.com?utm_medium=email&utm_source=footer>
>>>>>>>> .
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>> --
>>>>>> trajce nikolov nick
>>>>>>
>>>>>>
>>>>>>
><https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
>Virus-free.
>>>>>> www.avast.com
>>>>>>
><https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
>>>>>>
><#m_-3014163763068044663_m_-7378692753233440497_m_-4127028168198206277_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> trajce nikolov nick
>>>>>
>>>>> --
>>>> 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/0ab4c82f-1f17-47e9-aa1d-9c02b5a3f7fb%40email.android.com
>>>>
><https://groups.google.com/d/msgid/osg-users/0ab4c82f-1f17-47e9-aa1d-9c02b5a3f7fb%40email.android.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>> --
>> 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/8dcaed4f-0992-482a-abdb-7d30e7f83b5b%40email.android.com
>>
><https://groups.google.com/d/msgid/osg-users/8dcaed4f-0992-482a-abdb-7d30e7f83b5b%40email.android.com?utm_medium=email&utm_source=footer>
>> .
>>
>
>-- 
>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/CAO-%2BzinDGnvr3ayUAT9GP2XqBcZfNX_dn%2B2QDdED4H2CuFrYOQ%40mail.gmail.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/f9c21199-c94b-4c2b-9c10-90f80ce12a57%40email.android.com.

Reply via email to