doc(d3d12): clean up docs for d3d12
This commit is contained in:
parent
ec619ec5e2
commit
3cdf3aa105
3
Cargo.lock
generated
3
Cargo.lock
generated
|
@ -802,6 +802,7 @@ dependencies = [
|
||||||
"librashader-reflect",
|
"librashader-reflect",
|
||||||
"librashader-runtime",
|
"librashader-runtime",
|
||||||
"librashader-runtime-d3d11",
|
"librashader-runtime-d3d11",
|
||||||
|
"librashader-runtime-d3d12",
|
||||||
"librashader-runtime-gl",
|
"librashader-runtime-gl",
|
||||||
"librashader-runtime-vk",
|
"librashader-runtime-vk",
|
||||||
"librashader-spirv-cross",
|
"librashader-spirv-cross",
|
||||||
|
@ -907,7 +908,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "librashader-runtime-d3d12"
|
name = "librashader-runtime-d3d12"
|
||||||
version = "0.1.0-beta.8"
|
version = "0.1.0-beta.10"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"array-concat",
|
"array-concat",
|
||||||
"array-init",
|
"array-init",
|
||||||
|
|
34
README.md
34
README.md
|
@ -10,20 +10,22 @@ librashader (*/ˈli:brəʃeɪdɚ/*) is a preprocessor, compiler, and runtime for
|
||||||
![Nightly rust](https://img.shields.io/badge/rust-nightly-orange.svg)
|
![Nightly rust](https://img.shields.io/badge/rust-nightly-orange.svg)
|
||||||
|
|
||||||
## Supported Render APIs
|
## Supported Render APIs
|
||||||
librashader supports OpenGL 3, OpenGL 4.6, Vulkan, DirectX 11, and DirectX 12. Older versions
|
librashader supports OpenGL 3, OpenGL 4.6, Vulkan, Direct3D 11, and Direct3D 12. Older versions
|
||||||
of DirectX and OpenGL, as well as Metal, are not supported (but pull-requests are welcome).
|
of Direct3D and OpenGL, as well as Metal, are not supported (but pull-requests are welcome).
|
||||||
|
|
||||||
| **API** | **Status** | **`librashader` feature** |
|
| **API** | **Status** | **`librashader` feature** |
|
||||||
|-------------|------------|---------------------------|
|
|-------------|------------|---------------------------|
|
||||||
| OpenGL 3.3+ | ✔ | `gl` |
|
| OpenGL 3.3+ | ✔ | `gl` |
|
||||||
| OpenGL 4.6 | ✔ | `gl` |
|
| OpenGL 4.6 | ✔ | `gl` |
|
||||||
| Vulkan 1.3+ | ✔ | `vk` |
|
| Vulkan | ✔ | `vk` |
|
||||||
| Direct3D11 | ✔ | `d3d11` |
|
| Direct3D 11 | ✔ | `d3d11` |
|
||||||
| Direct3D12 | 🚧 | `d3d12` |
|
| Direct3D 12 | ✔ | `d3d12` |
|
||||||
| OpenGL 2 | ❌ | |
|
| OpenGL 2 | ❌ | |
|
||||||
| DirectX 9 | ❌ | |
|
| Direct3D 9 | ❌ | |
|
||||||
|
| Direct3D 10 | ❌ | |
|
||||||
| Metal | ❌ | |
|
| Metal | ❌ | |
|
||||||
|
|
||||||
|
|
||||||
✔ = Render API is supported — 🚧 = Support is in progress — ❌ Render API is not supported
|
✔ = Render API is supported — 🚧 = Support is in progress — ❌ Render API is not supported
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
|
@ -73,18 +75,17 @@ CMake package is highly recommended.
|
||||||
### Examples
|
### Examples
|
||||||
|
|
||||||
The following Rust examples show how to use each librashader runtime.
|
The following Rust examples show how to use each librashader runtime.
|
||||||
* [Vulkan](https://github.com/SnowflakePowered/librashader/blob/master/librashader-runtime-vk/src/lib.rs#L40)
|
* [Vulkan](https://github.com/SnowflakePowered/librashader/blob/master/librashader-runtime-vk/src/lib.rs)
|
||||||
* [OpenGL](https://github.com/SnowflakePowered/librashader/blob/master/librashader-runtime-gl/src/lib.rs#L34)
|
* [OpenGL](https://github.com/SnowflakePowered/librashader/blob/master/librashader-runtime-gl/src/lib.rs)
|
||||||
* [Direct3D 11](https://github.com/SnowflakePowered/librashader/blob/master/librashader-runtime-d3d11/src/lib.rs#L33)
|
* [Direct3D 11](https://github.com/SnowflakePowered/librashader/blob/master/librashader-runtime-d3d11/src/lib.rs)
|
||||||
|
* [Direct3D 12](https://github.com/SnowflakePowered/librashader/blob/master/librashader-runtime-d3d12/src/lib.rs)
|
||||||
|
|
||||||
Some basic examples on using the C API are also provided in the [librashader-capi-tests](https://github.com/SnowflakePowered/librashader/tree/master/test/capi-tests/librashader-capi-tests)
|
Some basic examples on using the C API are also provided in the [librashader-capi-tests](https://github.com/SnowflakePowered/librashader/tree/master/test/capi-tests/librashader-capi-tests)
|
||||||
directory.
|
directory.
|
||||||
|
|
||||||
## Compatibility
|
## Compatibility
|
||||||
|
|
||||||
librashader implements the entire RetroArch shader pipeline and is highly compatible with existing shaders,
|
librashader implements the entire RetroArch shader pipeline and is highly compatible with existing shaders.
|
||||||
but there are some deliberate differences in design choices that may potentially cause incompatiblities with certain
|
|
||||||
shaders.
|
|
||||||
|
|
||||||
Please report an issue if you run into a shader that works in RetroArch, but not under librashader.
|
Please report an issue if you run into a shader that works in RetroArch, but not under librashader.
|
||||||
|
|
||||||
|
@ -92,6 +93,8 @@ Please report an issue if you run into a shader that works in RetroArch, but not
|
||||||
* Unlike RetroArch, librashader does not have full knowledge of the entire rendering state and is designed to be pluggable
|
* Unlike RetroArch, librashader does not have full knowledge of the entire rendering state and is designed to be pluggable
|
||||||
at any point in your render pipeline. Instead, filter chains terminate at a caller-provided output surface and viewport.
|
at any point in your render pipeline. Instead, filter chains terminate at a caller-provided output surface and viewport.
|
||||||
It is the caller's responsibility to blit the surface back to the backbuffer.
|
It is the caller's responsibility to blit the surface back to the backbuffer.
|
||||||
|
* Shaders are compiled in parallel where possible. This should noticeably decrease preset compile times. Note that parallel compilation
|
||||||
|
is not available to OpenGL.
|
||||||
* Runtime-specific differences
|
* Runtime-specific differences
|
||||||
* OpenGL
|
* OpenGL
|
||||||
* Copying of in-flight framebuffer contents to history is done via `glBlitFramebuffer` rather than drawing a quad into an intermediate FBO.
|
* Copying of in-flight framebuffer contents to history is done via `glBlitFramebuffer` rather than drawing a quad into an intermediate FBO.
|
||||||
|
@ -119,11 +122,6 @@ Please report an issue if you run into a shader that works in RetroArch, but not
|
||||||
Most, if not all shader presets should work fine on librashader. The runtime specific differences should not affect the output,
|
Most, if not all shader presets should work fine on librashader. The runtime specific differences should not affect the output,
|
||||||
and are more a heads-up for integrating librashader into your project.
|
and are more a heads-up for integrating librashader into your project.
|
||||||
|
|
||||||
Compatibility issues may arise with framebuffer copies for original history, but I have not found any yet;
|
|
||||||
if it does end up that this results in actual rendering differences I may change the implementation to be more in line
|
|
||||||
with RetroArch's copy implementation. However, since the Vulkan runtime already uses `vkCmdCopyImage` it is likely that it will
|
|
||||||
not cause issues.
|
|
||||||
|
|
||||||
### Writing a librashader Runtime
|
### Writing a librashader Runtime
|
||||||
|
|
||||||
If you wish to contribute a runtime implementation not already available, see the [librashader-runtime](https://docs.rs/librashader-runtime/latest/librashader_runtime/)
|
If you wish to contribute a runtime implementation not already available, see the [librashader-runtime](https://docs.rs/librashader-runtime/latest/librashader_runtime/)
|
||||||
|
@ -137,7 +135,7 @@ the runtime.
|
||||||
The core parts of librashader such as the preprocessor, the preset parser,
|
The core parts of librashader such as the preprocessor, the preset parser,
|
||||||
the reflection library, and the runtimes, are all licensed under the Mozilla Public License version 2.0.
|
the reflection library, and the runtimes, are all licensed under the Mozilla Public License version 2.0.
|
||||||
|
|
||||||
The librashader C API, i.e. its headers and definitions, *not its implementation in `librashader_capi`*,
|
The librashader C API, i.e. its headers and definitions, *not its implementation in `librashader-capi`*,
|
||||||
are more permissively licensed, and may allow you to use librashader in your permissively
|
are more permissively licensed, and may allow you to use librashader in your permissively
|
||||||
licensed or proprietary project.
|
licensed or proprietary project.
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ bytemuck = "1.13.0"
|
||||||
rspirv = { version = "0.11.0+1.5.4", optional = true }
|
rspirv = { version = "0.11.0+1.5.4", optional = true }
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = ["dxil", "unstable-naga"]
|
default = ["dxil"]
|
||||||
unstable-naga = [ "naga", "rspirv" ]
|
unstable-naga = [ "naga", "rspirv" ]
|
||||||
standalone = ["shaderc/build-from-source"]
|
standalone = ["shaderc/build-from-source"]
|
||||||
dxil = ["spirv-to-dxil"]
|
dxil = ["spirv-to-dxil"]
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
//! Direct3D11 shader runtime errors.
|
//! Direct3D 11 shader runtime errors.
|
||||||
//!
|
//!
|
||||||
use librashader_preprocess::PreprocessError;
|
use librashader_preprocess::PreprocessError;
|
||||||
use librashader_presets::ParsePresetError;
|
use librashader_presets::ParsePresetError;
|
||||||
|
@ -43,5 +43,5 @@ macro_rules! assume_d3d11_init {
|
||||||
/// Macro for unwrapping result of a D3D function.
|
/// Macro for unwrapping result of a D3D function.
|
||||||
pub(crate) use assume_d3d11_init;
|
pub(crate) use assume_d3d11_init;
|
||||||
|
|
||||||
/// Result type for Direct3D11 filter chains.
|
/// Result type for Direct3D 11 filter chains.
|
||||||
pub type Result<T> = std::result::Result<T, FilterChainError>;
|
pub type Result<T> = std::result::Result<T, FilterChainError>;
|
||||||
|
|
|
@ -3,7 +3,7 @@ name = "librashader-runtime-d3d12"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
license = "MPL-2.0 OR GPL-3.0-only"
|
license = "MPL-2.0 OR GPL-3.0-only"
|
||||||
version = "0.1.0-beta.8"
|
version = "0.1.0-beta.10"
|
||||||
authors = ["Ronny Chan <ronny@ronnychan.ca>"]
|
authors = ["Ronny Chan <ronny@ronnychan.ca>"]
|
||||||
repository = "https://github.com/SnowflakePowered/librashader"
|
repository = "https://github.com/SnowflakePowered/librashader"
|
||||||
readme = "../README.md"
|
readme = "../README.md"
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
//! Direct3D 12 shader runtime errors.
|
||||||
|
//!
|
||||||
use thiserror::Error;
|
use thiserror::Error;
|
||||||
|
|
||||||
/// Cumulative error type for Direct3D12 filter chains.
|
/// Cumulative error type for Direct3D12 filter chains.
|
||||||
|
@ -23,6 +25,7 @@ pub enum FilterChainError {
|
||||||
DescriptorHeapOverflow,
|
DescriptorHeapOverflow,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Result type for Direct3D 12 filter chains.
|
||||||
pub type Result<T> = std::result::Result<T, FilterChainError>;
|
pub type Result<T> = std::result::Result<T, FilterChainError>;
|
||||||
|
|
||||||
macro_rules! assume_d3d12_init {
|
macro_rules! assume_d3d12_init {
|
||||||
|
|
|
@ -61,6 +61,7 @@ pub struct FilterMutable {
|
||||||
pub(crate) parameters: FxHashMap<String, f32>,
|
pub(crate) parameters: FxHashMap<String, f32>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// A Direct3D 12 filter chain.
|
||||||
pub struct FilterChainD3D12 {
|
pub struct FilterChainD3D12 {
|
||||||
pub(crate) common: FilterCommon,
|
pub(crate) common: FilterCommon,
|
||||||
pub(crate) passes: Vec<FilterPass>,
|
pub(crate) passes: Vec<FilterPass>,
|
||||||
|
@ -513,7 +514,14 @@ impl FilterChainD3D12 {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Process a frame with the input image.
|
/// Records shader rendering commands to the provided command list.
|
||||||
|
///
|
||||||
|
/// * The input image must be in the `D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE` resource state.
|
||||||
|
/// * The output image must be in `D3D12_RESOURCE_STATE_RENDER_TARGET` resource state.
|
||||||
|
///
|
||||||
|
/// librashader **will not** create a resource barrier for the final pass. The output image will
|
||||||
|
/// remain in `D3D12_RESOURCE_STATE_RENDER_TARGET` after all shader passes. The caller must transition
|
||||||
|
/// the output image to the final resource state.
|
||||||
pub fn frame(
|
pub fn frame(
|
||||||
&mut self,
|
&mut self,
|
||||||
cmd: &ID3D12GraphicsCommandList,
|
cmd: &ID3D12GraphicsCommandList,
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
#![feature(type_alias_impl_trait)]
|
#![feature(type_alias_impl_trait)]
|
||||||
mod buffer;
|
mod buffer;
|
||||||
mod descriptor_heap;
|
mod descriptor_heap;
|
||||||
mod error;
|
pub mod error;
|
||||||
mod filter_chain;
|
mod filter_chain;
|
||||||
mod filter_pass;
|
mod filter_pass;
|
||||||
mod framebuffer;
|
mod framebuffer;
|
||||||
|
@ -11,7 +11,7 @@ mod graphics_pipeline;
|
||||||
mod hello_triangle;
|
mod hello_triangle;
|
||||||
mod luts;
|
mod luts;
|
||||||
mod mipmap;
|
mod mipmap;
|
||||||
mod options;
|
pub mod options;
|
||||||
mod parameters;
|
mod parameters;
|
||||||
mod quad_render;
|
mod quad_render;
|
||||||
mod render_target;
|
mod render_target;
|
||||||
|
@ -19,6 +19,7 @@ mod samplers;
|
||||||
mod texture;
|
mod texture;
|
||||||
mod util;
|
mod util;
|
||||||
|
|
||||||
|
pub use filter_chain::FilterChainD3D12;
|
||||||
pub use texture::D3D12InputImage;
|
pub use texture::D3D12InputImage;
|
||||||
pub use texture::D3D12OutputView;
|
pub use texture::D3D12OutputView;
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ use std::ops::Deref;
|
||||||
use windows::Win32::Graphics::Direct3D12::{ID3D12Resource, D3D12_CPU_DESCRIPTOR_HANDLE};
|
use windows::Win32::Graphics::Direct3D12::{ID3D12Resource, D3D12_CPU_DESCRIPTOR_HANDLE};
|
||||||
use windows::Win32::Graphics::Dxgi::Common::DXGI_FORMAT;
|
use windows::Win32::Graphics::Dxgi::Common::DXGI_FORMAT;
|
||||||
|
|
||||||
|
/// An image for use as shader resource view.
|
||||||
pub struct D3D12InputImage {
|
pub struct D3D12InputImage {
|
||||||
pub resource: ID3D12Resource,
|
pub resource: ID3D12Resource,
|
||||||
pub descriptor: D3D12_CPU_DESCRIPTOR_HANDLE,
|
pub descriptor: D3D12_CPU_DESCRIPTOR_HANDLE,
|
||||||
|
@ -41,6 +42,10 @@ impl AsRef<D3D12_CPU_DESCRIPTOR_HANDLE> for OutputDescriptor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// An image view for use as a render target.
|
||||||
|
///
|
||||||
|
/// Can be created from a CPU descriptor handle, and a size.
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct D3D12OutputView {
|
pub struct D3D12OutputView {
|
||||||
pub(crate) descriptor: OutputDescriptor,
|
pub(crate) descriptor: OutputDescriptor,
|
||||||
|
|
|
@ -523,8 +523,8 @@ impl FilterChainVulkan {
|
||||||
}
|
}
|
||||||
/// Records shader rendering commands to the provided command buffer.
|
/// Records shader rendering commands to the provided command buffer.
|
||||||
///
|
///
|
||||||
/// * The input image must be in the `VK_SHADER_READ_ONLY_OPTIMAL`.
|
/// * The input image must be in the `VK_SHADER_READ_ONLY_OPTIMAL` layout.
|
||||||
/// * The output image must be in `VK_COLOR_ATTACHMENT_OPTIMAL`.
|
/// * The output image must be in `VK_COLOR_ATTACHMENT_OPTIMAL` layout.
|
||||||
///
|
///
|
||||||
/// librashader **will not** create a pipeline barrier for the final pass. The output image will
|
/// librashader **will not** create a pipeline barrier for the final pass. The output image will
|
||||||
/// remain in `VK_COLOR_ATTACHMENT_OPTIMAL` after all shader passes. The caller must transition
|
/// remain in `VK_COLOR_ATTACHMENT_OPTIMAL` after all shader passes. The caller must transition
|
||||||
|
|
|
@ -19,23 +19,23 @@ librashader-preprocess = { path = "../librashader-preprocess", version = "0.1.0-
|
||||||
librashader-reflect = { path = "../librashader-reflect", version = "0.1.0-beta.10", features = ["standalone"] }
|
librashader-reflect = { path = "../librashader-reflect", version = "0.1.0-beta.10", features = ["standalone"] }
|
||||||
librashader-runtime = { path = "../librashader-runtime", version = "0.1.0-beta.10" }
|
librashader-runtime = { path = "../librashader-runtime", version = "0.1.0-beta.10" }
|
||||||
librashader-runtime-d3d11 = { path = "../librashader-runtime-d3d11", version = "0.1.0-beta.10", optional = true }
|
librashader-runtime-d3d11 = { path = "../librashader-runtime-d3d11", version = "0.1.0-beta.10", optional = true }
|
||||||
|
librashader-runtime-d3d12 = { path = "../librashader-runtime-d3d12", version = "0.1.0-beta.10", optional = true }
|
||||||
librashader-runtime-gl = { path = "../librashader-runtime-gl", version = "0.1.0-beta.10", optional = true }
|
librashader-runtime-gl = { path = "../librashader-runtime-gl", version = "0.1.0-beta.10", optional = true }
|
||||||
librashader-runtime-vk = { path = "../librashader-runtime-vk", version = "0.1.0-beta.10", optional = true }
|
librashader-runtime-vk = { path = "../librashader-runtime-vk", version = "0.1.0-beta.10", optional = true }
|
||||||
|
|
||||||
ash = { version = "0.37.1+1.3.235", optional = true }
|
ash = { version = "0.37.1+1.3.235", optional = true }
|
||||||
spirv_cross = { package = "librashader-spirv-cross", version = "0.23", features = ["glsl"], optional = true }
|
spirv_cross = { package = "librashader-spirv-cross", version = "0.23", features = ["glsl", "hlsl"], optional = true }
|
||||||
|
|
||||||
[target.'cfg(windows)'.dependencies.windows]
|
[target.'cfg(windows)'.dependencies.windows]
|
||||||
version = "0.44.0"
|
version = "0.44.0"
|
||||||
features = [
|
|
||||||
"Win32_Graphics_Direct3D11",
|
|
||||||
]
|
|
||||||
optional = true
|
optional = true
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = ["gl", "d3d11", "vk", "reflect", "preprocess", "presets" ]
|
default = ["gl", "d3d11", "d3d12", "vk", "reflect", "preprocess", "presets" ]
|
||||||
gl = [ "runtime", "librashader-common/opengl", "librashader-runtime-gl", "spirv_cross" ]
|
gl = [ "runtime", "librashader-common/opengl", "librashader-runtime-gl", "spirv_cross" ]
|
||||||
d3d11 = [ "runtime", "librashader-common/d3d11", "librashader-runtime-d3d11", "windows" ]
|
d3d11 = [ "runtime", "librashader-common/d3d11", "librashader-runtime-d3d11", "windows/Win32_Graphics_Direct3D11" ]
|
||||||
|
d3d12 = [ "runtime", "librashader-common/d3d11", "librashader-runtime-d3d12", "windows/Win32_Graphics_Direct3D12" ]
|
||||||
|
|
||||||
vk = ["runtime", "librashader-common/vulkan", "librashader-runtime-vk", "ash" ]
|
vk = ["runtime", "librashader-common/vulkan", "librashader-runtime-vk", "ash" ]
|
||||||
runtime = []
|
runtime = []
|
||||||
reflect = []
|
reflect = []
|
||||||
|
|
|
@ -15,10 +15,14 @@
|
||||||
//! called with appropriate input and output parameters to draw a frame with the shader effect applied.
|
//! called with appropriate input and output parameters to draw a frame with the shader effect applied.
|
||||||
//!
|
//!
|
||||||
//! ## Runtimes
|
//! ## Runtimes
|
||||||
//! Currently available runtimes are Vulkan 1.3+, OpenGL 3.3+ and 4.6 (with DSA), and Direct3D 11.
|
//! Currently available runtimes are Vulkan, OpenGL 3.3+ and 4.6 (with DSA), Direct3D 11, and Direct3D 12.
|
||||||
//! Work on the Direct3D 12 runtime is in progress. The Vulkan runtime requires [`VK_KHR_dynamic_rendering`](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_dynamic_rendering.html)
|
//!
|
||||||
|
//! The Vulkan runtime requires [`VK_KHR_dynamic_rendering`](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_dynamic_rendering.html)
|
||||||
//! by default, unless [`FilterChainOptions::render_pass_format`](crate::runtime::vk::FilterChainOptions) is explicitly set. Note that dynamic rendering
|
//! by default, unless [`FilterChainOptions::render_pass_format`](crate::runtime::vk::FilterChainOptions) is explicitly set. Note that dynamic rendering
|
||||||
//! will being the best performance.
|
//! will bring the best performance.
|
||||||
|
//!
|
||||||
|
//! The Direct3D 12 runtime requires support for [render passes](https://learn.microsoft.com/en-us/windows/win32/direct3d12/direct3d-12-render-passes), which
|
||||||
|
//! have been available since Windows 10, version 1809.
|
||||||
//!
|
//!
|
||||||
//! | **API** | **Status** | **`librashader` feature** |
|
//! | **API** | **Status** | **`librashader` feature** |
|
||||||
//! |-------------|------------|---------------------------|
|
//! |-------------|------------|---------------------------|
|
||||||
|
@ -26,9 +30,10 @@
|
||||||
//! | OpenGL 4.6 | ✔ | `gl` |
|
//! | OpenGL 4.6 | ✔ | `gl` |
|
||||||
//! | Vulkan | ✔ | `vk` |
|
//! | Vulkan | ✔ | `vk` |
|
||||||
//! | Direct3D 11 | ✔ | `d3d11` |
|
//! | Direct3D 11 | ✔ | `d3d11` |
|
||||||
//! | Direct3D 12 | 🚧 | `d3d12` |
|
//! | Direct3D 12 | ✔ | `d3d12` |
|
||||||
//! | OpenGL 2 | ❌ | |
|
//! | OpenGL 2 | ❌ | |
|
||||||
//! | DirectX 9 | ❌ | |
|
//! | Direct3D 9 | ❌ | |
|
||||||
|
//! | Direct3D 10 | ❌ | |
|
||||||
//! | Metal | ❌ | |
|
//! | Metal | ❌ | |
|
||||||
//!
|
//!
|
||||||
//! ## C API
|
//! ## C API
|
||||||
|
@ -126,6 +131,7 @@ pub mod reflect {
|
||||||
pub mod targets {
|
pub mod targets {
|
||||||
pub use librashader_reflect::back::targets::GLSL;
|
pub use librashader_reflect::back::targets::GLSL;
|
||||||
pub use librashader_reflect::back::targets::HLSL;
|
pub use librashader_reflect::back::targets::HLSL;
|
||||||
|
pub use librashader_reflect::back::targets::DXIL;
|
||||||
pub use librashader_reflect::back::targets::SPIRV;
|
pub use librashader_reflect::back::targets::SPIRV;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -142,9 +148,12 @@ pub mod reflect {
|
||||||
pub mod cross {
|
pub mod cross {
|
||||||
pub use librashader_reflect::front::GlslangCompilation;
|
pub use librashader_reflect::front::GlslangCompilation;
|
||||||
|
|
||||||
/// The version of GLSL to compile to.
|
/// The version of GLSL to target.
|
||||||
pub use spirv_cross::glsl::Version as GlslVersion;
|
pub use spirv_cross::glsl::Version as GlslVersion;
|
||||||
|
|
||||||
|
/// The HLSL Shader Model to target.
|
||||||
|
pub use spirv_cross::hlsl::ShaderModel as HlslVersion;
|
||||||
|
|
||||||
pub use librashader_reflect::back::cross::CrossGlslContext;
|
pub use librashader_reflect::back::cross::CrossGlslContext;
|
||||||
|
|
||||||
pub use librashader_reflect::back::cross::CrossHlslContext;
|
pub use librashader_reflect::back::cross::CrossHlslContext;
|
||||||
|
@ -232,6 +241,28 @@ pub mod runtime {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(all(target_os = "windows", feature = "d3d12"))]
|
||||||
|
#[doc(cfg(all(target_os = "windows", feature = "d3d12")))]
|
||||||
|
/// Shader runtime for Direct3D 12.
|
||||||
|
pub mod d3d12 {
|
||||||
|
pub use librashader_runtime_d3d12::{
|
||||||
|
error,
|
||||||
|
options::{
|
||||||
|
FilterChainOptionsD3D12 as FilterChainOptions, FrameOptionsD3D12 as FrameOptions,
|
||||||
|
},
|
||||||
|
D3D12InputImage, D3D12OutputView, FilterChainD3D12 as FilterChain,
|
||||||
|
};
|
||||||
|
|
||||||
|
#[doc(hidden)]
|
||||||
|
#[cfg(feature = "internal")]
|
||||||
|
/// Re-exports names to deal with C API conflicts.
|
||||||
|
///
|
||||||
|
/// This is internal to librashader-capi and is exempt from semantic versioning.
|
||||||
|
pub mod capi {
|
||||||
|
pub use librashader_runtime_d3d12::*;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(feature = "vk")]
|
#[cfg(feature = "vk")]
|
||||||
#[doc(cfg(feature = "vk"))]
|
#[doc(cfg(feature = "vk"))]
|
||||||
/// Shader runtime for Vulkan 1.3+.
|
/// Shader runtime for Vulkan 1.3+.
|
||||||
|
|
Loading…
Reference in a new issue