shaderir: Add Stmt.ForVarIndex

Updates #1230
This commit is contained in:
Hajime Hoshi 2020-07-12 21:53:18 +09:00
parent 4a8bd688a9
commit 291d69500b
3 changed files with 18 additions and 16 deletions

View File

@ -364,8 +364,7 @@ func (p *Program) glslBlock(topBlock, block *Block, level int, localVarIndex int
}
lines = append(lines, fmt.Sprintf("%s}", idt))
case For:
v := localVarIndex
localVarIndex++
v := s.ForVarIndex
var delta string
switch s.ForDelta {
case 0:

View File

@ -64,14 +64,15 @@ func ifStmt(cond Expr, block Block, elseBlock Block) Stmt {
}
}
func forStmt(init, end int, op Op, delta int, block Block) Stmt {
func forStmt(index, init, end int, op Op, delta int, block Block) Stmt {
return Stmt{
Type: For,
Blocks: []Block{block},
ForInit: init,
ForEnd: end,
ForOp: op,
ForDelta: delta,
Type: For,
Blocks: []Block{block},
ForVarIndex: index,
ForInit: init,
ForEnd: end,
ForOp: op,
ForDelta: delta,
}
}
@ -592,6 +593,7 @@ varying vec3 V0;`,
Block: block(
nil,
forStmt(
3,
0,
100,
LessThanOp,

View File

@ -64,13 +64,14 @@ type Block struct {
}
type Stmt struct {
Type StmtType
Exprs []Expr
Blocks []Block
ForInit int
ForEnd int
ForOp Op
ForDelta int
Type StmtType
Exprs []Expr
Blocks []Block
ForVarIndex int
ForInit int
ForEnd int
ForOp Op
ForDelta int
}
type StmtType int