Crates.io | rs2glsl |
lib.rs | rs2glsl |
version | 0.3.4 |
source | src |
created_at | 2023-04-16 12:33:09.150108 |
updated_at | 2023-04-30 09:56:58.916994 |
description | Conversion from Rust code to GLSL |
homepage | |
repository | |
max_upload_size | |
id | 840530 |
size | 11,366 |
Automatically convert Rust code to GLSL for use in GPU programming.
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!