Hello Carsten,

so I have made some progress but I'm still not there...

First, at Friday I did send my current draft to the mailing list, but it 
get on hold because of the 200K file size limit. I have now uploaded the 
files to a file sharing host and you can download it with the following 
url for the next seven days:

http://wikisend.com/download/191700/UniformBufferObjChunk.zip

Currently, I do have two problems with the project:

1. The integration is missing a proper state handling implementation:

I did implement new chunk classes ShaderExecutableUniformObjChunk and 
ShaderProgramUniformObjChunk as you can see in the file package. For 
proper state handling I do have to do something in the following files:
RenderAction.cpp RenderPartition.cpp State.* StateOverride.cpp. 
Additionally, I expect to provide some interfaces to ShaderCache and 
ShaderCacheTree.

According to the code I find for instance in StateOverride or 
RenderAction I have to extend State.h by an additional key 'Key4Mask'. 
But the implementation does not allow this because of the UInt32 type. 
After I did saw these code places I got unsure whether it was a good 
idea to go the same route as the shader program variables. On the one 
hand I think that it is a clean and proper separation from the 
variables. But the next extension is already lurking around the corner, 
i.e. the ShaderStorageBlocks which are sufficient similar to implement 
them as well.

So I do really, need some informed support here in order to do it right :-)

Should I expand the above classes?

2. Unfortunately, I'm facing some quirks with the std140 layout on 
ATI/AMD platforms. The problem is that it is not possible on these 
platforms to define a uniform block containing arrays of some other 
structure consisting of vec3 elements and accessing them with a dynamic, 
i.e. run time index. However, switching to vec4 everything went smooth. 
Currently, I'm not sure if the problem also exists for the default (non 
std140) layout.

The example I added to the code actually, shows this problem. It 
contains a material database which consists of a uniform block array of 
of Materials, which are composed of vec3 elements for the surface 
properties. The material index into this array is provided by another 
uniform block for the object to render. On NVIDIA this example works 
well, but on ATI/AMD it does not. For the lighting a similar problem 
exists in the example.


It would be fine if you and Gerrit, could take a look at the code and 
give me some advise how to proceed.

Best,
Johannes





------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
_______________________________________________
Opensg-users mailing list
Opensg-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensg-users

Reply via email to