All Projects → jdryg → Vg Renderer

jdryg / Vg Renderer

Licence: bsd-2-clause
A vector graphics renderer for bgfx, based on ideas from NanoVG and ImDrawList (Dear ImGUI)

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Vg Renderer

Cairo
Swift library for Cairo
Stars: ✭ 33 (-90.24%)
Mutual labels:  vector-graphics
Clarity
Customizable Monoshape Vector Icon Theme for GTK+
Stars: ✭ 37 (-89.05%)
Mutual labels:  vector-graphics
niji
Generic 2D graphics library for C++14
Stars: ✭ 26 (-92.31%)
Mutual labels:  vector-graphics
qt5-vector-graphic-shaders
A Qt5 application to experiment vector graphic shaders
Stars: ✭ 37 (-89.05%)
Mutual labels:  vector-graphics
cloud gen
Procedural Generation of Clouds with Vector Graphics
Stars: ✭ 46 (-86.39%)
Mutual labels:  vector-graphics
PrettyNSharp
Create beautiful and graphically scalable UI controls for your C#/WPF apps.
Stars: ✭ 43 (-87.28%)
Mutual labels:  vector-graphics
BezierKit
Bezier curves and paths in Swift for building vector applications
Stars: ✭ 190 (-43.79%)
Mutual labels:  vector-graphics
Vpype
The Swiss-Army-knife command-line tool for plotter vector graphics.
Stars: ✭ 292 (-13.61%)
Mutual labels:  vector-graphics
ommpfritt
semantic, procedural, non-destructive vector modelling
Stars: ✭ 37 (-89.05%)
Mutual labels:  vector-graphics
AsyPad
A simple drawing tool that can convert diagrams into Asymptote code.
Stars: ✭ 18 (-94.67%)
Mutual labels:  vector-graphics
vpype-pixelart
Pixel art plotting in vpype
Stars: ✭ 40 (-88.17%)
Mutual labels:  vector-graphics
animatePaper.js
An animation library for paper.js.
Stars: ✭ 33 (-90.24%)
Mutual labels:  vector-graphics
tfont
tfont is a font library that writes to JSON.
Stars: ✭ 21 (-93.79%)
Mutual labels:  vector-graphics
rouziclib
This is my personal library of code that is common to my different projects (Photosounder, SplineEQ, Spiral and others)
Stars: ✭ 38 (-88.76%)
Mutual labels:  vector-graphics
ttgo-hershey-fonts
MicroPython Hershey font demo for the TTGO-LCD board
Stars: ✭ 22 (-93.49%)
Mutual labels:  vector-graphics
AnimatedVectorDrawableCompat-play-to-reset-button
An Android app using the AnimatedVectorDrawable support library
Stars: ✭ 56 (-83.43%)
Mutual labels:  vector-graphics
occult
vpype plug-in to remove occulted lines in SVG files
Stars: ✭ 32 (-90.53%)
Mutual labels:  vector-graphics
Luxor.jl
Simple drawings using vector graphics; Cairo "for tourists!"
Stars: ✭ 293 (-13.31%)
Mutual labels:  vector-graphics
Php Svg
Vector graphics (SVG) library for PHP
Stars: ✭ 256 (-24.26%)
Mutual labels:  vector-graphics
cidrawing
A vector graphics library for Android
Stars: ✭ 35 (-89.64%)
Mutual labels:  vector-graphics

vg-renderer

A vector graphics renderer for bgfx, based on ideas from NanoVG and ImDrawList (Dear ImGUI)

Includes some small changes to FontStash. Optionally uses libtess2 for concave polygon decomposition.

Path and Stroker classes

Paths are tesselated using the Path struct (src/vg/path.cpp, .h). You can use vg::pathXXX() functions to convert your SVG commands to a polyline for uses outside this renderer.

Strokes and fills are generated using the Stroker struct (src/vg/stroker.cpp, .h). You can use vg::strokerXXX() functions to generate strokes and fills for your polylines for uses outside this renderer.

Compared to NanoVG/FontStash

  1. Generates fewer draw calls by batching multiple paths together (if they share the same state)
  2. Separate shader programs for gradients and image patterns to reduce uniform usage (NanoVG's bgfx backend uses a single program for all cases)
  3. Concave polygons are decomposed on the CPU.
  4. Command lists with support for tesselation caching.
  5. Clip in/out with the stencil buffer
  6. User-specified indexed triangle list rendering (i.e. for complex gradients and sprite atlases).
  7. Fills with image patterns can be colored.
  8. FontStash: glyph hashing uses BKDR (seems to give better distribution of glyphs in the LUT; fewer collisions when searching for cached glyphs)
  9. FontStash: optional (compile-time flag) caching of glyph indices and kerning info for ASCII chars in order to avoid repeated calls to stbtt functions.

What's not supported compared to NanoVG

  1. Miter limit (i.e miter joins never convert to bevel joins)
  2. Polygon holes (they can be emulated using clip in/out regions)
  3. Variable text line height
  4. Skew transformation matrix

Images

DLS

DLS

SVG (using simple-svg)

Tiger

Demo

Demo

Custom gradients (indexed triangle lists w/ per-vertex colors)

Gradients

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].