Minor shader fixes
parent
ac4eb7d67d
commit
45e3513ed3
|
@ -30,7 +30,10 @@ var sampler_array: binding_array<sampler>;
|
|||
|
||||
fn transform_vertex(obj: ObjectData, vertex_position: vec2<f32>, sprite_index: u32) -> vec4<f32> {
|
||||
// Object scale
|
||||
let scale = obj.size / (global_data.camera_zoom.x * obj.zpos);
|
||||
var scale: f32 = obj.size / (global_data.camera_zoom.x * obj.zpos);
|
||||
if obj.is_child == 1u {
|
||||
scale /= objects[obj.parent].zpos;
|
||||
}
|
||||
|
||||
// Apply scale and sprite aspect
|
||||
// Note that our mesh starts centered at (0, 0). This is important!
|
||||
|
@ -70,14 +73,15 @@ fn transform_vertex(obj: ObjectData, vertex_position: vec2<f32>, sprite_index: u
|
|||
}
|
||||
|
||||
if obj.is_child == u32(1) {
|
||||
|
||||
let parent = objects[obj.parent];
|
||||
|
||||
// Apply translation relative to parent
|
||||
// Note that obj.zpos is ignored
|
||||
pos = pos + vec2(
|
||||
obj.xpos / (global_data.camera_zoom.x / 2.0) / global_data.window_aspect.x,
|
||||
obj.ypos / (global_data.camera_zoom.x / 2.0)
|
||||
);
|
||||
|
||||
let parent = objects[obj.parent];
|
||||
) / parent.zpos;
|
||||
|
||||
// Apply parent's rotation
|
||||
pos = mat2x2(
|
||||
|
|
|
@ -66,9 +66,11 @@ fn vertex_main(
|
|||
vertex.position.x * scale * global_sprites[instance.sprite_index].aspect,
|
||||
vertex.position.y * scale
|
||||
);
|
||||
|
||||
// Correct angle, since sprites point north and zero degrees is east
|
||||
pos = mat2x2(
|
||||
vec2(cos(angle), sin(angle)),
|
||||
vec2(-sin(angle), cos(angle))
|
||||
vec2(cos(angle - 1.5708), sin(angle - 1.5708)),
|
||||
vec2(-sin(angle - 1.5708), cos(angle - 1.5708))
|
||||
) * pos;
|
||||
|
||||
var trans: vec2<f32> = (instance.position + (instance.velocity * age) - global_data.camera_position);
|
||||
|
|
Loading…
Reference in New Issue