hello!
I'm trying to simulate noise effects in real time using OSG and GLSL.
I rendered to texture a scene to get a sampler2D. Mu and Sigma for noise
simulation are static. My idea is to reload fragment shader in a while loop
with a random number as uniform because GLSL's noise() function doesn't seem to
work on my computer. Therefore I wrote a function "randomNumber(int from, int
to)" which returns a random int between "from" and "to".
Code:
void loadNoiseShader(int width, int height, osg::Vec3d& mue, osg::Vec3d& sigma,
osg::Geode* geode)
{
osg::ref_ptr<osg::Shader> vertShader =
osgDB::readShaderFile(osg::Shader::VERTEX, "noise.vert");
osg::ref_ptr<osg::Shader> fragShader =
osgDB::readShaderFile(osg::Shader::FRAGMENT, "noise.frag");
osg::ref_ptr<osg::Program> program = new osg::Program;
program->addShader(vertShader.get());
program->addShader(fragShader.get());
osg::StateSet* ss = geode->getOrCreateStateSet();
ss->setAttributeAndModes(program.get());
osg::ref_ptr<osg::Uniform> texUniform = new osg::Uniform("RTScene", 0);
osg::ref_ptr<osg::Uniform> windowSize = new osg::Uniform("screen",
osg::Vec2(width, height));
osg::ref_ptr<osg::Uniform> mueUniform = new osg::Uniform("mue", mue);
osg::ref_ptr<osg::Uniform> sigmaUniform = new osg::Uniform("sigma",
sigma);
osg::ref_ptr<osg::Uniform> randomUniform = new osg::Uniform("random",
randomNumber(-255, 255));
ss->addUniform(texUniform.get());
ss->addUniform(windowSize.get());
ss->addUniform(sigmaUniform.get());
ss->addUniform(mueUniform.get());
ss->addUniform(randomUniform.get());
}
/*...*/
while(!viewer.done())
{
loadNoiseShader(width, height, mu, sigma, geode.get());
viewer.frame();
}
I thought that this would work, but unfortunately the executive crashes at the
beginning. Can someone explain me that please?
lg Chris
------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=50258#50258
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org