Better viewport
This commit is contained in:
parent
a2646f8f29
commit
cb500033c0
|
|
@ -1,6 +1,6 @@
|
||||||
use std::error::Error;
|
use std::error::Error;
|
||||||
|
|
||||||
use glam::{vec2, vec3};
|
use glam::{uvec2, vec2, vec3};
|
||||||
use image::ImageReader;
|
use image::ImageReader;
|
||||||
use present::Presenter;
|
use present::Presenter;
|
||||||
use trace::{Tracer, TracerData, TracerEnv, Vertex};
|
use trace::{Tracer, TracerData, TracerEnv, Vertex};
|
||||||
|
|
@ -17,18 +17,13 @@ mod trace;
|
||||||
pub use trace::Sphere;
|
pub use trace::Sphere;
|
||||||
|
|
||||||
fn make_viewport(w: u32, h: u32) -> [Vertex; 4] {
|
fn make_viewport(w: u32, h: u32) -> [Vertex; 4] {
|
||||||
let w = w as f32;
|
let size = uvec2(w, h).as_vec2();
|
||||||
let h = h as f32;
|
let size = size.normalize();
|
||||||
let (w, h) = (1.0f32.max(w / h), 1.0f32.max(h / w));
|
let (w, h) = (size.x, size.y);
|
||||||
let r = 1.0f32;
|
let r = 1.0f32;
|
||||||
let screen_coord = [vec2(-h, -w), vec2(h, -w), vec2(-h, w), vec2(h, w)];
|
let screen_coord = [vec2(-1., -1.), vec2(1., -1.), vec2(-1., 1.), vec2(1., 1.)];
|
||||||
let eye = vec3(-r, 0.0, 0.0);
|
let eye = vec3(-r, 0., 0.);
|
||||||
let world_coord = [
|
let world_coord = [vec3(0., -w, -h), vec3(0., w, -h), vec3(0., -w, h), vec3(0., w, h)];
|
||||||
vec3(0.0, -1.0, -1.0),
|
|
||||||
vec3(0.0, 1.0, -1.0),
|
|
||||||
vec3(0.0, -1.0, 1.0),
|
|
||||||
vec3(0.0, 1.0, 1.0),
|
|
||||||
];
|
|
||||||
[0, 1, 2, 3].map(|k| Vertex {
|
[0, 1, 2, 3].map(|k| Vertex {
|
||||||
eye,
|
eye,
|
||||||
world: world_coord[k],
|
world: world_coord[k],
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user