Thanks Werner! At least we have started with this :-). Indeed it is a lot to learn
On Tue, Jun 7, 2022 at 3:15 PM Werner Modenbach < [email protected]> wrote: > Hi Nick, > > just converting something to meshlets doesn't make much sense. > The key aspect of meshlets is the optimisation of shader topology and > shaders itself > for optimized usage of existing hardware, paralellism of kernels on the > boards(warps), threading > model on the boards, thread cooperative functions, ultra high performance > of shared memory > and optimizations possible due to free access to any user data. > All this, together with the abilitiy of task and mesh shaders in on board > dynamic generation of mesh shader instances, enables you to do on board > LOD handling, > on boerd culling and much more. Here is the real potential for gaining > performance boosts. > So you have to learn about the hardware and how to use it in an optimal > way. > > Werner > > Am 03.06.2022 um 01:27 schrieb Trajce Nikolov NICK: > > Hi! > > Here is a working code based on the discussion in thus thread. It is just > using meshlets, no performance boost, so we will study it further and if > anyone else has suggestions, all are welcome! It was tested on large paged > terrain. The attached image is a reference. > > Thanks a bunch again! > > On Thu, Jun 2, 2022, 10:51 Trajce Nikolov NICK < > [email protected]> wrote: > >> Hi! I just wanted to clarify this, was expecting it that way. Anyway, >> thank you for the support and the snippets! Couldn't do it that fast >> without your hints! I will soon share the code for others that might be >> interested in. This is what is missing here, a workable use case covering >> at least a bit more.if not all. >> >> Thanks a bunch again! >> Cheers, >> Nick >> >> On Thu, Jun 2, 2022, 10:08 Werner Modenbach < >> [email protected]> wrote: >> >>> Hi Nick, >>> you really have to read the docs of mesh shading. There are NO >>> predefined data structures. No vertices, no colors - just NOTHING! All data >>> has to be packed into arrays and overlayed by textures. >>> Please go ahead yourself now. I cannot hold your hands during the >>> development. Reading docs and studying the existing git repository is >>> mandatory now. >>> Good luck >>> Werner >>> >>> >>> On 2. Juni 2022 08:29:08 MESZ, Trajce Nikolov NICK < >>> [email protected]> wrote: >>>> >>>> Yes, it is tricky. Also want to ask, how you are passing uvs, via >>>> vertex attrs? >>>> >>>> On Wed, Jun 1, 2022, 16:03 Werner Modenbach < >>>> [email protected]> wrote: >>>> >>>>> It took me a year for discovering all the wrong path I took and >>>>> understanding how it works. But it was worth the effort. Performance >>>>> factor >>>>> 10 is my result. >>>>> >>>>> >>>>> On 1. Juni 2022 14:46:43 MESZ, Trajce Nikolov NICK < >>>>> [email protected]> wrote: >>>>>> >>>>>> This is how it looks like. Thanks so much for the hints, it took like >>>>>> 12 hours to get there. Not significant performance boost though. Have to >>>>>> learn more. Thanks again! >>>>>> >>>>>> Nick >>>>>> >>>>>> On Wed, Jun 1, 2022, 14:14 Werner Modenbach < >>>>>> [email protected]> wrote: >>>>>> >>>>>>> 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> >>>>>>>>>>>>> >>>>>>>>>>>>> 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> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> 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/f9c21199-c94b-4c2b-9c10-90f80ce12a57%40email.android.com >>>>>>> <https://groups.google.com/d/msgid/osg-users/f9c21199-c94b-4c2b-9c10-90f80ce12a57%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]> >>>> >>>> -- 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/CAO-%2Bzi%3DFabLcng5WX1fqa7U-JphVindF_iYcCBsxTaFw5Fo6kg%40mail.gmail.com.
