mirror of
https://github.com/bevyengine/bevy
synced 2024-12-30 15:03:23 +00:00
7fc6db32ce
# Objective Discovered that PointLight did not implement FromReflect. Adding FromReflect where Reflect is used. I overreached and applied this rule everywhere there was a Reflect without a FromReflect, except from where the compiler wouldn't allow me. Based from question: https://github.com/bevyengine/bevy/discussions/8774 ## Solution - Adding FromReflect where Reflect was already derived ## Notes First PR I do in this ecosystem, so not sure if this is the usual approach, that is, to touch many files at once. --------- Co-authored-by: Alice Cecile <alice.i.cecile@gmail.com>
51 lines
2.3 KiB
Rust
51 lines
2.3 KiB
Rust
use bevy_reflect::std_traits::ReflectDefault;
|
|
use bevy_reflect::{FromReflect, Reflect, ReflectFromReflect};
|
|
|
|
// TODO: add discussion about performance.
|
|
/// Sets how a material's base color alpha channel is used for transparency.
|
|
#[derive(Debug, Default, Reflect, Copy, Clone, PartialEq, FromReflect)]
|
|
#[reflect(Default, Debug, FromReflect)]
|
|
pub enum AlphaMode {
|
|
/// Base color alpha values are overridden to be fully opaque (1.0).
|
|
#[default]
|
|
Opaque,
|
|
/// Reduce transparency to fully opaque or fully transparent
|
|
/// based on a threshold.
|
|
///
|
|
/// Compares the base color alpha value to the specified threshold.
|
|
/// If the value is below the threshold,
|
|
/// considers the color to be fully transparent (alpha is set to 0.0).
|
|
/// If it is equal to or above the threshold,
|
|
/// considers the color to be fully opaque (alpha is set to 1.0).
|
|
Mask(f32),
|
|
/// The base color alpha value defines the opacity of the color.
|
|
/// Standard alpha-blending is used to blend the fragment's color
|
|
/// with the color behind it.
|
|
Blend,
|
|
/// Similar to [`AlphaMode::Blend`], however assumes RGB channel values are
|
|
/// [premultiplied](https://en.wikipedia.org/wiki/Alpha_compositing#Straight_versus_premultiplied).
|
|
///
|
|
/// For otherwise constant RGB values, behaves more like [`AlphaMode::Blend`] for
|
|
/// alpha values closer to 1.0, and more like [`AlphaMode::Add`] for
|
|
/// alpha values closer to 0.0.
|
|
///
|
|
/// Can be used to avoid “border” or “outline” artifacts that can occur
|
|
/// when using plain alpha-blended textures.
|
|
Premultiplied,
|
|
/// Combines the color of the fragments with the colors behind them in an
|
|
/// additive process, (i.e. like light) producing lighter results.
|
|
///
|
|
/// Black produces no effect. Alpha values can be used to modulate the result.
|
|
///
|
|
/// Useful for effects like holograms, ghosts, lasers and other energy beams.
|
|
Add,
|
|
/// Combines the color of the fragments with the colors behind them in a
|
|
/// multiplicative process, (i.e. like pigments) producing darker results.
|
|
///
|
|
/// White produces no effect. Alpha values can be used to modulate the result.
|
|
///
|
|
/// Useful for effects like stained glass, window tint film and some colored liquids.
|
|
Multiply,
|
|
}
|
|
|
|
impl Eq for AlphaMode {}
|