mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2025-01-24 18:02:02 +01:00
shader: Bug fix: a binary expression for an int and a float did not work
This commit is contained in:
parent
5e0e12d290
commit
255da0367f
@ -855,18 +855,18 @@ func (cs *compileState) parseExpr(block *block, expr ast.Expr) ([]shaderir.Expr,
|
||||
t = lhst
|
||||
} else if lhst.Main == shaderir.Float || lhst.Main == shaderir.Int {
|
||||
switch rhst.Main {
|
||||
case shaderir.Vec2, shaderir.Vec3, shaderir.Vec4, shaderir.Mat2, shaderir.Mat3, shaderir.Mat4:
|
||||
case shaderir.Float, shaderir.Vec2, shaderir.Vec3, shaderir.Vec4, shaderir.Mat2, shaderir.Mat3, shaderir.Mat4:
|
||||
t = rhst
|
||||
default:
|
||||
cs.addError(e.Pos(), fmt.Sprintf("types don't match: %s %s %s", e.X, e.Op, e.Y))
|
||||
cs.addError(e.Pos(), fmt.Sprintf("types don't match: %s %s %s", lhst.String(), e.Op, rhst.String()))
|
||||
return nil, nil, nil
|
||||
}
|
||||
} else if rhst.Main == shaderir.Float || rhst.Main == shaderir.Int {
|
||||
switch lhst.Main {
|
||||
case shaderir.Vec2, shaderir.Vec3, shaderir.Vec4, shaderir.Mat2, shaderir.Mat3, shaderir.Mat4:
|
||||
case shaderir.Float, shaderir.Vec2, shaderir.Vec3, shaderir.Vec4, shaderir.Mat2, shaderir.Mat3, shaderir.Mat4:
|
||||
t = lhst
|
||||
default:
|
||||
cs.addError(e.Pos(), fmt.Sprintf("types don't match: %s %s %s", e.X, e.Op, e.Y))
|
||||
cs.addError(e.Pos(), fmt.Sprintf("types don't match: %s %s %s", lhst.String(), e.Op, rhst.String()))
|
||||
return nil, nil, nil
|
||||
}
|
||||
}
|
||||
|
@ -60,7 +60,7 @@ func (p *Program) structName(t *Type) string {
|
||||
if t.Main != Struct {
|
||||
panic("shaderir: the given type at structName must be a struct")
|
||||
}
|
||||
s := t.serialize()
|
||||
s := t.String()
|
||||
if n, ok := p.structNames[s]; ok {
|
||||
return n
|
||||
}
|
||||
|
@ -43,7 +43,7 @@ func (t *Type) Equal(rhs *Type) bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (t *Type) serialize() string {
|
||||
func (t *Type) String() string {
|
||||
switch t.Main {
|
||||
case None:
|
||||
return "none"
|
||||
@ -68,12 +68,12 @@ func (t *Type) serialize() string {
|
||||
case Texture2D:
|
||||
return "sampler2D"
|
||||
case Array:
|
||||
return fmt.Sprintf("%s[%d]", t.Sub[0].serialize(), t.Length)
|
||||
return fmt.Sprintf("%s[%d]", t.Sub[0].String(), t.Length)
|
||||
case Struct:
|
||||
str := "struct{"
|
||||
sub := make([]string, 0, len(t.Sub))
|
||||
for _, st := range t.Sub {
|
||||
sub = append(sub, st.serialize())
|
||||
sub = append(sub, st.String())
|
||||
}
|
||||
str += strings.Join(sub, ",")
|
||||
str += "}"
|
||||
|
Loading…
Reference in New Issue
Block a user