shaderir: Refactoring

This commit is contained in:
Hajime Hoshi 2020-05-15 03:33:07 +09:00
parent 4b8e745824
commit 931fec9100

View File

@ -20,6 +20,20 @@ import (
. "github.com/hajimehoshi/ebiten/internal/shaderir" . "github.com/hajimehoshi/ebiten/internal/shaderir"
) )
func block(localVars []Type, stmts ...Stmt) Block {
return Block{
LocalVars: localVars,
Stmts: stmts,
}
}
func blockStmt(block Block) Stmt {
return Stmt{
Type: BlockStmt,
Blocks: []Block{block},
}
}
func assignStmt(lhs Expr, rhs Expr) Stmt { func assignStmt(lhs Expr, rhs Expr) Stmt {
return Stmt{ return Stmt{
Type: Assign, Type: Assign,
@ -164,12 +178,10 @@ varying vec3 V0;`,
OutParams: []Type{ OutParams: []Type{
{Main: Float}, {Main: Float},
}, },
Block: Block{ Block: block([]Type{
LocalVars: []Type{ {Main: Mat4},
{Main: Mat4}, {Main: Mat4},
{Main: Mat4}, }),
},
},
}, },
}, },
}, },
@ -193,25 +205,20 @@ varying vec3 V0;`,
OutParams: []Type{ OutParams: []Type{
{Main: Float}, {Main: Float},
}, },
Block: Block{ Block: block(
LocalVars: []Type{ []Type{
{Main: Mat4}, {Main: Mat4},
{Main: Mat4}, {Main: Mat4},
}, },
Stmts: []Stmt{ blockStmt(
{ block(
Type: BlockStmt, []Type{
Blocks: []Block{ {Main: Mat4},
{ {Main: Mat4},
LocalVars: []Type{
{Main: Mat4},
{Main: Mat4},
},
},
}, },
}, ),
}, ),
}, ),
}, },
}, },
}, },
@ -237,18 +244,17 @@ varying vec3 V0;`,
OutParams: []Type{ OutParams: []Type{
{Main: Float}, {Main: Float},
}, },
Block: Block{ Block: block(
Stmts: []Stmt{ nil,
assignStmt( assignStmt(
varNameExpr(Local, 2), varNameExpr(Local, 2),
binaryExpr( binaryExpr(
Add, Add,
varNameExpr(Local, 0), varNameExpr(Local, 0),
varNameExpr(Local, 1), varNameExpr(Local, 1),
),
), ),
}, ),
}, ),
}, },
}, },
}, },
@ -269,33 +275,30 @@ varying vec3 V0;`,
OutParams: []Type{ OutParams: []Type{
{Main: Float}, {Main: Float},
}, },
Block: Block{ Block: block(
Stmts: []Stmt{ nil,
ifStmt( ifStmt(
binaryExpr( binaryExpr(
Eq, Eq,
varNameExpr(Local, 0), varNameExpr(Local, 0),
numericExpr(0), numericExpr(0),
),
Block{
Stmts: []Stmt{
assignStmt(
varNameExpr(Local, 2),
varNameExpr(Local, 0),
),
},
},
Block{
Stmts: []Stmt{
assignStmt(
varNameExpr(Local, 2),
varNameExpr(Local, 1),
),
},
},
), ),
}, block(
}, nil,
assignStmt(
varNameExpr(Local, 2),
varNameExpr(Local, 0),
),
),
block(
nil,
assignStmt(
varNameExpr(Local, 2),
varNameExpr(Local, 1),
),
),
),
),
}, },
}, },
}, },