Last updated
Last updated
With valora, you can shade each path with its own shader, and define custom uniforms. We'll start with this simple GLSL fragment shader:
Save this to a file named pattern.frag
.
Now, we'll use valora's shader API to define some uniforms and load the shader. A shader in valora is made of two parts:
The shader program. This is the GLSL above, which exposes an interface to provide uniforms.
The uniforms bound to the shader.
First let's define the uniforms type in Rust:
The derive macro UniformSet
will generate mappings from the field types to something we can send to the GPU, should such a mapping exist for the type.
Now let's load the shader and draw with it:
If you run the painting with cargo run --release
, and change the GLSL, you'll notice that the view pane will update live!
We can update our uniform values each frame. Once the uniforms are updated, we can rebind with the shader program to make a new shader.