Its in osgUtil/RenderStage.cpp. Just search for glBlitFramebuffer.

Cheers,
Wojtek


2013/11/12 Sebastian Messerschmidt <[email protected]>

>  Hi Wojciech,
>
>
> Thank you for the very extensive explanation and tests.
> It seems it is either a driver problem or I solved the problem
> accidentally. Tests on my office PC worked with setting up multisampled
> textures bound to a non-multisampled FBO. I'm able to "resolve" them
> manually in the shader via texelFetch.
> So if I get it correctly there is no implict blit if FBO is 0/0
> multisamples and bound texture is multisampled.
> Btw: Can you point me to the line where the implicit blitting is done, so
> I can debug it?
>
> cheers
> Sebastian
>
> Hi,
>
>  Ok. I used verb copy to avoid verb resolve, not being sure how advanced
> you are... But yes that 'copy' is a resolve operation using
> glBlitFramebuffer internally.
>
>  I have not tried multisampled textures as multirender targets so I guess
> your case is bit more complex and I guess its the reason why your results
> vary. My observations described earlier, come from experiment with single
> color and single depth multisampled textures attached as COLOR and DEPTH
> attachments. Attaching them with samples / color samples = 0 was creating
> single FBO and rendered directly to these textures. Attaching with samples
> / color samples = 8 was internally creating render and resolve FBOs. First
> render FBO was rendering to Renderbuffer with 8 samples. And attachment
> multisample textures were bound to second resolve FBO. So final
> glBlitFarmebuffer was 'copying' contents from Renderbuffer to my
> multisampled textures. With first case (samples/color samples = 0)  I was
> still able to use the textures as input to some other shaders by declaring
> them as sampler2DMS uniforms. Below is my shader I used to 'resolve' the
> textures myself in input phase.
>
>  #version 150
> #extension GL_ARB_texture_multisample : enable
> uniform sampler2DMS colorTex;
> uniform sampler2DMS depthTex;
>
> const int NUM_SAMPLES = 8;
> const float NUM_SAMPLES_INV = 1. / float( NUM_SAMPLES );
>
> void main( void )
> {
>    ivec2 itc = ivec2( gl_FragCoord.xy );
>    float depth = 0.;
>    vec4  color = vec4(0.);
>    for ( int i=0; i<NUM_SAMPLES; i++ ) {
>      depth += texelFetch( depthTex, itc, i ).x;
>      color += texelFetch( colorTex, itc, i );
>    }
>    gl_FragDepth = depth * NUM_SAMPLES_INV;
>    gl_FragColor = color * NUM_SAMPLES_INV;
> }
>
>  Cheers,
> Wojtek
>
>
>
>
> 2013/11/12 Sebastian Messerschmidt <[email protected]>
>
>>  Am 11.11.2013 22:44, schrieb Wojciech Lewandowski:
>>
>> Hi,
>>
>>  I guess answer to main question would be go ahead and add this.
>>
>>  Okay, I just wanted to make sure they are not left out intentionally.
>>
>>  But I just want to write about something else here. If you attach
>> Texture2DMultisample to Camera you would want to leave the number of
>> samples and color samples at 0. Thats because these params are used to set
>> up rendering to multisampled Renderbuffer objects and in post step that
>> Renderbuffer is copied to attached texture. If you set Texture2DMultisample
>> and additionaly set numbers of samples in attach it will do rendering to
>> Renderbuffer and then will copy the result to your Texture2DMultisample
>> attachment. I guess its not what you are after.
>>
>>  That is strange. In this case I need some explanation. I want to render
>> several multisampled color attachments and resolve them in later passes. In
>> this case I create a multisampled color texture and attach it to the
>> camera. In consecutive passes I rebind those textures as input and resolve
>> them there. If I leave the colorsamples and sample count at the FBO I get a
>> FRAMEBUFFER_ATTACHMENT_INCOMPLETE error for the first pass. Setting them
>> solved the problem and I got a correct rendering.
>> So what is the correct thing to do here?
>>
>> You mentioned a copy. I always thought binding a texture to a FBO and
>> reusing it later in another FBO will not copy it, so I'm quite puzzled. Am
>> I'm doing something fundamentally wrong here?
>>
>> cheers
>> Sebastian
>>
>>
>>  Cheers,
>> Wojtek Lewandowski.
>>
>>
>> 2013/11/11 Sebastian Messerschmidt <[email protected]>
>>
>>> Hi,
>>>
>>> maybe this seems like s stupid question but why does
>>> osg::Texture2DMultisample does not have a getNumSamples() function?
>>> This might come in handy if, like in my case, a texture is passed around
>>> for MRT binding (camera->attach), to determine the number of samples for
>>> the attach function.
>>> Would it be okay to add the get function?
>>>
>>> cheers
>>> Sebastian
>>> _______________________________________________
>>> osg-users mailing list
>>> [email protected]
>>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>>>
>>
>>
>>
>> _______________________________________________
>> osg-users mailing 
>> [email protected]http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>>
>>
>>
>> _______________________________________________
>> osg-users mailing list
>> [email protected]
>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>>
>>
>
>
> _______________________________________________
> osg-users mailing 
> [email protected]http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
>
>
> _______________________________________________
> osg-users mailing list
> [email protected]
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
>
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to