rs2glsl

Crates.iors2glsl
lib.rsrs2glsl
version0.3.4
sourcesrc
created_at2023-04-16 12:33:09.150108
updated_at2023-04-30 09:56:58.916994
descriptionConversion from Rust code to GLSL
homepage
repository
max_upload_size
id840530
size11,366
Jonas (JM4ier)

documentation

README

rs2glsl

Automatically convert Rust code to GLSL for use in GPU programming.

Example

You can write Rust code like so

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;
}

And it gets translated to the following GLSL code.

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);
}

You can access the examples GLSL definition like so:

GLSL_SMOOTH_MIN.definition()

Have fun!

Commit count: 0

cargo fmt