mirror of
https://github.com/gfx-rs/wgpu.git
synced 2026-04-22 03:02:01 -04:00
[spv-in] flip Y axis
This commit is contained in:
committed by
Dzmitry Malyshau
parent
4389a86787
commit
ab54f683be
@@ -279,12 +279,41 @@ impl<I: Iterator<Item = u32>> super::Parser<I> {
|
||||
}
|
||||
}
|
||||
|
||||
let old_len = function.expressions.len();
|
||||
for component in components.iter_mut() {
|
||||
*component = function.expressions.append(crate::Expression::Load {
|
||||
pointer: *component,
|
||||
let position_index = members.iter().position(|member| match member.binding {
|
||||
Some(crate::Binding::BuiltIn(crate::BuiltIn::Position)) => true,
|
||||
_ => false,
|
||||
});
|
||||
if let Some(component_index) = position_index {
|
||||
let old_len = function.expressions.len();
|
||||
let global_expr = components[component_index];
|
||||
let access_expr = function.expressions.append(crate::Expression::AccessIndex {
|
||||
base: global_expr,
|
||||
index: 1,
|
||||
});
|
||||
let load_expr = function.expressions.append(crate::Expression::Load {
|
||||
pointer: access_expr,
|
||||
});
|
||||
let neg_expr = function.expressions.append(crate::Expression::Unary {
|
||||
op: crate::UnaryOperator::Negate,
|
||||
expr: load_expr,
|
||||
});
|
||||
function.body.push(crate::Statement::Emit(
|
||||
function.expressions.range_from(old_len),
|
||||
));
|
||||
function.body.push(crate::Statement::Store {
|
||||
pointer: access_expr,
|
||||
value: neg_expr,
|
||||
});
|
||||
}
|
||||
|
||||
let old_len = function.expressions.len();
|
||||
for component in components.iter_mut() {
|
||||
let load_expr = crate::Expression::Load {
|
||||
pointer: *component,
|
||||
};
|
||||
*component = function.expressions.append(load_expr);
|
||||
}
|
||||
|
||||
match members.len() {
|
||||
0 => {}
|
||||
1 => {
|
||||
|
||||
@@ -1825,6 +1825,7 @@ impl<I: Iterator<Item = u32>> Parser<I> {
|
||||
crate::Module::default()
|
||||
};
|
||||
|
||||
// register indexing constants
|
||||
self.index_constants.clear();
|
||||
for i in 0..4 {
|
||||
let handle = module.constants.append(crate::Constant {
|
||||
|
||||
@@ -69,6 +69,7 @@ vertex main2Output main2(
|
||||
a_uv = a_uv1;
|
||||
a_pos = a_pos1;
|
||||
main1(v_uv, a_uv, _, a_pos);
|
||||
_.gl_Position.y = -_.gl_Position.y;
|
||||
const auto _tmp = type10 {v_uv, _.gl_Position, _.gl_PointSize, {_.gl_ClipDistance[0]}};
|
||||
return main2Output { _tmp.member, _tmp.gl_Position1, _tmp.gl_PointSize1, {_tmp.gl_ClipDistance1[0]} };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user