DashRenderNodes requestData() { livre::Node* node = static_cast< livre::Node* >( _channel->getNode( )); livre::Window* window = static_cast< livre::Window* >( _channel->getWindow( )); livre::Pipe* pipe = static_cast< livre::Pipe* >( window->getPipe( )); ConstVolumeRendererParametersPtr vrParams = pipe->getFrameData()->getVRParameters(); const uint32_t minLOD = vrParams->getMinLOD(); const uint32_t maxLOD = vrParams->getMaxLOD(); const float screenSpaceError = vrParams->getSSE(); DashTreePtr dashTree = node->getDashTree(); const VolumeInformation& volInfo = dashTree->getDataSource()->getVolumeInformation(); const float worldSpacePerVoxel = volInfo.worldSpacePerVoxel; const uint32_t volumeDepth = volInfo.rootNode.getDepth(); _drawRange = _channel->getRange(); SelectVisibles visitor( dashTree, _currentFrustum, _channel->getPixelViewport().h, screenSpaceError, worldSpacePerVoxel, volumeDepth, minLOD, maxLOD, Range{{ _drawRange.start, _drawRange.end }}); livre::DFSTraversal traverser; traverser.traverse( volInfo.rootNode, visitor, dashTree->getRenderStatus().getFrameID( )); window->commit(); return visitor.getVisibles(); }
void requestData() { Viewporti pixelViewport; const eq::PixelViewport& channelPvp = _channel->getPixelViewport(); pixelViewport.set( Vector2f( channelPvp.x, channelPvp.y ), Vector2f( channelPvp.w, channelPvp.h )); livre::Node* node = static_cast< livre::Node* >( _channel->getNode( )); livre::Window* window = static_cast< livre::Window* >( _channel->getWindow( )); livre::Pipe* pipe = static_cast< livre::Pipe* >( window->getPipe( )); ConstVolumeRendererParametersPtr vrParams = pipe->getFrameData()->getVRParameters(); const uint32_t minLOD = vrParams->minLOD; const uint32_t maxLOD = vrParams->maxLOD; const float screenSpaceError = vrParams->screenSpaceError; DashTreePtr dashTree = node->getDashTree(); const VolumeInformation& volInfo = dashTree->getDataSource()->getVolumeInformation(); const float worldSpacePerVoxel = volInfo.worldSpacePerVoxel; const uint32_t volumeDepth = volInfo.rootNode.getDepth(); SelectVisibles visitor( dashTree, _currentFrustum, pixelViewport.getHeight( ), screenSpaceError, worldSpacePerVoxel, volumeDepth, minLOD, maxLOD ); livre::DFSTraversal traverser; traverser.traverse( volInfo.rootNode, visitor, dashTree->getRenderStatus().getFrameID( )); window->commit(); window->apply(); }
TextureUploadProcessor::TextureUploadProcessor( DashTreePtr dashTree, GLContextPtr shareContext, GLContextPtr context, ConstVolumeRendererParametersPtr vrParameters ) : GLContextTrait( context ) , _dashTree( dashTree ) , _shareContext( shareContext ) , _textureCache( GL_LUMINANCE8 ) , _currentFrameID( 0 ) , _threadOp( TO_NONE ) , _vrParameters( vrParameters ) , _allDataLoaded( false ) , _needRedraw( false ) { setDashContext( dashTree->createContext()); }