ashura
ashura copied to clipboard
Tasks
2D
- [x] Implement Renderer-Agnostic Canvas API
- [x] Implement Vulkan Renderer for Canvas
- [x] Integrate Audio and Video codecs for WebM (video: AVI + audio: Opus/Vorbis) (to be used showcase)
- [x] Integrate animation codec for AVIF (to be used in showcase)
- [ ] Integrate audio codec for Opus and Vorbis (to be used in showcase)
- [x] Implement WebP, JPG, and PNG image decoders
- [ ] Implement 2D animations (i.e. easein, easeout, etc.)
- [ ] Wide Gamut Support for image decoding (png and some formats specify color space) and swapchain images i.e. P3, Adobe SRGB (see: https://developer.android.com/training/wide-color-gamut, https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_swapchain_colorspace.html, https://en.wikipedia.org/wiki/DCI-P3, https://docs.google.com/document/d/17C7UAaLSX2hHOq-hYENeJ1HwMhPCL-e0pb9Pn8rXUok/edit) Terms: Gamut: color range supported by device from a color space, Color space: range of values
Widgets & Engine
- [x] Implement Box widget
- [x] Implement Button widget
- [x] Implement Grid widget
- [x] Implement Padding widget
- [x] Implement Stack widget
- [x] Implement text widget
- [x] Implement Flex widget
- [x] Implement image widget
- [x] Integrate and evaluate 2d animations in widgets
- [x] Drag and drop (see: https://github.com/flutter/flutter/issues/30719)
- [ ] Add NetworkImageSource for Image Widget, with optional caching specified via image widget props (try_load_from_cache, cache_image)
- [x] Fix text layout
- [x] Remove use of pointers for identifying widgets
3D (Optional. low priority)
- [ ] Implement quaternions and operations
- [x] Implement 3d render pipeline
- [ ] Implement bloom post-processing (based on unreal engine's) https://www.youtube.com/watch?v=ml-5OGZC7vE
- [ ] Implement blur post-processing https://github.com/GPUOpen-LibrariesAndSDKs/FidelityFX-SDK/blob/main/docs/samples/blur.md
- [ ] Implement PBR rendering post-processing
- [ ] Implement chromatic aberration post-processing
- [ ] Implement depth of field post-processing https://github.com/GPUOpen-LibrariesAndSDKs/FidelityFX-SDK/blob/main/docs/samples/depth-of-field.md
- [ ] Implement shadow mapping
- [ ] Implement particle effects
- [ ] Implement bokeh effect
- [ ] Implement global illumination
Plugins
- [ ] Implement an async streaming http client using CuRL as backend
- [ ] Implement async file io streaming (with io_uring as backend on linux if supported otherwise c-posix api, and ioring on windows)
- [ ] Implement window controller API and explore solutions to allow creating and attaching widgets to multi-window supported platforms
- [ ] Implement clipboard plugin that can copy and paste multimedia content
- [x] Implement vulkan font loader plugin
Infrastructure
- [x] Implement CI for checking for build errors
- [x] Implement basic unit tests where reasonable
- [ ] Consider implementing regression tests once the code becomes more complex and more churn is performed in the system
Abstract
- [ ] Survey Flutter, React Native, SwiftUI, Web, Chromium, UE5, and Unity's features, strengths, and areas of weaknesses we can work on or improve
Statistics
- [x] Memory Usage and widget
- [x] CPU utilization API and widget
- [x] GPU utilization
- [ ] API and task tracing
- [x] Add Vulkan Command Query Pool