- bool push_constant = false;
- if(iface.layout)
- {
- auto i = find_member(iface.layout->qualifiers, string("push_constant"), &Layout::Qualifier::name);
- push_constant = (i!=iface.layout->qualifiers.end());
- }
+ SetFlag set_target(assignment_target);
+ assign.left->visit(*this);
+ }
+ assign.right->visit(*this);
+}
+
+void DepthRangeConverter::visit(FunctionDeclaration &func)
+{
+ r_position_z_assigned = false;
+ TraversingVisitor::visit(func);
+
+ if(func.definition==&func && func.name=="main" && !r_position_z_assigned)
+ {
+ VariableReference *position = new VariableReference;
+ position->name = "gl_Position";
+
+ MemberAccess *z = new MemberAccess;
+ z->left = position;
+ z->member = "z";
+
+ Literal *scale = new Literal;
+ scale->token = "2.0";
+ scale->value = 2.0f;
+
+ BinaryExpression *multiply = new BinaryExpression;
+ multiply->oper = &Operator::get_operator("*", Operator::BINARY);
+ multiply->left = z;
+ multiply->right = scale;
+
+ MemberAccess *w = new MemberAccess;
+ w->left = position->clone();
+ w->member = "w";