Expand description

Hassle

This crate provides an FFI layer and idiomatic rust wrappers for the new DirectXShaderCompiler library.

Simple example

use hassle_rs::compile_hlsl;

let code = "
    Texture2D<float4> g_input    : register(t0, space0);
    RWTexture2D<float4> g_output : register(u0, space0);

    [numthreads(8, 8, 1)]
    void copyCs(uint3 dispatchThreadId : SV_DispatchThreadID)
    {
        g_output[dispatchThreadId.xy] = g_input[dispatchThreadId.xy];
    }";

let ir = compile_hlsl(
    "shader_filename.hlsl",
    code,
    "copyCs",
    "cs_6_1",
    &vec!["-spirv"],
    &vec![
        ("MY_DEFINE", Some("Value")),
        ("OTHER_DEFINE", None)
    ],
);

Re-exports

pub use crate::ffi::*;
pub use crate::utils::compile_hlsl;
pub use crate::utils::fake_sign_dxil_in_place;
pub use crate::utils::validate_dxil;
pub use crate::utils::HassleError;
pub use crate::utils::Result;
pub use crate::wrapper::*;

Modules