public byte[] GetShaderBytecode(GraphicsBackend backend, bool vertexShader) { string name = vertexShader ? "simple-vertex" : "simple-frag"; switch (backend) { case GraphicsBackend.Vulkan: { name += ".spv"; string path = Path.Combine(AppContext.BaseDirectory, "Shaders", "SPIR-V", name); return(File.ReadAllBytes(path)); } case GraphicsBackend.Direct3D11: { name += ".hlsl"; string path = Path.Combine(AppContext.BaseDirectory, "Shaders", "HLSL", name); string text = File.ReadAllText(path); CompiledShaderCode bytecode = _rc.ResourceFactory.ProcessShaderCode(vertexShader ? ShaderStages.Vertex : ShaderStages.Fragment, text); return(((Veldrid.Graphics.Direct3D.D3DShaderBytecode)bytecode).Bytecode.Data); // wtf } case GraphicsBackend.OpenGL: case GraphicsBackend.OpenGLES: { name += ".glsl"; string path = Path.Combine(AppContext.BaseDirectory, "Shaders", "GLSL", name); return(File.ReadAllBytes(path)); } default: throw new NotImplementedException(); } }
public override Shader CreateShader(ShaderStages type, CompiledShaderCode compiledShaderCode) { OpenGLCompiledShaderCode glShaderSource = (OpenGLCompiledShaderCode)compiledShaderCode; return(new OpenGLShader(glShaderSource.ShaderCode, OpenGLFormats.VeldridToGLShaderType(type))); }
public abstract Shader CreateShader(ShaderStages type, CompiledShaderCode compiledShaderCode);
public override Shader CreateShader(ShaderStages type, CompiledShaderCode compiledShaderCode) { return(new VkShader(_device, type, (VkShaderBytecode)compiledShaderCode)); }