Hi J-S, I think the python route would be the best actually, most developers will > already have a python installation, and I would expect they would only need > to run the script if they change shaders, otherwise the C++ files would stay > the same. I was thinking of doing something like that myself. Up to you if > you'd rather tackle it. >
I've just implemented this and will commit tomorrow once I've gone through it to make sure I haven't missed anything. 1. Give the VBO technique more testing with a focus on eliminating > artifacts. If the technique is a step forward in performance but it has some > significant artifacts then it will be less likely to be used in production > applications - the performance gains will likely be overlooked. I concur, I'll merge it in over the weekend and see what can be done. 2. Clean up the shader code duplication with an automatic generation scheme. > Again python would be my choice. > 3. Expand on the usage documentation on the wiki, and perhaps include some > documentation in the release tarball/zip as well. Well 2 is done and 3 shouldn't take too long, I'll chip away at it in the evenings. On a separate subject, we promised to have a look at Quintijn Hendrickx's > osgRiver code to see if it would make sense for inclusion into osgOcean. Absolutely, I feel rather bad about this actually. It's a fairly substantial chunk of code and requires a fair amount of thought design wise. I kind of think it might be possible for to exist as a separate library, but with so many shared shader effects it seems silly to duplicate the code. Will definitely address this after this release. K. On 13 October 2010 01:21, Jean-Sébastien Guay < [email protected]> wrote: > Hi Kim, > > Great to know everything is all right. I understand one can get burnt out > on a particular project after a while, you didn't go into specifics and I > totally understand that it may be a delicate subject but I'm glad to see you > back at it once again! :-) > > > So to your changes. The change to the way the shaders are integrated is >> a good approach in fact, the shader integration has troubled me for a >> while. My goal with inlining the shader code was to keep the library as >> compact as possible. However, it soon became a maintenance nightmare - >> people were submitting shader fixes and only editing either the inline >> code or the external files and keeping track of which version was >> correct was becoming very difficult. >> > > I agree 100%. > > > I've already done some work to address this. So what I will do is >> augment your approach with a pre build script which will read the >> external shader files and generate headers which contain the shader code >> that are then included in the build. This should go some way to >> preventing any discrepancies between inline shaders and external >> shaders. I have already written batch scripts to do this in windows, and >> I think I made some progress in writing a similar bash script for linux >> too but I'm not sure whether I finished it. I'll have to have a dig >> around. Thinking about this, more recently I've starting using python as >> my scripting language of choice - I'd be keen to use python to do this >> but I'm not sure how people would feel about the additional build >> dependencies.. do you have any thoughts on this? Simply put it would >> make my life a bit easier since I'm windows based and testing bash >> scripts is a bit of a pain. >> > > I think the python route would be the best actually, most developers will > already have a python installation, and I would expect they would only need > to run the script if they change shaders, otherwise the C++ files would stay > the same. I was thinking of doing something like that myself. Up to you if > you'd rather tackle it. > > Instead of headers I would suggest one or more .cpp file(s) that would > define say const char* osgOcean_water_surface_fragment_source = "..."; and > then the FFTOceanSurface.cpp file would refer to that symbol and it would be > resolved at link time. A header suggests it would be part of some public > interface, which is not the case here. > > > The ocean update callback is also a good approach, although I'll have to >> make sure to document it on the wiki otherwise it'll be missed. >> > > Good point, I was actually also thinking of doing a documentation pass > because I think we're missing a kind of high-level document that explains a > few use cases and what should work (in particular it would be nice to > explain how to use osgOcean with osgShadow). Once again I can do this in the > near future, before we do the next release. > > > Since my last update I have fixed the VBO ocean technique so I'll commit >> that. I was rather disappointed by the performance gain though I noted a >> 10% drop on the draw traversal and a 80% drop in the update but no >> significant change in the frame rate. It also has the side effect of >> creating strange normals on the low resolution tiles. I'm rather dubious >> as to whether I've implemented the VBO update correctly so it would be >> good to see if improvements could be made there. >> > > I'll have a look when you get to committing the changes. The drops are good > (I assume you mean drop in timings, not drop in performance :-) ), and I'm > sure they will be more significant for real apps (in particular the 80% drop > in update time is very welcome as the ocean will be more usable in debug > builds now). > > > I'll make a push to get these committed over the weekend, and will of >> course give your recent commits a thorough testing. Given the amount of >> fixes that have come in since 1.0.1 I think osgocean is due for another >> release so I'll make these changes asap and focus on getting another >> release out. >> > > Great to see we're on the same page. I think before we make a release the > following milestones should be met: > > 1. Give the VBO technique more testing with a focus on eliminating > artifacts. If the technique is a step forward in performance but it has some > significant artifacts then it will be less likely to be used in production > applications - the performance gains will likely be overlooked. > > 2. Clean up the shader code duplication with an automatic generation > scheme. Again python would be my choice. > > 3. Expand on the usage documentation on the wiki, and perhaps include some > documentation in the release tarball/zip as well. > > On a separate subject, we promised to have a look at Quintijn Hendrickx's > osgRiver code to see if it would make sense for inclusion into osgOcean. I > suggest we tackle this after the release, but it might be nice to have a > look at that separately and then have a few back-and-forths to discuss what > we thought. I just don't want to forget about it. I think I'll log an issue > in the issue tracker for that. > > Thanks for getting back in touch, and for helping me push this forward once > again, > > > J-S > -- > ______________________________________________________ > Jean-Sebastien Guay [email protected] > http://www.cm-labs.com/ > http://whitestar02.webhop.org/ > _______________________________________________ > osg-users mailing list > [email protected] > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org >
_______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

