primase-core 0.2.0

primase core: the world store, core components, frames, the pass manager and gates
Documentation
//! Shader programs and materials' bindings to them, as components, and what each thing a program reads and writes
//! stands for: the roles of its inputs, constants, textures, buffers and outputs ([`roles`]), how an output stores a
//! value ([`encoding`]), and the one reading of a pixel program's outputs as a lit surface ([`surface`]). The program's
//! own vocabulary (its interface, resources and render state) is `iridia_interface`'s.

mod binding;
pub mod blend;
mod derivation;
pub mod encoding;
mod facts;
mod input_fallback;
mod lights;
mod program;
mod program_frame;
pub mod roles;
mod select_variant;
mod shadow_atlas;
mod shadow_choice;
pub mod surface;

pub(crate) use binding::BindingPlace;
pub use binding::{SamplerBinding, ShaderBinding, StageBinding, TextureBinding, TextureSource};
pub use blend::{AlbedoLayer, Freeze, InputLink, LayeredAlbedo, Refusal, read_layered_albedo};
pub use derivation::{DerivedInput, DerivedStage, ShaderDerivation};
pub use encoding::{LaneAffine, NormalEncoding, NormalSpace, ScalarEncoding};
pub use facts::{MaterialPrograms, ProgramFacts, ProgramResourceFacts};
pub use input_fallback::{
    FallbackCoordinateCopies, FallbackCoordinates, InputFallback, InputFallbackValue,
    bind_fallback_uv_copies, bind_surface_input_fallbacks,
};
pub use lights::{
    LightField, LightIndices, LightListPart, LightLookup, LightTable, LightTableKind, LightValue, ListBits,
    ListConstant, ListUnknown, LocalShadow, LocalShadows, PackedLightLists, PackedLights, pack_light_lists,
};
pub use program::{LiftedShader, Shader};
pub use program_frame::{ProgramFrame, SpatialKind};
pub use roles::{
    Attribute, BufferBinding, BufferSource, BufferTable, ConstantBinding, ConstantRole, FrameParameter,
    FrameTexture, InputBinding, InputRole, InstanceLanes, InstanceValue, ItemParameter, KeyPart, LaneStream,
    ObjectMatrix, ObjectParameter, Occluded, OutputBinding, OutputRole, OutputUses, ScreenTriangleValue,
    SkinPrefix, VariantKey, ViewParameter, bind_output_uses, state_lines,
};
pub use select_variant::{SELECT_VARIANT, SelectVariant};
pub use shadow_atlas::{
    LocalShadowAtlas, ShadowDepth, ShadowDepthTerm, ShadowFace, ShadowFaceView, ShadowPlacement,
    ShadowedLight,
};
pub use shadow_choice::{ChosenShadows, LocalShadowChoice, ShadowOrder, ShadowView};
pub use surface::Surface;

mod specialise;
pub use specialise::{ShaderSpecialisations, SpecialisationCache, StageSpecialisation};