-
David DeMarle authored
make ospray pass create the scene graph so user doesn't have to move ospray specific controls to ivars on ospraynodes Improve caching Now we cache what we can but not so much that we fail time, or dynamic, or actor hiding. Also prevent double delete on actor hiding and style no special access just for ospray Access to scenegraph view node would probably be OK. make sure we get cell colors right for arbitrary polygons using a reverse index from triangulated (or cylindered or pointed) output cell back to input vtk cell. The output cells are homogenous but the input cells aren't necessarily. quad 0 -> tri 0 : rindex 0 tri 1 : rindex 0 tri 1 -> tri 2 : rindex 0 color 0 -> color 0,1 color 1 -> color 2 flesh out point size and line width controls Now user chosen pointsize and linewidth on mapper matter. Also, user can designate a point aligned array to vary elements individually and user can provide a lookuptable to manipulate those values arbitrarily. In all cases there is an additional scaling control for fine tuning. start to clean up actor to ospray translation just use c++ new and remove embree calls to simplify a single namespace for helpers more logical flow for readability Fix image space transformations Also flesh out the implicits test and remove the related check from render mesh now that it has its own test. Fix some subtle bugs in caching. Moved cache of ospray objects out to composite level. Would be nice to cache indiviual blocks but the way I did it before was broken. In process I found and fixed a bug regarding normals. more cleanup actor to ospray translation and fix line sizing was using wrong index into point value for line size, also changed to use average of values at endpoints instead of first value Also promote large chunks of the conversion process to the scenegraph level because it is reusable. That and cleanup the ospray actor a lot. move light vector out to renderer to allow multiple lights also, just say no to c style casts. toward consistent API for setting ospray specific state The plan is for the scenegraph level to be restricted to read only access to rendering/core state. Since backend specific classes are hard to get a hold of (created late), options for them go into information objects on the core classes. There will be setters/getters on the backend classes though to make it easier to set them in the case where you have access. Fix multiple lights and add a test for lights Make a consistent API for setting options that affect ospray. fine tune lighting lights now obey intensity and switch and color range is closer for positional and directional lights. positional are still much brighter for some reason so I've kludged in a 1/5 factor to make them close. actor colors obey diffuse and specular multipliers now and cell aligned color maps now repect opacity and specularity. not sure if I'll make point aligned colors do the same just yet since not doing so saves space and keeps rgb and val interpolated consistent and doesn't require changes to ospray to make texture materials respect them. The key thing I understand now is that ospray does colors with everything 0..1 except texture maps, which go 0..255. Interesting to note that Ospray images are whiter than GL counterparts when ambient occlusion enabled. SceneGraph is not ready for default on, so take it out of rendering group. Bunch of compiler warnings. The collection iterator remove actor in loop change was important. Don't know yet why implicits don't work on windows, otherwise in pretty good shape as rest of tests pass. cmake find and ospray version include need more work. fix inconsistent background clearing testdynamicobject was wrong before this, as was GL2 and interactive camera motion. First would have nonsensical bckground, second would streak. Remove implicit SCALE hack and add a light Intensity hack. Mapper SCALE is not needed since pointsize and linewidth are doubles not integers in modern paraview. Add a light multiplier, applied to ALL lights, for ParaView because with 6 double sided lights, the default is too bright. guard against actor without mapper and get scalars for multiblock enable block colors and improve implicit colors and sizes We now handle block visibility, opacity and color. Fixed a case of always black implicits for paraview. Added a new control that by default disables implicit scaling. improve caching had some cases where it would not rebuild when it needed to. One was in paraview when changing colormap variable. Confine ospray to a renderer instead of a renderwindow Makes for easier interoperability with GL layers. Fix lighting and multiple layers Now that we are using the lights pass (and we should so that we update camera positions) it exposed a bug where the default created camera was not actually removed from the Renderer's light collection. As a result, ospray renderings added duplicate default lights and the images became washed out. Also, added back in compositing of ospray layers which used to happen and the ospraywindownode level. TODO: add a compositeRGB call to renderwindow to do it nicely. update ospray to only build MPI test when supported Removed the dependence on MPI and replaced it with a conditional. If parallel and MPI are already on then it will include the MPI based ospray tests and the required libs and includes move actor code down to mappers introduce mapperNodes to do the bulk of the work also some cleanup to the updating children code bunch more changes for mapper more mapper related changes fixes and resolve restore some missed features Was a reference leak in parent, use weakpointer to fix Need another mapper override for OpenGL1 HeaderTest fix minor Style //---'s per vtk style guide added back the use ambient color fallback and a handful of other features that were in actornode only after start of move to mappernode Fix scalar colors with multiblock data. Before it would reuse block0's color arrays for block1 and the result would be wrong. Fill in per block and from field data color paths Restore window node, move compositing to pass, cleanup traversal This also implies that you could render without even having opengl. Added a test for the windownode entry point. Moved some of the compositing code into the pass. The idea being that if you are building with OpenGL then you would also build ospraypass. Otherwise you would not. The other classes should not require a OpenGL implementation. Only the pass. Changed the traversal implementation so that each step gets called both before and after its decendents. This is implemented with a prepass argument that is true before the decendents and false after. Removed the YYYSelf() methods. Removed most the ORender methods as they were a tad confusing. Converted some ospray specific subclasses to just implement Render() where before they had ORender. Fixed two bugs in the writelayer compositing code. Remove scenegraph's copies of state Going with direct access to renderable fix scenegraph test miscellaneous fixes Now specifying implicit scaling array by name rather than pointer. Made Mapper:ClearColorArrays() not modify the mapper because it disallows caching and is not necessary. Restored the use ambient when diffuse is not available behavior so that paraview point and cylinder representations look OK. Restores ability to have ospray layers not at layer 0. Re-enabled RenderPass::ClearLights to fix some GL1 tests. Fixed header test.
c5a51d13