summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/assets/shaders/common/frag.glsl2
-rw-r--r--src/context.rs5
-rw-r--r--src/shader.rs10
-rw-r--r--src/state.rs5
-rw-r--r--src/texture.rs16
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));
+ }
+ }
}