ranim_render/pipelines/
debug.rs1use std::ops::Deref;
2
3use glam::Vec4;
4
5use crate::{OUTPUT_TEXTURE_FORMAT, RenderResource, WgpuContext};
6
7#[allow(unused)]
8pub struct DebugPipeline {
9 pipeline: wgpu::RenderPipeline,
10}
11
12impl Deref for DebugPipeline {
13 type Target = wgpu::RenderPipeline;
14 fn deref(&self) -> &Self::Target {
15 &self.pipeline
16 }
17}
18
19impl RenderResource for DebugPipeline {
20 fn new(wgpu_ctx: &WgpuContext) -> Self {
21 let WgpuContext { device, .. } = wgpu_ctx;
22
23 let module = &device.create_shader_module(wgpu::include_wgsl!("./shaders/debug.wgsl"));
24
25 let pipeline_layout = device.create_pipeline_layout(&wgpu::PipelineLayoutDescriptor {
26 label: Some("Debug Pipeline Layout"),
27 bind_group_layouts: &[],
28 push_constant_ranges: &[],
29 });
30 let pipeline = device.create_render_pipeline(&wgpu::RenderPipelineDescriptor {
31 label: Some("Debug Pipeline"),
32 layout: Some(&pipeline_layout),
33 vertex: wgpu::VertexState {
34 module,
35 entry_point: Some("vs_main"),
36 buffers: &[wgpu::VertexBufferLayout {
37 array_stride: std::mem::size_of::<Vec4>() as u64,
38 step_mode: wgpu::VertexStepMode::Vertex,
39 attributes: &[wgpu::VertexAttribute {
40 shader_location: 0,
41 format: wgpu::VertexFormat::Float32x4,
42 offset: 0,
43 }],
44 }],
45 compilation_options: wgpu::PipelineCompilationOptions::default(),
46 },
47 fragment: Some(wgpu::FragmentState {
48 module,
49 entry_point: Some("fs_main"),
50 compilation_options: wgpu::PipelineCompilationOptions::default(),
51 targets: &[Some(wgpu::ColorTargetState {
52 format: OUTPUT_TEXTURE_FORMAT,
53 blend: Some(wgpu::BlendState::ALPHA_BLENDING),
54 write_mask: wgpu::ColorWrites::ALL,
55 })],
56 }),
57 primitive: wgpu::PrimitiveState {
58 topology: wgpu::PrimitiveTopology::PointList,
59 ..Default::default()
60 },
61 depth_stencil: None,
62 multisample: wgpu::MultisampleState {
63 count: 4,
64 mask: !0,
65 alpha_to_coverage_enabled: false,
66 },
67 multiview: None,
68 cache: None,
69 });
70
71 Self { pipeline }
72 }
73}