diff options
| author | LLLL Colonq <llll@colonq> | 2024-04-13 20:34:28 -0400 |
|---|---|---|
| committer | LLLL Colonq <llll@colonq> | 2024-04-13 20:34:28 -0400 |
| commit | f0b945d378a157a780f56b1fc015b7937e151852 (patch) | |
| tree | 3caddd259ad14a225cd3984726b3d44bac8b6d4a /src | |
| parent | 17eb85df48b64dd9d391cad28f58355e05ed2855 (diff) | |
Bugfixes, texture filtering
Diffstat (limited to 'src')
| -rw-r--r-- | src/assets/shaders/common/frag.glsl | 2 | ||||
| -rw-r--r-- | src/context.rs | 5 | ||||
| -rw-r--r-- | src/shader.rs | 10 | ||||
| -rw-r--r-- | src/state.rs | 5 | ||||
| -rw-r--r-- | src/texture.rs | 16 |
5 files changed, 27 insertions, 11 deletions
diff --git a/src/assets/shaders/common/frag.glsl b/src/assets/shaders/common/frag.glsl index 908e06c..a3123fd 100644 --- a/src/assets/shaders/common/frag.glsl +++ b/src/assets/shaders/common/frag.glsl @@ -36,7 +36,7 @@ mat3 compute_tbn() { vec3 tangent = dpyperp * duvx.x + dpxperp * duvy.x; vec3 bitangent = dpyperp * duvx.y + dpxperp * duvy.y; float invmax = inversesqrt(max(dot(bitangent, bitangent), dot(bitangent, bitangent))); - return mat3(tangent * invmax, bitangent * invmax, normal); + return mat3(-tangent * invmax, -bitangent * invmax, normal); } vec4 normal_as_color(vec3 n) { diff --git a/src/context.rs b/src/context.rs index 5328d4d..db6a2a7 100644 --- a/src/context.rs +++ b/src/context.rs @@ -61,7 +61,8 @@ impl Context { gl.enable(glow::STENCIL_TEST); - gl.cull_face(glow::FRONT); + // gl.enable(glow::CULL_FACE); + // gl.cull_face(glow::FRONT); } let emptyvao = unsafe { @@ -88,7 +89,7 @@ impl Context { let browser_window = doc.default_view() .or_else(web_sys::window) .unwrap(); - winit::dpi::LogicalSize::new( + winit::dpi::PhysicalSize::new( browser_window.inner_width().unwrap().as_f64().unwrap(), browser_window.inner_height().unwrap().as_f64().unwrap(), ) diff --git a/src/shader.rs b/src/shader.rs index 64ece63..6e58bb7 100644 --- a/src/shader.rs +++ b/src/shader.rs @@ -60,12 +60,16 @@ impl Shader { ctx.gl.detach_shader(program, frag); ctx.gl.delete_shader(frag); + ctx.gl.use_program(Some(program)); + let mut uniforms = HashMap::new(); for index in 0..ctx.gl.get_active_uniforms(program) { if let Some(active) = ctx.gl.get_active_uniform(program, index) { - let loc = ctx.gl.get_uniform_location(program, &active.name) - .expect(&format!("failed to get location for uniform: {}", active.name)); - uniforms.insert(active.name, loc); + if let Some(loc) = ctx.gl.get_uniform_location(program, &active.name) { + uniforms.insert(active.name, loc); + } else { + log::warn!("failed to get location for uniform: {}", active.name); + } } } diff --git a/src/state.rs b/src/state.rs index d2b9bad..7a9cdbe 100644 --- a/src/state.rs +++ b/src/state.rs @@ -92,8 +92,9 @@ impl State { projection: glam::Mat4::perspective_lh( std::f32::consts::PI / 4.0, context::RENDER_WIDTH / context::RENDER_HEIGHT, - 0.1, - 400.0, + // 0.1, + 0.5, + 50.0, ), camera: (glam::Vec3::new(0.0, 0.0, 0.0), glam::Vec3::new(0.0, 0.0, 1.0), glam::Vec3::new(0.0, 1.0, 0.0)), lighting: ( diff --git a/src/texture.rs b/src/texture.rs index 2da2247..6e46d58 100644 --- a/src/texture.rs +++ b/src/texture.rs @@ -42,11 +42,14 @@ impl Texture { } } - pub fn set_linear_filtering(&self, ctx: &context::Context) { + pub fn set_anisotropic_filtering(&self, ctx: &context::Context) { unsafe { ctx.gl.bind_texture(glow::TEXTURE_2D, Some(self.tex)); - ctx.gl.tex_parameter_i32(glow::TEXTURE_2D, glow::TEXTURE_MIN_FILTER, glow::NEAREST_MIPMAP_NEAREST as i32); - ctx.gl.tex_parameter_i32(glow::TEXTURE_2D, glow::TEXTURE_MAG_FILTER, glow::NEAREST_MIPMAP_NEAREST as i32); + ctx.gl.tex_parameter_i32(glow::TEXTURE_2D, glow::TEXTURE_WRAP_S, glow::REPEAT as i32); + ctx.gl.tex_parameter_i32(glow::TEXTURE_2D, glow::TEXTURE_WRAP_T, glow::REPEAT as i32); + ctx.gl.tex_parameter_i32(glow::TEXTURE_2D, glow::TEXTURE_MIN_FILTER, glow::LINEAR_MIPMAP_LINEAR as i32); + ctx.gl.tex_parameter_i32(glow::TEXTURE_2D, glow::TEXTURE_MAG_FILTER, glow::LINEAR as i32); + ctx.gl.tex_parameter_f32(glow::TEXTURE_2D, glow::TEXTURE_MAX_ANISOTROPY_EXT, 4.0); } } @@ -56,4 +59,11 @@ impl Texture { ctx.gl.bind_texture(glow::TEXTURE_2D, Some(self.tex)); } } + + pub fn bind_normal(&self, ctx: &context::Context) { + unsafe { + ctx.gl.active_texture(glow::TEXTURE1); + ctx.gl.bind_texture(glow::TEXTURE_2D, Some(self.tex)); + } + } } |
