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

Reply via email to