All Projects → icculus → mojoshader

icculus / mojoshader

Licence: Zlib license
Use Direct3D shaders with other 3D rendering APIs.

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to mojoshader

Aether3d
Aether3D Game Engine
Stars: ✭ 177 (+94.51%)
Mutual labels:  metal, vulkan, direct3d
Veldrid
A low-level, portable graphics library for .NET.
Stars: ✭ 1,784 (+1860.44%)
Mutual labels:  metal, vulkan, direct3d
Filament
Filament is a real-time physically based rendering engine for Android, iOS, Windows, Linux, macOS, and WebGL2
Stars: ✭ 13,215 (+14421.98%)
Mutual labels:  metal, vulkan, opengl-es
Diligentcore
Core functionality of Diligent Engine
Stars: ✭ 263 (+189.01%)
Mutual labels:  vulkan, opengl-es, direct3d
Viry3d
Cross platform 2D and 3D game engine in C++.
Stars: ✭ 307 (+237.36%)
Mutual labels:  metal, vulkan, opengl-es
Shaderconductor
ShaderConductor is a tool designed for cross-compiling HLSL to other shading languages
Stars: ✭ 1,146 (+1159.34%)
Mutual labels:  metal, vulkan, opengl-es
Pmtech
Lightweight, multi-platform, data-oriented game engine.
Stars: ✭ 478 (+425.27%)
Mutual labels:  metal, vulkan, opengl-es
Fna3d
FNA3D - 3D Graphics Library for FNA
Stars: ✭ 111 (+21.98%)
Mutual labels:  metal, vulkan, direct3d
bgfx-header-extension-library
Header-only effects and helper library for Bgfx to help you hit the ground running. Includes a bunch of post processing filters to complete common graphical tasks
Stars: ✭ 35 (-61.54%)
Mutual labels:  metal, vulkan
Metalangle
MetalANGLE: OpenGL ES to Metal API translation layer
Stars: ✭ 182 (+100%)
Mutual labels:  metal, opengl-es
virtualGizmo3D
Virtual GIZMO - 3D object manipulator / orientator, via mouse, with pan and dolly/zoom features
Stars: ✭ 36 (-60.44%)
Mutual labels:  metal, vulkan
Floor
A C++ Compute/Graphics Library and Toolchain enabling same-source CUDA/Host/Metal/OpenCL/Vulkan C++ programming and execution.
Stars: ✭ 166 (+82.42%)
Mutual labels:  metal, vulkan
Kaleido3d
Next Generation Renderer for Cross Platform Engine Development
Stars: ✭ 145 (+59.34%)
Mutual labels:  metal, vulkan
CrossWindow-Demos
🥪 Examples of how to use CrossWindow for things like rendering graphics, listening to events, etc.
Stars: ✭ 48 (-47.25%)
Mutual labels:  metal, vulkan
The Forge
The Forge Cross-Platform Rendering Framework PC Windows, Linux, Ray Tracing, macOS / iOS, Android, XBOX, PS4, PS5, Switch, Quest 2
Stars: ✭ 2,710 (+2878.02%)
Mutual labels:  metal, vulkan
ogl to vlk
Vulkan Tutorials For OpenGL Developers
Stars: ✭ 16 (-82.42%)
Mutual labels:  vulkan, opengl-es
Wolf.engine
The Wolf is a comprehensive set of C/C++ open source libraries for realtime rendering, realtime streaming and game developing
Stars: ✭ 230 (+152.75%)
Mutual labels:  metal, vulkan
wgpu-py
Next generation GPU API for Python
Stars: ✭ 210 (+130.77%)
Mutual labels:  metal, vulkan
Mg
C# Vulkan interface/polyfill for WINDOWS and MacOS
Stars: ✭ 19 (-79.12%)
Mutual labels:  metal, vulkan
spirv cross
Safe Rust wrapper around SPIRV-Cross
Stars: ✭ 75 (-17.58%)
Mutual labels:  metal, vulkan

MojoShader

https://icculus.org/mojoshader/

MojoShader is a zlib-licensed library to work with Direct3D shaders on alternate 3D APIs and non-Windows platforms. The primary motivation is moving shaders to OpenGL languages on the fly. The developer deals with "profiles" that represent various target languages, such as GLSL or ARB_*_program.

This allows a developer to manage one set of shaders, presumably written in Direct3D HLSL, and use them across multiple rendering backends. This also means that the developer only has to worry about one (offline) compiler to manage program complexity, while MojoShader itself deals with the reduced complexity of the bytecode at runtime.

MojoShader provides both a simple API to convert bytecode to various profiles, and (optionally) basic glue to rendering APIs to abstract the management of the shaders at runtime.

Work is in progress to allow MojoShader to work as a replacement stack for the D3DX shader tools. The library already provides a preprocessor and an assembler to generate bytecode from low-level source, and construction of a full HLSL compiler is in progress.

The library is meant to be statically linked to an application (just add a few .c files and headers to your build), allows the app to optionally specify an allocator, and is thread safe (although OpenGL itself is not). It is meant to be embedded in games with a minimum of fuss.

To use this in your project:

  • Add mojoshader*.c and mojoshader*.h to your project.
  • Compile mojoshader*.c
  • If you don't have a C99-compliant compiler, like Microsoft Visual Studio, you'll need to compile the .c files as C++ to get them to build.
  • If you don't have cmake to generate mojoshader_version.h, you can either add a blank file with that name, or add MOJOSHADER_NO_VERSION_INCLUDE to your preprocessor definitions.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].