Skip to content

Commit d45f328

Browse files
committed
pixelbender: Support non-standard param qualifiers
Flash Player assumes input param for qualifiers not equal to 2.
1 parent aedfc1c commit d45f328

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

render/src/pixel_bender.rs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -152,12 +152,22 @@ pub enum PixelBenderRegKind {
152152
Int,
153153
}
154154

155-
#[derive(num_derive::FromPrimitive, Debug, PartialEq, Clone, Copy)]
155+
#[derive(Debug, PartialEq, Clone, Copy)]
156156
pub enum PixelBenderParamQualifier {
157157
Input = 1,
158158
Output = 2,
159159
}
160160

161+
impl PixelBenderParamQualifier {
162+
pub fn from_u8(v: u8) -> Self {
163+
if v == 2 {
164+
Self::Output
165+
} else {
166+
Self::Input
167+
}
168+
}
169+
}
170+
161171
impl Display for PixelBenderTypeOpcode {
162172
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
163173
write!(
@@ -568,8 +578,7 @@ fn read_op<R: Read>(
568578
}
569579
};
570580

571-
let qualifier = PixelBenderParamQualifier::from_u8(qualifier)
572-
.unwrap_or_else(|| panic!("Unexpected param qualifier {qualifier:?}"));
581+
let qualifier = PixelBenderParamQualifier::from_u8(qualifier);
573582
apply_metadata(shader, metadata);
574583

575584
shader.params.push(PixelBenderParam::Normal {

0 commit comments

Comments
 (0)