Vixen
02b45cc4
csharp
public interface IMaterialFeature

One choice in a material's feature tree — a base workflow, a normal map, a clear coat.

Read the guide page for this →

Remarks

Stride's composable model, resolved through Raven's compose rather than through a mixin system: a feature names the shader that implements it, and MaterialCompiler turns a list of them into the bindings that select those shaders and the parameters that feed them. Adding a feature is a shader in Raven/Library/Material and an implementation of this — no registration table, and nothing in the pass changes.

An interface with a [DataContract] name per implementation, which is how the rest of the engine does polymorphism in a file: the contract name is the YAML tag, so !MetalRoughness selects the type.

A feature is values, not resources. Every parameter here is written into the material's constant buffer; a feature that samples a texture needs a descriptor, and which binding index it lands on is the compiled shader's decision — the same authoring gap the compositor's nodes have. Until it closes, a textured material sets the values and a host builds the descriptor set.

Fields and properties (1)

  • string ShaderName

    The Raven shader implementing this feature, from Raven/Library/Material.

Methods (1)

Used by (27)

  • AnisotropyFeatureVixen.Rendering
  • BlendFeatureVixen.Rendering
  • ClearCoatFeatureVixen.Rendering
  • ClearCoatNormalMapFeatureVixen.Rendering
  • EmissiveFeatureVixen.Rendering
  • MaterialCompilationContextVixen.Rendering
  • MaterialCompilerVixen.Rendering
  • MaterialCompilerTestsVixen.Rendering.Tests
  • MaterialContentVixen.Rendering
  • MaterialDescriptorVixen.Rendering
  • MaterialLayersFeatureVixen.Rendering
  • MaterialSurfaceVixen.Rendering
  • MaterialSurfaceTestsVixen.Rendering.Tests
  • MetalRoughnessFeatureVixen.Rendering
  • NormalMapFeatureVixen.Rendering
  • OcclusionFeatureVixen.Rendering
  • SheenFeatureVixen.Rendering
  • SpecularGlossinessFeatureVixen.Rendering
  • SubsurfaceFeatureVixen.Rendering
  • TexturedMaterialTestsVixen.Rendering.Tests
  • TexturedMetalRoughnessFeatureVixen.Rendering
  • Vixen_Rendering_Materials_BlendFeatureSerializerVixen.Rendering
  • Vixen_Rendering_Materials_MaterialContentSerializerVixen.Rendering
  • Vixen_Rendering_Materials_MaterialDescriptorSerializerVixen.Rendering
  • MaterialAssetVixen.Editor.AssetEditors
  • TypeRegistrationVixen.Editor.AssetEditors
  • Vixen_Editor_AssetEditors_Materials_MaterialAssetSerializerVixen.Editor.AssetEditors