Thanks for the fast reply.
But this doesn't work.
The materialgroup contains no material at that point.
So if I use mg->getMaterial() I receive always a NullFC.
But I unerstand the problem.
Somehow I have to add the shaderchunk to the OSGMaterial that holds the
original materialdata.
But how can I access the Material of any loaded geometry and add my
shader chunk???
I tried something like
if(model->getCore()->getType().isDerivedFrom(
ChunkMaterial::getClassType())){
mat = model->getCore();
mat->addChunk(shaderchunk);
}
any comment?
thanks
Andreas Zieringer wrote:
> Hi Sebastian,
>
> you are replacing the original material with your own shader material.
>
> replace this line:
>
> mg->setMaterial(createSimpleShaderMaterial());
>
> with something like this:
>
> ChunkMaterialPtr mat = ChunkMaterialPtr::dcast(mg->getMaterial());
>
> if(mat != NullFC)
> {
> beginEditCP(mat);
> mat->addChunk(_shl);
> endEditCP(mat);
> }
>
> Andreas
>
>
>> Hi there,
>>
>> I'm using different glsl shader (phong, etc.) to create different
>> visualizations of my models in my scene.
>> In my shaders I would like to use the original material properties resp.
>> textures that belong to the model and were loaded with the geometry from
>> file.
>>
>> When I load the tie fighter model I would like to use the original
>> material colors in my shader.
>> I tried to do so by using the built-in gl_FrontColor.diffuse in the
>> Vertex Shader and pass it through to the Fragment Shader.
>> But the gl_FrontColor (diffuse/ambient/specular) is all the time
>> (0.0,0.0,0.0,0.0)/black, meaning that its not available.
>> It seems that the OpenGL material isn't anymore valid for any reason
>> when I use a shader.
>>
>> Afterwards I tried to use the textures of the model in my shader. In
>> Performer the corresponding texture of the currently rendered geometry
>> was bind to texture unit 0. Thus it was easy to use the textures in the
>> shader. It seams that OpenSG binds the textures to different textures
>> units. Because when I used texture unit 0 in my shader, the wrong
>> textures were visualized with wrong parts of my model.
>> So my question is how to acces the textures in my shader, which were
>> loaded with the model? Because I don't know the exact texture units
>> OpenSG binds them to.
>>
>> Perhaps I don't set up the shader corrctly and the OpenGL State isn't
>> anymore available.
>>
>> I attached an example to show the problem.
>>
>> thanks for any comment.
>>
>> Sebastian Knödel
>>
>
>
>
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Opensg-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensg-users