LVG (Grafik Vektor Lion)
LVG adalah penggantian flash player ringan. Ide Dasar: Kami memiliki beberapa aset dalam paket dan stipts yang membuatnya. Ini dirancang untuk menggunakan runtime yang sangat kecil (sekitar 200kb tanpa codec video) untuk pemain dan berjalan di Android, iOS, Web, dan banyak lagi.
Saat ini menggunakan skrip C untuk memuat dan membuat aset. Mengapa C Script? Karena C Compiler kecil, dan runtime yang ditulis dalam C, jadi tidak ada bahasa lain yang diperlukan dan skrip dapat dikompilasi ke ruang simpan. Alasan lain adalah kompatibilitas: LVG hanya mengekspos API kecil dan OpenGL, dengan laaguages skrip lainnya yang harus kita lakukan dari awal, termasuk GUI. Tetapi ada sejumlah besar kode C yang sudah ditulis. Biasanya penulis lebih suka C ++, tetapi ada juga beberapa alasan untuk menggunakan C murni untuk seluruh proyek:
- Kami tidak perlu memasukkan libstdc ++ untuk objek bersama Android, yang menghemat beberapa ruang .apk (objek bersama Libs juga biasanya diduplikasi untuk setiap arsitek yang didukung di .apk).
- Ini mengurangi ukuran kode WASM yang dikompilasi Emscripten (sudah relatif berat).
- Build C ++ asli juga membutuhkan perhatian untuk kode kecil. Sangat mungkin untuk menulis kode kecil dengan C ++, tetapi kami membutuhkan sesuatu seperti minicrt untuk setiap platform/kompiler. Lihat kode Farbrauch misalnya atau yang serupa.
- Kode C ++ menghasilkan lebih banyak file .map yang membuat analisis file profil/peta sedikit lebih rumit. Proyek-proyek seperti Chromium juga menggunakan alat analisis objek (seperti dump-static-initializers.py), ada juga lebih sedikit noise dengan alat tersebut.
- Kode dapat diangkut ke OS's spesifik dengan lebih mudah.
Aset berikut ini didukung:
- Gambar vektor svg (dimuat menggunakan nanosvg)
- Gambar raster (dimuat menggunakan stb_image.h)
- File MP3 (dimuat menggunakan MINIMP3)
- File Flash SWF (dapat berisi vektor, raster, video, dan audio). Semua codec video SWF (H263, VP6, FlashSV, FlashSV2, H264) berharga tambahan ~ 600kb.
- Skrip menggunakan TCC atau PICOC
Render dapat dilakukan dengan menggunakan backend berikut:
- Nvidia Path Rendering
- Nanovg
Status saat ini
Pekerjaan:
- SVG, gambar, sumber daya MP3 dengan skrip TCC.
- SWF: Bentuk, Gambar, Video, Audio (MP3, ADPCM, PCM), Dukungan Aksi Terbatas 2 Dukungan, Dukungan Bentuk Morf Terbatas.
Tidak berfungsi:
- SWF: Lapisan klip
- SWF: Menafsirkan Skrip Tindakan 3
- SWF: Filter Bitmap
- SWF: Akses Jaringan
Demo
Demo SVG Dasar (gambar dapat diklik):

Demo Nanovg tidak tertutup dalam LVG:

Demo Nuklear GUI:

Flash SWF Demo:

Bangunan
Untuk saat ini Windows Executables hanya dibangun di host Linux menggunakan Mingw. Untuk Windows dan Linux menginstal semua dependensi build dengan perintah berikut:
apt-get install -qq -y git cmake meson yasm libglfw3-dev libsdl2-dev libavcodec-dev mingw-w64 wget
Untuk minuman macOS harus diinstal:
brew install meson upx glfw sdl2 ffmpeg tcc
LVG menggunakan meson sebagai sistem build. Bangunan aktual dengan perintah berikut di Direktori Proyek:
mkdir build
cd build
meson ..
ninja
Mengkonfigurasi
LVG dapat dikonfigurasi untuk menggunakan backend yang berbeda untuk platform, audio dan video. Anda dapat melihat konfigurasi saat ini dengan mengeksekusi mesonconf (atau konfigurasi meson untuk versi meson yang lebih baru) di Direktori Build:
meson configure
...
Project options:
Option Description Current Value Possible Values
------ ----------- ------------- ---------------
AUDIO_SDL AUDIO_SDL true [True, False]
ENABLE_AUDIO ENABLE_AUDIO true [True, False]
ENABLE_SCRIPT ENABLE_SCRIPT true [True, False]
ENABLE_VIDEO ENABLE_VIDEO true [True, False]
PLATFORM_GLFW PLATFORM_GLFW true [True, False]
PLATFORM_SDL PLATFORM_SDL false [True, False]
RENDER_NANOVG RENDER_NANOVG true [True, False]
RENDER_NVPR RENDER_NVPR true [True, False]
SCRIPT_TCC SCRIPT_TCC true [True, False]
VIDEO_FFMPEG VIDEO_FFMPEG true [True, False]
...
Anda dapat mengubah konfigurasi menggunakan perintah meson. Contoh:
mesonconf -DENABLE_SCRIPT=False
Masa depan
- Gunakan lanuages skrip lainnya seperti Luajit, Jerryscript, Mujs, Mu, Avian, Impalajit, Mochascript dan AngelScript.
- Mempercepat skrip aksi dengan jit seperti sljit.
- Dukungan Shaders dan 3D.
- Bentuk Paralel Image Decoding dan Gunakan Kompresi File dengan Dukungan Decoding Paralel (seperti PBZIP2).
- Lebih banyak audio video codec mendukung.
Interpolasi bingkai SWF untuk mendapatkan lebih banyak FP daripada yang dikodekan dalam file. [Selesai]- Lebih baik dari format penyimpanan SWF menggunakan kompresi seperti draco berdasarkan ANS.
Perpustakaan Grafik yang Menarik
- https://github.com/01org/fastuidraw
- https://skia.org/
- https://github.com/blend2d/blend2d/
- https://github.com/memononen/nanovg
- https://github.com/mokafolio/tarp
- https://github.com/jpbruyere/vkvg
- https://github.com/jdryg/vg-renderer
- https://github.com/nical/lyon
- https://cairographics.org/
- http://www.antigrain.com/
- http://scripts.sil.org/cms/scripts/page.php?site_id=projects&item_id=graphite_home
- https://sourceForge.net/projects/shivavg/
- https://github.com/micahpearlman/monkvg
- https://github.com/khronosgroup/openvg-registry
Proyek Terkait Flash
- https://github.com/lightspark/lightspark
- https://github.com/mozilla/shumway
- https://github.com/ruffle-rs/ruffle
- https://www.gnu.org/software/gnash/
- https://swfdec.freedesktop.org/wiki/
- https://github.com/marmalade/gameswf
- http://tulrich.com/geekstuff/gameswf.html
- http://www.swftools.org/
- http://www.libming.org/
- http://www.swift-tools.net/flash/
- https://github.com/crossbridge-community/crossbridge
- SWF V19 Referensi https://wwwimages2.adobe.com/content/dam/acom/en/devnet/pdf/swf-file-format-spec.pdf
- AMF V0 REFEREMCE https://wwwimages2.adobe.com/content/dam/acom/en/devnet/pdf/amf0-file-format-specification.pdf
- AMF V3 Referensi https://wwwimages2.adobe.com/content/dam/acom/en/devnet/pdf/amf-file-format-spec.pdf
- AS2 Referensi http://homepage.divms.uiowa.edu/~slonnegr/flash/actionscript2reference.pdf
LVG dikembangkan dan dikelola oleh https://github.com/lieff