Switching the shader to use *2D instead of *2DRect fixed it.  Thanks!

Mark

Mark A. Bolstad
Scientific Computing
Janelia Farm Research Campus
Howard Hughes Medical Institute
19700 Helix Drive, Ashburn, VA  20147
email: bolst...@janelia.hhmi.org
office: +1.571.209.4623
web: http://www.hhmi.org/janelia/






On Jul 18, 2011, at 6:03 AM, Sergey Polischuk wrote:

> Hi, Mark
> 
> Afaik osgdistortion uses 2d textures not rect textures.
> 
> Cheers,
> Sergey.
> 
> 18.07.2011, 11:42, "J.P. Delport" <jpdelp...@csir.co.za>:
>> Hi,
>> 
>> I can't follow what you expect and what is working/not?
>> 
>> If you are using 2DRect remember that texture coords are not between 0
>> and 1, so it does not make sense to directly put them into colours then.
>> 
>> jp
>> 
>> On 15/07/2011 20:31, Bolstad, Mark wrote:
>> 
>>>  So I've done some testing. I've decided to go the shader route as it
>>>  will give the most flexibility. I've modified osgdistortion from the
>>>  latest svn. At the end is a short patch to show the changes.
>>> 
>>>  The main problem I'm getting is that the FBO texture doesn't appear to
>>>  be passing to the shader properly. All I'm getting is a black screen. If
>>>  I swap the shader to color based on texture coordinates, the output is
>>>  correct. I'm sure that I'm probably missing something simple in the
>>>  setup/texture binding, and any help is appreciated.
>>> 
>>>  Mark
>>> 
>>>  34,36d33
>>>  < #include <osg/Program>
>>>  < #include <osg/Shader>
>>>  < #include <osg/Uniform>
>>>  58,80d54
>>>  <
>>>  ///////////////////////////////////////////////////////////////////////////
>>>  < // in-line GLSL source code for the "microshader" example
>>>  <
>>>  < static const char *shaderVertSource = {
>>>  < "// passthru - Simple pass through vertex shader\n"
>>>  < "void main(void)\n"
>>>  < "{\n"
>>>  < " gl_TexCoord[0].xy = gl_MultiTexCoord0.xy;\n"
>>>  < " gl_Position = ftransform();\n"
>>>  < "}\n"
>>>  < };
>>>  <
>>>  < static const char *shaderFragSource = {
>>>  < "uniform sampler2DRect textureIn;\n"
>>>  < "void main(void)\n"
>>>  < "{\n"
>>>  < // " gl_FragColor = vec4( gl_TexCoord[0].s, gl_TexCoord[0].t, 0.0, 1.0
>>>  );\n"
>>>  < " gl_FragColor = texture2DRect( textureIn, gl_TexCoord[0].st );\n"
>>>  < "}\n"
>>>  < };
>>>  <
>>>  <
>>>  ///////////////////////////////////////////////////////////////////////////
>>>  <
>>>  94,98d67
>>>  < osg::Program* program = new osg::Program;
>>>  < program->setName( "texture_shader" );
>>>  < program->addShader( new osg::Shader( osg::Shader::VERTEX,
>>>  shaderVertSource ) );
>>>  < program->addShader( new osg::Shader( osg::Shader::FRAGMENT,
>>>  shaderFragSource ) );
>>>  <
>>>  156,157d124
>>>  < osg::Vec3 cursor = bottom;
>>>  < osg::Vec2 texcoord = bottom_texcoord;
>>>  198,201c165,166
>>>  < stateset->setTextureAttributeAndModes( 0, texture,
>>>  osg::StateAttribute::ON );
>>>  < stateset->addUniform( new osg::Uniform( "textureIn", 0 ) );
>>>  < stateset->setAttributeAndModes( program, osg::StateAttribute::ON );
>>>  < stateset->setMode(GL_LIGHTING,osg::StateAttribute::ON);
>>>  ---
>>>>  stateset->setTextureAttributeAndModes(0,
>>>  texture,osg::StateAttribute::ON);
>>>>  stateset->setMode(GL_LIGHTING,osg::StateAttribute::OFF);
>>>  391d355
>>>  < osg::Vec3 cursor = bottom;
>>>  393,394d356
>>>  <
>>>  <
>>>  705c667
>>>  < if (!loadedModel) loadedModel = osgDB::readNodeFile("cow.osg");
>>>  ---
>>>>  if (!loadedModel) loadedModel = osgDB::readNodeFile("cow.osgt");
>>>  786d747
>>>  < viewer.setUpViewOnSingleScreen( 0 );
>>> 
>>>  */Mark A. Bolstad/*
>>>  Scientific Computing
>>>  Janelia Farm Research Campus
>>>  Howard Hughes Medical Institute
>>>  19700 Helix Drive, Ashburn, VA 20147
>>>  email:*bolst...@janelia.hhmi.or <mailto:bolst...@janelia.hhmi.or>**g*
>>>  office: +1.571.209.4623
>>>  web: http://www.hhmi.org/janelia/
>>> 
>>>  On Jul 14, 2011, at 10:45 AM, J.P. Delport wrote:
>>>>  Hi,
>>>> 
>>>>  On 14/07/2011 16:37, Jason Daly wrote:
>>>>>  On 07/14/2011 10:08 AM, Bolstad, Mark wrote:
>>>>>>  I like the idea of combining the passes into one, but if I had a blue
>>>>>>  object and had to mask it into the red channel, wouldn't it just be
>>>>>>  black?
>>>>>  Yes, it would be black on the red and green passes, but it would show up
>>>>>  on the blue pass. When you combined the three passes of the image to an
>>>>>  RGB texture, you'd have your blue object. The flow would look something
>>>>>  like this:
>>>>> 
>>>>>  - set the camera to draw to an RGB texture
>>>>>  - set camera's color mask to red only
>>>>>  - draw the first object
>>>>>  - set camera's color mask to green only
>>>>>  - draw the second object
>>>>>  - set camera's color mask to blue only
>>>>>  - draw the third object
>>>>>  - fetch the texture from the camera and use it however you need it
>>>>> 
>>>>>  as J-S said, you save the combine pass and you don't even need any
>>>>>  special shader magic.
>>>>>>  I had talked to a professor who had suggested a one-line fragment
>>>>>>  shader to do RGB-> Luminance and use Color Masking to write into the
>>>>>>  appropriate channel. Would rendering straight into a Luminance texture
>>>>>>  with Color Masking work?
>>>>>  Maybe I'm not understanding you correctly, but I don't think this would
>>>>>  work. You'd end up with a luminance image (effectively, a grayscale
>>>>>  image) at the end and not a color image.
>>>>  I think prof meant he must stick the calculated luminance value into
>>>>  all three channels.
>>>> 
>>>>  jp
>>>>>>  In reality, this is actually more complicated in that it's not three
>>>>>>  objects, but three separate frames of animation. So the main loop is:
>>>>>> 
>>>>>>  while(1)
>>>>>>  {
>>>>>>  advance sim
>>>>>>  frame(); // Render to red
>>>>>>  advance sim
>>>>>>  frame(); // Render to green
>>>>>>  advance sim
>>>>>>  frame(); // Render to blue
>>>>>>  Render RTT texture to display.
>>>>>>  }
>>>>>  Maybe if you explained what you're trying to do at a higher level, we'd
>>>>>  be able to better help. What is the problem you're trying to solve?
>>>>> 
>>>>>  --"J"
>>>>> 
>>>>>  _______________________________________________
>>>>>  osg-users mailing list
>>>>>  osg-users@lists.openscenegraph.org
>>>>>  <mailto:osg-users@lists.openscenegraph.org>
>>>>>  http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>>>>  --
>>>>  This message is subject to the CSIR's copyright terms and conditions,
>>>>  e-mail legal notice, and implemented Open Document Format (ODF)
>>>>  standard. The full disclaimer details can be found at
>>>>  http://www.csir.co.za/disclaimer.html.
>>>> 
>>>>  This message has been scanned for viruses and dangerous content by
>>>>  MailScanner, and is believed to be clean.
>>>> 
>>>>  _______________________________________________
>>>>  osg-users mailing list
>>>>  osg-users@lists.openscenegraph.org
>>>>  <mailto:osg-users@lists.openscenegraph.org>
>>>>  http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>>>  _______________________________________________
>>>  osg-users mailing list
>>>  osg-users@lists.openscenegraph.org
>>>  http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>> --
>> This message is subject to the CSIR's copyright terms and conditions, e-mail 
>> legal notice, and implemented Open Document Format (ODF) standard.
>> The full disclaimer details can be found at 
>> http://www.csir.co.za/disclaimer.html.
>> 
>> This message has been scanned for viruses and dangerous content by 
>> MailScanner,
>> and is believed to be clean.
>> 
>> _______________________________________________
>> osg-users mailing list
>> osg-users@lists.openscenegraph.org
>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> _______________________________________________
> osg-users mailing list
> osg-users@lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to