Originally Posted by: PG 
It seems to me that access to the shader subsystem is via
BaseShader, and it appears to operate a bit like BasicEffect in XNA; That is to say, a lot of very advanced features built into and optimised within it. Are you saying that when I get hold of Delta Engine's source code it will include the code behind BaseShader to the point of also having all the HLSL/GLSL/etc code along with it - such that I could look to extend this class myself?
There are not many similarities between BasicEffect and BaseShader. BaseShader is just the base class and you can derive from it (via the Shader class in Delta.Graphics.Basics) and add whatever you want.
As you can see from my screenshot, yes currently it is all based on Shader Feature Flags, but there is also the possibility to add Shader Nodes with our new editor coming soon (still backward compatible with the Shader Feature Flags) and if you don't like it or just want to quickly add an advanced shader for your platform, you can do so (just call LoadShaderCode(string shaderCode) with your own shader code (works on all platforms) or do it on your own in each platform implementation (like for DirectX 11 you might want way more complex code with geometry shaders, tesslation, pixel and vertex shaders, etc.).
Originally Posted by: PG 
I realise that I might extend it in ways that might only be viable on faster hardware - or might not work on older hardware at all (eg perhaps I might not bother doing anything with OpenGL ES 1.x) - but I don't see that as all that different from the fact that DeltaEngine is looking to incorporate advanced things like ragdoll physics. Ok, so advanced physics models incorporated into DE might technically work on any hardware - but in practice it might run too slow on older hardware to really do all that much with... :)
Well, that is hard to answer. If you just use the engine with all the default settings and limitations we put in place, you really have an easy time to write a game that runs great on all platforms. But of course you will have to live with the limitations (e.g. polygon limits or number of meshes allowed per level). Now since the engine is so open you can easily change any of these limitations (both in your content project and of course in the engine code), then things get more complicated.
So in your example: If you use the Shader Feature Flags or Shader Node Editor you can build whatever shader you like, it will still ran fast even on the most limited platforms (like WP7 with no custom shader support) or on crappy old hardware (ES 1.1). It might not look as great as you expect because some fallback will be used, but at least it works and it is fast. And it all happened without you having to optimize for all those platforms yourself.
Another example would be particle effects, you create the best looking effects, but the limitations will reduce your complexity on slower platforms (again, won't look so great there, but still work). Now you have great looking effects on fast platforms and not so great looking, but still very nicely performing particle effects on older slower platforms.
And finally things like Physics or slow Game Code are covered by the limitation how many game updates you can do on slow platforms. So even if Ragdoll is eating up a lot of the CPU cycles, it will only do so a few times per second, the rest of the game will still run fast. As long as you use Physics via the interfaces we provide we can put all these optimizations and more in place, but if you go on your own road and do not use our interfaces and helper classes, you game will still run fine, but you are on your own optimizing it :)
Originally Posted by: PG 
(And I don't mean to be critical of BaseShader in asking this. Clearly from seeing SoulCraft and the like it's extremely capable. It's just that I'm a programmer with a maths background and love getting my hands dirty with stuff like low level shader tricks :))
As I just said, you can do whatever you want. We might be a little more closed in the beginning and we probably will keep some things protected in the beta (like the base classes, which should not change too often, it would break everything), but when we have a stable v1.0 release everything will be available and changeable. You can get your hands as dirty as you want.
Currently some things are easy to change (adding stuff on top), other things are a little closed of (like content related classes) because we need to finish our tools and the basics first before all hell can brake lose and people start changing the engine in different directions (we don't want 50 different versions of the Delta Engine in the beta, one is enough to maintain ^^).