Yeriwyn / veldrid-spirv

SPIR-V shader translation for Veldrid, using SPIRV-Cross

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Veldrid.SPIRV

NuGet

Veldrid.SPIRV is an extension library for Veldrid that provides support for loading SPIR-V bytecode for all Veldrid backends.

Usage

The easiest way to use Veldrid.SPIRV is through the extension methods it provides for the ResourceFactory type.

byte[] vertexShaderSpirvBytes = File.ReadAllBytes("myshader.vert.spv");
byte[] fragmentShaderSpirvBytes = File.ReadAllBytes("myshader.vert.spv");
Shader[] shaders = factory.CreateFromSpirv(
    new ShaderDescription(ShaderStages.Vertex, vertexShaderSpirvBytes, "main"),
    new ShaderDescription(ShaderStages.Fragment, vertexShaderSpirvBytes, "main"));
// Use "shaders" array to construct a Pipeline

You can also directly load GLSL source code and do the same as above. Behind the scenes, Veldrid.SPIRV will compile the GLSL to SPIR-V and then perform the cross-compile to the target language.

Specialization Constants

Although HLSL and OpenGL-style GLSL do not support SPIR-V Specialization Constants, you can use Veldrid.SPIRV to "specialize" the shader before the target source code is actually emitted. Set CrossCompileOptions.Specializations with an array of SpecializationConstant values to accomplish this.

libveldrid-spirv

Veldrid.SPIRV is implemented primarily as a native library, interfacing with SPIRV-Cross and shaderc. There are build scripts in the root of the repository which can be used to automatically build the native library for your platform.

Native build requirements:

  • CMake
  • Python

Pre-built binaries are bundled in the NuGet package for the following operating systems:

  • Windows x64
  • Windows x86
  • macOS x64
  • Linux x64
  • iOS arm64
  • Android arm64-v8a
  • Android armeabi-v7a

About

SPIR-V shader translation for Veldrid, using SPIRV-Cross

License:MIT License


Languages

Language:C# 42.1%Language:C++ 18.8%Language:CMake 18.7%Language:GLSL 7.8%Language:PowerShell 4.3%Language:Python 4.1%Language:Batchfile 2.3%Language:Shell 1.9%