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>
> .
>

-- 
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-%2BzinBuHMoETZK-iyDkxqZuqyZw%2Bdf8gzcsEbR6czjL6aUzQ%40mail.gmail.com.

Reply via email to