diff --git a/src/back/glsl.rs b/src/back/glsl.rs index 25f2cc86c6..042a0991ee 100644 --- a/src/back/glsl.rs +++ b/src/back/glsl.rs @@ -170,15 +170,6 @@ pub fn write(module: &Module, out: &mut impl Write) -> Result<(), Error> { .map(|(handle, local)| (handle, namer(local.name.as_ref()))) .collect(); - for (handle, name) in locals.iter() { - writeln!( - out, - "{} {};", - write_type(func.local_variables[*handle].ty, &module.types, &structs)?, - name - )?; - } - let mut builder = StatementBuilder { functions: &functions, globals: &globals_lookup, @@ -194,6 +185,22 @@ pub fn write(module: &Module, out: &mut impl Write) -> Result<(), Error> { locals: &func.local_variables, }; + for (handle, name) in locals.iter() { + let ty = write_type(func.local_variables[*handle].ty, &module.types, &structs)?; + let init = func.local_variables[*handle].init; + if let Some(init) = init { + writeln!( + out, + "{} {} = {init};", + ty, + name, + init = write_expression(&func.expressions[init], &module, &mut builder)?.0, + )?; + } else { + writeln!(out, "{} {};", ty, name,)?; + } + } + for sta in func.body.iter() { writeln!(out, "{}", write_statement(sta, module, &mut builder)?)?; }