package spirv_test import "core:fmt" import "core:os" import shader "../../shader" main :: proc() { shaders := []struct{name: string, file: string, stage: shader.Shader_Stage}{ {"default_3d.vert", "shaders/default_3d.vert.luma", .Vertex}, {"default_3d.frag", "shaders/default_3d.frag.luma", .Fragment}, {"lit_3d.vert", "shaders/lit_3d.vert.luma", .Vertex}, {"lit_3d.frag", "shaders/lit_3d.frag.luma", .Fragment}, {"default_2d.vert", "shaders/default_2d.vert.luma", .Vertex}, {"default_2d.frag", "shaders/default_2d.frag.luma", .Fragment}, {"lit_2d.frag", "shaders/lit_2d.frag.luma", .Fragment}, } for s in shaders { source, _ := os.read_entire_file(s.file, context.allocator) result := shader.compile(string(source), shader.Compile_Options{ target = .SPIR_V, opt_level = .Basic, stage = s.stage, }, s.name) defer shader.destroy_compile_result(&result) if !result.success { fmt.printf("FAIL: %s\n", s.name) for d in result.diagnostics { msg := shader.format_diagnostic(d) fmt.printf(" %s\n", msg) delete(msg) } } else { outpath := fmt.tprintf("/tmp/%s.spv", s.name) _ = os.write_entire_file(outpath, result.output) fmt.printf("OK: %s -> %s (%d bytes)\n", s.name, outpath, len(result.output)) } } }