pub enum PropertyValue {
Show 21 variants
Float(f32),
FloatArray(Vec<f32>),
Int(i32),
IntArray(Vec<i32>),
UInt(u32),
UIntArray(Vec<u32>),
Vector2(Vector2<f32>),
Vector2Array(Vec<Vector2<f32>>),
Vector3(Vector3<f32>),
Vector3Array(Vec<Vector3<f32>>),
Vector4(Vector4<f32>),
Vector4Array(Vec<Vector4<f32>>),
Matrix2(Matrix2<f32>),
Matrix2Array(Vec<Matrix2<f32>>),
Matrix3(Matrix3<f32>),
Matrix3Array(Vec<Matrix3<f32>>),
Matrix4(Matrix4<f32>),
Matrix4Array(Vec<Matrix4<f32>>),
Bool(bool),
Color(Color),
Sampler {
value: Option<Texture>,
fallback: SamplerFallback,
},
}Expand description
A value of a property that will be used for rendering with a shader.
§Limitations
There is a limited set of possible types that can be passed to a shader, most of them are just simple data types.
Variants§
Float(f32)
Real number.
FloatArray(Vec<f32>)
Real number array.
Int(i32)
Integer number.
IntArray(Vec<i32>)
Integer number array.
UInt(u32)
Natural number.
UIntArray(Vec<u32>)
Natural number array.
Vector2(Vector2<f32>)
Two-dimensional vector.
Vector2Array(Vec<Vector2<f32>>)
Two-dimensional vector array.
Vector3(Vector3<f32>)
Three-dimensional vector.
Vector3Array(Vec<Vector3<f32>>)
Three-dimensional vector array.
Vector4(Vector4<f32>)
Four-dimensional vector.
Vector4Array(Vec<Vector4<f32>>)
Four-dimensional vector array.
Matrix2(Matrix2<f32>)
2x2 Matrix.
Matrix2Array(Vec<Matrix2<f32>>)
2x2 Matrix array.
Matrix3(Matrix3<f32>)
3x3 Matrix.
Matrix3Array(Vec<Matrix3<f32>>)
3x3 Matrix array.
Matrix4(Matrix4<f32>)
4x4 Matrix.
Matrix4Array(Vec<Matrix4<f32>>)
4x4 Matrix array.
Bool(bool)
Boolean value.
Color(Color)
An sRGB color.
§Conversion
The colors you see on your monitor are in sRGB color space, this is fine for simple cases of rendering, but not for complex things like lighting. Such things require color to be linear. Value of this variant will be automatically converted to linear color space before it passed to shader.
Sampler
A texture with fallback option.
§Fallback
Sometimes you don’t want to set a value to a sampler, or you even don’t have the appropriate one. There is fallback value that helps you with such situations, it defines a values that will be fetched from a sampler when there is no texture.
For example, standard shader has a lot of samplers defined: diffuse, normal, height, emission, mask, metallic, roughness, etc. In some situations you may not have all the textures, you have only diffuse texture, to keep rendering correct, each other property has appropriate fallback value. Normal sampler - a normal vector pointing up (+Y), height - zero, emission - zero, etc.
Fallback value is also helpful to catch missing textures, you’ll definitely know the texture is missing by very specific value in the fallback texture.
Implementations§
Source§impl PropertyValue
impl PropertyValue
Sourcepub fn as_float_array(&self) -> Option<&[f32]>
pub fn as_float_array(&self) -> Option<&[f32]>
Tries to unwrap property value as float array.
Sourcepub fn as_int_array(&self) -> Option<&[i32]>
pub fn as_int_array(&self) -> Option<&[i32]>
Tries to unwrap property value as integer array.
Sourcepub fn as_uint_array(&self) -> Option<&[u32]>
pub fn as_uint_array(&self) -> Option<&[u32]>
Tries to unwrap property value as unsigned integer array.
Sourcepub fn as_vector2(&self) -> Option<Vector2<f32>>
pub fn as_vector2(&self) -> Option<Vector2<f32>>
Tries to unwrap property value as two-dimensional vector.
Sourcepub fn as_vector2_array(&self) -> Option<&[Vector2<f32>]>
pub fn as_vector2_array(&self) -> Option<&[Vector2<f32>]>
Tries to unwrap property value as two-dimensional vector array.
Sourcepub fn as_vector3(&self) -> Option<Vector3<f32>>
pub fn as_vector3(&self) -> Option<Vector3<f32>>
Tries to unwrap property value as three-dimensional vector.
Sourcepub fn as_vector3_array(&self) -> Option<&[Vector3<f32>]>
pub fn as_vector3_array(&self) -> Option<&[Vector3<f32>]>
Tries to unwrap property value as three-dimensional vector array.
Sourcepub fn as_vector4(&self) -> Option<Vector4<f32>>
pub fn as_vector4(&self) -> Option<Vector4<f32>>
Tries to unwrap property value as four-dimensional vector.
Sourcepub fn as_vector4_array(&self) -> Option<&[Vector4<f32>]>
pub fn as_vector4_array(&self) -> Option<&[Vector4<f32>]>
Tries to unwrap property value as four-dimensional vector array.
Sourcepub fn as_matrix2(&self) -> Option<Matrix2<f32>>
pub fn as_matrix2(&self) -> Option<Matrix2<f32>>
Tries to unwrap property value as 2x2 matrix.
Sourcepub fn as_matrix2_array(&self) -> Option<&[Matrix2<f32>]>
pub fn as_matrix2_array(&self) -> Option<&[Matrix2<f32>]>
Tries to unwrap property value as 2x2 matrix array.
Sourcepub fn as_matrix3(&self) -> Option<Matrix3<f32>>
pub fn as_matrix3(&self) -> Option<Matrix3<f32>>
Tries to unwrap property value as 3x3 matrix.
Sourcepub fn as_matrix3_array(&self) -> Option<&[Matrix3<f32>]>
pub fn as_matrix3_array(&self) -> Option<&[Matrix3<f32>]>
Tries to unwrap property value as 3x3 matrix array.
Sourcepub fn as_matrix4(&self) -> Option<Matrix4<f32>>
pub fn as_matrix4(&self) -> Option<Matrix4<f32>>
Tries to unwrap property value as 4x4 matrix.
Sourcepub fn as_matrix4_array(&self) -> Option<&[Matrix4<f32>]>
pub fn as_matrix4_array(&self) -> Option<&[Matrix4<f32>]>
Tries to unwrap property value as 4x4 matrix array.
Sourcepub fn as_sampler(&self) -> Option<Texture>
pub fn as_sampler(&self) -> Option<Texture>
Tries to unwrap property value as texture.
Trait Implementations§
Source§impl Clone for PropertyValue
impl Clone for PropertyValue
Source§fn clone(&self) -> PropertyValue
fn clone(&self) -> PropertyValue
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for PropertyValue
impl Debug for PropertyValue
Source§impl Default for PropertyValue
impl Default for PropertyValue
Source§impl Visit for PropertyValuewhere
f32: Visit,
Vec<f32>: Visit,
i32: Visit,
Vec<i32>: Visit,
u32: Visit,
Vec<u32>: Visit,
Vector2<f32>: Visit,
Vec<Vector2<f32>>: Visit,
Vector3<f32>: Visit,
Vec<Vector3<f32>>: Visit,
Vector4<f32>: Visit,
Vec<Vector4<f32>>: Visit,
Matrix2<f32>: Visit,
Vec<Matrix2<f32>>: Visit,
Matrix3<f32>: Visit,
Vec<Matrix3<f32>>: Visit,
Matrix4<f32>: Visit,
Vec<Matrix4<f32>>: Visit,
bool: Visit,
Color: Visit,
Option<Texture>: Visit,
SamplerFallback: Visit,
impl Visit for PropertyValuewhere
f32: Visit,
Vec<f32>: Visit,
i32: Visit,
Vec<i32>: Visit,
u32: Visit,
Vec<u32>: Visit,
Vector2<f32>: Visit,
Vec<Vector2<f32>>: Visit,
Vector3<f32>: Visit,
Vec<Vector3<f32>>: Visit,
Vector4<f32>: Visit,
Vec<Vector4<f32>>: Visit,
Matrix2<f32>: Visit,
Vec<Matrix2<f32>>: Visit,
Matrix3<f32>: Visit,
Vec<Matrix3<f32>>: Visit,
Matrix4<f32>: Visit,
Vec<Matrix4<f32>>: Visit,
bool: Visit,
Color: Visit,
Option<Texture>: Visit,
SamplerFallback: Visit,
Auto Trait Implementations§
impl Freeze for PropertyValue
impl !RefUnwindSafe for PropertyValue
impl Send for PropertyValue
impl Sync for PropertyValue
impl Unpin for PropertyValue
impl !UnwindSafe for PropertyValue
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PropertyValue for Twhere
T: Debug + 'static,
impl<T> PropertyValue for Twhere
T: Debug + 'static,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.