diff --git a/image.go b/image.go index 6d53472b4..05ceaa10c 100644 --- a/image.go +++ b/image.go @@ -730,11 +730,11 @@ var _ [len(DrawRectShaderOptions{}.Images)]struct{} = [graphics.ShaderImageCount // // If a specified uniform variable's length or type doesn't match with an expected one, DrawRectShader panics. // -// In a shader, texCoord in Fragment represents a position in a source image. -// If no source images are specified, texCoord represents the position from (0, 0) to (width, height) in pixels. -// If the unit is pixels by a compiler directive `//kage:unit pixelss`, texCoord values are valid. -// If the unit is texels (default), texCoord values still take from (0, 0) to (width, height), -// but these are invalid since texCoord is expected to be in texels in the texel-unit mode. +// In a shader, srcPos in Fragment represents a position in a source image. +// If no source images are specified, srcPos represents the position from (0, 0) to (width, height) in pixels. +// If the unit is pixels by a compiler directive `//kage:unit pixelss`, srcPos values are valid. +// If the unit is texels (default), srcPos values still take from (0, 0) to (width, height), +// but these are invalid since srcPos is expected to be in texels in the texel-unit mode. // This behavior is preserved for backward compatibility. It is recommended to use the pixel-unit mode to avoid confusion. // // If no source images are specified, imageSrc0Size returns a valid size only when the unit is pixels, diff --git a/image_test.go b/image_test.go index 63d9afe70..479b032ab 100644 --- a/image_test.go +++ b/image_test.go @@ -2197,7 +2197,7 @@ func TestImageDrawTrianglesShaderInterpolatesValues(t *testing.T) { is := []uint16{0, 1, 2, 1, 2, 3} shader, err := ebiten.NewShader([]byte(` package main - func Fragment(position vec4, texCoord vec2, color vec4) vec4 { + func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return color } `)) @@ -4152,7 +4152,7 @@ func TestImageDrawTrianglesShaderWithGreaterIndexThanVerticesCount(t *testing.T) is := []uint16{0, 1, 2, 1, 2, 4} shader, err := ebiten.NewShader([]byte(` package main - func Fragment(position vec4, texCoord vec2, color vec4) vec4 { + func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return color } `)) @@ -4194,7 +4194,7 @@ func TestImageDrawTrianglesShaderWithTooBigIndex(t *testing.T) { is := []uint16{0, 1, 2, 1, 2, ebiten.MaxVerticesCount} shader, err := ebiten.NewShader([]byte(` package main - func Fragment(position vec4, texCoord vec2, color vec4) vec4 { + func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return color } `)) @@ -4218,7 +4218,7 @@ func TestImageGeoMAfterDraw(t *testing.T) { package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return vec4(1) } `)) diff --git a/internal/processtest/testdata/issue1753.go b/internal/processtest/testdata/issue1753.go index 5ca4ee0d4..616e8e03f 100644 --- a/internal/processtest/testdata/issue1753.go +++ b/internal/processtest/testdata/issue1753.go @@ -37,7 +37,7 @@ func (g *Game) Update() error { var Color vec4 -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return Color }`)) if err != nil { @@ -69,7 +69,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { var Dummy float var A, B, G, R float -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return vec4(R, G, B, A) }`)) if err != nil { diff --git a/internal/processtest/testdata/issue2129.go b/internal/processtest/testdata/issue2129.go index dbbfbafe5..b8849951e 100644 --- a/internal/processtest/testdata/issue2129.go +++ b/internal/processtest/testdata/issue2129.go @@ -26,7 +26,7 @@ func (g *Game) Update() error { const shaderData = ` package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return vec4(1) } ` diff --git a/internal/processtest/testdata/issue2162.go b/internal/processtest/testdata/issue2162.go index 5428b74b5..728ed8554 100644 --- a/internal/processtest/testdata/issue2162.go +++ b/internal/processtest/testdata/issue2162.go @@ -22,7 +22,7 @@ func init() { s, err := ebiten.NewShader([]byte(` package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return vec4(1) }`)) if err != nil { diff --git a/internal/shader/syntax_test.go b/internal/shader/syntax_test.go index e57dab97e..fb6446ba2 100644 --- a/internal/shader/syntax_test.go +++ b/internal/shader/syntax_test.go @@ -30,9 +30,9 @@ func compileToIR(src []byte) (*shaderir.Program, error) { func TestSyntaxShadowing(t *testing.T) { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { - var position vec4 - return position +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { + var dstPos vec4 + return dstPos } `)); err == nil { t.Errorf("error must be non-nil but was nil") @@ -42,7 +42,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { func TestSyntaxDuplicatedVariables(t *testing.T) { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { var foo vec4 var foo vec4 return foo @@ -53,7 +53,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { var foo, foo vec4 return foo } @@ -63,7 +63,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { var foo vec4 foo := vec4(0) return foo @@ -78,7 +78,7 @@ func Foo() (vec4, vec4) { return vec4(0), vec4(0) } -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { foo, foo := Foo() return foo } @@ -109,7 +109,7 @@ func Foo() { func Foo() { } -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return vec4(0) } `)); err == nil { @@ -120,7 +120,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { func TestSyntaxNoNewVariables(t *testing.T) { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { _ := 1 return vec4(0) } @@ -130,7 +130,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { _, _ := 1, 1 return vec4(0) } @@ -144,7 +144,7 @@ func Foo() (int, int) { return 1, 1 } -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { _, _ := Foo() return vec4(0) } @@ -154,7 +154,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { a, _ := 1, 1 _ = a return vec4(0) @@ -165,7 +165,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { _, a := 1, 1 _ = a return vec4(0) @@ -178,7 +178,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { func TestSyntaxWrongReturn(t *testing.T) { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return 0.0 } `)); err == nil { @@ -191,7 +191,7 @@ func Foo() (float, float) { return 0 } -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return vec4(0) } `)); err == nil { @@ -200,7 +200,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { } `)); err == nil { t.Errorf("error must be non-nil but was nil") @@ -211,7 +211,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { func Foo() float { } -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return vec4(0) } `)); err == nil { @@ -226,7 +226,7 @@ func Foo() (float, float) { return 0.0 } -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return vec4(0) } `)); err == nil { @@ -239,7 +239,7 @@ func Foo() float { return 0.0, 0.0 } -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return vec4(0) } `)); err == nil { @@ -252,7 +252,7 @@ func Foo() (float, float, float) { return 0.0, 0.0 } -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return vec4(0) } `)); err == nil { @@ -269,7 +269,7 @@ func Foo2() (float, float, float) { return Foo() } -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return vec4(0) } `)); err == nil { @@ -286,7 +286,7 @@ func Foo2() (float, float, float) { return Foo() } -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return vec4(0.0) } `)); err != nil { @@ -300,7 +300,7 @@ func TestSyntaxInit(t *testing.T) { func init() { } -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return vec4(0) } `)); err == nil { @@ -311,7 +311,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { func TestSyntaxUnsupportedSyntax(t *testing.T) { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { x := func() { } _ = x @@ -323,7 +323,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { go func() { }() return vec4(0) @@ -334,7 +334,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { ch := make(chan int) _ = ch return vec4(0) @@ -345,7 +345,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { x := 1i _ = x return vec4(0) @@ -356,7 +356,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { var x [4]float y := x[1:2] _ = y @@ -368,7 +368,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { var x [4]float y := x[1:2:3] _ = y @@ -384,7 +384,7 @@ func TestSyntaxForbidAssigningSpecialVariables(t *testing.T) { var U vec4 -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { U = vec4(0) return vec4(0) } @@ -396,7 +396,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { var U vec4 -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { U.x = 0 return vec4(0) } @@ -408,7 +408,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { var U [2]vec4 -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { U[0] = vec4(0) return vec4(0) } @@ -418,8 +418,8 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { - texCoord = vec2(0) +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { + srcPos = vec2(0) return vec4(0) } `)); err == nil { @@ -428,8 +428,8 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { - texCoord.x = 0 +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { + srcPos.x = 0 return vec4(0) } `)); err == nil { @@ -440,7 +440,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { func TestSyntaxBoolLiteral(t *testing.T) { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { true := vec4(0) return true } @@ -452,7 +452,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { func TestSyntaxUnusedVariable(t *testing.T) { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { x := 0 return vec4(0) } @@ -462,7 +462,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { x := 0 x = 1 return vec4(0) @@ -473,7 +473,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { x := vec4(0) x.x = 1 return vec4(0) @@ -486,7 +486,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { // https://go.dev/play/p/2RuYMrSLjt3 if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { x := 0 x++ return vec4(0) @@ -497,7 +497,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { var a int return vec4(0) } @@ -507,7 +507,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { var a, b int return vec4(0) } @@ -519,7 +519,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { func TestSyntaxBlankLhs(t *testing.T) { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { x := _ _ = x return vec4(0) @@ -530,7 +530,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { var x int = _ _ = x return vec4(0) @@ -541,7 +541,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { x := 1 x = _ _ = x @@ -553,7 +553,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { x := 1 + _ _ = x return vec4(0) @@ -564,7 +564,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { _++ return vec4(0) } @@ -574,7 +574,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { _ += 1 return vec4(0) } @@ -584,7 +584,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { _.x = 1 return vec4(0) } @@ -596,7 +596,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { func TestSyntaxDuplicatedVarsAndConstants(t *testing.T) { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { var a = 0 const a = 0 _ = a @@ -608,7 +608,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { const a = 0 var a = 0 _ = a @@ -620,7 +620,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { const a = 0 const a = 0 _ = a @@ -635,7 +635,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { const U0 = 0 var U0 float -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return vec4(a) } `)); err == nil { @@ -647,7 +647,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { var U0 float const U0 = 0 -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return vec4(a) } `)); err == nil { @@ -661,9 +661,9 @@ func TestSyntaxUnmatchedArgs(t *testing.T) { func Foo() { } -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { Foo(1) - return position + return dstPos } `)); err == nil { t.Errorf("error must be non-nil but was nil") @@ -674,9 +674,9 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { func Foo(x float) { } -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { Foo() - return position + return dstPos } `)); err == nil { t.Errorf("error must be non-nil but was nil") @@ -691,9 +691,9 @@ func Bar() (float, float, float) { return 0, 1 } -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { Foo(Bar()) - return position + return dstPos } `)); err == nil { t.Errorf("error must be non-nil but was nil") @@ -708,9 +708,9 @@ func Bar() (float, float) { return 0, 1 } -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { Foo(Bar()) - return position + return dstPos } `)); err == nil { t.Errorf("error must be non-nil but was nil") @@ -724,9 +724,9 @@ func TestSyntaxMeaninglessSentence(t *testing.T) { var Time float var ScreenSize vec2 -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { - position - return position +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { + dstPos + return dstPos }`)); err == nil { t.Errorf("error must be non-nil but was nil") } @@ -736,9 +736,9 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { var Time float var ScreenSize vec2 -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { - vec2(position) - return position +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { + vec2(dstPos) + return dstPos }`)); err == nil { t.Errorf("error must be non-nil but was nil") } @@ -748,7 +748,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { func TestSyntaxOperatorMod(t *testing.T) { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { a := 2.0 % 0.5 _ = a return vec4(0) @@ -757,7 +757,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { } if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { // If both are constants, both must be an integer! a := 2.0 % 1.0 _ = a @@ -768,7 +768,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { a := int(2) % 0.5 _ = a return vec4(0) @@ -778,7 +778,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { a := int(2) % 1.0 _ = a return vec4(0) @@ -788,7 +788,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { a := 2.0 b := 0.5 _ = a % b @@ -799,7 +799,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { a := 2 b := 0.5 _ = a % b @@ -810,7 +810,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { a := 2.5 b := 1 _ = a % b @@ -821,7 +821,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { a := 2 b := 1 _ = a % b @@ -832,7 +832,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { a := 2 _ = a % 1 return vec4(0) @@ -842,7 +842,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { // If only one of two is a consntant, the constant can be a float. a := 2 _ = a % 1.0 @@ -853,7 +853,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { a := 1 _ = 2 % a return vec4(0) @@ -863,7 +863,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { // If only one of two is a consntant, the constant can be a float. a := 1 _ = 2.0 % a @@ -874,7 +874,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { a := 2 a %= 1 _ = a @@ -885,7 +885,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { a := 2 a %= 1.0 _ = a @@ -896,7 +896,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { a := 2 a %= 0.5 _ = a @@ -907,7 +907,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { a := 2.0 a %= 1 _ = a @@ -920,7 +920,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { func TestSyntaxOperatorAssign(t *testing.T) { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { a := 1.0 a += 2 _ = a @@ -931,7 +931,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { a := 1.0 a += 2.0 _ = a @@ -942,7 +942,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { a := 1.0 a += 2.1 _ = a @@ -953,7 +953,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { a := 1 a += 2 _ = a @@ -964,7 +964,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { a := 1 a += 2.0 _ = a @@ -975,7 +975,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { a := 1 a += 2.1 _ = a @@ -986,7 +986,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { var x float = true _ = x return vec4(0) @@ -997,7 +997,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { var x bool = true _ = x return vec4(0) @@ -1008,7 +1008,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { var x int = 1.0 _ = x return vec4(0) @@ -1022,7 +1022,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { func TestSyntaxOperatorVecAndNumber(t *testing.T) { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { a := vec2(1) + 2 return a.xxyy }`)); err != nil { @@ -1030,7 +1030,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { } if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { a := ivec2(1) + 2 return vec4(a.xxyy) }`)); err != nil { @@ -1039,7 +1039,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { a := vec2(1) + 2.1 return a.xxyy }`)); err != nil { @@ -1047,7 +1047,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { } if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { a := ivec2(1) + 2.1 return vec4(a.xxyy) }`)); err == nil { @@ -1056,7 +1056,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { a := vec2(1) % 2 return a.xxyy }`)); err == nil { @@ -1064,7 +1064,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { } if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { a := ivec2(1) % 2 return vec4(a.xxyy) }`)); err != nil { @@ -1073,7 +1073,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { a := vec2(1) % 2.1 return a.xxyy }`)); err == nil { @@ -1081,7 +1081,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { } if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { a := ivec2(1) % 2.1 return vec4(a.xxyy) }`)); err == nil { @@ -1090,7 +1090,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { a := vec2(1) a += 2 return a.xxyy @@ -1099,7 +1099,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { } if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { a := ivec2(1) a += 2 return vec4(a.xxyy) @@ -1109,7 +1109,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { a := vec2(1) a += 2.1 return a.xxyy @@ -1118,7 +1118,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { } if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { a := ivec2(1) a += 2.1 return vec4(a.xxyy) @@ -1128,7 +1128,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { a := vec2(1) a %= 2 return a.xxyy @@ -1137,7 +1137,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { } if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { a := ivec2(1) a %= 2 return vec4(a.xxyy) @@ -1147,7 +1147,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { a := vec2(1) a %= 2.1 return a.xxyy @@ -1156,7 +1156,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { } if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { a := ivec2(1) a %= 2.1 return vec4(a.xxyy) @@ -1287,9 +1287,9 @@ func TestSyntaxOperatorMultiply(t *testing.T) { for _, c := range cases { _, err := compileToIR([]byte(fmt.Sprintf(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { %s - return position + return dstPos }`, c.stmt))) if err == nil && c.err { t.Errorf("%s must return an error but does not", c.stmt) @@ -1409,9 +1409,9 @@ func TestSyntaxOperatorMultiplyAssign(t *testing.T) { for _, c := range cases { _, err := compileToIR([]byte(fmt.Sprintf(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { %s - return position + return dstPos }`, c.stmt))) if err == nil && c.err { t.Errorf("%s must return an error but does not", c.stmt) @@ -1515,9 +1515,9 @@ func TestSyntaxBitwiseOperatorAssign(t *testing.T) { for _, c := range cases { _, err := compileToIR([]byte(fmt.Sprintf(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { %s - return position + return dstPos }`, c.stmt))) if err == nil && c.err { t.Errorf("%s must return an error but does not", c.stmt) @@ -1544,9 +1544,9 @@ func TestSyntaxAtan(t *testing.T) { for _, c := range cases { _, err := compileToIR([]byte(fmt.Sprintf(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { %s - return position + return dstPos }`, c.stmt))) if err == nil && c.err { t.Errorf("%s must return an error but does not", c.stmt) @@ -1560,7 +1560,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { func TestSyntaxType(t *testing.T) { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { var x vec2 = vec3(0) _ = x return color @@ -1570,7 +1570,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { } if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { var x, y vec2 = vec2(0), vec3(0) _, _ = x, y return color @@ -1580,7 +1580,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { } if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { var x vec2 x = vec3(0) _ = x @@ -1591,7 +1591,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { } if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { var x, y vec2 x, y = vec2(0), vec3(0) _ = x @@ -1603,7 +1603,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { } if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { var x vec2 x = 0 _ = x @@ -1618,7 +1618,7 @@ func Foo() (vec3, vec3) { return vec3(0), vec3(1) } -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { var x, y vec2 = Foo() _ = x _ = y @@ -1633,7 +1633,7 @@ func Foo() (vec3, vec3) { return vec3(0), vec3(1) } -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { var x, y vec2 x, y = Foo() _ = x @@ -1649,7 +1649,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { func TestSyntaxTypeBlankVar(t *testing.T) { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { var _ vec2 = vec3(0) return color } @@ -1658,7 +1658,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { } if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { var _, _ vec2 = vec2(0), vec3(0) return color } @@ -1671,7 +1671,7 @@ func Foo() (vec3, vec3) { return vec3(0), vec3(1) } -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { var _, _ vec2 = Foo() return color } @@ -1687,7 +1687,7 @@ func TestSyntaxTypeFuncCall(t *testing.T) { func Foo(x vec2) { } -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { Foo(0) return color } @@ -1699,7 +1699,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { func Foo(x vec2, y vec3) { } -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { Foo(0, 1) return color } @@ -1715,7 +1715,7 @@ func Bar() (int, int) { return 0, 1 } -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { Foo(Bar()) return color } @@ -2001,9 +2001,9 @@ func TestSyntaxConstructorFuncType(t *testing.T) { for _, c := range cases { _, err := compileToIR([]byte(fmt.Sprintf(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { %s - return position + return dstPos }`, c.stmt))) if err == nil && c.err { t.Errorf("%s must return an error but does not", c.stmt) @@ -2017,7 +2017,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { func TestSyntaxDiscard(t *testing.T) { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { if true { discard() } @@ -2030,7 +2030,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { // TODO: Allow discard without return. if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { discard() return vec4(0) } @@ -2043,7 +2043,7 @@ func foo() { discard() } -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { foo() return vec4(0) } @@ -2104,9 +2104,9 @@ func TestSyntaxBuiltinFuncSingleArgType(t *testing.T) { stmt := strings.ReplaceAll(c.stmt, "{{.Func}}", f) src := fmt.Sprintf(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { %s - return position + return dstPos }`, stmt) _, err := compileToIR([]byte(src)) if err == nil && c.err { @@ -2164,9 +2164,9 @@ func TestSyntaxBuiltinFuncDoubleArgsType(t *testing.T) { stmt := strings.ReplaceAll(c.stmt, "{{.Func}}", f) src := fmt.Sprintf(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { %s - return position + return dstPos }`, stmt) _, err := compileToIR([]byte(src)) if err == nil && c.err { @@ -2225,9 +2225,9 @@ func TestSyntaxBuiltinFuncDoubleArgsType2(t *testing.T) { stmt := strings.ReplaceAll(c.stmt, "{{.Func}}", f) src := fmt.Sprintf(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { %s - return position + return dstPos }`, stmt) _, err := compileToIR([]byte(src)) if err == nil && c.err { @@ -2279,9 +2279,9 @@ func TestSyntaxBuiltinFuncStepType(t *testing.T) { stmt := c.stmt src := fmt.Sprintf(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { %s - return position + return dstPos }`, stmt) _, err := compileToIR([]byte(src)) if err == nil && c.err { @@ -2334,9 +2334,9 @@ func TestSyntaxBuiltinFuncTripleArgsType(t *testing.T) { stmt := strings.ReplaceAll(c.stmt, "{{.Func}}", f) src := fmt.Sprintf(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { %s - return position + return dstPos }`, stmt) _, err := compileToIR([]byte(src)) if err == nil && c.err { @@ -2387,9 +2387,9 @@ func TestSyntaxBuiltinFuncClampType(t *testing.T) { stmt := c.stmt src := fmt.Sprintf(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { %s - return position + return dstPos }`, stmt) _, err := compileToIR([]byte(src)) if err == nil && c.err { @@ -2440,9 +2440,9 @@ func TestSyntaxBuiltinFuncMixType(t *testing.T) { stmt := c.stmt src := fmt.Sprintf(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { %s - return position + return dstPos }`, stmt) _, err := compileToIR([]byte(src)) if err == nil && c.err { @@ -2496,9 +2496,9 @@ func TestSyntaxBuiltinFuncSmoothstepType(t *testing.T) { stmt := c.stmt src := fmt.Sprintf(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { %s - return position + return dstPos }`, stmt) _, err := compileToIR([]byte(src)) if err == nil && c.err { @@ -2548,9 +2548,9 @@ func TestSyntaxBuiltinFuncRefractType(t *testing.T) { stmt := c.stmt src := fmt.Sprintf(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { %s - return position + return dstPos }`, stmt) _, err := compileToIR([]byte(src)) if err == nil && c.err { @@ -2598,9 +2598,9 @@ func TestSyntaxBuiltinFuncCrossType(t *testing.T) { stmt := c.stmt src := fmt.Sprintf(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { %s - return position + return dstPos }`, stmt) _, err := compileToIR([]byte(src)) if err == nil && c.err { @@ -2638,9 +2638,9 @@ func TestSyntaxBuiltinFuncTransposeType(t *testing.T) { stmt := c.stmt src := fmt.Sprintf(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { %s - return position + return dstPos }`, stmt) _, err := compileToIR([]byte(src)) if err == nil && c.err { @@ -2869,9 +2869,9 @@ func TestSyntaxEqual(t *testing.T) { stmt := c.stmt src := fmt.Sprintf(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { %s - return position + return dstPos }`, stmt) _, err := compileToIR([]byte(src)) if err == nil && c.err { @@ -2897,9 +2897,9 @@ func TestSyntaxTypeRedeclaration(t *testing.T) { stmt := c.stmt src := fmt.Sprintf(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { %s - return position + return dstPos }`, stmt) _, err := compileToIR([]byte(src)) if err == nil && c.err { @@ -3008,9 +3008,9 @@ func TestSyntaxSwizzling(t *testing.T) { stmt := c.stmt src := fmt.Sprintf(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { %s - return position + return dstPos }`, stmt) _, err := compileToIR([]byte(src)) if err == nil && c.err { @@ -3136,9 +3136,9 @@ func TestSyntaxConstType(t *testing.T) { stmt := c.stmt src := fmt.Sprintf(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { %s - return position + return dstPos }`, stmt) _, err := compileToIR([]byte(src)) if err == nil && c.err { @@ -3167,9 +3167,9 @@ func TestSyntaxConstType2(t *testing.T) { stmt := c.stmt src := fmt.Sprintf(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { %s - return position + return dstPos }`, stmt) _, err := compileToIR([]byte(src)) if err == nil && c.err { @@ -3201,9 +3201,9 @@ func TestSyntaxConstType3(t *testing.T) { stmt := c.stmt src := fmt.Sprintf(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { %s - return position + return dstPos }`, stmt) _, err := compileToIR([]byte(src)) if err == nil && c.err { @@ -3229,9 +3229,9 @@ func TestSyntaxCompositeLit(t *testing.T) { stmt := c.stmt src := fmt.Sprintf(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { %s - return position + return dstPos }`, stmt) _, err := compileToIR([]byte(src)) if err == nil && c.err { @@ -3251,8 +3251,8 @@ func TestSyntaxCompilerDirective(t *testing.T) { { src: `package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { - return position +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { + return dstPos }`, unit: shaderir.Texels, err: false, @@ -3262,8 +3262,8 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { - return position +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { + return dstPos }`, unit: shaderir.Texels, err: false, @@ -3273,8 +3273,8 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { - return position +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { + return dstPos }`, unit: shaderir.Pixels, err: false, @@ -3284,8 +3284,8 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { - return position +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { + return dstPos }`, err: true, }, @@ -3295,8 +3295,8 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { - return position +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { + return dstPos }`, err: true, }, @@ -3306,8 +3306,8 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { - return position +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { + return dstPos }`, err: true, }, @@ -3315,8 +3315,8 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { src: "\t " + `//kage:unit pixels` + " \t\r" + ` package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { - return position +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { + return dstPos }`, unit: shaderir.Pixels, err: false, @@ -3407,10 +3407,10 @@ var Foo, Bar int = 1, 1 func TestSyntaxInitWithNegativeInteger(t *testing.T) { if _, err := compileToIR([]byte(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { var x float = -0 _ = x - return position + return dstPos }`)); err != nil { t.Error(err) } @@ -3446,8 +3446,8 @@ func Foo() %s { return %s } -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { - return position +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { + return dstPos }`, typ, stmt) _, err := compileToIR([]byte(src)) if err == nil && c.err { @@ -3495,9 +3495,9 @@ func TestSyntaxScalarAndVector(t *testing.T) { stmt := c.stmt src := fmt.Sprintf(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { %s - return position + return dstPos }`, stmt) _, err := compileToIR([]byte(src)) if err == nil && c.err { @@ -3534,9 +3534,9 @@ func TestSyntaxCast(t *testing.T) { stmt := c.stmt src := fmt.Sprintf(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { %s - return position + return dstPos }`, stmt) _, err := compileToIR([]byte(src)) if err == nil && c.err { @@ -3636,9 +3636,9 @@ func TestSyntaxCompare(t *testing.T) { stmt := c.stmt src := fmt.Sprintf(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { %s - return position + return dstPos }`, stmt) _, err := compileToIR([]byte(src)) if err == nil && c.err { @@ -3791,9 +3791,9 @@ func TestSyntaxBitwiseOperator(t *testing.T) { stmt := c.stmt src := fmt.Sprintf(`package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { %s - return position + return dstPos }`, stmt) _, err := compileToIR([]byte(src)) if err == nil && c.err { diff --git a/internal/shader/testdata/vertex.go b/internal/shader/testdata/vertex.go index fa2fc12a8..ec4886386 100644 --- a/internal/shader/testdata/vertex.go +++ b/internal/shader/testdata/vertex.go @@ -1,13 +1,13 @@ package main -func Vertex(position vec2, texCoord vec2, color vec4) (position vec4, texCoord vec2, color vec4) { +func Vertex(dstPos vec2, srcPos vec2, color vec4) (dstPos vec4, srcPos vec2, color vec4) { projectionMatrix := mat4( 2/ScreenSize.x, 0, 0, 0, 0, 2/ScreenSize.y, 0, 0, 0, 0, 1, 0, -1, -1, 0, 1, ) - return projectionMatrix * vec4(position, 0, 1), texCoord, color + return projectionMatrix * vec4(dstPos, 0, 1), srcPos, color } var ScreenSize vec2 diff --git a/internal/shader/testdata/vertex_fragment.go b/internal/shader/testdata/vertex_fragment.go index a5a6cb647..f2099e130 100644 --- a/internal/shader/testdata/vertex_fragment.go +++ b/internal/shader/testdata/vertex_fragment.go @@ -1,17 +1,17 @@ package main -func Vertex(position vec2, texCoord vec2, color vec4) (position vec4, texCoord vec2, color vec4) { +func Vertex(dstPos vec2, srcPos vec2, color vec4) (dstPos vec4, srcPos vec2, color vec4) { projectionMatrix := mat4( 2/ScreenSize.x, 0, 0, 0, 0, 2/ScreenSize.y, 0, 0, 0, 0, 1, 0, -1, -1, 0, 1, ) - return projectionMatrix * vec4(position, 0, 1), texCoord, color + return projectionMatrix * vec4(dstPos, 0, 1), srcPos, color } -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { - return vec4(position.x, texCoord.y, color.z, 1) +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { + return vec4(dstPos.x, srcPos.y, color.z, 1) } var ScreenSize vec2 diff --git a/internal/testing/shader.go b/internal/testing/shader.go index 5fc8d0d3d..5c6ae3f7c 100644 --- a/internal/testing/shader.go +++ b/internal/testing/shader.go @@ -28,7 +28,7 @@ func ShaderProgramFill(r, g, b, a byte) *shaderir.Program { package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return vec4(%0.9f, %0.9f, %0.9f, %0.9f) } `, float64(r)/0xff, float64(g)/0xff, float64(b)/0xff, float64(a)/0xff))) @@ -46,14 +46,14 @@ func ShaderProgramImages(numImages int) *shaderir.Program { var exprs []string for i := 0; i < numImages; i++ { - exprs = append(exprs, fmt.Sprintf("imageSrc%dUnsafeAt(texCoord)", i)) + exprs = append(exprs, fmt.Sprintf("imageSrc%dUnsafeAt(srcPos)", i)) } ir, err := graphics.CompileShader([]byte(fmt.Sprintf(`//kage:unit pixels package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return %s } `, strings.Join(exprs, " + ")))) diff --git a/shader_test.go b/shader_test.go index d49b23829..071e48ae1 100644 --- a/shader_test.go +++ b/shader_test.go @@ -32,7 +32,7 @@ func TestShaderFill(t *testing.T) { package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return vec4(1, 0, 0, 1) } `)) @@ -64,7 +64,7 @@ func TestShaderFillWithDrawImage(t *testing.T) { package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return vec4(1, 0, 0, 1) } `)) @@ -101,8 +101,8 @@ func TestShaderWithDrawImageDoesNotWreckTextureUnits(t *testing.T) { package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { - return imageSrc0At(texCoord) +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { + return imageSrc0At(srcPos) } `)) if err != nil { @@ -171,7 +171,7 @@ func TestShaderFillWithDrawTriangles(t *testing.T) { package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return vec4(1, 0, 0, 1) } `)) @@ -252,7 +252,7 @@ func clr(red float) (float, float, float, float) { return red, 0, 0, 1 } -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return vec4(clr(1)) } `)) @@ -283,7 +283,7 @@ package main var U vec4 -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return U } `)) @@ -312,7 +312,7 @@ func TestShaderMatrix(t *testing.T) { package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { var a, b mat4 a[0] = vec4(0.125, 0.0625, 0.0625, 0.0625) a[1] = vec4(0.25, 0.25, 0.0625, 0.1875) @@ -352,9 +352,9 @@ func TestShaderSubImage(t *testing.T) { package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { - r := imageSrc0At(texCoord).r - g := imageSrc1At(texCoord).g +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { + r := imageSrc0At(srcPos).r + g := imageSrc1At(srcPos).g return vec4(r, g, 0, 1) } `)) @@ -480,8 +480,8 @@ func TestShaderDerivatives(t *testing.T) { package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { - p := imageSrc0At(texCoord) +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { + p := imageSrc0At(srcPos) return vec4(abs(dfdx(p.r)), abs(dfdy(p.g)), 0, 1) } `)) @@ -542,8 +542,8 @@ func Foo(p vec4) vec4 { return vec4(abs(dfdx(p.r)), abs(dfdy(p.g)), 0, 1) } -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { - p := imageSrc0At(texCoord) +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { + p := imageSrc0At(srcPos) return Foo(p) } `)) @@ -604,7 +604,7 @@ package main var C [2]float -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return vec4(C[0], 1, 1, 1) }`, Uniforms: map[string]any{ @@ -619,7 +619,7 @@ package main var C [1]float -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return vec4(C[0], 1, 1, 1) }`, Uniforms: map[string]any{ @@ -634,7 +634,7 @@ package main var C [2]mat2 -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return vec4(C[0][0][0], 1, 1, 1) }`, Uniforms: map[string]any{ @@ -676,7 +676,7 @@ func TestShaderFuncMod(t *testing.T) { package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { r := mod(-0.25, 1.0) return vec4(r, 0, 0, 1) } @@ -712,8 +712,8 @@ func TestShaderMatrixInitialize(t *testing.T) { package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { - return mat4(2) * imageSrc0At(texCoord); +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { + return mat4(2) * imageSrc0At(srcPos); } `)) if err != nil { @@ -744,7 +744,7 @@ func TestShaderModVectorAndFloat(t *testing.T) { package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { r := mod(vec3(0.25, 0.5, 0.75), 0.5) return vec4(r, 1) } @@ -781,8 +781,8 @@ func textureAt(uv vec2) vec4 { return imageSrc0UnsafeAt(uv) } -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { - return textureAt(texCoord) +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { + return textureAt(srcPos) } `)) if err != nil { @@ -815,7 +815,7 @@ func TestShaderAtan2(t *testing.T) { package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { y := vec4(1, 1, 1, 1) x := vec4(1, 1, 1, 1) return atan2(y, x) @@ -852,7 +852,7 @@ package main var Mat2 mat2 var F float -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return vec4(F * Mat2 * vec2(1), 1, 1) } `)) @@ -892,7 +892,7 @@ package main var Mat2 [2]mat2 var F float -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return vec4(F * Mat2[0] * Mat2[1] * vec2(1), 1, 1) } `)) @@ -934,7 +934,7 @@ package main var Mat3 mat3 var F float -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return vec4(F * Mat3 * vec3(1), 1) } `)) @@ -975,7 +975,7 @@ package main var Mat3 [2]mat3 var F float -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return vec4(F * Mat3[0] * Mat3[1] * vec3(1), 1) } `)) @@ -1019,7 +1019,7 @@ package main var Mat4 mat4 var F float -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return F * Mat4 * vec4(1) } `)) @@ -1061,7 +1061,7 @@ package main var Mat4 [2]mat4 var F float -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return F * Mat4[0] * Mat4[1] * vec4(1) } `)) @@ -1103,9 +1103,9 @@ func TestShaderOptionsNegativeBounds(t *testing.T) { package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { - r := imageSrc0At(texCoord).r - g := imageSrc1At(texCoord).g +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { + r := imageSrc0At(srcPos).r + g := imageSrc1At(srcPos).g return vec4(r, g, 0, 1) } `)) @@ -1233,7 +1233,7 @@ func TestShaderVectorEqual(t *testing.T) { package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { a := vec3(1) b := vec3(1) if a == b { @@ -1283,8 +1283,8 @@ func TestShaderDiscard(t *testing.T) { package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { - p := imageSrc0At(texCoord) +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { + p := imageSrc0At(srcPos) if p.a == 0 { discard() } else { @@ -1330,11 +1330,11 @@ func TestShaderDrawRect(t *testing.T) { package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { - // Adjust texCoord into [0, 1]. - texCoord -= imageSrc0Origin() - texCoord /= imageSrc0Size() - if texCoord.x >= 0.5 && texCoord.y >= 0.5 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { + // Adjust srcPos into [0, 1]. + srcPos -= imageSrc0Origin() + srcPos /= imageSrc0Size() + if srcPos.x >= 0.5 && srcPos.y >= 0.5 { return vec4(1, 0, 0, 1) } return vec4(0, 1, 0, 1) @@ -1378,7 +1378,7 @@ func TestShaderDrawRectColorScale(t *testing.T) { package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return color } `)) @@ -1415,7 +1415,7 @@ var U1 int var U2 int var U3 int -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return vec4(float(U0)/255.0, float(U1)/255.0, float(U2)/255.0, float(U3)/255.0) } ` @@ -1426,7 +1426,7 @@ package main var U [4]int -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return vec4(float(U[0])/255.0, float(U[1])/255.0, float(U[2])/255.0, float(U[3])/255.0) } ` @@ -1438,7 +1438,7 @@ package main var U0 ivec4 var U1 [2]ivec3 -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return vec4(float(U0.x)/255.0, float(U0.y)/255.0, float(U1[0].z)/255.0, float(U1[1].x)/255.0) } ` @@ -1614,7 +1614,7 @@ package main var U [4]vec3 -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return vec4(U[0].x/255.0, U[1].y/255.0, U[2].z/255.0, U[3].x/255.0) } ` @@ -1685,7 +1685,7 @@ return vec4(b)/255`, package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { %s } `, tc.source) @@ -1719,8 +1719,8 @@ func TestShaderTexelAndPixel(t *testing.T) { package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { - pos := (texCoord - imageSrc0Origin()) / imageSrc0Size() +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { + pos := (srcPos - imageSrc0Origin()) / imageSrc0Size() pos *= vec2(%d, %d) pos /= 255 return vec4(pos.x, pos.y, 0, 1) @@ -1733,8 +1733,8 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { - pos := texCoord - imageSrc0Origin() +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { + pos := srcPos - imageSrc0Origin() pos /= 255 return vec4(pos.x, pos.y, 0, 1) } @@ -1780,8 +1780,8 @@ func TestShaderDifferentTextureSizes(t *testing.T) { package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { - return imageSrc0At(texCoord) + imageSrc1At(texCoord) +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { + return imageSrc0At(srcPos) + imageSrc1At(srcPos) } `, unit))) if err != nil { @@ -1831,7 +1831,7 @@ func TestShaderIVec(t *testing.T) { package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { pos := ivec2(3, 4) return imageSrc0At(vec2(pos) + imageSrc0Origin()) } @@ -1862,7 +1862,7 @@ package main var U vec4 var V [3]float -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return vec4(0) } `)) @@ -1968,7 +1968,7 @@ package main var U vec4 -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { return U } `)) @@ -2025,8 +2025,8 @@ func TestShaderDrawRectWithoutSource(t *testing.T) { package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { - t := texCoord +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { + t := srcPos size := imageSrc0Size() @@ -2039,7 +2039,7 @@ func Fragment(position vec4, texCoord vec2, color vec4) vec4 { return vec4(0, 1, 1, 1) } - // Adjust texCoord into [0, 1]. + // Adjust srcPos into [0, 1]. t -= imageSrc0Origin() if size != vec2(0) { t /= size @@ -2109,9 +2109,9 @@ func TestShaderMatrixDivFloat(t *testing.T) { package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { var x = 2.0 - return mat4(3) / x * imageSrc0At(texCoord); + return mat4(3) / x * imageSrc0At(srcPos); } `)) if err != nil { @@ -2161,8 +2161,8 @@ func TestShaderDifferentSourceSizes(t *testing.T) { package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { - return imageSrc0At(texCoord) + imageSrc1At(texCoord) +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { + return imageSrc0At(srcPos) + imageSrc1At(srcPos) } `, unit))) if err != nil { @@ -2272,8 +2272,8 @@ func TestShaderBitwiseOperator(t *testing.T) { package main -func Fragment(position vec4, texCoord vec2, color vec4) vec4 { - v := ivec4(imageSrc0At(texCoord) * 0xff) +func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4 { + v := ivec4(imageSrc0At(srcPos) * 0xff) %s return vec4(v) / 0xff; }