Split view matrix from viewport size
This commit is contained in:
parent
b26800c070
commit
44ce47612a
|
|
@ -35,9 +35,9 @@ struct ParamsData {
|
||||||
#[repr(C)]
|
#[repr(C)]
|
||||||
struct CameraData {
|
struct CameraData {
|
||||||
u: Vec3,
|
u: Vec3,
|
||||||
pad1: f32,
|
width: f32,
|
||||||
v: Vec3,
|
v: Vec3,
|
||||||
pad2: f32,
|
height: f32,
|
||||||
w: Vec3,
|
w: Vec3,
|
||||||
pad3: f32,
|
pad3: f32,
|
||||||
eye: Vec3,
|
eye: Vec3,
|
||||||
|
|
@ -47,12 +47,12 @@ struct CameraData {
|
||||||
impl From<(Viewport, CameraLocation)> for CameraData {
|
impl From<(Viewport, CameraLocation)> for CameraData {
|
||||||
fn from(value: (Viewport, CameraLocation)) -> Self {
|
fn from(value: (Viewport, CameraLocation)) -> Self {
|
||||||
CameraData {
|
CameraData {
|
||||||
u: value.0.corner.x * value.1.view.x_axis,
|
u: value.1.view.x_axis,
|
||||||
v: value.0.corner.y * value.1.view.y_axis,
|
v: value.1.view.y_axis,
|
||||||
w: value.0.corner.z * value.1.view.z_axis,
|
w: value.1.view.z_axis,
|
||||||
eye: value.1.eye,
|
eye: value.1.eye,
|
||||||
pad1: 0.,
|
width: value.0.corner.x / value.0.corner.z,
|
||||||
pad2: 0.,
|
height: value.0.corner.y / value.0.corner.z,
|
||||||
pad3: 0.,
|
pad3: 0.,
|
||||||
pad4: 0.,
|
pad4: 0.,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,9 @@ struct Params {
|
||||||
seed: u32,
|
seed: u32,
|
||||||
|
|
||||||
right: vec3f,
|
right: vec3f,
|
||||||
|
width: f32,
|
||||||
up: vec3f,
|
up: vec3f,
|
||||||
|
height: f32,
|
||||||
forward: vec3f,
|
forward: vec3f,
|
||||||
eye: vec3f,
|
eye: vec3f,
|
||||||
}
|
}
|
||||||
|
|
@ -34,7 +36,7 @@ var<push_constant> params: Params;
|
||||||
|
|
||||||
@vertex
|
@vertex
|
||||||
fn on_vertex(in: Vertex) -> Varying {
|
fn on_vertex(in: Vertex) -> Varying {
|
||||||
let m = mat3x3(params.right, params.up, params.forward);
|
let m = mat3x3(params.width * params.right, params.height * params.up, params.forward);
|
||||||
return Varying(m * vec3(in.screen, 1.0), vec4(in.screen, 0.0, 1.0));
|
return Varying(m * vec3(in.screen, 1.0), vec4(in.screen, 0.0, 1.0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user