Revert "internal/shaderlister: compile shaders"

This reverts commit 848e30e0e7.

Reason: test failures
This commit is contained in:
Hajime Hoshi 2024-11-16 19:14:02 +09:00
parent 848e30e0e7
commit ab954c9c6e

View File

@ -30,16 +30,8 @@ import (
"golang.org/x/tools/go/ast/inspector" "golang.org/x/tools/go/ast/inspector"
"golang.org/x/tools/go/packages" "golang.org/x/tools/go/packages"
"github.com/hajimehoshi/ebiten/v2/internal/graphics"
"github.com/hajimehoshi/ebiten/v2/internal/shaderir/glsl"
"github.com/hajimehoshi/ebiten/v2/internal/shaderir/hlsl"
"github.com/hajimehoshi/ebiten/v2/internal/shaderir/msl"
"github.com/hajimehoshi/ebiten/v2/internal/shaderir/pssl"
) )
var flagTarget = flag.String("target", "", "shader compilation targets separated by comma (e.g. 'glsl,glsles,hlsl,msl')")
func main() { func main() {
if err := xmain(); err != nil { if err := xmain(); err != nil {
fmt.Fprintln(os.Stderr, err) fmt.Fprintln(os.Stderr, err)
@ -51,40 +43,11 @@ type Shader struct {
Package string Package string
File string File string
Source string Source string
GLSL *GLSL `json:",omitempty"`
GLSLES *GLSLES `json:",omitempty"`
HLSL *HLSL `json:",omitempty"`
MSL *MSL `json:",omitempty"`
PSSL *PSSL `json:",omitempty"`
}
type GLSL struct {
Vertex string
Fragment string
}
type GLSLES struct {
Vertex string
Fragment string
}
type HLSL struct {
Vertex string
Pixel string
}
type MSL struct {
Shader string
}
type PSSL struct {
Vertex string
Pixel string
} }
func xmain() error { func xmain() error {
flag.Usage = func() { flag.Usage = func() {
fmt.Fprintln(os.Stderr, "shaderlister [-target=TARGET] [package]") fmt.Fprintln(os.Stderr, "shaderlister [package]")
os.Exit(2) os.Exit(2)
} }
flag.Parse() flag.Parse()
@ -99,16 +62,10 @@ func xmain() error {
return err return err
} }
targets := strings.Split(*flagTarget, ",")
for i := range targets {
targets[i] = strings.TrimSpace(targets[i])
}
// Collect shader information. // Collect shader information.
// Even if no shader is found, the output should be a JSON array. Start with an empty slice, not nil. // Even if no shader is found, the output should be a JSON array. Start with an empty slice, not nil.
shaders := []Shader{} shaders := []Shader{}
var visitErr error
packages.Visit(pkgs, func(pkg *packages.Package) bool { packages.Visit(pkgs, func(pkg *packages.Package) bool {
path := pkg.PkgPath path := pkg.PkgPath
// A standard library should not have a directive for shaders. Skip them. // A standard library should not have a directive for shaders. Skip them.
@ -119,61 +76,9 @@ func xmain() error {
if strings.HasPrefix(path, "golang.org/x/") { if strings.HasPrefix(path, "golang.org/x/") {
return true return true
} }
origN := len(shaders)
shaders = appendShaderSources(shaders, pkg) shaders = appendShaderSources(shaders, pkg)
// Compile shaders.
for i, shader := range shaders[origN:] {
ir, err := graphics.CompileShader([]byte(shader.Source))
if err != nil {
visitErr = fmt.Errorf("compiling shader failed: %w", err)
return false
}
for _, target := range targets {
switch target {
case "glsl":
vs, fs := glsl.Compile(ir, glsl.GLSLVersionDefault)
shaders[origN+i].GLSL = &GLSL{
Vertex: vs,
Fragment: fs,
}
case "glsles":
vs, fs := glsl.Compile(ir, glsl.GLSLVersionES300)
shaders[origN+i].GLSLES = &GLSLES{
Vertex: vs,
Fragment: fs,
}
case "hlsl":
vs, ps, _ := hlsl.Compile(ir)
shaders[origN+i].HLSL = &HLSL{
Vertex: vs,
Pixel: ps,
}
case "msl":
s := msl.Compile(ir)
shaders[origN+i].MSL = &MSL{
Shader: s,
}
case "pssl":
vs, ps := pssl.Compile(ir)
shaders[origN+i].PSSL = &PSSL{
Vertex: vs,
Pixel: ps,
}
default:
visitErr = fmt.Errorf("unsupported target: %s", target)
return false
}
}
}
return true return true
}, nil) }, nil)
if visitErr != nil {
return visitErr
}
w := bufio.NewWriter(os.Stdout) w := bufio.NewWriter(os.Stdout)
enc := json.NewEncoder(w) enc := json.NewEncoder(w)