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); }
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(); } }
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(); }
static CachedTexture * _createTexture() { CachedTexture * pTexture = textureCache().addFrameBufferTexture(); _initTexture(pTexture); return pTexture; }
//-------------------------------------------------------------------------------------------- void HSplatting::ChangeTextureFile(int index, std::string str) { bUpdateSplatting[index] = true; strSplattingTex[index].clear(); strSplattingTex[index].insert(0, str); _initTexture(); }
//-------------------------------------------------------------------------------------------- void HSplatting::UpdateTextureFile(int index, LPCTSTR str) { bUpdateSplatting[index] = true; strSplattingTex[index].clear(); strSplattingTex[index].insert(0, str); _initTexture(); }
//-------------------------------------------------------------------------------------------- void HSplatting::UpdateBaseTextureFile(LPCTSTR str) { bUpdateBaseTex = true; strBaseTex.clear(); strBaseTex.insert(0, str); _initTexture(); }
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); }
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; }
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(); } }
//----------------------------------------------------------------------------- // 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(); } }