Hello Dirk, Hello Gerrit,

thank you, I will rework the texture part and see if the compute shader 
works then.
I think in my case culling was not the problem, since the plane and the 
compute node had the same transform, but I will keep that in mind as well.

Kind regards,
Marcel

Am 05.05.2014 13:44, schrieb Gerrit Voß:
> Hello,
>
> On Sun, 2014-05-04 at 15:33 +0200, Carsten Neumann wrote:
>>      Hello Marcel,
>>
>> On 05/04/2014 02:34 PM, Marcel Weiler wrote:
>>> I am trying to use compute shaders in OpenSG but can't make them work.
>>> The compute shader should modify the texture of a plane, but it never
>>> gets activated.
>> do you mean there is no OpenGL call to launch the compute shader or is
>> the texture simply unchanged?
>>
>>> My current setup is as follows: I load the OSGContribComputeBase Library
>>> using OSG::preloadSharedObject("OSGContribComputeBase") Snippet before I
>>> call osgInit(argc, argv). Then I set up my scene. The root has two
>>> children: a node with a geometry core which consists of a plane with a
>>> texture (ChunkMaterial with MaterialChunk, TextureObjectChunk and
>>> TextureEnvChunk) and node with an AlgorithmComputeElement core which
>>> holds the compute shader. The compute shader setup looks as follows
>>> Snippet
>>>
>>>             NodeRecPtr  computeNode  =  Node::create();
>>>             AlgorithmComputeElementRecPtr  computeElement  =  
>>> AlgorithmComputeElement::create();
>>>             ComputeShaderAlgorithmRecPtr  computeAlgorithm  =  
>>> ComputeShaderAlgorithm::create();
>>>             _comp  =  OSG::ComputeShaderChunk::create();
>>>             _comp->addUniformVariable("destTex",  (int)  
>>> bottom_tex->getGLId());
>> This looks suspect. I haven't used compute shaders (through OpenSG or
>> otherwise), but normally texture uniforms are set to the texture unit
>> the texture is bound to, not the OpenGL id.
>> Shouldn't bottom_tex be added to MFTextureImages of computeAlgorithm
>> (this makes sure the texture is activated before executing the shader)?
>>
>> The id returned by getGLId() is _not_ an OpenGL object name, it is
>> simply an id OpenSG uses to access the actual OpenGL object on different
>> contexts. You can use that id together with a context (i.e. OSG::Window)
>> to get the "real" OpenGL object name (Window::getGLObjectId()).
> Carsten is right, it should be the texture image unit, I would guess 0
> in this case, the MFTextureImages index in general. One further note,
> as the compute node is part of the tree you have to make sure it is
> not culled away. Either put the compute node  as a group above the
> plane / element you want to render (this is what
> Examples/CSM/NewShader/Compute does) or set the compute nodes BBox to
> inifite and static.
>
> kind regards
>    gerrit
>
>
>
> ------------------------------------------------------------------------------
> Is your legacy SCM system holding you back? Join Perforce May 7 to find out:
> • 3 signs your SCM is hindering your productivity
> • Requirements for releasing software faster
> • Expert tips and advice for migrating your SCM now
> http://p.sf.net/sfu/perforce
> _______________________________________________
> Opensg-users mailing list
> Opensg-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/opensg-users


---
Diese E-Mail ist frei von Viren und Malware, denn der avast! Antivirus Schutz 
ist aktiv.
http://www.avast.com


------------------------------------------------------------------------------
Is your legacy SCM system holding you back? Join Perforce May 7 to find out:
• 3 signs your SCM is hindering your productivity
• Requirements for releasing software faster
• Expert tips and advice for migrating your SCM now
http://p.sf.net/sfu/perforce
_______________________________________________
Opensg-users mailing list
Opensg-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensg-users

Reply via email to