Effects and shaders
Load an effect
var myEffect = EffectSystem.LoadEffect("MyEffect").WaitForResult();
You can then bind the effect as pipeline state.
An effect also often defines a set of parameters. To set these, you need to bind resources before drawing.
Shaders are authored in the Stride's shading language, which is an extension of
HLSL. They provide true composition of modular shaders via inheritance, shader mixins and automatic weaving of shader in-out attributes.
Effects in Stride use C#-like syntax to further combine shaders. They provide conditional composition of shaders to generate effect permutations.
As some platforms can't compile shaders at runtime (eg iOS, Android, etc), effect permutation files (
.sdeffectlog) are used to enumerate all permutations ahead of time.
Stride shaders are converted automatically to the target graphics platform — either plain HLSL for Direct3D,
GLSL for OpenGL, or
SPIR-V for Vulkan platforms.
For mobile platforms, shaders are optimized by a GLSL optimizer to improve performance.