Re: G3DKit.info - renderer questions

Philippe C.D. Robert <[email protected]> Wed, 30 Oct 2002 23:23:54 +0100
Newsgroups gmane.comp.gnu.3dkit.general
Message-ID <[email protected]>
On Wednesday, October 30, 2002, at 10:20  Uhr, Brent Gulanowski wrote:
>> When traversing/rendering a scene graph, an render engine is passed. 
>> This
>>   engine uses a render action which processes state handling, 
>> attribute
>>   evaluation etc. Concrete engines and actions are not provided by the
>>   RenderKit itself but by separate bundles.
>
> This is a little unclear to me. I can't tell what's doing what. When 
> the renderer is loaded, I'm guessing some object from RK holds a 
> reference to it: maybe some kind of overall manager for RK (main point 
> of contact for the application?). For DRAW/CULL/UPDATE/ISECT actions, 
> the renderer is passed to the graph itself, or to some graph manager? 
> When you say "engine uses a render action", do you mean that a render 
> action method exposed by the renderer protocol, is implemented by the 
> renderer, and is called by RK? That sounds like what you mean. But I 
> might have it completely backwards...

You might want to use 2 camera objects rendering the same scene using 2 
different renderers...

So if - while traversing - a state change has to be made the traversing 
tells the active renderer to do so, which in turn will execute the 
appropriate task depending on the currently active rendering technique.

>>   Each renderer maps actions to tasks, if possible. Otherwise a 
>> default
>>   fallback task is performed (on the respective category).
>>
>>   Tasks interface with a low level rendering API such as OpenGL while
>>   renderers should be implemented in a generic way.
>
> This approach I like, except I would have used the words in exactly 
> the opposite way. An action is specific, while a task is general 
> (sometimes even abstract) -- different actions can be used to 
> accomplish the same task. E.g.: drawing is a task, while submitting 
> triangles to OpenGL is an action. The same task can be accomplished by 
> a very different action, such as a person sketching on a piece of 
> paper.

My terminology here is:

o [action] a highlevel "job" to be performed on the scene graph, ie. 
culling data for the active frustum. This is thus generic.

o [task] a specific low-level "job" performed by the render engine, ie. 
switching a state (simple) or drawing arbitrary geometry (complex). 
This is thus specific.

Do you think this is a bad choice? I can see both possibilities, as 
long as it is used consistently...:-)

-Phil
--
Philippe C.D. Robert
http://www.nice.ch/~phip