Coder Social home page Coder Social logo

ashura's People

Contributors

jnyfah avatar lamarrr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

jnyfah linecode

ashura's Issues

Re-implement text shadow

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Text Pixelation & Atlas Memory Usage on Zoom

Describe the bug
Rendered Text is pixelated on zoom or when it is larger than it's rasterized size.
We also presently render the glyphs twice, one for the regular glyph with alpha channels, and another with static strokes, this has the disadvantage that the stroke widths are static and the new stroke atlas is allocated separately.

Expected behavior
Not be pixelated and use less memory

Proposal
Switch to SDF text rendering

Tasks

2D

Widgets & Engine

  • Implement Box widget
  • Implement Button widget
  • Implement Grid widget
  • Implement Padding widget
  • Implement Stack widget
  • Implement text widget
  • Implement Flex widget
  • Implement image widget
  • Integrate and evaluate 2d animations in widgets
  • Drag and drop (see: flutter/flutter#30719)
  • Add NetworkImageSource for Image Widget, with optional caching specified via image widget props (try_load_from_cache, cache_image)
  • Fix text layout
  • Remove use of pointers for identifying widgets

3D (Optional. low priority)

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
  • Implement vulkan font loader plugin

Infrastructure

  • Implement CI for checking for build errors
  • 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

  • Memory Usage and widget
  • CPU utilization API and widget
  • GPU utilization
  • API and task tracing
  • Add Vulkan Command Query Pool

Custom UI Graphics Pipelines

Implement Drag and Drop API

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Use sampler2DArray for font textures

presently, rendering large text is very inefficient even with command culling, we should batch text rendering and pack all font atlases into a single sampler2DArray. this will enable us to render all the text in the scene with a single draw command or with instanced rendering and vertex attributes if necessary.
once the new render graph is implemented, this should be trivial to implement

Fix CI Build Error

The CI build seems to be broken as it is failing to find the Freetype package's libraries.
I don't know why and a quick search reveals nothing

Use Resizable-Bar for Vertex Buffers, Staging Buffers (if needed) and Textures

Presently we are not even specifying if the memory resides on the host or the device, we need to check for resizable bar support and then use resizable bar if it is supported, otherwise fall back to using device buffers.

VecBuffer, for example, isn't specifying if to use device or host memory, vertex buffers can be mmap-d.
Textures' staging buffers should also use resizable bar where possible.
we might need a separate function that isn't find_suitable_memory_type().

See: https://gpuopen.com/learn/using-d3d12-heap-type-gpu-upload/?utm_source=twitter&utm_medium=social&utm_campaign=gpuuploadheaps

Add widget 3d transforms with nesting?

Things to think about

  • Mouse interaction
  • Z indexes in vertex3d
  • Nesting and relative positioning to maintain transforms
  • Transformation of pointer to widget space using quads?
  • How well will this work in a 3d context?
  • Widget::draw should probably be relative to the widget's position by default???
  • We'll need clip transforms, Canvas 2d to 3d transform??

Implement Render/Compute Task Graph

We need to be able to dynamically create, use, and disable render targets and render passes.

Our sample use cases are:

  • Bloom Render Pass
  • Gaussian Blur Render Pass (Mip Blitting + Compute stages)
  • Acrylic Glass Effect Render Pass
  • Offscreen Rendering for Text Rendering Effects
  • Post-Processing
  • reflection probes

The render graph should be able to efficiently take care of:

  • Pass description (arguments, resource types, bindings)
  • Resource management and lifetimes
  • Resource updates, state & usage tracking, and data flow
  • Barrier and Synchronization
  • Pass Lifecycle management

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.