Skip to content

Commit

Permalink
add rustfmt
Browse files Browse the repository at this point in the history
  • Loading branch information
boralg committed Jul 14, 2024
1 parent be3ac21 commit 6576467
Show file tree
Hide file tree
Showing 14 changed files with 545 additions and 335 deletions.
161 changes: 101 additions & 60 deletions examples/src/cube_camera/main.rs
Original file line number Diff line number Diff line change
@@ -1,14 +1,20 @@
use sursface::app::AppState;
use sursface::cgmath::{perspective, Deg, Matrix4, Point3, SquareMatrix, Vector3};
use sursface::display::Display;
use sursface::std::models::{quad_uvs, cube, VertexPositionNormalUv};
use sursface::std::{clear_screen, create_render_pipeline, create_sampler_entry, create_shader, create_texture, create_texture_layout_entry_from_image, create_uniforms, get_framebuffer};
use sursface::std::models::{cube, quad_uvs, VertexPositionNormalUv};
use sursface::std::{
clear_screen, create_render_pipeline, create_sampler_entry, create_shader, create_texture,
create_texture_layout_entry_from_image, create_uniforms, get_framebuffer,
};
use sursface::time::now_secs;
use sursface::wgpu::{BindGroupEntry, Buffer};
use sursface::wgpu::util::{BufferInitDescriptor, DeviceExt};
use sursface::wgpu::{
BindGroup, BindGroupEntry, BindingResource, Buffer, BufferAddress, BufferUsages, Color,
CommandEncoderDescriptor, PipelineLayoutDescriptor, RenderPipeline, VertexAttribute,
VertexBufferLayout, VertexFormat, VertexStepMode,
};
use sursface::winit::dpi::PhysicalSize;
use sursface::winit::event::WindowEvent;
use sursface::wgpu;
use wgpu::{util::DeviceExt, Color, RenderPipeline};
use sursface::cgmath::{Deg, Matrix4, Point3, Vector3, perspective};
use sursface::cgmath::SquareMatrix;
use sursface::{app::AppState, winit::dpi::PhysicalSize};

#[cfg(target_arch = "wasm32")]
use sursface::wasm_bindgen;
Expand All @@ -18,10 +24,9 @@ fn main() {
sursface::start::create_window_desktop::<CubeState>(PhysicalSize::new(1280, 720));
}


#[cfg(target_arch = "wasm32")]
#[wasm_bindgen::prelude::wasm_bindgen]
pub fn start_browser(canvas: sursface::wgpu::web_sys::HtmlCanvasElement) {
pub fn start_browser(canvas: sursface::web_sys::HtmlCanvasElement) {
sursface::start::create_window_browser::<CubeState>(canvas);
}

Expand All @@ -31,14 +36,14 @@ fn main() {}
struct CubeState {
render_pipeline: RenderPipeline,
start_time: f32,
uniform_buffer: wgpu::Buffer,
uniform_bind_group: wgpu::BindGroup,
uniform_buffer: Buffer,
uniform_bind_group: BindGroup,
vertex_buffer: Buffer,
texture_bind_group: wgpu::BindGroup,
texture_bind_group: BindGroup,
uniforms: Uniforms,
yaw: f64,
pitch: f64,
pan_speed: f64
pan_speed: f64,
}

#[repr(C)]
Expand All @@ -54,56 +59,74 @@ impl AppState for CubeState {

let shader = create_shader(device, include_str!("assets/shader.wgsl"));

let (texture_bind_group_entry, texture_view) = create_texture_layout_entry_from_image(device, &display.queue, include_bytes!("assets/dice.png"), 0);
let (texture_bind_group_entry, texture_view) = create_texture_layout_entry_from_image(
device,
&display.queue,
include_bytes!("assets/dice.png"),
0,
);
let (sampler_entry, sampler) = create_sampler_entry(device, 1);

let (texture_bind_group_layout,texture_bind_group ) = create_texture(device,
let (texture_bind_group_layout, texture_bind_group) = create_texture(
device,
&[texture_bind_group_entry, sampler_entry],
&[BindGroupEntry {
binding: 0,
resource: wgpu::BindingResource::TextureView(&texture_view),
}, BindGroupEntry {
binding: 1,
resource: wgpu::BindingResource::Sampler(&sampler),
}]);

let (uniform_buffer, uniform_bind_group_layout, uniform_bind_group ) = create_uniforms(device,
Uniforms { model_view_proj: Matrix4::identity().into(), camera_pan: Matrix4::identity().into() },
0);

let pipeline_layout = device.create_pipeline_layout(&wgpu::PipelineLayoutDescriptor {
&[
BindGroupEntry {
binding: 0,
resource: BindingResource::TextureView(&texture_view),
},
BindGroupEntry {
binding: 1,
resource: BindingResource::Sampler(&sampler),
},
],
);

let (uniform_buffer, uniform_bind_group_layout, uniform_bind_group) = create_uniforms(
device,
Uniforms {
model_view_proj: Matrix4::identity().into(),
camera_pan: Matrix4::identity().into(),
},
0,
);

let pipeline_layout = device.create_pipeline_layout(&PipelineLayoutDescriptor {
label: None,
bind_group_layouts: &[&uniform_bind_group_layout, &texture_bind_group_layout],
push_constant_ranges: &[],
});

let render_pipeline = create_render_pipeline(display, pipeline_layout, shader, &[
wgpu::VertexBufferLayout {
array_stride: std::mem::size_of::<VertexPositionNormalUv>() as wgpu::BufferAddress,
step_mode: wgpu::VertexStepMode::Vertex,
let render_pipeline = create_render_pipeline(
display,
pipeline_layout,
shader,
&[VertexBufferLayout {
array_stride: std::mem::size_of::<VertexPositionNormalUv>() as BufferAddress,
step_mode: VertexStepMode::Vertex,
attributes: &[
wgpu::VertexAttribute {
VertexAttribute {
offset: 0,
shader_location: 0,
format: wgpu::VertexFormat::Float32x3,
format: VertexFormat::Float32x3,
},
wgpu::VertexAttribute {
VertexAttribute {
offset: 12,
shader_location: 1,
format: wgpu::VertexFormat::Float32x3,
format: VertexFormat::Float32x3,
},
wgpu::VertexAttribute {
VertexAttribute {
offset: 24,
shader_location: 2,
format: wgpu::VertexFormat::Float32x2,
format: VertexFormat::Float32x2,
},
],
},
]);
}],
);

let start_time = now_secs();

let vertex_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
let vertex_buffer = device.create_buffer_init(&BufferInitDescriptor {
label: Some("Vertex Buffer"),
contents: bytemuck::cast_slice(&cube(&[
quad_uvs((0.00, 1f32 / 3f32), (0.25 + 0.00, 2f32 / 3f32)), // 6
Expand All @@ -113,7 +136,7 @@ impl AppState for CubeState {
quad_uvs((0.50, 0f32 / 3f32), (0.25 + 0.50, 1f32 / 3f32)), // 2
quad_uvs((0.50, 2f32 / 3f32), (0.25 + 0.50, 3f32 / 3f32)), // 5
])),
usage: wgpu::BufferUsages::VERTEX,
usage: BufferUsages::VERTEX,
});

CubeState {
Expand All @@ -123,10 +146,13 @@ impl AppState for CubeState {
uniform_bind_group,
vertex_buffer,
texture_bind_group,
uniforms: Uniforms { model_view_proj: Matrix4::identity().into(), camera_pan: Matrix4::identity().into() },
uniforms: Uniforms {
model_view_proj: Matrix4::identity().into(),
camera_pan: Matrix4::identity().into(),
},
yaw: 0f64,
pitch: 0f64,
pan_speed: 0.4f64
pan_speed: 0.4f64,
}
}

Expand All @@ -139,9 +165,11 @@ impl AppState for CubeState {
};

let output = {
let mut encoder = display.device.create_command_encoder(&wgpu::CommandEncoderDescriptor {
label: Some("Encoder"),
});
let mut encoder = display
.device
.create_command_encoder(&CommandEncoderDescriptor {
label: Some("Encoder"),
});

let (output, view) = get_framebuffer(&display.surface);
{
Expand All @@ -151,21 +179,29 @@ impl AppState for CubeState {
let elapsed = now - self.start_time;
sursface::log::info!("{} {}", now, elapsed);
let aspect_ratio = display.config.width as f32 / display.config.height as f32;

let model = Matrix4::identity();

let view = Matrix4::look_at_rh(Point3::new(3.0, 3.0, 3.0), Point3::new(0.0, 0.0, 0.0), Vector3::unit_y());
let view = Matrix4::look_at_rh(
Point3::new(3.0, 3.0, 3.0),
Point3::new(0.0, 0.0, 0.0),
Vector3::unit_y(),
);
let proj = perspective(Deg(45.0), aspect_ratio, 0.1, 10.0);
let mvp = proj * view * model;

self.uniforms.model_view_proj = mvp.into();

let queue = &display.queue;
queue.write_buffer(&self.uniform_buffer, 0, bytemuck::cast_slice(&[self.uniforms]));
queue.write_buffer(
&self.uniform_buffer,
0,
bytemuck::cast_slice(&[self.uniforms]),
);

{
rpass.set_pipeline(&self.render_pipeline);
rpass.set_bind_group(0, &self.uniform_bind_group, &[]);
rpass.set_bind_group(0, &self.uniform_bind_group, &[]);
rpass.set_bind_group(1, &self.texture_bind_group, &[]);
rpass.set_vertex_buffer(0, self.vertex_buffer.slice(..));
rpass.draw(0..36, 0..1);
Expand All @@ -185,7 +221,7 @@ impl AppState for CubeState {
fn event<'a>(&mut self, _display: &mut Display, event: WindowEvent) {
let mut x = 0f64;
let mut y = 0f64;

let moved = {
match event {
WindowEvent::Touch(a) => {
Expand All @@ -194,23 +230,28 @@ impl AppState for CubeState {

true
}
WindowEvent::CursorMoved { device_id: _, position } => {
WindowEvent::CursorMoved {
device_id: _,
position,
} => {
x = position.x;
y = position.y;

true
}
_ => false
_ => false,
}
};

if moved {
self.yaw = x;
self.pitch = -y;

self.uniforms.camera_pan = (Matrix4::from_angle_y(Deg(self.yaw * self.pan_speed)) *
Matrix4::from_angle_x(Deg(self.pitch * self.pan_speed)))
.cast().unwrap().into();

self.uniforms.camera_pan = (Matrix4::from_angle_y(Deg(self.yaw * self.pan_speed))
* Matrix4::from_angle_x(Deg(self.pitch * self.pan_speed)))
.cast()
.unwrap()
.into();
}
}
}
}
13 changes: 8 additions & 5 deletions examples/src/hello_triangle/main.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
use sursface::{app::AppState, display::Display, std::{clear_screen, create_render_pipeline, create_shader, get_framebuffer}, wgpu::{self, Color, RenderPipeline}, winit::dpi::PhysicalSize};
use sursface::app::AppState;
use sursface::display::Display;
use sursface::std::{clear_screen, create_render_pipeline, create_shader, get_framebuffer};
use sursface::wgpu::{self, Color, RenderPipeline};
use sursface::winit::dpi::PhysicalSize;

#[cfg(not(target_arch = "wasm32"))]
fn main() {
Expand All @@ -8,7 +12,6 @@ fn main() {
#[cfg(target_arch = "wasm32")]
fn main() {}


#[cfg(target_arch = "wasm32")]
#[wasm_bindgen::prelude::wasm_bindgen]
pub fn start_browser(canvas: sursface::wgpu::web_sys::HtmlCanvasElement) {
Expand All @@ -30,7 +33,7 @@ impl AppState for TriangleState {
bind_group_layouts: &[],
push_constant_ranges: &[],
});

let render_pipeline = create_render_pipeline(display, pipeline_layout, shader, &[]);
TriangleState { render_pipeline }
}
Expand All @@ -52,12 +55,12 @@ impl AppState for TriangleState {
let (output, view) = get_framebuffer(&display.surface);
{
let mut rpass = clear_screen(&view, &mut encoder, clear_color);

rpass.set_pipeline(&self.render_pipeline);
rpass.draw(0..3, 0..1);
}

display.queue.submit(std::iter::once(encoder.finish()));
output.present();
}
}
}
35 changes: 23 additions & 12 deletions examples/src/hello_window/main.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
use sursface::{app::AppState, display::Display, wgpu::{self, TextureView}, winit::dpi::PhysicalSize};
use sursface::app::AppState;
use sursface::display::Display;
use sursface::wgpu::{self, TextureView};
use sursface::winit::dpi::PhysicalSize;

#[cfg(target_arch = "wasm32")]
use sursface::wasm_bindgen;
Expand Down Expand Up @@ -27,23 +30,31 @@ impl AppState for EmptyState {

fn draw<'a>(&mut self, display: &mut Display) {
let output = display.surface.get_current_texture().unwrap();
let view = output.texture.create_view(&wgpu::TextureViewDescriptor::default());
let view = output
.texture
.create_view(&wgpu::TextureViewDescriptor::default());

clear_screen(display, &view, wgpu::Color {
r: 100.0 / 255.0,
g: 149.0 / 255.0,
b: 237.0 / 255.0,
a: 1.0,
});
clear_screen(
display,
&view,
wgpu::Color {
r: 100.0 / 255.0,
g: 149.0 / 255.0,
b: 237.0 / 255.0,
a: 1.0,
},
);

output.present();
}
}

fn clear_screen<'a>(display: &mut Display, view: &TextureView, color: sursface::wgpu::Color) {
let mut encoder = display.device.create_command_encoder(&wgpu::CommandEncoderDescriptor {
label: Some("Clear Screen Encoder"),
});
let mut encoder = display
.device
.create_command_encoder(&wgpu::CommandEncoderDescriptor {
label: Some("Clear Screen Encoder"),
});

{
let _render_pass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor {
Expand All @@ -63,4 +74,4 @@ fn clear_screen<'a>(display: &mut Display, view: &TextureView, color: sursface::
}

display.queue.submit(std::iter::once(encoder.finish()));
}
}
Loading

0 comments on commit 6576467

Please sign in to comment.