aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-03-14 01:54:57 +0100
committermetamuffin <metamuffin@disroot.org>2025-03-14 01:54:57 +0100
commitb9affdc70b3fa206c44e1fee352a85dc4f7a27b0 (patch)
tree0bc9030454a0f4b00801815e98710315dd348b45 /src
parent56cbc53c8b9b82e7705e268e3cb1bc1e36cdadac (diff)
downloadunity-tools-b9affdc70b3fa206c44e1fee352a85dc4f7a27b0.tar
unity-tools-b9affdc70b3fa206c44e1fee352a85dc4f7a27b0.tar.bz2
unity-tools-b9affdc70b3fa206c44e1fee352a85dc4f7a27b0.tar.zst
other vertex formats
Diffstat (limited to 'src')
-rw-r--r--src/classes/mesh.rs12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/classes/mesh.rs b/src/classes/mesh.rs
index b6e6821..b8b9e90 100644
--- a/src/classes/mesh.rs
+++ b/src/classes/mesh.rs
@@ -162,7 +162,16 @@ impl VertexData {
out.push(match channel.format {
VertexFormat::Float => f32::from_le_bytes([e[0], e[1], e[2], e[3]]),
VertexFormat::Float16 => f16::from_le_bytes([e[0], e[1]]) as f32,
- x => todo!("vertex format {x:?}"),
+ VertexFormat::SInt8 => i8::from_le_bytes([e[0]]) as f32,
+ VertexFormat::UInt8 => u8::from_le_bytes([e[0]]) as f32,
+ VertexFormat::SInt16 => i16::from_le_bytes([e[0], e[1]]) as f32,
+ VertexFormat::UInt16 => u16::from_le_bytes([e[0], e[1]]) as f32,
+ VertexFormat::SInt32 => i32::from_le_bytes([e[0], e[1], e[2], e[3]]) as f32,
+ VertexFormat::UInt32 => u32::from_le_bytes([e[0], e[1], e[2], e[3]]) as f32,
+ VertexFormat::UNorm8 => u8::from_le_bytes([e[0]]) as f32 / 256.,
+ VertexFormat::SNorm8 => i8::from_le_bytes([e[0]]) as f32 / 128.,
+ VertexFormat::UNorm16 => u16::from_le_bytes([e[0], e[1]]) as f32 / 65536.,
+ VertexFormat::SNorm16 => i16::from_le_bytes([e[0], e[1]]) as f32 / 32768.,
})
}
}
@@ -242,6 +251,7 @@ impl FromValue for VertexFormat {
}
}
}
+
impl VertexFormat {
pub fn component_size(&self) -> usize {
use VertexFormat::*;