本文整理汇总了C++中ogre::GpuProgramParametersSharedPtr类的典型用法代码示例。如果您正苦于以下问题:C++ GpuProgramParametersSharedPtr类的具体用法?C++ GpuProgramParametersSharedPtr怎么用?C++ GpuProgramParametersSharedPtr使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了GpuProgramParametersSharedPtr类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: notifyMaterialSetup
//---------------------------------------------------------------------------
void GaussianListener::notifyMaterialSetup(Ogre::uint32 pass_id, Ogre::MaterialPtr &mat)
{
// Prepare the fragment params offsets
switch(pass_id)
{
case 701: // blur horz
{
// horizontal bloom
mat->load();
Ogre::GpuProgramParametersSharedPtr fparams =
mat->getBestTechnique()->getPass(0)->getFragmentProgramParameters();
fparams->setNamedConstant("sampleOffsets", mBloomTexOffsetsHorz[0], 15);
fparams->setNamedConstant("sampleWeights", mBloomTexWeights[0], 15);
break;
}
case 700: // blur vert
{
// vertical bloom
mat->load();
Ogre::GpuProgramParametersSharedPtr fparams =
mat->getTechnique(0)->getPass(0)->getFragmentProgramParameters();
fparams->setNamedConstant("sampleOffsets", mBloomTexOffsetsVert[0], 15);
fparams->setNamedConstant("sampleWeights", mBloomTexWeights[0], 15);
break;
}
}
}
开发者ID:mhdsedighi,项目名称:SOFA,代码行数:30,代码来源:HelperLogics.cpp
示例2: subEntityAction
//===========================================================================
// MaterialSetShader
//===========================================================================
void MaterialSetShader::subEntityAction( SubEntityMaterial* subEntity ) const
{
Pass * pass = getFirstPassOfFirstTechnique( subEntity ) ;
pass->setLightingEnabled( _light );
if ( "null" != _texture )
{
pass->createTextureUnitState( _texture );
//TextureUnitState *texState = pass->createTextureUnitState( texture ) ;
//texState->setTextureScroll( 0.f, 0.f ) ;
//texState->setColourOperation( Ogre::LBO_MODULATE ) ;
//texState->setTextureAddressingMode(TextureUnitState::TAM_CLAMP);
}
if ( "null" != _fragment)
{ //fragment Program
pass->setFragmentProgram( _fragment );
//copy params passed
Ogre::GpuProgramParametersSharedPtr fragmentParams = pass->getFragmentProgramParameters() ;
fragmentParams->copyConstantsFrom( *_fragmentPrm ) ;
}
if ( "null" != _vertex)
{ //vertex Program
pass->setVertexProgram( _vertex );
//copy params passed
Ogre::GpuProgramParametersSharedPtr vertexParams = pass->getVertexProgramParameters() ;
vertexParams->copyConstantsFrom( *_vertexPrm ) ;
}
pass->_load() ;
}
开发者ID:Akanoa,项目名称:PRI,代码行数:34,代码来源:ovkMaterialAction.cpp
示例3: setChangeWorldFactor
void RenderComponentBillboardSet::setChangeWorldFactor(double factor)
{
Ogre::Technique * technique;
Ogre::GpuProgramParametersSharedPtr params;
Ogre::Pass * pass;
Ogre::MaterialPtr material = Ogre::MaterialManager::getSingleton().getByName(mChangeWorldMaterial);
if(material.get())
{
technique= material->getTechnique(0);
if(technique)
{
if(technique->getNumPasses()>0)
{
pass=technique->getPass(0);
if(pass->hasFragmentProgram())
{
params=pass->getFragmentProgramParameters();
if(params.get())
{
params->setNamedConstant("mix_factor",Ogre::Real(factor));
}
}
}
}
}
}
开发者ID:juanjmostazo,项目名称:once-upon-a-night,代码行数:29,代码来源:RenderComponentBillboardSet.cpp
示例4: notifyMaterialRender
void DepthOfFieldListener::notifyMaterialRender(Ogre::uint32 pass_id, Ogre::MaterialPtr &mat)
{
if(pass_id == 2)
{
float blurScale =.5f;
Ogre::Vector4 pixelSize(1.0f / mViewportWidth, 1.0f / mViewportHeight,1.0f / (mViewportWidth * blurScale), 1.0f / (mViewportHeight * blurScale) );
Ogre::Pass *pass = mat->getBestTechnique()->getPass(0);
Ogre::GpuProgramParametersSharedPtr params = pass->getFragmentProgramParameters();
if (params->_findNamedConstantDefinition("pixelSize"))
params->setNamedConstant("pixelSize", pixelSize);
// this is the camera you're using
#ifndef ROAD_EDITOR
Ogre::Camera *cam = mApp->mSplitMgr->mCameras.front();
#else
Ogre::Camera *cam = mApp->mCamera;
#endif
if (params->_findNamedConstantDefinition("dofparams"))
{
Ogre::Vector4 dofParams(0.0f,mApp->pSet->depthOfFieldFocus,mApp->pSet->depthOfFieldFar,1.0);
params->setNamedConstant("dofparams", dofParams);
}
}
}
开发者ID:sureandrew,项目名称:stuntrally,代码行数:27,代码来源:Compositor.cpp
示例5: setUpBaseParameters
void setUpBaseParameters(const Ogre::GpuProgramParametersSharedPtr& params)
{
assert(params.isNull()==false);
struct AutoParamPair { Ogre::String name; Ogre::GpuProgramParameters::AutoConstantType type; };
//A list of auto params that might be present in the shaders generated
static const AutoParamPair AUTO_PARAMS[] = {
{ "vpWidth", Ogre::GpuProgramParameters::ACT_VIEWPORT_WIDTH },
{ "vpHeight", Ogre::GpuProgramParameters::ACT_VIEWPORT_HEIGHT },
{ "worldView", Ogre::GpuProgramParameters::ACT_WORLDVIEW_MATRIX },
{ "invProj", Ogre::GpuProgramParameters::ACT_INVERSE_PROJECTION_MATRIX },
{ "invView", Ogre::GpuProgramParameters::ACT_INVERSE_VIEW_MATRIX },
{ "flip", Ogre::GpuProgramParameters::ACT_RENDER_TARGET_FLIPPING },
{ "lightDiffuseColor", Ogre::GpuProgramParameters::ACT_LIGHT_DIFFUSE_COLOUR },
{ "lightSpecularColor", Ogre::GpuProgramParameters::ACT_LIGHT_SPECULAR_COLOUR },
{ "lightFalloff", Ogre::GpuProgramParameters::ACT_LIGHT_ATTENUATION },
{ "lightPos", Ogre::GpuProgramParameters::ACT_LIGHT_POSITION_VIEW_SPACE },
{ "lightDir", Ogre::GpuProgramParameters::ACT_LIGHT_DIRECTION_VIEW_SPACE },
{ "spotParams", Ogre::GpuProgramParameters::ACT_SPOTLIGHT_PARAMS },
{ "farClipDistance", Ogre::GpuProgramParameters::ACT_FAR_CLIP_DISTANCE },
{ "shadowViewProjMat", Ogre::GpuProgramParameters::ACT_TEXTURE_VIEWPROJ_MATRIX }
};
int numParams = sizeof(AUTO_PARAMS) / sizeof(AutoParamPair);
for (int i=0; i<numParams; i++)
{
if (params->_findNamedConstantDefinition(AUTO_PARAMS[i].name))
{
params->setNamedAutoConstant(AUTO_PARAMS[i].name, AUTO_PARAMS[i].type);
}
}
}
开发者ID:zhouxs1023,项目名称:Editor,代码行数:33,代码来源:LightMaterialGenerator.cpp
示例6: setGpuProgramParameter
void GPUManager::setGpuProgramParameter(const GpuProgram &GpuP, const Ogre::String &Name, const int &Value, const bool& UpdateGroundPasses)
{
if (!mSkyX->getMeshManager()->isCreated())
{
return;
}
Ogre::GpuProgramParametersSharedPtr Parameters;
switch (GpuP)
{
case GPUP_VERTEX:
{
Parameters = mSkydomeMaterial->getTechnique(0)->getPass(0)->getVertexProgramParameters();
}
break;
case GPUP_FRAGMENT:
{
Parameters = mSkydomeMaterial->getTechnique(0)->getPass(0)->getFragmentProgramParameters();
}
break;
}
Parameters->setNamedConstant(Name, Value);
if (!UpdateGroundPasses)
{
return;
}
std::vector<Ogre::Pass*>::iterator PassIt;
for(PassIt = mGroundPasses.begin(); PassIt != mGroundPasses.end(); PassIt++)
{
if (!(*PassIt))
{
mGroundPasses.erase(PassIt);
continue;
}
switch (GpuP)
{
case GPUP_VERTEX:
{
Parameters = (*PassIt)->getVertexProgramParameters();
}
break;
case GPUP_FRAGMENT:
{
Parameters = (*PassIt)->getFragmentProgramParameters();
}
break;
}
Parameters->setNamedConstant(Name, Value);
}
}
开发者ID:rrfvtgb,项目名称:Suncrafters,代码行数:59,代码来源:GPUManager.cpp
示例7: updateSkyFogging
void GroundFog::updateSkyFogging() {
Ogre::GpuProgramParametersSharedPtr params =
mDomeMaterial->getBestTechnique()->getPass(0)->getFragmentProgramParameters();
params->setNamedConstant("fogDensity", getDensity());
params->setNamedConstant("fogColour", getColour());
params->setNamedConstant("fogVerticalDecay", getVerticalDecay());
params->setNamedConstant("fogGroundLevel", getGroundLevel());
}
开发者ID:ghoulsblade,项目名称:vegaogre,代码行数:8,代码来源:GroundFog.cpp
示例8: setColour
void GroundFog::setColour (const Ogre::ColourValue &colour) {
for (PassSet::iterator it = mPasses.begin(); it != mPasses.end(); ++it) {
Ogre::GpuProgramParametersSharedPtr params = (*it)->getFragmentProgramParameters();
params->setNamedConstant("fogColour", colour);
}
mFogColour = colour;
updateSkyFogging();
}
开发者ID:ghoulsblade,项目名称:vegaogre,代码行数:8,代码来源:GroundFog.cpp
示例9: notifyCameraChanged
void GroundFog::notifyCameraChanged (Ogre::Camera *cam)
{
CameraBoundElement::notifyCameraChanged (cam);
// Send camera height to shader.
Ogre::GpuProgramParametersSharedPtr params =
mDomeMaterial->getBestTechnique()->getPass(0)->getFragmentProgramParameters();
params->setNamedConstant("cameraHeight", cam->getDerivedPosition().dotProduct(mDomeNode->_getDerivedOrientation() * Ogre::Vector3::UNIT_Y));
}
开发者ID:ghoulsblade,项目名称:vegaogre,代码行数:9,代码来源:GroundFog.cpp
示例10: forceUpdate
void GroundFog::forceUpdate () {
for (PassSet::iterator it = mPasses.begin(); it != mPasses.end(); ++it) {
Ogre::GpuProgramParametersSharedPtr params = (*it)->getFragmentProgramParameters();
params->setNamedConstant("fogDensity", mDensity);
params->setNamedConstant("fogVerticalDecay", mVerticalDecay);
params->setNamedConstant("fogGroundLevel", mGroundLevel);
params->setNamedConstant("fogColour", mFogColour);
}
updateSkyFogging();
}
开发者ID:ghoulsblade,项目名称:vegaogre,代码行数:10,代码来源:GroundFog.cpp
示例11: setTextureUnitIndex
void OgrePass::setTextureUnitIndex (int programType, const std::string& name, int index)
{
Ogre::GpuProgramParametersSharedPtr params;
if (programType == GPT_Vertex)
params = mPass->getVertexProgramParameters();
else if (programType == GPT_Fragment)
params = mPass->getFragmentProgramParameters();
params->setNamedConstant(name, index);
}
开发者ID:FranciscoPinto,项目名称:openmw,代码行数:10,代码来源:OgrePass.cpp
示例12: setVerticalDecay
void GroundFog::setVerticalDecay (Ogre::Real verticalDecay) {
if (Ogre::Math::Abs(mVerticalDecay - verticalDecay) > 0.000001) {
for (PassSet::iterator it = mPasses.begin(); it != mPasses.end(); ++it) {
Ogre::GpuProgramParametersSharedPtr params = (*it)->getFragmentProgramParameters();
params->setNamedConstant("fogVerticalDecay", verticalDecay);
}
mVerticalDecay = verticalDecay;
}
updateSkyFogging();
}
开发者ID:ghoulsblade,项目名称:vegaogre,代码行数:10,代码来源:GroundFog.cpp
示例13: setGroundLevel
void GroundFog::setGroundLevel (Ogre::Real groundLevel) {
if (Ogre::Math::Abs(mGroundLevel - groundLevel) > 0.000001) {
for (PassSet::iterator it = mPasses.begin(); it != mPasses.end(); ++it) {
Ogre::GpuProgramParametersSharedPtr params = (*it)->getFragmentProgramParameters();
params->setNamedConstant("fogGroundLevel", groundLevel);
}
mGroundLevel = groundLevel;
}
updateSkyFogging();
}
开发者ID:ghoulsblade,项目名称:vegaogre,代码行数:10,代码来源:GroundFog.cpp
示例14: addSharedParameter
void OgrePass::addSharedParameter (int type, const std::string& name)
{
Ogre::GpuProgramParametersSharedPtr params;
if (type == GPT_Vertex)
params = mPass->getVertexProgramParameters();
else if (type == GPT_Fragment)
params = mPass->getFragmentProgramParameters();
params->addSharedParameters (name);
}
开发者ID:FranciscoPinto,项目名称:openmw,代码行数:10,代码来源:OgrePass.cpp
示例15: setDensity
void GroundFog::setDensity (Ogre::Real density) {
if (Ogre::Math::Abs(mDensity - density) > 0.000001) {
for (PassSet::iterator it = mPasses.begin(); it != mPasses.end(); ++it) {
Ogre::GpuProgramParametersSharedPtr params = (*it)->getFragmentProgramParameters();
params->setNamedConstant("fogDensity", density);
}
mDensity = density;
}
updateSkyFogging();
}
开发者ID:ghoulsblade,项目名称:vegaogre,代码行数:10,代码来源:GroundFog.cpp
示例16: updateFromCamera
void DeferredLight::updateFromCamera(Ogre::Camera* camera)
{
const Ogre::MaterialPtr& mat = getMaterial();
if (!mat->isLoaded())
{
mat->load();
}
Ogre::Technique* tech = mat->getBestTechnique();
Ogre::Vector3 farCorner = camera->getViewMatrix(true) * camera->getWorldSpaceCorners()[4];
for (unsigned short i=0; i<tech->getNumPasses(); i++)
{
Ogre::Pass* pass = tech->getPass(i);
Ogre::GpuProgramParametersSharedPtr params = pass->getVertexProgramParameters();
if (params->_findNamedConstantDefinition("farCorner"))
params->setNamedConstant("farCorner", farCorner);
params = pass->getFragmentProgramParameters();
if (params->_findNamedConstantDefinition("farCorner"))
params->setNamedConstant("farCorner", farCorner);
// If inside light geometry, render back faces with CMPF_GREATER, otherwise normally
if (mParentLight->getType() == Ogre::Light::LT_DIRECTIONAL)
{
pass->setCullingMode(Ogre::CULL_CLOCKWISE);
pass->setDepthCheckEnabled(false);
}
else
{
pass->setDepthCheckEnabled(true);
if (isCameraInsideLight(camera))
{
pass->setCullingMode(Ogre::CULL_ANTICLOCKWISE);
pass->setDepthFunction(Ogre::CMPF_GREATER_EQUAL);
}
else
{
pass->setCullingMode(Ogre::CULL_CLOCKWISE);
pass->setDepthFunction(Ogre::CMPF_LESS_EQUAL);
}
}
Ogre::Camera shadowCam("ShadowCameraSetupCam", 0);
shadowCam._notifyViewport(camera->getViewport());
Ogre::SceneManager* sm = mParentLight->_getManager();
sm->getShadowCameraSetup()->getShadowCamera(sm,
camera, camera->getViewport(), mParentLight, &shadowCam, 0);
//Get the shadow camera position
if (params->_findNamedConstantDefinition("shadowCamPos"))
{
params->setNamedConstant("shadowCamPos", shadowCam.getPosition());
}
if (params->_findNamedConstantDefinition("shadowFarClip"))
{
params->setNamedConstant("shadowFarClip", shadowCam.getFarClipDistance());
}
}
}
开发者ID:arbonagw,项目名称:Soyouz,代码行数:60,代码来源:deferredlight.cpp
示例17: GpuProgramPtr
virtual Ogre::GpuProgramPtr generateFragmentShader(Perm permutation)
{
/// Create shader
if (mMasterSource.empty())
{
Ogre::DataStreamPtr ptrMasterSource;
if(Ogre::GpuProgramManager::getSingleton().isSyntaxSupported("glsles"))
ptrMasterSource = Ogre::ResourceGroupManager::getSingleton().openResource("DeferredShading/post/LightMaterial_ps.glsles",
Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);
else
ptrMasterSource = Ogre::ResourceGroupManager::getSingleton().openResource("DeferredShading/post/LightMaterial_ps.glsl",
Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);
assert(ptrMasterSource.isNull()==false);
mMasterSource = ptrMasterSource->getAsString();
}
assert(mMasterSource.empty()==false);
// Create name
Ogre::String name = mBaseName+Ogre::StringConverter::toString(permutation)+"_ps";
// Create shader object
Ogre::HighLevelGpuProgramPtr ptrProgram;
if(Ogre::GpuProgramManager::getSingleton().isSyntaxSupported("glsles"))
{
ptrProgram = Ogre::HighLevelGpuProgramManager::getSingleton().createProgram(name, Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME,
"glsles", Ogre::GPT_FRAGMENT_PROGRAM);
ptrProgram->setParameter("profiles", "glsles");
}
else
{
ptrProgram = Ogre::HighLevelGpuProgramManager::getSingleton().createProgram(name, Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME,
"glsl", Ogre::GPT_FRAGMENT_PROGRAM);
ptrProgram->setParameter("profiles", "glsl150");
}
ptrProgram->setSource(mMasterSource);
// set up the preprocessor defines
// Important to do this before any call to get parameters, i.e. before the program gets loaded
ptrProgram->setParameter("preprocessor_defines", getPPDefines(permutation));
setUpBaseParameters(ptrProgram->getDefaultParameters());
// Bind samplers
Ogre::GpuProgramParametersSharedPtr params = ptrProgram->getDefaultParameters();
int numSamplers = 0;
params->setNamedConstant("Tex0", (int)numSamplers++);
params->setNamedConstant("Tex1", (int)numSamplers++);
if(permutation & LightMaterialGenerator::MI_SHADOW_CASTER)
params->setNamedConstant("ShadowTex", (int)numSamplers++);
return Ogre::GpuProgramPtr(ptrProgram);
}
开发者ID:zhouxs1023,项目名称:Editor,代码行数:54,代码来源:LightMaterialGenerator.cpp
示例18: UpdMiniTer
void App::UpdMiniTer()
{
MaterialPtr mm = MaterialManager::getSingleton().getByName("circle_minimap");
Pass* pass = mm->getTechnique(0)->getPass(0);
if (!pass) return;
try
{ Ogre::GpuProgramParametersSharedPtr fparams = pass->getFragmentProgramParameters();
if(fparams->_findNamedConstantDefinition("showTerrain",false))
{
fparams->setNamedConstant("showTerrain", pSet->mini_terrain ? 1.f : 0.f);
}
}catch(...){ }
}
开发者ID:jsj2008,项目名称:stuntrally,代码行数:13,代码来源:Hud.cpp
示例19: ChangeShaderColour
void StereoController::ChangeShaderColour(qreal r, qreal g, qreal b,const Ogre::String& name)
{
try
{
Ogre::MaterialPtr mat = Ogre::MaterialManager::getSingleton().getByName("Stereo/Anaglyph");
Ogre::Pass* pass = mat->getTechnique(0)->getPass(0);
Ogre::GpuProgramParametersSharedPtr param = pass->getFragmentProgramParameters();
Ogre::ColourValue colour(r,g,b,1);
param->setNamedConstant(name, colour);
}
catch (Ogre::Exception &e)
{
LogWarning("StereoController: Failed to set Anaglyph shader constant.");
LogWarning(e.what());
}
}
开发者ID:AlphaStaxLLC,项目名称:TundraAddons,代码行数:16,代码来源:StereoController.cpp
示例20: notifyMaterialRender
// this callback we will use to modify SSAO parameters
void notifyMaterialRender(Ogre::uint32 pass_id, Ogre::MaterialPtr &mat)
{
if (pass_id != 42) // not SSAO, return
return;
// this is the camera you're using
Ogre::Camera *cam = mInstance->getChain()->getViewport()->getCamera();
// calculate the far-top-right corner in view-space
Ogre::Vector3 farCorner = cam->getViewMatrix(true) * cam->getWorldSpaceCorners()[4];
// get the pass
Ogre::Pass *pass = mat->getBestTechnique()->getPass(0);
// get the vertex shader parameters
Ogre::GpuProgramParametersSharedPtr params = pass->getVertexProgramParameters();
// set the camera's far-top-right corner
if (params->_findNamedConstantDefinition("farCorner"))
params->setNamedConstant("farCorner", farCorner);
// get the fragment shader parameters
params = pass->getFragmentProgramParameters();
// set the projection matrix we need
static const Ogre::Matrix4 CLIP_SPACE_TO_IMAGE_SPACE(
0.5, 0, 0, 0.5,
0, -0.5, 0, 0.5,
0, 0, 1, 0,
0, 0, 0, 1);
if (params->_findNamedConstantDefinition("ptMat"))
params->setNamedConstant("ptMat", CLIP_SPACE_TO_IMAGE_SPACE * cam->getProjectionMatrixWithRSDepth());
if (params->_findNamedConstantDefinition("far"))
params->setNamedConstant("far", cam->getFarClipDistance());
}
开发者ID:MrLobo,项目名称:El-Rayo-de-Zeus,代码行数:34,代码来源:SSAOLogic.cpp
注:本文中的ogre::GpuProgramParametersSharedPtr类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论