Skip to content

Separate shader features & passes #543

@adriengivry

Description

@adriengivry

User Problem

The material editor is designed to only show properties that are relevant for the material given its current feature set. In a similar fashion, the material will only serialize properties that are relevant given its current feature set.

This leads to settings that are pass-specific (such as u_ShadowClippingThreshold for the SHADOW_PASS feature), to not be displayed in the material editor, although they should be exposed to the user somehow.

Feature Description

The multi-compile/variant system should be decoupled to support 2 similar yet different systems:

  • features
  • passes

The SHADOW_PASS, which is currently a feature, should be known and recognized on the engine side as a "pass", this way, pass-related settings could still be displayed in the material editor, potentially under a different category, and still serialized. Passes should not be displayed in the feature list.

Features & passes could be declared as follows:

#pass SHADOW_PASS
#feature PARALLAX_MAPPING
#feature ALPHA_CLIPPING
#feature ALPHA_DITHERING
#feature NORMAL_MAPPING
#feature DISTANCE_FADE
#feature SPECULAR_WORKFLOW
#feature GAMMA_CORRECTION

The rest of the code would remain unchanged.

Screenshots

Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    GraphicsGraphical feature

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions