From f46a32462e6b989e666329588cb10c9a9f4fd6ed Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Mon, 2 Jun 2025 17:44:04 -0400 Subject: [PATCH] Remove texture usage enum from Sampler This is a bit of an awkward API, because we have to manually keep the CRC list up-to-date when in other cases that's left up to consumers. I added a comment about how to figure out this value. --- src/mtrl.rs | 56 ++--------------------------------------------------- src/shpk.rs | 1 + 2 files changed, 3 insertions(+), 54 deletions(-) diff --git a/src/mtrl.rs b/src/mtrl.rs index d65550f..89a2884 100644 --- a/src/mtrl.rs +++ b/src/mtrl.rs @@ -317,65 +317,13 @@ pub struct Constant { values: [f32; 4], } -// from https://github.com/NotAdam/Lumina/blob/master/src/Lumina/Data/Parsing/MtrlStructs.cs -#[binrw] -#[repr(u8)] -#[derive(Debug, Clone, Copy)] -pub enum TextureUsage { - #[brw(magic = 0x88408C04u32)] - Sampler, - #[brw(magic = 0x213CB439u32)] - Sampler0, - #[brw(magic = 0x563B84AFu32)] - Sampler1, - #[brw(magic = 0xFEA0F3D2u32)] - SamplerCatchlight, - #[brw(magic = 0x1E6FEF9Cu32)] - SamplerColorMap0, - #[brw(magic = 0x6968DF0Au32)] - SamplerColorMap1, - #[brw(magic = 0x115306BEu32)] - SamplerDiffuse, - #[brw(magic = 0xF8D7957Au32)] - SamplerEnvMap, - #[brw(magic = 0x8A4E82B6u32)] - SamplerMask, - #[brw(magic = 0x0C5EC1F1u32)] - SamplerNormal, - #[brw(magic = 0xAAB4D9E9u32)] - SamplerNormalMap0, - #[brw(magic = 0xDDB3E97Fu32)] - SamplerNormalMap1, - #[brw(magic = 0x87F6474Du32)] - SamplerReflection, - #[brw(magic = 0x2B99E025u32)] - SamplerSpecular, - #[brw(magic = 0x1BBC2F12u32)] - SamplerSpecularMap0, - #[brw(magic = 0x6CBB1F84u32)] - SamplerSpecularMap1, - #[brw(magic = 0xE6321AFCu32)] - SamplerWaveMap, - #[brw(magic = 0x574E22D6u32)] - SamplerWaveletMap0, - #[brw(magic = 0x20491240u32)] - SamplerWaveletMap1, - #[brw(magic = 0x95E1F64Du32)] - SamplerWhitecapMap, - - #[brw(magic = 0x565f8fd8u32)] - UnknownDawntrail1, - - #[brw(magic = 0xe5338c17u32)] - UnknownDawntrail2, -} - #[binrw] #[derive(Debug, Clone, Copy)] #[repr(C)] #[allow(dead_code)] pub struct Sampler { - texture_usage: TextureUsage, + /// This is a CRC hash, it can be calculated via ShaderPackage::crc + pub texture_usage: u32, flags: u32, // TODO: unknown texture_index: u8, unknown1: u8, diff --git a/src/shpk.rs b/src/shpk.rs index d7f76c2..afdbf00 100644 --- a/src/shpk.rs +++ b/src/shpk.rs @@ -305,6 +305,7 @@ mod tests { fn test_crc() { assert_eq!(ShaderPackage::crc("PASS_0"), 0xC5A5389C); assert_eq!(ShaderPackage::crc("DecodeDepthBuffer"), 0x2C6C023C); + assert_eq!(ShaderPackage::crc("g_Sampler"), 0x88408C04); } #[test]