Crate rs2glsl

Source
Expand description

Automatic code convertion from Rust to GLSL.

use rs2glsl::prelude::*;

#[glsl]
fn smooth_min(a: f32, b: f32, k: f32) -> f32 {
    let mut h: f32 = a - b;

    h = 0.5 + 0.5 * h;

    if h < 0.0 {
        h = 0.0;
    }
    if h > 1.0 {
        h = 1.0;
    }

    return interpolation(a, b, h) - k * h * (1.0 - h);
}

#[glsl]
fn interpolation(a: f32, b: f32, t: f32) -> f32 {
    return a * (1.0 - t) + b * t;
}

let expected = r#"
float smooth_min(float a, float b, float k) {
    float h = a - b;
    h = 0.5 + 0.5 * h;
    if (h < 0.0) {
        h = 0.0;
    }
    if (h > 1.0) {
        h = 1.0;
    }
    return interpolation(a, b, h) - k * h * (1.0 - h);
}
"#;

assert_eq!(expected.trim(), GLSL_SMOOTH_MIN.definition());

Modules§

macros
Macro implementations
prelude
All types, traits, and functions for use with GLSL
traits
All traits defined in rs2glsl.
types
GLSL types in Rust

Traits§

GlslItem
An abstract Item representing an entity in GLSL code. May be implemented by GLSL constants, types, and functions.