use bevy_reflect::{prelude::ReflectDefault, Reflect};12/// Render method used for opaque materials.3///4/// The forward rendering main pass draws each mesh entity and shades it according to its5/// corresponding material and the lights that affect it. Some render features like Screen Space6/// Ambient Occlusion require running depth and normal prepasses, that are 'deferred'-like7/// prepasses over all mesh entities to populate depth and normal textures. This means that when8/// using render features that require running prepasses, multiple passes over all visible geometry9/// are required. This can be slow if there is a lot of geometry that cannot be batched into few10/// draws.11///12/// Deferred rendering runs a prepass to gather not only geometric information like depth and13/// normals, but also all the material properties like base color, emissive color, reflectance,14/// metalness, etc, and writes them into a deferred 'g-buffer' texture. The deferred main pass is15/// then a fullscreen pass that reads data from these textures and executes shading. This allows16/// for one pass over geometry, but is at the cost of not being able to use MSAA, and has heavier17/// bandwidth usage which can be unsuitable for low end mobile or other bandwidth-constrained devices.18///19/// If a material indicates `OpaqueRendererMethod::Auto`, `DefaultOpaqueRendererMethod` will be used.20#[derive(Default, Clone, Copy, Debug, PartialEq, Reflect)]21#[reflect(Default, Clone, PartialEq)]22pub enum OpaqueRendererMethod {23#[default]24Forward,25Deferred,26Auto,27}282930