summaryrefslogtreecommitdiffstats
path: root/examples/custom_shader
diff options
context:
space:
mode:
Diffstat (limited to 'examples/custom_shader')
-rw-r--r--examples/custom_shader/src/main.rs9
-rw-r--r--examples/custom_shader/src/scene.rs33
2 files changed, 20 insertions, 22 deletions
diff --git a/examples/custom_shader/src/main.rs b/examples/custom_shader/src/main.rs
index aa3dafe9..463b2df9 100644
--- a/examples/custom_shader/src/main.rs
+++ b/examples/custom_shader/src/main.rs
@@ -4,7 +4,7 @@ use scene::Scene;
use iced::time::Instant;
use iced::widget::shader::wgpu;
-use iced::widget::{checkbox, column, container, row, shader, slider, text};
+use iced::widget::{center, checkbox, column, row, shader, slider, text};
use iced::window;
use iced::{Alignment, Color, Element, Length, Subscription};
@@ -123,12 +123,7 @@ impl IcedCubes {
let shader =
shader(&self.scene).width(Length::Fill).height(Length::Fill);
- container(column![shader, controls].align_items(Alignment::Center))
- .width(Length::Fill)
- .height(Length::Fill)
- .center_x()
- .center_y()
- .into()
+ center(column![shader, controls].align_items(Alignment::Center)).into()
}
fn subscription(&self) -> Subscription<Message> {
diff --git a/examples/custom_shader/src/scene.rs b/examples/custom_shader/src/scene.rs
index a35efdd9..5fa42188 100644
--- a/examples/custom_shader/src/scene.rs
+++ b/examples/custom_shader/src/scene.rs
@@ -9,8 +9,8 @@ use pipeline::cube::{self, Cube};
use iced::mouse;
use iced::time::Duration;
-use iced::widget::shader;
-use iced::{Color, Rectangle, Size};
+use iced::widget::shader::{self, Viewport};
+use iced::{Color, Rectangle};
use glam::Vec3;
use rand::Rng;
@@ -130,25 +130,29 @@ impl Primitive {
impl shader::Primitive for Primitive {
fn prepare(
&self,
- format: wgpu::TextureFormat,
device: &wgpu::Device,
queue: &wgpu::Queue,
- _bounds: Rectangle,
- target_size: Size<u32>,
- _scale_factor: f32,
+ format: wgpu::TextureFormat,
storage: &mut shader::Storage,
+ _bounds: &Rectangle,
+ viewport: &Viewport,
) {
if !storage.has::<Pipeline>() {
- storage.store(Pipeline::new(device, queue, format, target_size));
+ storage.store(Pipeline::new(
+ device,
+ queue,
+ format,
+ viewport.physical_size(),
+ ));
}
let pipeline = storage.get_mut::<Pipeline>().unwrap();
- //upload data to GPU
+ // Upload data to GPU
pipeline.update(
device,
queue,
- target_size,
+ viewport.physical_size(),
&self.uniforms,
self.cubes.len(),
&self.cubes,
@@ -157,20 +161,19 @@ impl shader::Primitive for Primitive {
fn render(
&self,
+ encoder: &mut wgpu::CommandEncoder,
storage: &shader::Storage,
target: &wgpu::TextureView,
- _target_size: Size<u32>,
- viewport: Rectangle<u32>,
- encoder: &mut wgpu::CommandEncoder,
+ clip_bounds: &Rectangle<u32>,
) {
- //at this point our pipeline should always be initialized
+ // At this point our pipeline should always be initialized
let pipeline = storage.get::<Pipeline>().unwrap();
- //render primitive
+ // Render primitive
pipeline.render(
target,
encoder,
- viewport,
+ *clip_bounds,
self.cubes.len() as u32,
self.show_depth_buffer,
);