Beispiel #1
0
    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();
    }
Beispiel #2
0
    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());
}