Expand description
Soorat — GPU rendering engine for AGNOS
Soorat (Arabic/Urdu: صورت — form, image, appearance) is a wgpu-based rendering engine designed for the Kiran game engine and AGNOS ecosystem.
§Modules
- Core:
gpu,window,color,vertex,error,profiler,capabilities - 2D:
pipeline(sprites),sprite,texture,text,ui - 3D:
mesh_pipeline(PBR),shadow,animation,terrain,primitives - Lighting:
lights,environment(IBL) - Post-processing:
postprocess,hdr(bloom),ssao - Debug:
debug_draw(wireframe lines, shapes, grid) - Rendering:
instancing,lod,compute,gpu_particles,render_graph - Fluids:
fluid_render(pravash integration) - Screenshot:
screenshot(selah integration — capture, annotate, redact) - Loading:
gltf_loader,texture - Integration:
egui_bridge(salai editor)
Re-exports§
pub use capabilities::GpuCapabilities;pub use color::Color;pub use error::RenderError;pub use error::Result;pub use gpu::GpuContext;pub use profiler::FrameProfiler;pub use profiler::GpuTimestamps;pub use profiler::PassTiming;pub use vertex::SkinnedVertex3D;pub use vertex::Vertex2D;pub use vertex::Vertex3D;pub use window::Window;pub use window::WindowConfig;pub use compute::ComputePipeline;pub use gpu_particles::GpuParticle;pub use gpu_particles::GpuParticleSystem;pub use gpu_particles::SimParams;pub use instancing::InstanceBuffer;pub use instancing::InstanceData;pub use lod::LodChain;pub use lod::TerrainLod;pub use render_graph::PassType;pub use render_graph::RenderGraph;pub use environment::EnvironmentMap;pub use environment::IblBindGroup;pub use fluid_render::FluidColorMode;pub use fluid_render::ParticleColorParams;pub use egui_bridge::ViewportSize;pub use pipeline::FrameStats;pub use pipeline::SpriteBuffers;pub use pipeline::SpritePipeline;pub use pipeline::batch_to_vertices;pub use pipeline::batch_to_vertices_into;pub use pipeline::batch_to_vertices_u32;pub use sprite::Sprite;pub use sprite::SpriteBatch;pub use sprite::UvRect;pub use texture::Texture;pub use texture::TextureCache;pub use texture::create_default_sampler;pub use mesh_pipeline::CameraUniforms;pub use mesh_pipeline::DepthBuffer;pub use mesh_pipeline::LightUniforms;pub use mesh_pipeline::Mesh;pub use mesh_pipeline::MeshPipeline;pub use mesh_pipeline::ShadowPassUniforms;pub use pbr_material::MaterialUniforms;pub use lights::GpuLight;pub use lights::LightArrayUniforms;pub use shadow::CascadeUniforms;pub use shadow::CascadedShadowMap;pub use shadow::PointShadowMap;pub use shadow::ShadowAtlas;pub use shadow::ShadowAtlasConfig;pub use shadow::ShadowMap;pub use shadow::ShadowPipeline;pub use shadow::ShadowUniforms;pub use animation::AnimationClip;pub use animation::JointUniforms;pub use animation::Skeleton;pub use debug_draw::LineBatch;pub use debug_draw::LinePipeline;pub use debug_draw::LineVertex;pub use hdr::BloomPipeline;pub use hdr::BloomUniforms;pub use hdr::HdrFramebuffer;pub use postprocess::PostProcessPipeline;pub use postprocess::PostProcessUniforms;pub use postprocess::ToneMapMode;pub use ssao::SsaoPipeline;pub use ssao::SsaoUniforms;pub use render_target::RenderTarget;pub use screenshot::ScreenshotFormat;pub use screenshot::capture_render_target;pub use screenshot::encode_pixels;pub use screenshot::save_to_file;pub use terrain::TerrainConfig;pub use terrain::TerrainData;pub use text::BitmapFont;pub use text::TextBatch;pub use ui::UiBatch;pub use ui::UiLabel;pub use ui::UiPanel;pub use material::Material;
Modules§
- animation
- Skeletal animation — joints, skins, animation clips.
- batch
- Sprite batch → vertex/index generation.
- capabilities
- GPU capability reporting — feature detection and limit queries.
- color
- Color types and utilities.
- compute
- Compute shader pipeline — general-purpose GPU compute.
- debug_
draw - Debug line rendering pipeline and shape helpers.
- drm
- DRM device information — kernel-level GPU details.
- egui_
bridge - Egui integration helpers — bridge soorat render targets to egui textures.
- environment
- Environment maps — cubemap textures for IBL (Image-Based Lighting).
- error
- Error types for soorat.
- fluid_
render - Fluid rendering — SPH particle visualization and shallow water surface meshes.
- gltf_
loader - glTF model loading.
- gpu
- GPU device and surface management.
- gpu_
particles - GPU particle system — compute shader simulation + instanced quad rendering.
- hdr
- HDR framebuffer and post-processing chain.
- instancing
- Instanced rendering — draw many copies of a mesh with per-instance transforms.
- lights
- Multi-light system — directional, point, and spot lights.
- lod
- Level of Detail — distance-based mesh/terrain selection.
- material
- Material types for 3D mesh rendering.
- mesh_
pipeline - 3D mesh rendering pipeline.
- pbr_
material - PBR material types and BRDF LUT precomputation.
- pipeline
- Sprite rendering pipeline.
Also re-exports batch functions from
crate::batchfor backward compatibility. - postprocess
- Post-processing pipeline — tone mapping, bloom.
- primitives
- Built-in mesh primitives — cube, sphere, plane, cylinder. Generates Vertex3D + index data for common shapes without requiring glTF loading.
- profiler
- Frame profiling — CPU timing and GPU timestamp queries.
- render_
graph - Render graph — multi-pass abstraction for configurable render pipelines.
- render_
target - Offscreen render targets.
- screenshot
- Screenshot capture from GPU render targets via selah.
- shadow
- Shadow mapping for directional lights.
- sprite
- Sprite rendering types.
- ssao
- Screen-Space Ambient Occlusion (SSAO).
- terrain
- Terrain rendering — heightmap-based mesh generation.
- text
- Text rendering — bitmap font glyph atlas + text batching.
- texture
- Texture loading and management.
- ui
- UI rendering — screen-space panels, labels, and HUD elements.
- vertex
- Vertex types and buffer layouts.
- window
- Window management via winit.