Hi J-S,

I've got it. Thanks for the clarification.
OSG is great work!

- Werner -

> Hello Werner,
> 
> > Yes, I see your point but I don't agree.
> > Hardcoding a shader in a shadow technique isn't a better way at all.
> > It leeds to the same problems you take for argument against my proposal.
> > On the other hand it forces me to cut and paste the code into my derived
> > class and I will njot profit from any improvements (like my submission
> > for specular lights).
> > So I'll do it for myself only.
> 
> I have always thought of the shaders in the code as being for guidance
> only. I don't think anyone will use those shaders directly. You have to
> keep in mind, OSG is not a graphics engine. It is a graphics API, on top
> of which you develop your own graphics engine. So the shaders in the
> code show you how the shadow map should be accessed, but they are not
> general "do all the effects you want in your engine" shaders. You do
> those yourself.
> 
> So IMHO, copying the code from the shadow technique's cpp is not a
> drawback, it's just part of the process, and it takes 2 seconds. Then
> you do what you want with it.
> 
> > I'm doing commercial projects and I need this functionality now. So I
> > have to do it, at least locally here.
> 
> I don't think you NEED this functionality. You can do it yourself
> without any change to the shadow technique classes, as I said just put
> your own shaders in the graph anywhere - the shadow map texture will be
> available anywhere under the shadowedScene, so you can use it. That's
> what we do, and it works great (not as well as shader composition, see
> below, but it's fine given the current state of things).
> 
> > Having shader composition would be REALLY GREAT!! Is there any estimate
> > for availability?
> 
> It was supposed to be the one big thing that needed to be done for OSG
> 3.0 to be released, but I think Robert pushed it back because it's been
> too long since the last stable release and waiting for shader
> composition in order to make 3.0 is not realistic if we want a stable
> release soon.
> 
> > I have a question in general: It is my feeling that shaders should not be
> > seen as part of shadow techniques.
> 
> EXACTLY the point I made above. The shaders in the cpp should be used as
> guidance. Personally I don't even use the setStandardFragmentShader(),
> setShadowFragmentShader()... methods at all, I just place shaders in my
> graph so they override the default ones.
> 
> > Doing shadows is just on of many aspect for shaders. And in principle for
> > most shadows they do the same job independent of shadow technique. They
> > get a shadow texture and use it for manipulation of colors. So why
> > shouldn't a shodow texture generated by any derivative of
> > StandardShadowMap produce soft shadows? It is just a shader function.
> 
> Yes, you can filter your shadows the way you like.
> 
> > So having a nice "general purpose shader" providing functions for shadow,
> > soft shadow etc. in my opinion would be covering most user requirements.
> > Switching functions on and of by uniforms would give the user/developer
> > the real flexibility. Right now I'm facing the problem that any self
> > written shader changes scene optics depending on what shadow technique
> > was chosen somewhere. Any change of independantly written shaders also
> > mostly changes the optics of the scene.
> > We could invest on common improvements, implement bump mapping, fog,
> > vertex manipulation and many more and just switch it on and of by
> > uniforms.
> 
> This is what an engine would do. But see my comment above, OSG is not an
> engine.
> 
> The problem is that until we have official support for shader
> composition, different developers will want to implement shader support
> in different ways. There are essentially two ways: a scene-wide "uber
> shader" that you control with uniforms, like what you suggest above, or
> smaller shaders that only do what is needed and are placed in different
> places in the graph. Depending on your bottleneck, these two approaches
> will give different performance - the first introduces more branching in
> shaders, and the second increases the number of times the pipeline will
> switch shaders, possibly causing pipeline resets/flushes. All the
> literature I've seen suggests that uber shaders are worse than using
> smaller shaders where they're needed, as long as state sorting can
> reduce the number of shader switches to a minimum, but the big drawbacks
> are code duplication (if you make all shaders be in a single file) or
> having to manage where you place each shader fragment (if you separate
> functions into their own files).
> 
> With shader composition you get the best of both worlds, because you can
> write parts of shaders once, and have functions be overridden lower in
> the graph, without having to place complete shaders everywhere.
> 
> > I know there is no shader covering every need, but it would be easy to
> > expand functionality either for one self or as submission to the
> > community.
> 
> Again, OSG is not an engine. It's just not its focus. If OSG wants to
> stay a thin layer over OpenGL (at its core) it needs to give you more
> flexibility and not impose any shaders. You, as the app developer, can
> do things the way you want.
> 
> I think this focus could be made to change in the future, but for now
> there are already many OSG-based engines out there. You can use one of
> those if you want, or use OSG directly and make your own decisions about
> how your pipeline is built. I won't comment this focus anymore I think,
> so if you have further questions about it I'll let Robert answer.
> 
> Hope this helps,
> 
> J-S
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to