mirror of
https://github.com/griffi-gh/kubi.git
synced 2024-12-22 20:08:20 -06:00
having issues with blending...
This commit is contained in:
parent
2bb22ddaec
commit
a4f4a765ae
|
@ -72,6 +72,7 @@ fn render() -> Workload {
|
||||||
(
|
(
|
||||||
clear_background,
|
clear_background,
|
||||||
draw_world,
|
draw_world,
|
||||||
|
render_selection_box,
|
||||||
).into_sequential_workload()
|
).into_sequential_workload()
|
||||||
}
|
}
|
||||||
fn after_frame_end() -> Workload {
|
fn after_frame_end() -> Workload {
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
use glam::Mat4;
|
|
||||||
use shipyard::{Component, AllStoragesViewMut};
|
use shipyard::{Component, AllStoragesViewMut};
|
||||||
use crate::{
|
use crate::{
|
||||||
transform::Transform,
|
transform::Transform,
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
const CUBE_VERTICES: &[f32] = &[
|
pub const CUBE_VERTICES: &[f32] = &[
|
||||||
// front
|
// front
|
||||||
-1.0, -1.0, 1.0,
|
0.0, 0.0, 1.0,
|
||||||
1.0, -1.0, 1.0,
|
1.0, 0.0, 1.0,
|
||||||
1.0, 1.0, 1.0,
|
1.0, 1.0, 1.0,
|
||||||
-1.0, 1.0, 1.0,
|
0.0, 1.0, 1.0,
|
||||||
// back
|
// back
|
||||||
-1.0, -1.0, -1.0,
|
0.0, 0.0, 0.0,
|
||||||
1.0, -1.0, -1.0,
|
1.0, 0.0, 0.0,
|
||||||
1.0, 1.0, -1.0,
|
1.0, 1.0, 0.0,
|
||||||
-1.0, 1.0, -1.0
|
0.0, 1.0, 0.0
|
||||||
];
|
];
|
||||||
const CUBE_INDICES: &[u16] = &[
|
pub const CUBE_INDICES: &[u16] = &[
|
||||||
// front
|
// front
|
||||||
0, 1, 2,
|
0, 1, 2,
|
||||||
2, 3, 0,
|
2, 3, 0,
|
||||||
|
|
|
@ -1,35 +1,76 @@
|
||||||
use shipyard::{View, IntoIter, NonSendSync, UniqueViewMut};
|
use shipyard::{View, IntoIter, NonSendSync, UniqueViewMut, UniqueView};
|
||||||
use glium::{Surface, implement_vertex};
|
use glium::{Surface, implement_vertex, IndexBuffer, index::PrimitiveType, VertexBuffer, uniform, DrawParameters, Blend, BackfaceCullingMode};
|
||||||
use crate::{
|
use crate::{
|
||||||
world::raycast::LookingAtBlock,
|
world::raycast::LookingAtBlock,
|
||||||
camera::Camera
|
camera::Camera, prefabs::SelBoxShaderPrefab
|
||||||
|
};
|
||||||
|
use super::{
|
||||||
|
RenderTarget,
|
||||||
|
primitives::{CUBE_INDICES, CUBE_VERTICES}, Renderer
|
||||||
};
|
};
|
||||||
use super::RenderTarget;
|
|
||||||
|
|
||||||
#[derive(Clone, Copy)]
|
#[derive(Clone, Copy, Default)]
|
||||||
pub struct SelBoxVertex {
|
pub struct SelBoxVertex {
|
||||||
pub position: [f32; 3],
|
pub position: [f32; 3],
|
||||||
}
|
}
|
||||||
implement_vertex!(SelBoxVertex, position);
|
implement_vertex!(SelBoxVertex, position);
|
||||||
|
|
||||||
|
const fn box_vertices() -> [SelBoxVertex; CUBE_VERTICES.len() / 3] {
|
||||||
|
let mut arr = [SelBoxVertex { position: [0., 0., 0.] }; CUBE_VERTICES.len() / 3];
|
||||||
|
let mut ptr = 0;
|
||||||
|
loop {
|
||||||
|
arr[ptr] = SelBoxVertex {
|
||||||
|
position: [
|
||||||
|
CUBE_VERTICES[ptr * 3],
|
||||||
|
CUBE_VERTICES[(ptr * 3) + 1],
|
||||||
|
CUBE_VERTICES[(ptr * 3) + 2]
|
||||||
|
]
|
||||||
|
};
|
||||||
|
ptr += 1;
|
||||||
|
if ptr >= CUBE_VERTICES.len() / 3 {
|
||||||
|
return arr
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const BOX_VERTICES: &[SelBoxVertex] = &box_vertices();
|
||||||
|
|
||||||
//wip
|
//wip
|
||||||
pub fn render_selection_box(
|
pub fn render_selection_box(
|
||||||
lookat: View<LookingAtBlock>,
|
lookat: View<LookingAtBlock>,
|
||||||
camera: View<Camera>,
|
camera: View<Camera>,
|
||||||
mut target: NonSendSync<UniqueViewMut<RenderTarget>>,
|
mut target: NonSendSync<UniqueViewMut<RenderTarget>>,
|
||||||
|
display: NonSendSync<UniqueView<Renderer>>,
|
||||||
|
program: NonSendSync<UniqueView<SelBoxShaderPrefab>>,
|
||||||
) {
|
) {
|
||||||
for lookat in lookat.iter() {
|
let camera = camera.iter().next().unwrap();
|
||||||
// target.0.draw(
|
let Some(lookat) = lookat.iter().next() else { return };
|
||||||
// &mesh.vertex_buffer,
|
let Some(lookat) = lookat.0 else { return };
|
||||||
// &mesh.index_buffer,
|
|
||||||
// &program.0,
|
//this may be slow but the amount of vertices is very low
|
||||||
// &uniform! {
|
let vert = VertexBuffer::new(
|
||||||
// position_offset: world_position.to_array(),
|
&display.display,
|
||||||
// view: view,
|
BOX_VERTICES
|
||||||
// perspective: perspective,
|
).unwrap();
|
||||||
// tex: texture_sampler,
|
let index = IndexBuffer::new(
|
||||||
// },
|
&display.display,
|
||||||
// &draw_parameters
|
PrimitiveType::TrianglesList,
|
||||||
// ).unwrap();
|
CUBE_INDICES
|
||||||
|
).unwrap();
|
||||||
|
|
||||||
|
target.0.draw(
|
||||||
|
&vert,
|
||||||
|
&index,
|
||||||
|
&program.0,
|
||||||
|
&uniform! {
|
||||||
|
color: [0., 0., 0., 0.5_f32],
|
||||||
|
u_position: lookat.block_position.as_vec3().to_array(),
|
||||||
|
perspective: camera.perspective_matrix.to_cols_array_2d(),
|
||||||
|
view: camera.view_matrix.to_cols_array_2d(),
|
||||||
|
},
|
||||||
|
&DrawParameters {
|
||||||
|
blend: Blend::alpha_blending(),
|
||||||
|
backface_culling: BackfaceCullingMode::CullClockwise,
|
||||||
|
..Default::default()
|
||||||
}
|
}
|
||||||
|
).unwrap();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue