pub struct WireframeMaterial {
pub color: LinearRgba,
pub line_width: f32,
}Expand description
A material that renders geometry as a wireframe for debugging and editor visualization.
Wireframe materials are essential for debug views, editor gizmos, and understanding the underlying geometry of meshes. This material will integrate with the future EditorGizmo RenderLane (issue #167) and is designed for development and debugging, not production rendering.
§Performance Note
Wireframe rendering typically requires either:
- A geometry shader to generate line primitives
- Barycentric coordinates in the fragment shader
The exact implementation will depend on the graphics backend capabilities. This material is intended for debug/editor contexts where performance is less critical.
§Examples
use khora_core::asset::WireframeMaterial;
use khora_core::math::LinearRgba;
// Create a green wireframe for debug visualization
let debug_wireframe = WireframeMaterial {
color: LinearRgba::new(0.0, 1.0, 0.0, 1.0),
line_width: 1.5,
};
// Create a thin white wireframe for mesh inspection
let mesh_inspector = WireframeMaterial {
color: LinearRgba::new(1.0, 1.0, 1.0, 1.0),
line_width: 1.0,
};Fields§
§color: LinearRgbaThe color of the wireframe lines.
This color is used for all edges of the geometry. Typically bright colors like green, cyan, or white are used for maximum visibility against the scene.
line_width: f32The width of the wireframe lines in pixels.
Note that line width support varies by platform and graphics backend:
- Vulkan: Limited support for line widths other than 1.0
- Metal/DX12: Good support for varying line widths
- WebGPU: Limited to 1.0 pixel lines
For maximum compatibility, use 1.0. The rendering system may clamp this value based on backend capabilities.
Trait Implementations§
Source§impl<'__de, __Context> BorrowDecode<'__de, __Context> for WireframeMaterial
impl<'__de, __Context> BorrowDecode<'__de, __Context> for WireframeMaterial
Source§fn borrow_decode<__D: BorrowDecoder<'__de, Context = __Context>>(
decoder: &mut __D,
) -> Result<Self, DecodeError>
fn borrow_decode<__D: BorrowDecoder<'__de, Context = __Context>>( decoder: &mut __D, ) -> Result<Self, DecodeError>
Source§impl Clone for WireframeMaterial
impl Clone for WireframeMaterial
Source§fn clone(&self) -> WireframeMaterial
fn clone(&self) -> WireframeMaterial
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for WireframeMaterial
impl Debug for WireframeMaterial
Source§impl<__Context> Decode<__Context> for WireframeMaterial
impl<__Context> Decode<__Context> for WireframeMaterial
Source§impl Default for WireframeMaterial
impl Default for WireframeMaterial
Source§impl<'de> Deserialize<'de> for WireframeMaterial
impl<'de> Deserialize<'de> for WireframeMaterial
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl Encode for WireframeMaterial
impl Encode for WireframeMaterial
Source§impl Material for WireframeMaterial
impl Material for WireframeMaterial
Source§fn base_color(&self) -> LinearRgba
fn base_color(&self) -> LinearRgba
Source§fn emissive_color(&self) -> LinearRgba
fn emissive_color(&self) -> LinearRgba
Source§fn specular_power(&self) -> f32
fn specular_power(&self) -> f32
Source§fn ambient_color(&self) -> LinearRgba
fn ambient_color(&self) -> LinearRgba
Source§fn metallic(&self) -> f32
fn metallic(&self) -> f32
Source§fn roughness(&self) -> f32
fn roughness(&self) -> f32
Source§fn base_color_texture(&self) -> Option<AssetUUID>
fn base_color_texture(&self) -> Option<AssetUUID>
None (untextured).Source§fn metallic_roughness_texture(&self) -> Option<AssetUUID>
fn metallic_roughness_texture(&self) -> Option<AssetUUID>
None.Source§fn normal_map(&self) -> Option<AssetUUID>
fn normal_map(&self) -> Option<AssetUUID>
None.Source§fn emissive_texture(&self) -> Option<AssetUUID>
fn emissive_texture(&self) -> Option<AssetUUID>
None.Source§fn occlusion_map(&self) -> Option<AssetUUID>
fn occlusion_map(&self) -> Option<AssetUUID>
None.Source§fn alpha_mode(&self) -> AlphaMode
fn alpha_mode(&self) -> AlphaMode
AlphaMode::Mask
the contained value is the alpha-cutoff threshold: fragments below it are
discarded. Default implementation is AlphaMode::Opaque.Source§fn double_sided(&self) -> bool
fn double_sided(&self) -> bool
false (the default) culls back faces for correctly-wound meshes.