Files
voxel-game/shader/src/render.rs
2025-03-22 17:41:13 -04:00

25 lines
691 B
Rust

use spirv_std::glam::{vec2, Vec2, Vec4};
use spirv_std::{spirv, Image, Sampler};
#[spirv(vertex)]
pub fn vs_main(
#[spirv(vertex_index)] vi: u32,
#[spirv(position)] clip_position: &mut Vec4,
tex_pos: &mut Vec2,
) {
let pos = vec2((vi % 2) as f32, (vi / 2) as f32);
*clip_position = (pos * 2.0 - 1.0).extend(0.0).extend(1.0);
*tex_pos = pos;
tex_pos.y = 1.0 - tex_pos.y;
}
#[spirv(fragment)]
pub fn fs_main(
#[spirv(descriptor_set = 0, binding = 0)] texture: &Image!(2D, type=f32, sampled=true),
#[spirv(descriptor_set = 0, binding = 1)] sampler: &Sampler,
tex_pos: Vec2,
output: &mut Vec4,
) {
*output = texture.sample(*sampler, tex_pos);
}