diff options
| author | Jon Santmyer <jon@jonsantmyer.com> | 2026-04-15 22:22:45 -0400 |
|---|---|---|
| committer | Jon Santmyer <jon@jonsantmyer.com> | 2026-04-15 22:22:45 -0400 |
| commit | 3dc92fad981e28c760f3c6e95f5a8153ea6c9be4 (patch) | |
| tree | 9e806c4ad09cf22957bc4dccd415718045fc4b0f /assets/shaders/tacbody.wgsl | |
| parent | b5ced3af46c96ceb959fbbf1addfeba3bd4f76d5 (diff) | |
| download | systemic4x-3dc92fad981e28c760f3c6e95f5a8153ea6c9be4.tar.gz systemic4x-3dc92fad981e28c760f3c6e95f5a8153ea6c9be4.tar.bz2 systemic4x-3dc92fad981e28c760f3c6e95f5a8153ea6c9be4.zip | |
work on orbits (not right yet), orbit camera
Diffstat (limited to 'assets/shaders/tacbody.wgsl')
| -rw-r--r-- | assets/shaders/tacbody.wgsl | 20 |
1 files changed, 6 insertions, 14 deletions
diff --git a/assets/shaders/tacbody.wgsl b/assets/shaders/tacbody.wgsl index e8fb653..99392ac 100644 --- a/assets/shaders/tacbody.wgsl +++ b/assets/shaders/tacbody.wgsl @@ -31,33 +31,25 @@ fn vs_main( var view = camera.view; //Billboard the circle - view[0][0] = 1.0; - view[0][1] = 0.0; - view[0][2] = 0.0; - - view[1][0] = 0.0; - view[1][1] = 1.0; - view[1][2] = 0.0; - - view[2][0] = 0.0; - view[2][1] = 0.0; - view[2][2] = 1.0; + let camera_right = vec3<f32>(view[0][0], view[1][0], view[2][0]); + let camera_up = vec3<f32>(view[0][1], view[1][1], view[2][1]); + let model_pos = camera_right * model.position.x + + camera_up * model.position.y; let min_size = 0.025; //Scale the world around the camera scale. - let model_pos = model.position; let instance_pos = instance.position * camera.scale; let view_proj = camera.proj * view; let center_view_pos = view_proj * vec4<f32>(instance_pos, 1.0); - let vertex_view_pos = view_proj * vec4<f32>(instance_pos + (model_pos * camera.scale), 1.0); + let vertex_view_pos = view_proj * vec4<f32>(instance_pos + (model_pos * instance.radius * camera.scale), 1.0); let vertex_dist = length(vertex_view_pos - center_view_pos) / center_view_pos.w; if vertex_dist < min_size { out.clip_position = center_view_pos / center_view_pos.w; - out.clip_position += camera.proj * vec4<f32>(model_pos.xy * (min_size / 2), 0.0, 0.0); + out.clip_position += camera.proj * vec4<f32>(model.position.xy * (min_size / 2), 0.0, 0.0); }else{ out.clip_position = vertex_view_pos; } |
