mirror of
https://github.com/griffi-gh/kubi.git
synced 2024-11-25 08:18:43 -06:00
scuffed sorting
This commit is contained in:
parent
6cde878a50
commit
dd6f52edb5
|
@ -1,4 +1,4 @@
|
||||||
use glam::{Vec3, Mat4, Quat, ivec3};
|
use glam::{ivec3, IVec3, Mat4, Quat, Vec3};
|
||||||
use shipyard::{NonSendSync, UniqueView, UniqueViewMut, View, IntoIter, track};
|
use shipyard::{NonSendSync, UniqueView, UniqueViewMut, View, IntoIter, track};
|
||||||
use glium::{
|
use glium::{
|
||||||
implement_vertex, uniform,
|
implement_vertex, uniform,
|
||||||
|
@ -50,10 +50,13 @@ pub fn draw_world(
|
||||||
meshes: NonSendSync<UniqueView<ChunkMeshStorage>>,
|
meshes: NonSendSync<UniqueView<ChunkMeshStorage>>,
|
||||||
program: NonSendSync<UniqueView<ChunkShaderPrefab>>,
|
program: NonSendSync<UniqueView<ChunkShaderPrefab>>,
|
||||||
texture: NonSendSync<UniqueView<BlockTexturesPrefab>>,
|
texture: NonSendSync<UniqueView<BlockTexturesPrefab>>,
|
||||||
|
transform: View<Transform>,
|
||||||
camera: View<Camera>,
|
camera: View<Camera>,
|
||||||
settings: UniqueView<GameSettings>
|
settings: UniqueView<GameSettings>
|
||||||
) {
|
) {
|
||||||
let camera = camera.iter().next().expect("No cameras in the scene");
|
let (camera, transform) = (&camera, &transform).iter().next().expect("No cameras in the scene");
|
||||||
|
let camera_position = transform.0.to_scale_rotation_translation().2;
|
||||||
|
|
||||||
let mut draw_parameters = DrawParameters {
|
let mut draw_parameters = DrawParameters {
|
||||||
depth: Depth {
|
depth: Depth {
|
||||||
test: DepthTest::IfLess,
|
test: DepthTest::IfLess,
|
||||||
|
@ -119,6 +122,11 @@ pub fn draw_world(
|
||||||
|
|
||||||
draw_parameters.blend = Blend::alpha_blending();
|
draw_parameters.blend = Blend::alpha_blending();
|
||||||
draw_parameters.backface_culling = BackfaceCullingMode::CullingDisabled;
|
draw_parameters.backface_culling = BackfaceCullingMode::CullingDisabled;
|
||||||
|
draw_parameters.smooth = Some(glium::Smooth::DontCare);
|
||||||
|
|
||||||
|
enqueue_trans.sort_by_key(|k| -(
|
||||||
|
(k.0.position + IVec3::splat((CHUNK_SIZE >> 1) as i32)).distance_squared(camera_position.as_ivec3())
|
||||||
|
));
|
||||||
|
|
||||||
for (chunk, mesh) in enqueue_trans {
|
for (chunk, mesh) in enqueue_trans {
|
||||||
let world_position = chunk.position.as_vec3() * CHUNK_SIZE as f32;
|
let world_position = chunk.position.as_vec3() * CHUNK_SIZE as f32;
|
||||||
|
|
Loading…
Reference in a new issue