Revert "internal/shader: bug fix: an index must be a constant for vectors"

This reverts commit 7c4f532b83.

Updates #3011

Reason: Dynamic indices should be allowed with WebGL 2.
This commit is contained in:
Hajime Hoshi 2024-09-19 23:42:49 +09:00
parent b17ae6135e
commit d46c677327
2 changed files with 0 additions and 69 deletions

View File

@ -1150,11 +1150,6 @@ func (cs *compileState) parseExpr(block *block, fname string, expr ast.Expr, mar
x := exprs[0] x := exprs[0]
t := ts[0] t := ts[0]
if (t.IsFloatVector() || t.IsIntVector()) && idx.Const == nil {
cs.addError(e.Pos(), fmt.Sprintf("index must be a constant for the type %s", t.String()))
return nil, nil, nil, false
}
var typ shaderir.Type var typ shaderir.Type
switch t.Main { switch t.Main {
case shaderir.Vec2, shaderir.Vec3, shaderir.Vec4: case shaderir.Vec2, shaderir.Vec3, shaderir.Vec4:

View File

@ -4363,67 +4363,3 @@ func Foo() int {
t.Error(err) t.Error(err)
} }
} }
func TestSyntaxIndex(t *testing.T) {
// Issue #3011
if _, err := compileToIR([]byte(`package main
func Foo() float {
var a int
var b vec4
return b[a]
}
`)); err == nil {
t.Error("compileToIR must return an error but did not")
}
if _, err := compileToIR([]byte(`package main
func Foo() int {
var a int
var b ivec4
return b[a]
}
`)); err == nil {
t.Error("compileToIR must return an error but did not")
}
if _, err := compileToIR([]byte(`package main
func Foo() float {
var a int
var b mat4
return b[a][0]
}
`)); err != nil {
t.Error(err)
}
if _, err := compileToIR([]byte(`package main
func Foo() float {
const a = 0
var b vec4
return b[a]
}
`)); err != nil {
t.Error(err)
}
if _, err := compileToIR([]byte(`package main
func Foo() int {
const a = 0
var b ivec4
return b[a]
}
`)); err != nil {
t.Error(err)
}
if _, err := compileToIR([]byte(`package main
func Foo() float {
const a = 0
var b mat4
return b[a][0]
}
`)); err != nil {
t.Error(err)
}
}