glrs

Crates.ioglrs
lib.rsglrs
version0.1.0
sourcesrc
created_at2024-01-15 00:31:15.170424
updated_at2024-01-15 00:31:15.170424
descriptionMacros for padding-equivalent importing of OpenGL constructs
homepage
repositoryhttps://github.com/HoloTheDrunk/glrs
max_upload_size
id1099844
size28,249
Raphaƫl Duhen (HoloTheDrunk)

documentation

https://docs.rs/glrs

README

Making Rust and OpenGL kiss

github crates.io docs.rs

Passing data between Rust and OpenGL is error-prone and mistakes can be hard to debug.

This crate provides compile-time conversion of GLSL constructs to Rust based on the glam crate.

[dependencies]
glrs = "0.1"

Only tested on rustc 1.75.

Roadmap

  • Layout aware importing
    • Add padding bytes according to GLSL spec's defined layout modes
  • Structs
    • Basic struct importing
    • Nested struct importing?
  • Uniforms
    • Single file uniforms importing
    • Full shader chain uniforms checking and importing
  • Defines
    • Single file defines importing (possible collisions when importing from multiple ones)
  • Interface blocks

Importing a struct

shaders/utils.glsl

struct Player {
  vec3 pos;
  vec3 speed;
};

src/main.rs

#[glrs::import(path = "shaders/utils.glsl", name = "Player")]
#[derive(Debug)]
struct GlPlayer;

fn main() {
    dbg!(GlPlayer {
        pos: glam::vec3(0., 0., 0.),
        speed: glam::vec3(0., 0., 0.),
    });
}
Commit count: 0

cargo fmt