From 25280332af8dce146295b2dcb48c044c45a92eba Mon Sep 17 00:00:00 2001 From: metamuffin Date: Thu, 23 Jan 2025 16:31:06 +0100 Subject: implement texture mip levels --- client/src/shaders/fragment_pbr.wgsl | 2 +- client/src/shaders/texture_copy.wgsl | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 client/src/shaders/texture_copy.wgsl (limited to 'client/src/shaders') diff --git a/client/src/shaders/fragment_pbr.wgsl b/client/src/shaders/fragment_pbr.wgsl index d1d2b1d..2908d6f 100644 --- a/client/src/shaders/fragment_pbr.wgsl +++ b/client/src/shaders/fragment_pbr.wgsl @@ -44,7 +44,7 @@ fn main(vo: VertexOut) -> @location(0) vec4 { let normal = tangent_basis * (t_normal.rgb * 2. - 1.); let alpha = t_albedo.a; - let lighting = mix(1., saturate(dot(LIGHT, normal)), 1.); + let lighting = mix(1., saturate(dot(LIGHT, normal)), 0.9); let color = t_albedo.rgb * lighting; diff --git a/client/src/shaders/texture_copy.wgsl b/client/src/shaders/texture_copy.wgsl new file mode 100644 index 0000000..ff58f87 --- /dev/null +++ b/client/src/shaders/texture_copy.wgsl @@ -0,0 +1,22 @@ +struct VertexOut { + @builtin(position) clip: vec4, + @location(0) texcoord: vec2, +}; + +@group(0) @binding(0) var texture: texture_2d; +@group(0) @binding(1) var texture_sampler: sampler; + +@vertex +fn vs_main(@builtin(vertex_index) vertex_index: u32) -> VertexOut { + let x = i32(vertex_index) / 2; + let y = i32(vertex_index) & 1; + return VertexOut( + vec4(f32(x) * 4.0 - 1.0, 1.0 - f32(y) * 4.0, 0.0, 1.0), + vec2(f32(x) * 2.0, f32(y) * 2.0) + ); +} + +@fragment +fn fs_main(vertex: VertexOut) -> @location(0) vec4 { + return textureSample(texture, texture_sampler, vertex.texcoord); +} -- cgit v1.2.3-70-g09d2