Add fullscreen vertex shader module

This commit is contained in:
SirLynix
2022-06-16 19:26:57 +02:00
parent ddd1e3027c
commit 6f18a02999
14 changed files with 67 additions and 363 deletions

View File

@@ -0,0 +1,33 @@
[nzsl_version("1.0")]
module Engine.FullscreenVertex;
[export]
struct VertIn
{
[builtin(vertex_index)] vert_index: i32
}
[export]
struct VertOut
{
[builtin(position)] position: vec4[f32],
[location(0)] uv: vec2[f32]
}
const vertPos = array[vec2[f32]](
vec2[f32](-1.0, 1.0),
vec2[f32](-1.0, -3.0),
vec2[f32]( 3.0, 1.0)
);
[export, entry(vert)]
fn VertexShader(input: VertIn) -> VertOut
{
let position = vertPos[input.vert_index];
let output: VertOut;
output.position = vec4[f32](position, 0.0, 1.0);
output.uv = position * 0.5 + vec2[f32](0.5, 0.5);
return output;
}

View File

@@ -1,33 +1,13 @@
[nzsl_version("1.0")]
module TextureBlit;
import VertOut, VertexShader from Engine.FullscreenVertex;
external
{
[binding(0)] texture: sampler2D[f32]
}
struct VertIn
{
[location(0)] position: vec2[f32],
[location(1)] uv: vec2[f32]
}
struct VertOut
{
[builtin(position)] position: vec4[f32],
[location(0)] uv: vec2[f32]
}
[entry(vert)]
fn main(vertIn: VertIn) -> VertOut
{
let output: VertOut;
output.position = vec4[f32](vertIn.position, 0.0, 1.0);
output.uv = vertIn.uv;
return output;
}
struct FragOut
{
[location(0)] color: vec4[f32]