vmt_parser/material/
spritecard.rs

1use super::deserialize_path;
2use crate::{default_scale, Vec2};
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
6pub struct SpriteCardMaterial {
7    /// Defines an albedo texture.
8    #[serde(
9        rename = "$basetexture",
10        default,
11        deserialize_with = "deserialize_path"
12    )]
13    pub base_texture: Option<String>,
14    /// Links the surface to a set of physical properties.
15    #[serde(rename = "$surfaceprop", default)]
16    pub surface_prop: Option<String>,
17
18    #[serde(rename = "$spriteorigin", default)]
19    pub sprite_origin: Vec2,
20
21    #[serde(rename = "$additive", default)]
22    pub additive: bool,
23
24    #[serde(rename = "$overbrightfactor", default)]
25    pub over_bright_factor: f32,
26
27    /// Use computed vertex colors.
28    #[serde(rename = "$vertexcolor", default)]
29    pub vertex_color: bool,
30    /// Use computed vertex alpha.
31    #[serde(rename = "$vertexalpha", default)]
32    pub vertex_alpha: bool,
33
34    /// Scales the opacity of an entire material.
35    #[serde(rename = "$alpha", default = "default_scale")]
36    pub alpha: f32,
37    /// Specifies that the material should be partially see-through.
38    #[serde(rename = "$translucent", default)]
39    pub translucent: bool,
40    /// Disables backface culling.
41    #[serde(rename = "$nocull", default)]
42    pub no_cull: bool,
43
44    /// Multiply the output by 2x.
45    #[serde(rename = "$mod2x", default)]
46    pub mod_2x: bool,
47    /// Are we opaque? Default 0.
48    #[serde(rename = "$opaque", default)]
49    pub opaque: bool,
50
51    /// Multiply output RGB by intensity factor.
52    #[serde(rename = "$intensity", default = "default_scale")]
53    pub intensity: f32,
54}