presets: trim aliases and shader parameter names

This commit is contained in:
chyyran 2024-09-16 19:18:10 -04:00 committed by Ronny Chan
parent cbe6510f76
commit 6cdd9247de
2 changed files with 11 additions and 9 deletions

View file

@ -282,7 +282,7 @@ pub fn parse_values(
{ {
let parameter_name_string: &str = token.value.fragment(); let parameter_name_string: &str = token.value.fragment();
for parameter_name in parameter_name_string.split(';') { for parameter_name in parameter_name_string.split(';') {
parameter_names.push(parameter_name); parameter_names.push(parameter_name.trim());
} }
} }
} }
@ -294,7 +294,7 @@ pub fn parse_values(
{ {
let texture_name_string: &str = token.value.fragment(); let texture_name_string: &str = token.value.fragment();
for texture_name in texture_name_string.split(';') { for texture_name in texture_name_string.split(';') {
texture_names.push(texture_name); texture_names.push(texture_name.trim());
} }
} }
} }
@ -339,6 +339,7 @@ pub fn parse_values(
MakeExtractIf::extract_if(tokens, |token| texture_names.contains(token.key.fragment())) MakeExtractIf::extract_if(tokens, |token| texture_names.contains(token.key.fragment()))
{ {
let mut relative_path = path.to_path_buf(); let mut relative_path = path.to_path_buf();
// Don't trim paths
relative_path.push(*token.value.fragment()); relative_path.push(*token.value.fragment());
relative_path relative_path
.canonicalize() .canonicalize()
@ -404,7 +405,7 @@ pub fn parse_values(
let mut rest_tokens = Vec::new(); let mut rest_tokens = Vec::new();
// hopefully no more textures left in the token tree // hopefully no more textures left in the token tree
for (p, token) in tokens { for (p, token) in tokens {
if parameter_names.contains(token.key.fragment()) { if parameter_names.contains(&token.key.fragment().trim()) {
let param_val = from_float(token.value) let param_val = from_float(token.value)
// This is literally just to work around BEAM_PROFILE in crt-hyllian-sinc-glow.slangp // This is literally just to work around BEAM_PROFILE in crt-hyllian-sinc-glow.slangp
// which has ""0'.000000". This somehow works in RA because it defaults to 0, probably. // which has ""0'.000000". This somehow works in RA because it defaults to 0, probably.
@ -412,7 +413,7 @@ pub fn parse_values(
// params (god help me), it would be pretty bad because we lose texture path fallback. // params (god help me), it would be pretty bad because we lose texture path fallback.
.unwrap_or(0.0); .unwrap_or(0.0);
values.push(Value::Parameter( values.push(Value::Parameter(
ShortString::from(*token.key.fragment()), ShortString::from(token.key.fragment().trim()),
param_val, param_val,
)); ));
continue; continue;
@ -495,7 +496,7 @@ pub fn parse_values(
if let Ok((_, idx)) = parse_indexed_key("alias", token.key) { if let Ok((_, idx)) = parse_indexed_key("alias", token.key) {
values.push(Value::Alias( values.push(Value::Alias(
idx, idx,
ShortString::from(*token.value.fragment()), ShortString::from(token.value.fragment().trim()),
)); ));
continue; continue;
} }
@ -559,7 +560,7 @@ pub fn parse_values(
// handle undeclared parameters after parsing everything else as a last resort. // handle undeclared parameters after parsing everything else as a last resort.
if let Ok(param_val) = from_float(token.value) { if let Ok(param_val) = from_float(token.value) {
values.push(Value::Parameter( values.push(Value::Parameter(
ShortString::from(*token.key.fragment()), ShortString::from(token.key.fragment().trim()),
param_val, param_val,
)); ));
} }
@ -570,6 +571,7 @@ pub fn parse_values(
.all(|k| !token.key.ends_with(k)) .all(|k| !token.key.ends_with(k))
{ {
let mut relative_path = path.to_path_buf(); let mut relative_path = path.to_path_buf();
// Don't trim paths.
relative_path.push(*token.value.fragment()); relative_path.push(*token.value.fragment());
relative_path relative_path
.canonicalize() .canonicalize()
@ -633,7 +635,7 @@ mod test {
#[test] #[test]
pub fn parse_basic() { pub fn parse_basic() {
let root = let root =
PathBuf::from("../test/slang-shaders/bezel/Mega_Bezel/Presets/Base_CRT_Presets/MBZ__3__STD__MEGATRON-NTSC.slangp"); PathBuf::from("../test/shaders_slang/bezel/Mega_Bezel/Presets/Base_CRT_Presets/MBZ__3__STD__MEGATRON-NTSC.slangp");
let basic = parse_preset(root, WildcardContext::new()); let basic = parse_preset(root, WildcardContext::new());
eprintln!("{basic:?}"); eprintln!("{basic:?}");
assert!(basic.is_ok()); assert!(basic.is_ok());

View file

@ -15,9 +15,9 @@ use librashader_runtime_d3d11::options::FilterChainOptionsD3D11;
// const FILTER_PATH: &str = "../test/shaders_slang/crt/crt-royale.slangp"; // const FILTER_PATH: &str = "../test/shaders_slang/crt/crt-royale.slangp";
// const FILTER_PATH: &str = "../test/slang-shaders/test/history.slangp"; // const FILTER_PATH: &str = "../test/slang-shaders/test/history.slangp";
const FILTER_PATH: &str = "../test/shaders_slang/test/feedback.slangp"; // const FILTER_PATH: &str = "../test/shaders_slang/test/feedback.slangp";
// const FILTER_PATH: &str = "../test/shaders_slang/crt/crt-geom-deluxe.slangp"; const FILTER_PATH: &str = "../test/shaders_slang/crt/crt-guest-advanced-ntsc.slangp";
const IMAGE_PATH: &str = "../triangle.png"; const IMAGE_PATH: &str = "../triangle.png";
#[test] #[test]
fn triangle_d3d11_args() { fn triangle_d3d11_args() {