本文整理汇总了C++中gl::GlslProgRef::uniform方法的典型用法代码示例。如果您正苦于以下问题:C++ GlslProgRef::uniform方法的具体用法?C++ GlslProgRef::uniform怎么用?C++ GlslProgRef::uniform使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类gl::GlslProgRef
的用法示例。
在下文中一共展示了GlslProgRef::uniform方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: draw
void gpgpuFrameBufferApp::draw()
{
gl::clear( Color( 0, 0, 0 ) );
gl::viewport(getWindowSize());
gl::setMatricesWindow( getWindowSize() );
gl::enableAdditiveBlending();
//using scoped
{
gl::ScopedTextureBind t0(mBuffer->getTexture(), 0);
gl::ScopedTextureBind t1(mTexture, 1);
gl::ScopedGlslProg sh(shaderRefraction);
shaderRefraction->uniform( "pixel", vec2(1.0f)/vec2(mBuffer->getSize()) );
shaderRefraction->uniform( "texBuffer", 0 );
shaderRefraction->uniform( "texRefract", 1 );
gl::drawSolidRect(getWindowBounds());
}
mBuffer->draw();
}
示例2: update
void gpgpuFrameBufferApp::update()
{
//Using bind call
mBuffer->bindBuffer();
gl::viewport(mBuffer->getSize());
gl::setMatricesWindow( mBuffer->getSize() );
gl::clear();
mBuffer->bindTexture();
{
shader->bind();
shader->uniform( "pixel", vec2(1.0f)/vec2(mBuffer->getSize()) );
shader->uniform( "texBuffer", 0 );
gl::color(Color::white());
gl::drawSolidRect(Rectf(vec2(0.0f),mBuffer->getSize()));
}
mBuffer->unbindTexture();
if(mMouseDown)
{
gl::getStockShader(gl::ShaderDef().color())->bind();
//Red channel will host the injected force from mouse position
gl::color( ColorAf( 1.0f, 0.0f, 0.0f, 1.0f ) );
gl::drawSolidCircle( ( mMousePos ), 5.0f );
gl::color( Color::white() );
}
mBuffer->unbindBuffer(true);
}
示例3: update
void TextParticlesApp::update()
{
if( !mActive )
return;
// Update particles on the GPU
gl::ScopedGlslProg prog( mUpdateProg );
gl::ScopedState rasterizer( GL_RASTERIZER_DISCARD, true ); // turn off fragment stage
mPerlin3dTex->bind(0);
mUpdateProg->uniform( "uPerlinTex", 0 );
mUpdateProg->uniform( "uStep", mStep.value() );
mUpdateProg->uniform( "uDampingSpeed", mDampingSpeed );
mUpdateProg->uniform( "uNoiseOffset", mNoiseOffset );
mUpdateProg->uniform( "uEndColor", mEndColor );
// Bind the source data (Attributes refer to specific buffers).
gl::ScopedVao source( mAttributes[mSourceIndex] );
// Bind destination as buffer base.
gl::bindBufferBase( GL_TRANSFORM_FEEDBACK_BUFFER, 0, mParticleBuffer[mDestinationIndex] );
gl::beginTransformFeedback( GL_POINTS );
// Draw source into destination, performing our vertex transformations.
gl::drawArrays( GL_POINTS, 0, mTextParticleCount );
gl::endTransformFeedback();
mPerlin3dTex->unbind();
// Swap source and destination for next loop
std::swap( mSourceIndex, mDestinationIndex );
}
示例4: dilateVelocity
void MotionBlurVelocityBufferApp::dilateVelocity()
{
gl::ScopedFramebuffer fbo( mVelocityDilationBuffer );
gl::ScopedViewport viewport( ivec2( 0, 0 ), mVelocityDilationBuffer->getSize() );
gl::ScopedMatrices matrices;
gl::setMatricesWindowPersp( mVelocityDilationBuffer->getSize() );
{ // downsample velocity into tilemax
gl::ScopedTextureBind tex( mGBuffer->getTexture2d( G_VELOCITY ), 0 );
gl::ScopedGlslProg prog( mTileProg );
gl::drawBuffer( DILATE_TILE_MAX );
mTileProg->uniform( "uVelocityMap", 0 );
mTileProg->uniform( "uTileSize", mTileSize );
gl::drawSolidRect( mVelocityDilationBuffer->getBounds() );
}
{ // build max neighbors from tilemax
gl::ScopedTextureBind tex( mVelocityDilationBuffer->getTexture2d( DILATE_TILE_MAX ), 0 );
gl::ScopedGlslProg prog( mNeighborProg );
gl::drawBuffer( DILATE_NEIGHBOR_MAX );
mNeighborProg->uniform( "uTileMap", 0 );
gl::drawSolidRect( mVelocityDilationBuffer->getBounds() );
}
}
示例5: draw
void AudioVisualizerApp::draw()
{
gl::clear();
// use camera
gl::pushMatrices();
gl::setMatrices( mCamera );
{
// bind shader
gl::ScopedGlslProg shader( mShader );
mShader->uniform( "uTexOffset", mOffset / float( kHistory ) );
mShader->uniform( "uLeftTex", 0 );
mShader->uniform( "uRightTex", 1 );
// create textures from our channels and bind them
mTextureLeft = gl::Texture2d::create( mChannelLeft, mTextureFormat );
mTextureRight = gl::Texture2d::create( mChannelRight, mTextureFormat );
gl::ScopedTextureBind tex0( mTextureLeft, 0 );
gl::ScopedTextureBind tex1( mTextureRight, 1 );
// draw mesh using additive blending
gl::ScopedBlendAdditive blend;
gl::ScopedColor color( 1, 1, 1 );
gl::draw( mMesh );
}
gl::popMatrices();
}
示例6: draw
void ShadowMappingBasic::draw()
{
renderDepthFbo();
gl::clear( Color::black() );
gl::setMatrices( mCam );
gl::ScopedTextureBind texScope( mShadowMapTex, (uint8_t) 0 );
vec3 mvLightPos = vec3( gl::getModelView() * vec4( mLightPos, 1.0f ) ) ;
mat4 shadowMatrix = mLightCam.getProjectionMatrix() * mLightCam.getViewMatrix();
mGlsl->uniform( "uShadowMap", 0 );
mGlsl->uniform( "uLightPos", mvLightPos );
mGlsl->uniform( "uShadowMatrix", shadowMatrix );
drawScene( false );
// Uncomment for debug
/*
gl::setMatricesWindow( getWindowSize() );
gl::color( 1.0f, 1.0f, 1.0f );
float size = 0.5f*std::min( getWindowWidth(), getWindowHeight() );
gl::draw( mShadowMapTex, Rectf( 0, 0, size, size ) );
*/
}
示例7: update
void SphericalStereoApp::update()
{
if( mRift ) {
hmd::ScopedRiftBuffer bind{ mRift };
gl::clear();
for( auto eye : mRift->getEyes() ) {
mRift->enableEye( eye );
const auto& pano = mPanos.at( mPanoIndex );
mStereoGlsl->uniform( "uDisplayMode", pano.mDisplayMode );
mStereoGlsl->uniform( "uRightEye", static_cast<int>(eye) );
gl::ScopedTextureBind tex0( pano.mLatLong );
mSphere->draw();
{
auto size = mRift->getFboSize();
gl::ScopedMatrices push;
gl::setMatricesWindow( size.x / 2, size.y );
vec3 latencies = mRift->getLatencies();
stringstream ss;
ss << mPanos.at( mPanoIndex ).mName << std::endl;
ss << " " << std::endl;
ss << "App fps: " << toString( getAverageFps() ) << std::endl;
ss << "Ren: " << latencies.x << std::endl;
ss << "TWrp: " << latencies.y << std::endl;
ss << "PostPresent: " << latencies.z << std::endl;
auto tbox = TextBox().text( ss.str() ).font( Font( "Arial", 20.0f ) ).color( Color::white() ).backgroundColor( Color::black() );
gl::draw( gl::Texture2d::create( tbox.render() ), vec2( size.x / 3, size.y / 2 ) );
}
}
}
}
示例8: drawBridge
void BayBridgeApp::drawBridge(vec3 pColor, float pAmbient)
{
mShaderDiffuse->bind();
mShaderDiffuse->uniform("uColor", pColor);
mShaderDiffuse->uniform("uAmbient", pAmbient);
gl::drawCube(vec3(0, -2, 0), vec3(1050, 5, 30));
gl::drawCube(vec3(500, -25, 0), vec3(30,50,30));
gl::drawCube(vec3(-500, -25, 0), vec3(30, 50, 30));
gl::drawCube(vec3(0, 30, 0), vec3(5, 180, 50));
}
示例9: draw
void GeometryApp::draw()
{
// Prepare for drawing.
gl::clear();
gl::setMatrices( mCamera );
// Draw the grid.
if( mShowGrid && mGrid ) {
gl::ScopedGlslProg scopedGlslProg( gl::context()->getStockShader( gl::ShaderDef().color() ) );
// draw the coordinate frame with length 2.
gl::drawCoordinateFrame( 2 );
mGrid->draw();
}
if( mPrimitive ) {
gl::ScopedTextureBind scopedTextureBind( mTexture );
mPhongShader->uniform( "uTexturingMode", mTexturingMode );
// Rotate it slowly around the y-axis.
gl::ScopedModelMatrix matScope;
gl::rotate( float( getElapsedSeconds() / 5 ), 0, 1, 0 );
// Draw the normals.
if( mShowNormals && mPrimitiveNormalLines ) {
gl::ScopedColor colorScope( Color( 1, 1, 0 ) );
mPrimitiveNormalLines->draw();
}
// Draw the primitive.
gl::ScopedColor colorScope( Color( 0.7f, 0.5f, 0.3f ) );
if( mViewMode == WIREFRAME ) {
// We're using alpha blending, so render the back side first.
gl::ScopedAlphaBlend blendScope( false );
gl::ScopedFaceCulling cullScope( true, GL_FRONT );
mWireframeShader->uniform( "uBrightness", 0.5f );
mPrimitiveWireframe->draw();
// Now render the front side.
gl::cullFace( GL_BACK );
mWireframeShader->uniform( "uBrightness", 1.0f );
mPrimitiveWireframe->draw();
}
else
mPrimitive->draw();
}
// Render the parameter window.
#if ! defined( CINDER_GL_ES )
if( mParams )
mParams->draw();
#endif
}
示例10: draw
void GeometryShaderIntroApp::draw()
{
gl::clear();
gl::setMatricesWindow( getWindowWidth(), getWindowHeight() );
gl::translate( getWindowCenter() );
gl::ScopedGlslProg glslProg( mGlsl );
mGlsl->uniform( "uNumSides", mNumSides );
mGlsl->uniform( "uRadius", mRadius );
mBatch->draw();
}
示例11: setup
void BayBridgeApp::setup()
{
mGUI = params::InterfaceGl::create("Params", ivec2(300, 50));
mParamInvert = false;
mParamClear = true;
mGUI->addParam<bool>("paramInvert", &mParamInvert).optionsStr("label='Inverted'");
mGUI->addParam<bool>("paramClear", &mParamClear).optionsStr("label='Clear Frame'");
getWindow()->setSize(1280, 720);
getWindow()->setPos(ivec2(20));
setFrameRate(60);
mBridgeShader = gl::GlslProg::create(loadAsset("shaders/light_vert.glsl"), loadAsset("shaders/light_frag.glsl"));
mBridge.Init(mBridgeShader);
mCamera.setPerspective(45.0f, getWindowAspectRatio(), 10.0f, 10000.0f);
mCamera.lookAt(vec3(0, 50, -525), vec3(0,50,0), vec3(0, 1, 0));
mCamUi = CameraUi(&mCamera, getWindow());
mDS = CinderDSAPI::create();
mDS->init();
mDS->initDepth(FrameSize::DEPTHSD, 60);
mDS->start();
ImageSourceRef skybox[6]
{
loadImage(loadAsset("textures/px04.png")), loadImage(loadAsset("textures/nx04.png")),
loadImage(loadAsset("textures/py04.png")), loadImage(loadAsset("textures/ny04.png")),
loadImage(loadAsset("textures/pz04.png")), loadImage(loadAsset("textures/nz04.png"))
};
mTexSkybox = gl::TextureCubeMap::create(skybox);
mShaderSkybox = gl::GlslProg::create(loadAsset("shaders/skybox_vert.glsl"), loadAsset("shaders/skybox_frag.glsl"));
mBatchSkybox = gl::Batch::create(geom::Cube(), mShaderSkybox);
mBatchSkybox->getGlslProg()->uniform("uCubemapSampler", 0);
mShaderDiffuse = gl::GlslProg::create(loadAsset("shaders/diffuse_vert.glsl"), loadAsset("shaders/diffuse_frag.glsl"));
//Bloom
mFboRaw = gl::Fbo::create(1280, 720, gl::Fbo::Format().colorTexture(gl::Texture2d::Format().dataType(GL_FLOAT).internalFormat(GL_RGBA32F)));
mFboHiPass = gl::Fbo::create(1280, 720);
mFboBlurU = gl::Fbo::create(1280, 720);
mFboBlurV = gl::Fbo::create(1280, 720);
mShaderHiPass = gl::GlslProg::create(loadAsset("shaders/passthru_vert.glsl"), loadAsset("shaders/highpass_frag.glsl"));
mShaderHiPass->uniform("uTextureSampler", 0);
mShaderBlur = gl::GlslProg::create(loadAsset("shaders/blur_vert.glsl"), loadAsset("shaders/blur_frag.glsl"));
mShaderBlur->uniform("uTextureSampler", 0);
}
示例12: cos
void Day41App::update()
{
lightPos.x = (1.5f * cos(theta)) - 0.5;
lightPos.y = 2+ 1.5f * sin(theta);
lightPos.z = 1.5f;// * sin(theta*2);
theta += 0.0523;
eyePos = mCam.getEyePoint();
mGlsl->uniform("light.position", vec3(mCam.getViewMatrix() * vec4(lightPos, 1.0f)));
mGlsl->uniform("viewPos", vec3(mCam.getViewMatrix() * vec4(eyePos, 1.0f)));
vec3 lightColor = vec3(1.f);
vec3 diffuseColor = lightColor * vec3(0.9f);
vec3 ambientColor = diffuseColor * vec3(0.5f);
mGlsl->uniform("light.diffuse", diffuseColor);
mGlsl->uniform("light.specular", vec3(1.f));
mGlsl->uniform("material.ambient", vec3(1.0f, 0.5f, 0.31f));
mGlsl->uniform("material.diffuse", 0); //pass the diffuse map texture to shader
mGlsl->uniform("material.specular", 1); //pass the specular map texture to the shader
mGlsl->uniform("material.shininess", 32.f);
}
示例13: draw
void ProfilerTestApp::draw()
{
CI_SCOPED_CPU( mCpuProfiler, "Draw" );
CI_SCOPED_GPU( mGpuProfiler, "Draw" );
gl::clear();
// Expensive CPU operation
for( size_t i = 0; i < 20000; ++i ) {
Rand::randVec3();
}
// Expensive GPU pass
{
CI_SCOPED_GPU( mGpuProfiler, "Noise pass" );
gl::ScopedGlslProg s( mNoiseShader );
mNoiseShader->uniform( "uTime", (float)app::getElapsedSeconds() );
gl::drawSolidRect( app::getWindowBounds() );
}
// More gpu work...
gl::drawSolidCircle( app::getWindowSize()/2, 100.0f, 50000 );
CI_CHECK_GL();
}
示例14: drawBlurredContent
void MotionBlurVelocityBufferApp::drawBlurredContent()
{
gl::ScopedTextureBind colorTex( mGBuffer->getTexture2d( G_COLOR ), 0 );
gl::ScopedTextureBind velTex( mGBuffer->getTexture2d( G_VELOCITY ), 1 );
gl::ScopedTextureBind neigborTex( mVelocityDilationBuffer->getTexture2d( DILATE_NEIGHBOR_MAX ), 2 );
gl::ScopedGlslProg prog( mMotionBlurProg );
gl::ScopedBlendPremult blend;
mMotionBlurProg->uniform( "uColorMap", 0 );
mMotionBlurProg->uniform( "uVelocityMap", 1 );
mMotionBlurProg->uniform( "uNeighborMaxMap", 2 );
mMotionBlurProg->uniform( "uNoiseFactor", mBlurNoise );
mMotionBlurProg->uniform( "uSamples", mSampleCount );
gl::drawSolidRect( getWindowBounds() );
}
示例15: update
void TransformFeedbackClothSimulationApp::update()
{
gl::ScopedGlslProg updateScope( mUpdateGlsl );
gl::ScopedState stateScope( GL_RASTERIZER_DISCARD, true );
// This for loop allows iteration on the gpu of solving the
// physics of the cloth.
// Change mIterationsPerFrame to see the difference it makes
for( int i = mIterationsPerFrame; i != 0; --i ) {
// Pick using the mouse if it's pressed
if( mouseMoving ) {
mUpdateGlsl->uniform( "mouse_pos", currentMousePosition );
mouseMoving = false;
}
gl::ScopedVao vaoScope( mVaos[mIterationIndex & 1] );
gl::ScopedTextureBind textureBind( mPosBufferTextures[mIterationIndex & 1]->getTarget(),
mPosBufferTextures[mIterationIndex & 1]->getId() );
mIterationIndex++;
mFeedbackObjs[mIterationIndex & 1]->bind();
gl::beginTransformFeedback( GL_POINTS );
gl::drawArrays( GL_POINTS, 0, POINTS_TOTAL );
gl::endTransformFeedback();
}
}