Hello Michael,

On 05/30/2013 04:29 AM, Michael Raab wrote:
> 1.)
> We have the need to update some shader variables frequently, e.g. those
> who depend on our system time.
> With 1.8 I checked each frame for newly created SHLChunks und there
> checked for certain uniform variable names using method
> hasUniformVariables().
> Once found I updated the variables each frame..
> How can this done in 2.0, may be there is a smarter way...

I think you could have a ShaderVariableChunk in a ChunkOverideGroup on 
the root (or near it) and IIRC it gets merged with a ShaderVariableChunk 
on a material further down the tree. Gerrit, could you confirm if that 
is how the shaders get combined? Thanks!

> What I recently saw were OSGProceduralVariables. Can they be used for
> this purpose? Can all my shader programs share one variable, e.g. for
> current system time?

I don't think there are user defined procedural variables, there are 
uniforms with "magic" names that OpenSG supplies and updates as needed 
(e.g. various matrices) - see 
Source/System/State/Shader/Variables/OSGShaderVariableOSG.{cpp,h} for a 
list.

> What happens if I write an OSGProceduralVariable to osb und reload it?

The pre-defined ones should be restored. I would expect user-defined 
ones to be lost (if we had them), since it's not clear how to 
save/restore a function pointer ;) - that means they would also be not 
transmitted across a cluster.

> 2.) Definitions: What is
>    - a stage?

basically a NodeCore that redirects the rendering of the tree below it 
into an FBO. A stage can also perform multiple passes (into different 
targets if needed) over the tree below it.

>    - a partition?

This is the backend (internal) representation created by a stage, you 
could think of it as a render pass.

>    - draw mode: SequentialPartitionDraw vs. ParallelPartitionDraw?

In ParallelPartitionDraw completed partitions are being drawn 
concurrently with other partitions that are still being filled. It 
basically makes drawing (in the sense of issuing OpenGL drawing 
commands) parallel to tree traversal/frustum culling. Gerrit will have 
to comment on how complete/stable the parallel mode is.

>    - a view area?

Hmm, I think this like a viewport (pixel position + width and height) 
without the other stuff an OpenSG viewport has (root, foregrounds, 
background, etc).

> 3.) commitchanges()
> Could you please explain shortly what this exactly does? Is this
> relevant for multi-threaded/cluster applications only?

commitChanges() causes the changed() function of all FieldContainers 
that have had any field written (since the last time commitChanges ran) 
to be executed. This used to happen from the endEditCP() call in 1.x, 
but since these are gone, the commitChanges() call is needed to run the 
necessary updates. It should be called at least once a frame, or before 
you access lazily computed information (mostly bounding volumes and 
their dirty flags).

        Cheers,
                Carsten

------------------------------------------------------------------------------
Get 100% visibility into Java/.NET code with AppDynamics Lite
It's a free troubleshooting tool designed for production
Get down to code-level detail for bottlenecks, with <2% overhead.
Download for free and get started troubleshooting in minutes.
http://p.sf.net/sfu/appdyn_d2d_ap2
_______________________________________________
Opensg-users mailing list
Opensg-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensg-users

Reply via email to