good morning!!!!

Skip to content
Snippets Groups Projects
Commit 8b89e93e authored by Garet Halliday's avatar Garet Halliday
Browse files

very hacky

parent 8c3a34fc
No related branches found
Tags v0.2.7
No related merge requests found
......@@ -19,6 +19,44 @@ var instance *wasmtime.Instance
var optimizeGLSL *wasmtime.Func
var memory *wasmtime.Memory
func tryOptimize(src string, vertex bool) (string, error) {
for {
data := memory.UnsafeData(store)
ptr := len(data) - len(src) - 1
copy(data[ptr:], src)
data[ptr+len(src)] = 0
var ty int32
if vertex {
ty = 1
}
res, err := optimizeGLSL.Call(store, int32(ptr), int32(3), ty)
if err != nil {
return "", err
}
var out strings.Builder
i := res.(int32)
if i == 0 {
return "", errors.New("something went wrong")
}
for {
if data[i] == 0 {
break
}
out.WriteByte(data[i])
i++
}
if out.Len() > 10 {
return out.String(), nil
}
// hack: add a newline character and try again
src += "\n"
}
}
func Optimize(input, output string) error {
if engine == nil {
engine = wasmtime.NewEngine()
......@@ -86,35 +124,13 @@ func Optimize(input, output string) error {
if err != nil {
return err
}
data := memory.UnsafeData(store)
ptr := len(data) - len(src) - 1
copy(data[ptr:], src)
data[ptr+len(src)] = 0
var ty int32
if strings.HasSuffix(input, ".vert") {
ty = 1
}
var res any
res, err = optimizeGLSL.Call(store, int32(ptr), int32(3), ty)
out, err := tryOptimize(string(src), strings.HasSuffix(input, ".vert"))
if err != nil {
return err
}
var out strings.Builder
i := res.(int32)
if i == 0 {
return errors.New("something went wrong!")
}
for {
if data[i] == 0 {
break
}
out.WriteByte(data[i])
i++
}
patched := patch(out.String())
patched := patch(out)
return os.WriteFile(output, []byte(patched), 0777)
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment