Esempio n. 1
0
void CloudLayer::unpackUpdate( NetConnection *conn, BitStream *stream )
{
   Parent::unpackUpdate( conn, stream );

   String oldTextureName = mTextureName;
   stream->read( &mTextureName );

   for ( U32 i = 0; i < TEX_COUNT; i++ )
   {
      stream->read( &mTexScale[i] );      
      stream->read( &mTexSpeed[i] );
      mathRead( *stream, &mTexDirection[i] );
   }

   stream->read( &mBaseColor );

   F32 oldCoverage = mCoverage;
   stream->read( &mCoverage );
   stream->read( &mExposure );

   stream->read( &mWindSpeed );

   F32 oldHeight = mHeight;
   stream->read( &mHeight );

   if ( isProperlyAdded() )
   {
      if ( ( oldTextureName != mTextureName ) || ( ( oldCoverage == 0.0f ) != ( mCoverage == 0.0f ) ) )
         _initTexture();
      if ( oldHeight != mHeight )
         _initBuffers();
   }
}
//------------------------------------------------------------------------------
void OgreVideoTexture::_createTextureFromCapture(CvCapture *_capture)
{

    int w, h;
    w = cvGetCaptureProperty(_capture, CV_CAP_PROP_FRAME_WIDTH);
    h = cvGetCaptureProperty(_capture, CV_CAP_PROP_FRAME_HEIGHT);

    Ogre::TextureManager *TM = Ogre::TextureManager::getSingletonPtr();

    // Create the texture
    mVideoTexture = Ogre::TextureManager::getSingleton().createManual(
        mTextureName, // name
        Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME,
        Ogre::TEX_TYPE_2D,      // type
        1024, 1024,         // width & height
        0,                // number of mipmaps
        Ogre::PF_BYTE_BGR,
        Ogre::TU_DYNAMIC_WRITE_ONLY_DISCARDABLE);

    _initTexture(mVideoTexture);

    // Create a material using the texture
    mVideoMaterial = Ogre::MaterialManager::getSingleton().create(
        mMaterialName, // name
        Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);

    mVideoMaterial->getTechnique(0)->getPass(0)->createTextureUnitState(mTextureName);
    //mVideoMaterial->getTechnique(0)->getPass(0)->setSceneBlending(Ogre::SBT_TRANSPARENT_ALPHA);

}
Esempio n. 3
0
void BasicClouds::unpackUpdate( NetConnection *conn, BitStream *stream )
{
   Parent::unpackUpdate( conn, stream );

   for ( U32 i = 0; i < TEX_COUNT; i++ )
   {
      mLayerEnabled[i] = stream->readFlag();

      stream->read( &mTexName[i] );
      
      stream->read( &mTexScale[i] );      
      mathRead( *stream, &mTexDirection[i] );
      stream->read( &mTexSpeed[i] );
      mathRead( *stream, &mTexOffset[i] );

      stream->read( &mHeight[i] );
   }

   if ( isProperlyAdded() )
   {
      // We could check if the height or texture have actually changed.
      _initBuffers();
      _initTexture();
   }
}
Esempio n. 4
0
bool CloudLayer::onAdd()
{
   if ( !Parent::onAdd() )
      return false;

   setGlobalBounds();
   resetWorldBox();

   addToScene();

   if ( isClientObject() )
   {
      _initTexture();
      _initBuffers();

      // Find ShaderData
      ShaderData *shaderData;
      mShader = Sim::findObject( "CloudLayerShader", shaderData ) ? 
                  shaderData->getShader() : NULL;
      if ( !mShader )
      {
         Con::errorf( "CloudLayer::onAdd - could not find CloudLayerShader" );
         return false;
      }

      // Create ShaderConstBuffer and Handles
      mShaderConsts = mShader->allocConstBuffer();
      mModelViewProjSC = mShader->getShaderConstHandle( "$modelView" );
      mEyePosWorldSC = mShader->getShaderConstHandle( "$eyePosWorld" );
      mSunVecSC = mShader->getShaderConstHandle( "$sunVec" );
      mTexOffsetSC[0] = mShader->getShaderConstHandle( "$texOffset0" );
      mTexOffsetSC[1] = mShader->getShaderConstHandle( "$texOffset1" );
      mTexOffsetSC[2] = mShader->getShaderConstHandle( "$texOffset2" );
      mTexScaleSC = mShader->getShaderConstHandle( "$texScale" );
      mAmbientColorSC = mShader->getShaderConstHandle( "$ambientColor" );
      mSunColorSC = mShader->getShaderConstHandle( "$sunColor" );
      mCoverageSC = mShader->getShaderConstHandle( "$cloudCoverage" );
      mExposureSC = mShader->getShaderConstHandle( "$cloudExposure" );
      mBaseColorSC = mShader->getShaderConstHandle( "$cloudBaseColor" );
      mNormalHeightMapSC = mShader->getShaderConstHandle( "$normalHeightMap" );

      // Create StateBlocks
      GFXStateBlockDesc desc;
      desc.setCullMode( GFXCullNone );
      desc.setBlend( true );
      desc.setZReadWrite( false, false );
      desc.samplersDefined = true;
      desc.samplers[0].addressModeU = GFXAddressWrap;
      desc.samplers[0].addressModeV = GFXAddressWrap;
      desc.samplers[0].addressModeW = GFXAddressWrap;
      desc.samplers[0].magFilter = GFXTextureFilterLinear;
      desc.samplers[0].minFilter = GFXTextureFilterLinear;
      desc.samplers[0].mipFilter = GFXTextureFilterLinear;
      desc.samplers[0].textureColorOp = GFXTOPModulate;

      mStateblock = GFX->createStateBlock( desc );   
   }

   return true;
}
void CompressorReadDrawPixels::download( const GLEWContext* glewContext,
                                         const eq_uint64_t  inDims[4],
                                         const unsigned     source,
                                         const eq_uint64_t  flags,
                                               eq_uint64_t  outDims[4],
                                         void**             out )
{
    _init( inDims, outDims );

    if( flags & EQ_COMPRESSOR_USE_FRAMEBUFFER )
    {
        EQ_GL_CALL( glReadPixels( inDims[0], inDims[2], inDims[1], inDims[3], 
                      _format, _type, _buffer.getData() ) );
    }
    else 
    {
        _initTexture( glewContext, flags );
        _texture->setGLData( source, _internalFormat, inDims[1], inDims[3] );
        _texture->setExternalFormat( _format, _type );
        _texture->download( _buffer.getData( ));
        _texture->flushNoDelete();
    }

    *out = _buffer.getData();
}
Esempio n. 6
0
static
CachedTexture * _createTexture()
{
	CachedTexture * pTexture = textureCache().addFrameBufferTexture();
	_initTexture(pTexture);
	return pTexture;
}
Esempio n. 7
0
//--------------------------------------------------------------------------------------------
void HSplatting::ChangeTextureFile(int index, std::string str)
{
	bUpdateSplatting[index] = true;
	strSplattingTex[index].clear();
	strSplattingTex[index].insert(0, str);
	_initTexture();
}
Esempio n. 8
0
//--------------------------------------------------------------------------------------------
void HSplatting::UpdateTextureFile(int index, LPCTSTR str)
{
	bUpdateSplatting[index] = true;
	strSplattingTex[index].clear();
	strSplattingTex[index].insert(0, str);
	_initTexture();
}
Esempio n. 9
0
//--------------------------------------------------------------------------------------------
void HSplatting::UpdateBaseTextureFile(LPCTSTR str)
{
	bUpdateBaseTex = true;
	strBaseTex.clear();
	strBaseTex.insert(0, str);
	
	_initTexture();
}
Esempio n. 10
0
void PostProcessor::_initCommon()
{
	m_pResultBuffer = new FrameBuffer();
	_initTexture(m_pResultBuffer->m_pTexture);
	_initFBO(m_pResultBuffer->m_FBO, m_pResultBuffer->m_pTexture);

	glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
}
Esempio n. 11
0
bool BasicClouds::onAdd()
{
   if ( !Parent::onAdd() )
      return false;

   setGlobalBounds();
   resetWorldBox();

   addToScene();

   if ( isClientObject() )
   {
      _initTexture();
      _initBuffers();

      // Find ShaderData
      ShaderData *shaderData;
      mShader = Sim::findObject( "BasicCloudsShader", shaderData ) ? shaderData->getShader() : NULL;
      if ( !mShader )
      {
         Con::errorf( "BasicClouds::onAdd - could not find BasicCloudsShader" );
         return false;
      }

      // Create ShaderConstBuffer and Handles
      mShaderConsts = mShader->allocConstBuffer();
      mModelViewProjSC = mShader->getShaderConstHandle( "$modelView" );
      mTimeSC = mShader->getShaderConstHandle( "$accumTime" );
      mTexScaleSC = mShader->getShaderConstHandle( "$texScale" );
      mTexDirectionSC = mShader->getShaderConstHandle( "$texDirection" );
      mTexOffsetSC = mShader->getShaderConstHandle( "$texOffset" );
      mDiffuseMapSC = mShader->getShaderConstHandle( "$diffuseMap" );

      // Create StateBlocks
      GFXStateBlockDesc desc;
      desc.setCullMode( GFXCullNone );
      desc.setBlend( true );
      desc.setZReadWrite( false, false );
      desc.samplersDefined = true;
      desc.samplers[0].addressModeU = GFXAddressWrap;
      desc.samplers[0].addressModeV = GFXAddressWrap;
      desc.samplers[0].addressModeW = GFXAddressWrap;
      desc.samplers[0].magFilter = GFXTextureFilterLinear;
      desc.samplers[0].minFilter = GFXTextureFilterLinear;
      desc.samplers[0].mipFilter = GFXTextureFilterLinear;
      desc.samplers[0].textureColorOp = GFXTOPModulate;
      
      mStateblock = GFX->createStateBlock( desc );      
   }

   return true;
}
Esempio n. 12
0
void PostProcessor::_initCommon()
{
	if (config.video.multisampling != 0) {
		m_pTextureResolved = _createTexture();
		m_FBO_resolved = _createFBO(m_pTextureResolved);
	}

	m_pResultBuffer = new FrameBuffer();
	_initTexture(m_pResultBuffer->m_pTexture);
	_initFBO(m_pResultBuffer->m_FBO, m_pResultBuffer->m_pTexture);

	glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
}
void CompressorReadDrawPixels::startDownload( const GLEWContext* glewContext,
                                              const eq_uint64_t dims[4],
                                              const unsigned source,
                                              const eq_uint64_t flags )
{
    const eq_uint64_t size = dims[1] * dims[3] * _depth;

    if( flags & EQ_COMPRESSOR_USE_FRAMEBUFFER )
    {
#ifdef EQ_ASYNC_PBO
        if( _initPBO( glewContext, size ))
        {
            EQ_GL_CALL( glReadPixels( dims[0], dims[2], dims[1], dims[3],
                                      _format, _type, 0 ));
            _pbo->unbind();
            glFlush(); // Fixes https://github.com/Eyescale/Equalizer/issues/118
            return;
        }
#else  // async RB through texture
        const PixelViewport pvp( dims[0], dims[2], dims[1], dims[3] );
        _initAsyncTexture( glewContext, pvp.w, pvp.h );
        _asyncTexture->setExternalFormat( _format, _type );
        _asyncTexture->copyFromFrameBuffer( _internalFormat, pvp );
        return;
#endif
        // else

        LBWARN << "Can't initialize PBO for async readback" << std::endl;
        _resizeBuffer( size );
        EQ_GL_CALL( glReadPixels( dims[0], dims[2], dims[1], dims[3],
                                  _format, _type, _buffer.getData( )));
    }
    else
    {
        // TODO: fix Texture class for async texture download
        _resizeBuffer( size );
        _initTexture( glewContext, flags );
        _texture->setGLData( source, _internalFormat, dims[1], dims[3] );
        _texture->setExternalFormat( _format, _type );
        _texture->download( _buffer.getData( ));
        _texture->flushNoDelete();
    }
}
Esempio n. 14
0
//-----------------------------------------------------------------------------
// Load the terrain textures
//-----------------------------------------------------------------------------
bool HSplatting::LoadTextures() 
{
	//현재 프로그램 실행되고 있는 실행파일 얻기
	char strFilePath[MAX_PATH];
	::GetModuleFileName(NULL, strFilePath, MAX_PATH);

	//실행파일에서 폴더path경로 추출
	boost::filesystem::path path(strFilePath);
	std::string strFolderPath = path.parent_path().string();  

	bUpdateBaseTex = true;
	strBaseTex.clear();
	strBaseTex.insert(0, strFolderPath + "\\..\\..\\Data\\textures\\연두색풀.jpg");
	

	bUpdateSplatting[0] = true;
	strSplattingTex[0].clear();
	strSplattingTex[0].insert(0, strFolderPath + "\\..\\..\\Data\\textures\\02_basic_grass.jpg");

	bUpdateSplatting[1] = true;
	strSplattingTex[1].clear();
	strSplattingTex[1].insert(0, strFolderPath + "\\..\\..\\Data\\textures\\03_basic_send.jpg");
	

	bUpdateSplatting[2] = true;
	strSplattingTex[2].clear();
	strSplattingTex[2].insert(0, strFolderPath + "\\..\\..\\Data\\textures\\04_basic_volcano.jpg");
	

	bUpdateSplatting[3] = true;
	strSplattingTex[3].clear();
	strSplattingTex[3].insert(0, strFolderPath + "\\..\\..\\Data\\textures\\05_basic_rock.png");
	

	_initTexture();


	CreateAlphaMaps();

	return true;
}
void CompressorReadDrawPixels::upload( const GLEWContext* glewContext, 
                                       const void*        buffer,
                                       const eq_uint64_t  inDims[4],
                                       const eq_uint64_t  flags,
                                       const eq_uint64_t  outDims[4],  
                                       const unsigned     destination )
{
    if( flags & EQ_COMPRESSOR_USE_FRAMEBUFFER )
    {
        glRasterPos2i( outDims[0], outDims[2] );
        glDrawPixels( outDims[1], outDims[3], _format, _type, buffer );
    }
    else
    {
        LBASSERT( outDims[0] == 0 && outDims[2]==0 ); // Implement me
        _initTexture( glewContext, flags );
        _texture->setGLData( destination, _internalFormat,
                             outDims[1], outDims[3] );
        _texture->setExternalFormat( _format, _type );
        _texture->upload( outDims[1], outDims[3], buffer );
        _texture->flushNoDelete();
    }
}