myth_render 0.3.0

Core rendering system for the Myth engine (render graph, pipeline, GPU management).
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
const BLUE_NOISE_SIZE: u32 = 64u;
const BLUE_NOISE_INV_SIZE: f32 = 1.0 / 64.0;

fn get_blue_noise(coord: vec2<u32>, frame_index: u32) -> vec4<f32> {
    let wrapped = coord % vec2<u32>(BLUE_NOISE_SIZE);
    let uv = (vec2<f32>(wrapped) + vec2<f32>(0.5, 0.5)) * BLUE_NOISE_INV_SIZE;

$$ if HIGH_END_NOISE is defined
    let layer = i32(frame_index & 63u);
    return textureSampleLevel(t_blue_noise, s_blue_noise, uv, layer, 0.0);
$$ else
    let base_noise = textureSampleLevel(t_blue_noise, s_blue_noise, uv, 0.0);
    let temporal_offset = vec4<f32>(0.61803398875, 0.75487766624, 0.56984029, 0.43816197)
        * f32(frame_index & 1023u);
    return fract(base_noise + temporal_offset);
$$ endif
}