mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2025-01-27 11:12:44 +01:00
parent
6c33ed107f
commit
f362455387
@ -912,9 +912,10 @@ func (cs *compileState) parseExpr(block *block, expr ast.Expr) ([]shaderir.Expr,
|
|||||||
}
|
}
|
||||||
|
|
||||||
var t shaderir.Type
|
var t shaderir.Type
|
||||||
if lhst.Equal(&rhst) {
|
switch {
|
||||||
|
case lhst.Equal(&rhst):
|
||||||
t = lhst
|
t = lhst
|
||||||
} else if lhst.Main == shaderir.Float || lhst.Main == shaderir.Int {
|
case lhst.Main == shaderir.Float || lhst.Main == shaderir.Int:
|
||||||
switch rhst.Main {
|
switch rhst.Main {
|
||||||
case shaderir.Int:
|
case shaderir.Int:
|
||||||
t = lhst
|
t = lhst
|
||||||
@ -924,7 +925,7 @@ func (cs *compileState) parseExpr(block *block, expr ast.Expr) ([]shaderir.Expr,
|
|||||||
cs.addError(e.Pos(), fmt.Sprintf("types don't match: %s %s %s", lhst.String(), e.Op, rhst.String()))
|
cs.addError(e.Pos(), fmt.Sprintf("types don't match: %s %s %s", lhst.String(), e.Op, rhst.String()))
|
||||||
return nil, nil, nil, false
|
return nil, nil, nil, false
|
||||||
}
|
}
|
||||||
} else if rhst.Main == shaderir.Float || rhst.Main == shaderir.Int {
|
case rhst.Main == shaderir.Float || rhst.Main == shaderir.Int:
|
||||||
switch lhst.Main {
|
switch lhst.Main {
|
||||||
case shaderir.Int:
|
case shaderir.Int:
|
||||||
t = rhst
|
t = rhst
|
||||||
@ -934,6 +935,15 @@ func (cs *compileState) parseExpr(block *block, expr ast.Expr) ([]shaderir.Expr,
|
|||||||
cs.addError(e.Pos(), fmt.Sprintf("types don't match: %s %s %s", lhst.String(), e.Op, rhst.String()))
|
cs.addError(e.Pos(), fmt.Sprintf("types don't match: %s %s %s", lhst.String(), e.Op, rhst.String()))
|
||||||
return nil, nil, nil, false
|
return nil, nil, nil, false
|
||||||
}
|
}
|
||||||
|
case lhst.Main == shaderir.Vec2 && rhst.Main == shaderir.Mat2 ||
|
||||||
|
lhst.Main == shaderir.Mat2 && rhst.Main == shaderir.Vec2:
|
||||||
|
t = shaderir.Type{Main: shaderir.Vec2}
|
||||||
|
case lhst.Main == shaderir.Vec3 && rhst.Main == shaderir.Mat3 ||
|
||||||
|
lhst.Main == shaderir.Mat3 && rhst.Main == shaderir.Vec3:
|
||||||
|
t = shaderir.Type{Main: shaderir.Vec3}
|
||||||
|
case lhst.Main == shaderir.Vec4 && rhst.Main == shaderir.Mat4 ||
|
||||||
|
lhst.Main == shaderir.Mat4 && rhst.Main == shaderir.Vec4:
|
||||||
|
t = shaderir.Type{Main: shaderir.Vec4}
|
||||||
}
|
}
|
||||||
|
|
||||||
op, ok := shaderir.OpFromToken(e.Op)
|
op, ok := shaderir.OpFromToken(e.Op)
|
||||||
|
6
internal/shader/testdata/issue1236.expected.vs
vendored
Normal file
6
internal/shader/testdata/issue1236.expected.vs
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
void F0(in vec4 l0, out vec4 l1) {
|
||||||
|
vec4 l2 = vec4(0);
|
||||||
|
l2 = (mat4(1.0)) * (l0);
|
||||||
|
l1 = l2;
|
||||||
|
return;
|
||||||
|
}
|
6
internal/shader/testdata/issue1236.go
vendored
Normal file
6
internal/shader/testdata/issue1236.go
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
func Foo(v vec4) vec4 {
|
||||||
|
v2 := mat4(1) * v
|
||||||
|
return v2
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user