hehehehe
This commit is contained in:
@@ -1 +1,2 @@
|
|||||||
/target
|
/target
|
||||||
|
Cargo.lock
|
||||||
Generated
+364
-994
File diff suppressed because it is too large
Load Diff
+7
-11
@@ -11,7 +11,7 @@ vulkano = "0.32"
|
|||||||
vulkano-shaders = "0.32"
|
vulkano-shaders = "0.32"
|
||||||
# The Vulkan library doesn't provide any functionality to create and handle windows, as
|
# The Vulkan library doesn't provide any functionality to create and handle windows, as
|
||||||
# this would be out of scope. In order to open a window, we are going to use the `winit` crate.
|
# this would be out of scope. In order to open a window, we are going to use the `winit` crate.
|
||||||
winit = "0.27"
|
winit = "0.28"
|
||||||
# The `vulkano_win` crate is the link between `vulkano` and `winit`. Vulkano doesn't know about winit,
|
# The `vulkano_win` crate is the link between `vulkano` and `winit`. Vulkano doesn't know about winit,
|
||||||
# and winit doesn't know about vulkano, so import a crate that will provide a link between the two.
|
# and winit doesn't know about vulkano, so import a crate that will provide a link between the two.
|
||||||
vulkano-win = "0.32"
|
vulkano-win = "0.32"
|
||||||
@@ -26,19 +26,15 @@ bytemuck = { version = "1.13", features = [
|
|||||||
|
|
||||||
cgmath = "0.18"
|
cgmath = "0.18"
|
||||||
|
|
||||||
rodio = "0.16"
|
egui = "0.21"
|
||||||
|
egui_winit_vulkano = "0.23"
|
||||||
|
|
||||||
egui = "0.20"
|
serde = { version = "1", features = ["derive"] }
|
||||||
egui_winit_vulkano = "0.22"
|
serde_json = "1"
|
||||||
|
|
||||||
ash = "*"
|
utf-8 = "0.7"
|
||||||
|
|
||||||
serde = { version = "*", features = ["derive"] }
|
rayon = "1.7"
|
||||||
serde_json = "*"
|
|
||||||
|
|
||||||
utf-8 = "*"
|
|
||||||
|
|
||||||
rayon = "*"
|
|
||||||
|
|
||||||
rand = "0.8.5"
|
rand = "0.8.5"
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -24,7 +24,7 @@ layout(location=1)in vec4 tri_pos;
|
|||||||
layout(location=0)out vec4 f_color;
|
layout(location=0)out vec4 f_color;
|
||||||
|
|
||||||
/// SHARED CODE ///
|
/// SHARED CODE ///
|
||||||
vec3 shading(vec3 normal, vec3 position)
|
vec3 shading(vec3 normal, vec4 position)
|
||||||
{
|
{
|
||||||
vec3 accum=vec3(0.,0.,0.);
|
vec3 accum=vec3(0.,0.,0.);
|
||||||
mat3 rotation=mat3(pc.world[0].xyz,pc.world[1].xyz,pc.world[2].xyz);
|
mat3 rotation=mat3(pc.world[0].xyz,pc.world[1].xyz,pc.world[2].xyz);
|
||||||
@@ -32,7 +32,7 @@ vec3 shading(vec3 normal, vec3 position)
|
|||||||
|
|
||||||
for(int i=0;i<light_uniforms.light_count;i++)
|
for(int i=0;i<light_uniforms.light_count;i++)
|
||||||
{
|
{
|
||||||
accum+=light_uniforms.col[i].xyz*((dot(normalize(rotation*normal),normalize(light_uniforms.pos[i].xyz-position))*.5)+.5);
|
accum+=light_uniforms.col[i].xyz*((dot(normalize(rotation*normal),normalize(light_uniforms.pos[i].xyz-position.xyz))*.5)+.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
return accum;
|
return accum;
|
||||||
@@ -135,7 +135,7 @@ void main(){
|
|||||||
{
|
{
|
||||||
vec3 n=getNormal(p,td.y);
|
vec3 n=getNormal(p,td.y);
|
||||||
//f_color=vec4(1.);
|
//f_color=vec4(1.);
|
||||||
f_color=vec4(shading(n, p),1.);
|
f_color=vec4(shading(n, inverse(pc.world)*vec4(p,1.)),1.);
|
||||||
|
|
||||||
vec4 tpoint=camera_uniforms.proj*camera_uniforms.view*pc.world*vec4(p,1);
|
vec4 tpoint=camera_uniforms.proj*camera_uniforms.view*pc.world*vec4(p,1);
|
||||||
gl_FragDepth=(tpoint.z/tpoint.w);
|
gl_FragDepth=(tpoint.z/tpoint.w);
|
||||||
@@ -151,7 +151,7 @@ void main(){
|
|||||||
|
|
||||||
//Mesh Surface Entrypoint
|
//Mesh Surface Entrypoint
|
||||||
void main(){
|
void main(){
|
||||||
f_color=vec4(shading(tri_normal, tri_pos.xyz),1.);
|
f_color=vec4(shading(tri_normal, tri_pos),1.);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
+1
-1
@@ -54,7 +54,7 @@ pub fn gui_up(gui: &mut Gui, state: &mut GState) {
|
|||||||
gui.immediate_ui(|gui| {
|
gui.immediate_ui(|gui| {
|
||||||
let ctx = gui.context();
|
let ctx = gui.context();
|
||||||
egui::SidePanel::left(Id::new("main_left"))
|
egui::SidePanel::left(Id::new("main_left"))
|
||||||
.frame(Frame::default().fill(Color32::from_rgba_unmultiplied(100, 100, 100, 200)))
|
.frame(Frame::default().fill(Color32::from_rgba_unmultiplied(50, 50, 50, 200)))
|
||||||
.show(&ctx, |ui| {
|
.show(&ctx, |ui| {
|
||||||
ui.vertical_centered(|ui| {
|
ui.vertical_centered(|ui| {
|
||||||
ui.add(egui::widgets::Label::new("Efficient Realtime Rendering of Complex Closed Form Implicit Surfaces Using Modern RTX Enabled GPUs"));
|
ui.add(egui::widgets::Label::new("Efficient Realtime Rendering of Complex Closed Form Implicit Surfaces Using Modern RTX Enabled GPUs"));
|
||||||
|
|||||||
+21
-41
@@ -30,7 +30,7 @@ use vulkano::swapchain::{PresentMode, SwapchainPresentInfo};
|
|||||||
use vulkano::VulkanLibrary;
|
use vulkano::VulkanLibrary;
|
||||||
use winit::event::{DeviceEvent, ElementState, MouseButton, VirtualKeyCode};
|
use winit::event::{DeviceEvent, ElementState, MouseButton, VirtualKeyCode};
|
||||||
|
|
||||||
use egui_winit_vulkano::Gui;
|
use egui_winit_vulkano::{Gui,GuiConfig};
|
||||||
use rayon::prelude::*;
|
use rayon::prelude::*;
|
||||||
use vulkano::pipeline::StateMode::Fixed;
|
use vulkano::pipeline::StateMode::Fixed;
|
||||||
use vulkano::{
|
use vulkano::{
|
||||||
@@ -236,13 +236,9 @@ fn main() {
|
|||||||
vulkano_shaders::shader! {
|
vulkano_shaders::shader! {
|
||||||
ty: "vertex",
|
ty: "vertex",
|
||||||
path: "src/triangle.vert.glsl",
|
path: "src/triangle.vert.glsl",
|
||||||
types_meta: {
|
|
||||||
use bytemuck::{Pod, Zeroable};
|
|
||||||
|
|
||||||
#[derive(Clone, Copy, Zeroable, Pod, Debug)]
|
|
||||||
},
|
|
||||||
vulkan_version: "1.2",
|
vulkan_version: "1.2",
|
||||||
spirv_version: "1.5"
|
spirv_version: "1.5",
|
||||||
|
custom_derives: [Debug, Clone, Copy],
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -250,14 +246,10 @@ fn main() {
|
|||||||
vulkano_shaders::shader! {
|
vulkano_shaders::shader! {
|
||||||
ty: "fragment",
|
ty: "fragment",
|
||||||
path: "src/frag.glsl",
|
path: "src/frag.glsl",
|
||||||
types_meta: {
|
|
||||||
use bytemuck::{Pod, Zeroable};
|
|
||||||
|
|
||||||
#[derive(Clone, Copy, Zeroable, Pod, Debug)]
|
|
||||||
},
|
|
||||||
vulkan_version: "1.2",
|
vulkan_version: "1.2",
|
||||||
spirv_version: "1.5",
|
spirv_version: "1.5",
|
||||||
define: [("triangle","1")]
|
define: [("triangle","1")],
|
||||||
|
custom_derives: [Debug, Clone, Copy],
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -265,13 +257,9 @@ fn main() {
|
|||||||
vulkano_shaders::shader! {
|
vulkano_shaders::shader! {
|
||||||
ty: "mesh",
|
ty: "mesh",
|
||||||
path: "src/implicit.mesh.glsl",
|
path: "src/implicit.mesh.glsl",
|
||||||
types_meta: {
|
|
||||||
use bytemuck::{Pod, Zeroable};
|
|
||||||
|
|
||||||
#[derive(Clone, Copy, Zeroable, Pod, Debug)]
|
|
||||||
},
|
|
||||||
vulkan_version: "1.2",
|
vulkan_version: "1.2",
|
||||||
spirv_version: "1.5"
|
spirv_version: "1.5",
|
||||||
|
custom_derives: [Debug, Clone, Copy],
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -279,13 +267,9 @@ fn main() {
|
|||||||
vulkano_shaders::shader! {
|
vulkano_shaders::shader! {
|
||||||
ty: "task",
|
ty: "task",
|
||||||
path: "src/implicit.task.glsl",
|
path: "src/implicit.task.glsl",
|
||||||
types_meta: {
|
|
||||||
use bytemuck::{Pod, Zeroable};
|
|
||||||
|
|
||||||
#[derive(Clone, Copy, Zeroable, Pod, Debug)]
|
|
||||||
},
|
|
||||||
vulkan_version: "1.2",
|
vulkan_version: "1.2",
|
||||||
spirv_version: "1.5"
|
spirv_version: "1.5",
|
||||||
|
custom_derives: [Debug, Clone, Copy],
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -293,14 +277,10 @@ fn main() {
|
|||||||
vulkano_shaders::shader! {
|
vulkano_shaders::shader! {
|
||||||
ty: "fragment",
|
ty: "fragment",
|
||||||
path: "src/frag.glsl",
|
path: "src/frag.glsl",
|
||||||
types_meta: {
|
|
||||||
use bytemuck::{Pod, Zeroable};
|
|
||||||
|
|
||||||
#[derive(Clone, Copy, Zeroable, Pod, Debug)]
|
|
||||||
},
|
|
||||||
vulkan_version: "1.2",
|
vulkan_version: "1.2",
|
||||||
spirv_version: "1.5",
|
spirv_version: "1.5",
|
||||||
define: [("implicit","1")]
|
define: [("implicit","1")],
|
||||||
|
custom_derives: [Debug, Clone, Copy],
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -308,13 +288,9 @@ fn main() {
|
|||||||
vulkano_shaders::shader!{
|
vulkano_shaders::shader!{
|
||||||
ty: "compute",
|
ty: "compute",
|
||||||
path: "src/fuzz.comp.glsl",
|
path: "src/fuzz.comp.glsl",
|
||||||
types_meta: {
|
|
||||||
use bytemuck::{Pod, Zeroable};
|
|
||||||
|
|
||||||
#[derive(Clone, Copy, Zeroable, Pod, Debug)]
|
|
||||||
},
|
|
||||||
vulkan_version: "1.2",
|
vulkan_version: "1.2",
|
||||||
spirv_version: "1.5",
|
spirv_version: "1.5",
|
||||||
|
custom_derives: [Debug, Clone, Copy],
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -483,9 +459,13 @@ fn main() {
|
|||||||
let mut gui = Gui::new_with_subpass(
|
let mut gui = Gui::new_with_subpass(
|
||||||
&event_loop,
|
&event_loop,
|
||||||
surface.clone(),
|
surface.clone(),
|
||||||
None,
|
|
||||||
queue.clone(),
|
queue.clone(),
|
||||||
Subpass::from(render_pass.clone(), 1).unwrap(),
|
Subpass::from(render_pass.clone(), 1).unwrap(),
|
||||||
|
GuiConfig {
|
||||||
|
preferred_format: Some(images[0].format()),
|
||||||
|
is_overlay: true,
|
||||||
|
samples: SampleCount::Sample4
|
||||||
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
let mut campos = Point3 {
|
let mut campos = Point3 {
|
||||||
@@ -707,11 +687,11 @@ fn main() {
|
|||||||
* Matrix4::from_angle_z(Deg(180f32))
|
* Matrix4::from_angle_z(Deg(180f32))
|
||||||
* Matrix4::from_translation(Point3::origin() - campos);
|
* Matrix4::from_translation(Point3::origin() - campos);
|
||||||
|
|
||||||
let pc = mesh_vs::ty::PushConstantData {
|
let pc = mesh_vs::PushConstantData {
|
||||||
world: Matrix4::identity().into(),
|
world: Matrix4::identity().into(),
|
||||||
};
|
};
|
||||||
|
|
||||||
let uniform_data = implicit_fs::ty::Camera {
|
let uniform_data = implicit_fs::Camera {
|
||||||
view: view.into(),
|
view: view.into(),
|
||||||
proj: proj.into(),
|
proj: proj.into(),
|
||||||
campos: (campos).into(),
|
campos: (campos).into(),
|
||||||
@@ -740,7 +720,7 @@ fn main() {
|
|||||||
col[i][2] = light.colour.z;
|
col[i][2] = light.colour.z;
|
||||||
}
|
}
|
||||||
|
|
||||||
let uniform_data = mesh_fs::ty::Lights {
|
let uniform_data = mesh_fs::Lights {
|
||||||
pos,
|
pos,
|
||||||
col,
|
col,
|
||||||
light_count: gstate.lights.len() as u32,
|
light_count: gstate.lights.len() as u32,
|
||||||
@@ -815,7 +795,7 @@ fn main() {
|
|||||||
[1.,1.,1.,1.,5.,1.]
|
[1.,1.,1.,1.,5.,1.]
|
||||||
),true);
|
),true);
|
||||||
|
|
||||||
let compute_result_buffer:Subbuffer<[cs::ty::Results]> = uniform_buffer.allocate_slice((fake_csg.len()+1) as u64).unwrap();
|
let compute_result_buffer:Subbuffer<[cs::Results]> = uniform_buffer.allocate_slice((fake_csg.len()+1) as u64).unwrap();
|
||||||
|
|
||||||
|
|
||||||
let compute_layout = compute_pipeline.layout().set_layouts().get(0).unwrap();
|
let compute_layout = compute_pipeline.layout().set_layouts().get(0).unwrap();
|
||||||
|
|||||||
Reference in New Issue
Block a user