Yotsuba Shader
Documentación

Artículo

Transpilar desde SPIR-V

Utiliza las clases reales Parser y los compiladores de backend de YotsubaShaderCross. WGSL sigue previsto.

API actual#

YotsubaShaderCross expone Parser, CompilerGLSL, CompilerHLSL, CompilerMSL y APIs de reflexión. En este checkout no existe el namespace YotsubaShader.Transpile ni un wrapper Transpile.FromSpirVTo*.

SpirvToGlsl.cs
using System;
using System.IO;
using YotsubaShaderCross;

byte[] bytes = File.ReadAllBytes("shader.spv");
if (bytes.Length % sizeof(uint) != 0)
    throw new InvalidDataException("SPIR-V must contain complete 32-bit words.");

uint[] words = new uint[bytes.Length / sizeof(uint)];
Buffer.BlockCopy(bytes, 0, words, 0, bytes.Length);

var parser = new Parser(new CppVector<uint>(words));
parser.parse();

var glsl = new CompilerGLSL(parser.get_parsed_ir());
CompilerGLSL.Options options = glsl.get_common_options();
options.version = 450;
options.es = false;
glsl.set_common_options(options);

string source = glsl.compile().str();

Para GLSL ES, establece options.es = true y selecciona una versión apropiada, como 300. Para HLSL o MSL, utiliza sus clases de compilador y sus opciones específicas. El resultado es código fuente; la toolchain gráfica de destino todavía debe compilarlo.

La generación de WGSL está prevista para 2027 y no tiene una clase de compilador implementada. CompilerCSHARP existe como esqueleto cuyos constructores lanzan NotImplementedException. Ninguna de las dos es una ruta de conversión utilizable actualmente.

La biblioteca traducida utiliza .NET 8. El código administrado por sí solo no demuestra compatibilidad con todas las consolas, navegadores, entornos AOT o drivers GPU; valida la plataforma que pretendas utilizar.

Copyright © 2026 Colaboradores de Yotsuba Shader · Licencias · GitHub