Example #1
0
        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)));
        }
Example #3
0
 public abstract Shader CreateShader(ShaderStages type, CompiledShaderCode compiledShaderCode);
Example #4
0
 public override Shader CreateShader(ShaderStages type, CompiledShaderCode compiledShaderCode)
 {
     return(new VkShader(_device, type, (VkShaderBytecode)compiledShaderCode));
 }