mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2024-12-27 20:28:54 +01:00
internal/shader: bug fix: wrong local variable index was used for assignments
Closes #2655
This commit is contained in:
parent
f82114e8eb
commit
1bbded8653
@ -558,7 +558,7 @@ func (cs *compileState) assign(block *block, fname string, pos token.Pos, lhs, r
|
|||||||
block.vars = append(block.vars, variable{
|
block.vars = append(block.vars, variable{
|
||||||
typ: t,
|
typ: t,
|
||||||
})
|
})
|
||||||
idx := len(block.vars) - 1
|
idx := block.totalLocalVariableCount() - 1
|
||||||
stmts = append(stmts,
|
stmts = append(stmts,
|
||||||
shaderir.Stmt{
|
shaderir.Stmt{
|
||||||
Type: shaderir.Assign,
|
Type: shaderir.Assign,
|
||||||
|
43
internal/shader/testdata/issue2655.expected.vs
vendored
Normal file
43
internal/shader/testdata/issue2655.expected.vs
vendored
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
float F0(void);
|
||||||
|
void F1(out float l0, out vec2 l1);
|
||||||
|
void F2(in bool l0, out float l1, out vec2 l2);
|
||||||
|
|
||||||
|
float F0(void) {
|
||||||
|
float l0 = float(0);
|
||||||
|
{
|
||||||
|
l0 = 0;
|
||||||
|
}
|
||||||
|
return l0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void F1(out float l0, out vec2 l1) {
|
||||||
|
float l2 = float(0);
|
||||||
|
vec2 l3 = vec2(0);
|
||||||
|
{
|
||||||
|
int l4 = 0;
|
||||||
|
vec2 l5 = vec2(0);
|
||||||
|
l4 = 0;
|
||||||
|
l2 = l4;
|
||||||
|
l5 = vec2(0.0);
|
||||||
|
l3 = l5;
|
||||||
|
}
|
||||||
|
l0 = l2;
|
||||||
|
l1 = l3;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void F2(in bool l0, out float l1, out vec2 l2) {
|
||||||
|
float l3 = float(0);
|
||||||
|
vec2 l4 = vec2(0);
|
||||||
|
{
|
||||||
|
int l5 = 0;
|
||||||
|
vec2 l6 = vec2(0);
|
||||||
|
l5 = 0;
|
||||||
|
l3 = l5;
|
||||||
|
l6 = vec2(0.0);
|
||||||
|
l4 = l6;
|
||||||
|
}
|
||||||
|
l1 = l3;
|
||||||
|
l2 = l4;
|
||||||
|
return;
|
||||||
|
}
|
27
internal/shader/testdata/issue2655.go
vendored
Normal file
27
internal/shader/testdata/issue2655.go
vendored
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
func Ret1() float {
|
||||||
|
var a float
|
||||||
|
{
|
||||||
|
a = 0
|
||||||
|
}
|
||||||
|
return a
|
||||||
|
}
|
||||||
|
|
||||||
|
func Ret2() (float, vec2) {
|
||||||
|
var a float
|
||||||
|
var b vec2
|
||||||
|
{
|
||||||
|
a, b = 0, vec2(0)
|
||||||
|
}
|
||||||
|
return a, b
|
||||||
|
}
|
||||||
|
|
||||||
|
func Ret2Plus(foo bool) (float, vec2) {
|
||||||
|
var a float
|
||||||
|
var b vec2
|
||||||
|
{
|
||||||
|
a, b = 0, vec2(0)
|
||||||
|
}
|
||||||
|
return a, b
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user