>       Hello Gerrit, Volker,
> 
> On 08/14/2012 08:34 PM, Gerrit Voß wrote:
> > small comment, changes during local rendering should never be needed
> > to get the clustering right. Usually they should not even be
transmitted.
> > Because, rendering locally on the master while clustering is optional,
> > for example on our main cluster the application is started remotely,
> > without anybody being even being logged into the master, so no
> > rendering will happen in this setup.
> 
> hmm, makes sense. During development I went back and forth a couple of
> times about what to distribute and what not, but I kept running into
problems
> with keeping stuff local - may have been due to bugs in the app or in the
> handling of local containers that are fixed now.
> Anyway, I'm attaching an (untested) patch that creates the
> {CPU,GPU}SkinningDataAttachment locally [1].
> If anyone feels adventurous and helpful: I'd appreciate if you'd give it a
try :)
> 
>       Cheers,
>               Carsten
> 
> [1] I needed to add cloneLocal() functions to the GeoProperties, which
seems
> like a useful addition independent of the rest of the patch?


Hi Carsten,

I added Your patch and found no difference in the cluster behavior.
The render server seems to had problems with the update. So at first I
noticed that the Skeleton::JointsChangedFieldMask is the only change (in the
servers). So to have some update I added that fieldmask test. Now, even if
setDataValid(false) is called and the renderEnter method updates the shader,
the skinning was not updated in the servers.
I had to add a commitChanges:

(in renderEnter)
...
if(data->getDataValid() == false)
    {
        ShaderProgram *vp = shCode->getVertexShader(0);
        OSG_ASSERT(vp != NULL);

        vp->updateUniformVariable(
            "matJoints",    (*skel->getMFJointMatrices()));
        vp->updateUniformVariable(
            "matBindShape", skinGeo->getBindShapeMatrix());

        data->setDataValid(true);
        commitChanges();
    }
...

Now the servers update the skin mesh.

Cheers,
Volker


PS: in OSGSkeletonOgreJoint.cpp I found in the changed method:
if(_sfSkeleton.getValue() != NULL)
            _sfSkeleton.getValue()->editSFJointsChanged();

this may be the reason why Skeleton::JointsChangedFieldMask is important?


------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Opensg-users mailing list
Opensg-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensg-users

Reply via email to