mittens_engine/engine/graphics/
mod.rs1pub mod bounds;
2pub mod mesh;
3pub mod pipeline_descriptor_set_layouts;
4pub mod post_processing;
5pub mod primitives;
6pub mod render_assets;
7pub mod render_info;
8pub mod skin;
9pub mod visual_world;
10pub mod vulkano_renderer;
11pub(crate) mod vulkano_swapchain;
12pub mod xr_renderer;
13pub mod xr_swapchain;
14
15pub use mesh::{CpuMesh, CpuVertex, MeshFactory};
16pub use post_processing::{
17 BloomConfig, BloomSource, BlurPassConfig, BokehConfig, EmissivePassConfig,
18 PostProcessingConfig, PostProcessingRenderer,
19};
20#[allow(unused_imports)]
21pub use primitives::{
22 GpuRenderable, Material, MaterialHandle, MeshHandle, Renderable, TextureHandle, Transform,
23 TransformMatrix,
24};
25
26pub use render_assets::{BuiltinMeshType, RenderAssets};
27pub use skin::{Skin, SkinId};
28pub use visual_world::TextureFiltering;
29pub use visual_world::VisualWorld;
30pub use visual_world::{CameraData, CameraTarget, VisualCamera};
31pub(crate) mod vulkano_texture_upload;
32pub use vulkano_renderer::VulkanoRenderer;
33pub use xr_swapchain::XRSwapchain;
34
35#[derive(Debug, Clone, Copy, PartialEq, Eq)]
36pub enum MsaaMode {
37 Off,
38 Msaa4x,
39}
40
41impl Default for MsaaMode {
42 fn default() -> Self {
43 Self::Msaa4x
44 }
45}
46
47#[derive(Debug, Clone, Copy)]
51pub struct XrVulkanGraphics {
52 pub vk_instance: openxr::sys::platform::VkInstance,
53 pub vk_physical_device: openxr::sys::platform::VkPhysicalDevice,
54 pub vk_device: openxr::sys::platform::VkDevice,
55 pub vk_queue: *const std::ffi::c_void,
56 pub queue_family_index: u32,
57 pub queue_index: u32,
58}
59
60pub use render_info::RenderInfo;
61pub trait MeshUploader {
65 fn upload_mesh(&mut self, mesh: &CpuMesh) -> Result<MeshHandle, Box<dyn std::error::Error>>;
66}
67
68pub trait TextureUploader {
72 fn upload_texture_rgba8(
73 &mut self,
74 rgba: &[u8],
75 width: u32,
76 height: u32,
77 ) -> Result<TextureHandle, Box<dyn std::error::Error>>;
78
79 fn upload_texture_bc7(
80 &mut self,
81 bc7_blocks: &[u8],
82 width: u32,
83 height: u32,
84 srgb: bool,
85 ) -> Result<TextureHandle, Box<dyn std::error::Error>>;
86}
87
88pub trait RenderUploader: MeshUploader + TextureUploader {}
90
91impl<T> RenderUploader for T where T: MeshUploader + TextureUploader {}
92
93pub struct Graphics;
95
96impl Graphics {
97 pub fn new() -> Self {
98 Self
99 }
100}