29 lines
1.7 KiB
Markdown
29 lines
1.7 KiB
Markdown
# librashader
|
|
|
|
![image](https://user-images.githubusercontent.com/1000503/202840226-68e9d01f-aa0b-4bfa-9bc6-a1363f701b85.png)
|
|
|
|
A preprocessor, compiler, and runtime for RetroArch 'slang' shaders, rewritten in pure Rust.
|
|
|
|
Heavily WIP.
|
|
|
|
## License
|
|
**There is not yet a functioning implementation of librashader but this section outlines its licensing goals in contrast to
|
|
RetroArch.**
|
|
|
|
While librashader is an independent reimplementation of the RetroArch shader pipeline, referencing the RetroArch source
|
|
code was indispensable to its creation. As it is therefore considered a derivative work, the core parts of librashader
|
|
such as the preprocessor, the preset parser, the reflection library, and the runtimes, are all licensed under GPLv3.
|
|
|
|
The librashader C API, i.e. its headers and definitions, *not its implementation in `librashader_capi`*,
|
|
are unique to librashader and are more permissively licensed, and may allow you to use librashader in your permissively
|
|
licensed or proprietary project.
|
|
|
|
While the code for `librashader_capi` (`librashader.so` and `rashader.dll`) is still under GPLv3,
|
|
you may use librashader in a non-GPL work by linking against the MIT licensed `librashader_ld`,
|
|
which implements the librashader C API, and thunks its calls to any `librashader.so` or `rashader.dll`
|
|
library found in the load path, *provided that `librashader.so` or `rashader.dll` are distributed under the restrictions
|
|
of GPLv3*.
|
|
|
|
Note that if your project is not compatible with GPLv3, you **can not distribute `librashader.so` or `rashader.dll`**
|
|
alongside your project, **only `librashader-ld.so` or `rashader-ld.dll`**, which will do nothing without a librashader
|
|
implementation in the load path. The end user must obtain the implementation of librashader themselves. |