From f5648e0f94e1bde14e3a21e786c03220a603eb2b Mon Sep 17 00:00:00 2001 From: grovesNL Date: Mon, 9 May 2022 10:19:10 -0230 Subject: [PATCH] Initial commit --- .gitignore | 12 +- Cargo.lock | 1455 +++++++++++++++++++++++++++++++++++++++ Cargo.toml | 17 + LICENSE-APACHE | 201 ++++++ LICENSE-MIT | 23 + LICENSE-ZLIB | 15 + README.md | 34 +- examples/Inter-Bold.ttf | Bin 0 -> 316100 bytes examples/hello-world.rs | 140 ++++ src/lib.rs | 566 +++++++++++++++ src/shader.wgsl | 71 ++ 11 files changed, 2522 insertions(+), 12 deletions(-) create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 LICENSE-APACHE create mode 100644 LICENSE-MIT create mode 100644 LICENSE-ZLIB create mode 100644 examples/Inter-Bold.ttf create mode 100644 examples/hello-world.rs create mode 100644 src/lib.rs create mode 100644 src/shader.wgsl diff --git a/.gitignore b/.gitignore index 088ba6b..9026c77 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,2 @@ -# Generated by Cargo -# will have compiled files and executables -/target/ - -# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries -# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html -Cargo.lock - -# These are backup files generated by rustfmt -**/*.rs.bk +/target +.vscode diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..21656d9 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,1455 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "ahash" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +dependencies = [ + "getrandom", + "once_cell", + "version_check", +] + +[[package]] +name = "arrayvec" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" + +[[package]] +name = "ash" +version = "0.37.0+1.3.209" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "006ca68e0f2b03f22d6fa9f2860f85aed430d257fec20f8879b2145e7c7ae1a6" +dependencies = [ + "libloading", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "bit-set" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e11e16035ea35e4e5997b393eacbf6f63983188f7a2ad25bfb13465f5ad59de" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] +name = "bumpalo" +version = "3.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899" + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "calloop" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf2eec61efe56aa1e813f5126959296933cf0700030e4314786c48779a66ab82" +dependencies = [ + "log", + "nix", +] + +[[package]] +name = "cc" +version = "1.0.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cfg_aliases" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" + +[[package]] +name = "cocoa" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f63902e9223530efb4e26ccd0cf55ec30d592d3b42e21a28defc42a9586e832" +dependencies = [ + "bitflags", + "block", + "cocoa-foundation", + "core-foundation 0.9.3", + "core-graphics 0.22.3", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "cocoa-foundation" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ade49b65d560ca58c403a479bb396592b155c0185eada742ee323d1d68d6318" +dependencies = [ + "bitflags", + "block", + "core-foundation 0.9.3", + "core-graphics-types", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "codespan-reporting" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +dependencies = [ + "termcolor", + "unicode-width", +] + +[[package]] +name = "copyless" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2df960f5d869b2dd8532793fde43eb5427cceb126c929747a26823ab0eeb536" + +[[package]] +name = "core-foundation" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57d24c7a13c43e870e37c1556b74555437870a04514f7685f5b354e090567171" +dependencies = [ + "core-foundation-sys 0.7.0", + "libc", +] + +[[package]] +name = "core-foundation" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +dependencies = [ + "core-foundation-sys 0.8.3", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac" + +[[package]] +name = "core-foundation-sys" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" + +[[package]] +name = "core-graphics" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3889374e6ea6ab25dba90bb5d96202f61108058361f6dc72e8b03e6f8bbe923" +dependencies = [ + "bitflags", + "core-foundation 0.7.0", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" +dependencies = [ + "bitflags", + "core-foundation 0.9.3", + "core-graphics-types", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b" +dependencies = [ + "bitflags", + "core-foundation 0.9.3", + "foreign-types", + "libc", +] + +[[package]] +name = "core-video-sys" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34ecad23610ad9757664d644e369246edde1803fcb43ed72876565098a5d3828" +dependencies = [ + "cfg-if 0.1.10", + "core-foundation-sys 0.7.0", + "core-graphics 0.19.2", + "libc", + "objc", +] + +[[package]] +name = "cty" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" + +[[package]] +name = "d3d12" +version = "0.4.1" +source = "git+https://github.com/gfx-rs/d3d12-rs.git?rev=ffe5e261da0a6cb85332b82ab310abd2a7e849f6#ffe5e261da0a6cb85332b82ab310abd2a7e849f6" +dependencies = [ + "bitflags", + "libloading", + "winapi", +] + +[[package]] +name = "darling" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" +dependencies = [ + "darling_core", + "quote", + "syn", +] + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "dlib" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac1b7517328c04c2aa68422fc60a41b92208182142ed04a25879c26c8f878794" +dependencies = [ + "libloading", +] + +[[package]] +name = "downcast-rs" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" + +[[package]] +name = "etagere" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eb66dc3d6bb6b2ab4a12454db6988079311d6443e627bc7e6065f907f556272" +dependencies = [ + "euclid", + "svg_fmt", +] + +[[package]] +name = "euclid" +version = "0.22.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b52c2ef4a78da0ba68fbe1fd920627411096d2ac478f7f4c9f3a54ba6705bade" +dependencies = [ + "num-traits", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "fontdue" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a62391ecb864cf12ed06b2af4eda2e609b97657950d6a8f06841b17726ab253" +dependencies = [ + "hashbrown", + "ttf-parser", +] + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "getrandom" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "wasi 0.10.2+wasi-snapshot-preview1", +] + +[[package]] +name = "glow" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8bd5877156a19b8ac83a29b2306fe20537429d318f3ff0a1a2119f8d9c61919" +dependencies = [ + "js-sys", + "slotmap", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "glyphon" +version = "0.1.0" +dependencies = [ + "etagere", + "fontdue", + "pollster", + "wgpu", + "winit", +] + +[[package]] +name = "gpu-alloc" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fc59e5f710e310e76e6707f86c561dd646f69a8876da9131703b2f717de818d" +dependencies = [ + "bitflags", + "gpu-alloc-types", +] + +[[package]] +name = "gpu-alloc-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54804d0d6bc9d7f26db4eaec1ad10def69b599315f487d32c334a80d1efe67a5" +dependencies = [ + "bitflags", +] + +[[package]] +name = "gpu-descriptor" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a538f217be4d405ff4719a283ca68323cc2384003eca5baaa87501e821c81dda" +dependencies = [ + "bitflags", + "gpu-descriptor-types", + "hashbrown", +] + +[[package]] +name = "gpu-descriptor-types" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "363e3677e55ad168fef68cf9de3a4a310b53124c5e784c53a1d70e92d23f2126" +dependencies = [ + "bitflags", +] + +[[package]] +name = "hashbrown" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" +dependencies = [ + "ahash", +] + +[[package]] +name = "hexf-parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "indexmap" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f647032dfaa1f8b6dc29bd3edb7bbef4861b8b8007ebb118d6db284fd59f6ee" +dependencies = [ + "autocfg", + "hashbrown", +] + +[[package]] +name = "inplace_it" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90953f308a79fe6d62a4643e51f848fbfddcd05975a38e69fdf4ab86a7baf7ca" + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "js-sys" +version = "0.3.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "671a26f820db17c2a2750743f1dd03bafd15b98c9f30c7c2628c024c05d73397" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "khronos-egl" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c2352bd1d0bceb871cb9d40f24360c8133c11d7486b68b5381c1dd1a32015e3" +dependencies = [ + "libc", + "libloading", + "pkg-config", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.124" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21a41fed9d98f27ab1c6d161da622a4fa35e8a54a8adc24bbf3ddd0ef70b0e50" + +[[package]] +name = "libloading" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efbc0f03f9a775e9f6aed295c6a1ba2253c5757a9e03d55c6caa46a681abcddd" +dependencies = [ + "cfg-if 1.0.0", + "winapi", +] + +[[package]] +name = "lock_api" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6389c490849ff5bc16be905ae24bc913a9c8892e19b2341dbc175e14c341c2b8" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "memmap2" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b6c2ebff6180198788f5db08d7ce3bc1d0b617176678831a7510825973e357" +dependencies = [ + "libc", +] + +[[package]] +name = "memoffset" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +dependencies = [ + "autocfg", +] + +[[package]] +name = "metal" +version = "0.23.1" +source = "git+https://github.com/gfx-rs/metal-rs?rev=1aaa903#1aaa9033a22b2af7ff8cae2ed412a4733799c3d3" +dependencies = [ + "bitflags", + "block", + "core-graphics-types", + "foreign-types", + "log", + "objc", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "mio" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52da4364ffb0e4fe33a9841a98a3f3014fb964045ce4f7a45a398243c8d6b0c9" +dependencies = [ + "libc", + "log", + "miow", + "ntapi", + "wasi 0.11.0+wasi-snapshot-preview1", + "winapi", +] + +[[package]] +name = "miow" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" +dependencies = [ + "winapi", +] + +[[package]] +name = "naga" +version = "0.8.0" +source = "git+https://github.com/gfx-rs/naga?rev=1aa91549#1aa9154964238af8c692cf521ff90e1f2395e147" +dependencies = [ + "bit-set", + "bitflags", + "codespan-reporting", + "hexf-parse", + "indexmap", + "log", + "num-traits", + "rustc-hash", + "spirv", + "termcolor", + "thiserror", + "unicode-xid", +] + +[[package]] +name = "ndk" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d868f654c72e75f8687572699cdabe755f03effbb62542768e995d5b8d699d" +dependencies = [ + "bitflags", + "jni-sys", + "ndk-sys", + "num_enum", + "thiserror", +] + +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + +[[package]] +name = "ndk-glue" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71bee8ea72d685477e28bd004cfe1bf99c754d688cd78cad139eae4089484d4" +dependencies = [ + "lazy_static", + "libc", + "log", + "ndk", + "ndk-context", + "ndk-macro", + "ndk-sys", +] + +[[package]] +name = "ndk-macro" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0df7ac00c4672f9d5aece54ee3347520b7e20f158656c7db2e6de01902eb7a6c" +dependencies = [ + "darling", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "ndk-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1bcdd74c20ad5d95aacd60ef9ba40fdf77f767051040541df557b7a9b2a2121" + +[[package]] +name = "nix" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4916f159ed8e5de0082076562152a76b7a1f64a01fd9d1e0fea002c37624faf" +dependencies = [ + "bitflags", + "cc", + "cfg-if 1.0.0", + "libc", + "memoffset", +] + +[[package]] +name = "nom" +version = "7.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "ntapi" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f" +dependencies = [ + "winapi", +] + +[[package]] +name = "num-traits" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_enum" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf5395665662ef45796a4ff5486c5d41d29e0c09640af4c5f17fd94ee2c119c9" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", + "objc_exception", +] + +[[package]] +name = "objc_exception" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" +dependencies = [ + "cc", +] + +[[package]] +name = "once_cell" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9" + +[[package]] +name = "parking_lot" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core 0.8.5", +] + +[[package]] +name = "parking_lot" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f5ec2493a61ac0506c0f4199f99070cbe83857b0337006a30f3e6719b8ef58" +dependencies = [ + "lock_api", + "parking_lot_core 0.9.3", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" +dependencies = [ + "cfg-if 1.0.0", + "instant", + "libc", + "redox_syscall", + "smallvec", + "winapi", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall", + "smallvec", + "windows-sys", +] + +[[package]] +name = "percent-encoding" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" + +[[package]] +name = "pkg-config" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" + +[[package]] +name = "pollster" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5da3b0203fd7ee5720aa0b5e790b591aa5d3f41c3ed2c34a3a393382198af2f7" + +[[package]] +name = "proc-macro-crate" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a" +dependencies = [ + "thiserror", + "toml", +] + +[[package]] +name = "proc-macro2" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec757218438d5fda206afc041538b2f6d889286160d649a86a24d37e1235afd1" +dependencies = [ + "unicode-xid", +] + +[[package]] +name = "profiling" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9145ac0af1d93c638c98c40cf7d25665f427b2a44ad0a99b1dccf3e2f25bb987" + +[[package]] +name = "quote" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "range-alloc" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e935c45e09cc6dcf00d2f0b2d630a58f4095320223d47fc68918722f0538b6" + +[[package]] +name = "raw-window-handle" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b800beb9b6e7d2df1fe337c9e3d04e3af22a124460fb4c30fcc22c9117cefb41" +dependencies = [ + "cty", +] + +[[package]] +name = "redox_syscall" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42" +dependencies = [ + "bitflags", +] + +[[package]] +name = "renderdoc-sys" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1382d1f0a252c4bf97dc20d979a2fdd05b024acd7c2ed0f7595d7817666a157" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "scoped-tls" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2" + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "serde" +version = "1.0.137" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61ea8d54c77f8315140a05f4c7237403bf38b72704d031543aa1d16abbf517d1" + +[[package]] +name = "slotmap" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1e08e261d0e8f5c43123b7adf3e4ca1690d655377ac93a03b2c9d3e98de1342" +dependencies = [ + "version_check", +] + +[[package]] +name = "smallvec" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83" + +[[package]] +name = "smithay-client-toolkit" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a28f16a97fa0e8ce563b2774d1e732dd5d4025d2772c5dba0a41a0f90a29da3" +dependencies = [ + "bitflags", + "calloop", + "dlib", + "lazy_static", + "log", + "memmap2", + "nix", + "pkg-config", + "wayland-client", + "wayland-cursor", + "wayland-protocols", +] + +[[package]] +name = "spirv" +version = "0.2.0+1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "246bfa38fe3db3f1dfc8ca5a2cdeb7348c78be2112740cc0ec8ef18b6d94f830" +dependencies = [ + "bitflags", + "num-traits", +] + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "svg_fmt" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fb1df15f412ee2e9dfc1c504260fa695c1c3f10fe9f4a6ee2d2184d7d6450e2" + +[[package]] +name = "syn" +version = "1.0.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b683b2b825c8eef438b77c36a06dc262294da3d5a5813fac20da149241dcd44d" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "termcolor" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "thiserror" +version = "1.0.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "toml" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" +dependencies = [ + "serde", +] + +[[package]] +name = "ttf-parser" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c74c96594835e10fa545e2a51e8709f30b173a092bfd6036ef2cec53376244f3" + +[[package]] +name = "unicode-width" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" + +[[package]] +name = "unicode-xid" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "wasi" +version = "0.10.2+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27370197c907c55e3f1a9fbe26f44e937fe6451368324e009cba39e139dc08ad" +dependencies = [ + "cfg-if 1.0.0", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53e04185bfa3a779273da532f5025e33398409573f348985af9a1cbf3774d3f4" +dependencies = [ + "bumpalo", + "lazy_static", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f741de44b75e14c35df886aff5f1eb73aa114fa5d4d00dcd37b5e01259bf3b2" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17cae7ff784d7e83a2fe7611cfe766ecf034111b49deb850a3dc7699c08251f5" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99ec0dc7a4756fffc231aab1b9f2f578d23cd391390ab27f952ae0c9b3ece20b" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d554b7f530dee5964d9a9468d95c1f8b8acae4f282807e7d27d4b03099a46744" + +[[package]] +name = "wayland-client" +version = "0.29.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91223460e73257f697d9e23d401279123d36039a3f7a449e983f123292d4458f" +dependencies = [ + "bitflags", + "downcast-rs", + "libc", + "nix", + "scoped-tls", + "wayland-commons", + "wayland-scanner", + "wayland-sys", +] + +[[package]] +name = "wayland-commons" +version = "0.29.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94f6e5e340d7c13490eca867898c4cec5af56c27a5ffe5c80c6fc4708e22d33e" +dependencies = [ + "nix", + "once_cell", + "smallvec", + "wayland-sys", +] + +[[package]] +name = "wayland-cursor" +version = "0.29.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c52758f13d5e7861fc83d942d3d99bf270c83269575e52ac29e5b73cb956a6bd" +dependencies = [ + "nix", + "wayland-client", + "xcursor", +] + +[[package]] +name = "wayland-protocols" +version = "0.29.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60147ae23303402e41fe034f74fb2c35ad0780ee88a1c40ac09a3be1e7465741" +dependencies = [ + "bitflags", + "wayland-client", + "wayland-commons", + "wayland-scanner", +] + +[[package]] +name = "wayland-scanner" +version = "0.29.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39a1ed3143f7a143187156a2ab52742e89dac33245ba505c17224df48939f9e0" +dependencies = [ + "proc-macro2", + "quote", + "xml-rs", +] + +[[package]] +name = "wayland-sys" +version = "0.29.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9341df79a8975679188e37dab3889bfa57c44ac2cb6da166f519a81cbe452d4" +dependencies = [ + "dlib", + "lazy_static", + "pkg-config", +] + +[[package]] +name = "web-sys" +version = "0.3.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b17e741662c70c8bd24ac5c5b18de314a2c26c32bf8346ee1e6f53de919c283" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "wgpu" +version = "0.12.0" +source = "git+https://github.com/gfx-rs/wgpu/#ee3d23d5467898d276b73491ac077e5241589b75" +dependencies = [ + "arrayvec", + "js-sys", + "log", + "naga", + "parking_lot 0.12.0", + "raw-window-handle", + "smallvec", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "wgpu-core", + "wgpu-hal", + "wgpu-types", +] + +[[package]] +name = "wgpu-core" +version = "0.12.0" +source = "git+https://github.com/gfx-rs/wgpu/#ee3d23d5467898d276b73491ac077e5241589b75" +dependencies = [ + "arrayvec", + "bitflags", + "cfg_aliases", + "codespan-reporting", + "copyless", + "fxhash", + "log", + "naga", + "parking_lot 0.12.0", + "profiling", + "raw-window-handle", + "smallvec", + "thiserror", + "wgpu-hal", + "wgpu-types", +] + +[[package]] +name = "wgpu-hal" +version = "0.12.0" +source = "git+https://github.com/gfx-rs/wgpu/#ee3d23d5467898d276b73491ac077e5241589b75" +dependencies = [ + "arrayvec", + "ash", + "bit-set", + "bitflags", + "block", + "core-graphics-types", + "d3d12", + "foreign-types", + "fxhash", + "glow", + "gpu-alloc", + "gpu-descriptor", + "inplace_it", + "js-sys", + "khronos-egl", + "libloading", + "log", + "metal", + "naga", + "objc", + "parking_lot 0.12.0", + "profiling", + "range-alloc", + "raw-window-handle", + "renderdoc-sys", + "thiserror", + "wasm-bindgen", + "web-sys", + "wgpu-types", + "winapi", +] + +[[package]] +name = "wgpu-types" +version = "0.12.0" +source = "git+https://github.com/gfx-rs/wgpu/#ee3d23d5467898d276b73491ac077e5241589b75" +dependencies = [ + "bitflags", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-sys" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" +dependencies = [ + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" + +[[package]] +name = "windows_i686_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" + +[[package]] +name = "windows_i686_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" + +[[package]] +name = "winit" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b43cc931d58b99461188607efd7acb2a093e65fc621f54cad78517a6063e73a" +dependencies = [ + "bitflags", + "cocoa", + "core-foundation 0.9.3", + "core-graphics 0.22.3", + "core-video-sys", + "dispatch", + "instant", + "lazy_static", + "libc", + "log", + "mio", + "ndk", + "ndk-glue", + "ndk-sys", + "objc", + "parking_lot 0.11.2", + "percent-encoding", + "raw-window-handle", + "smithay-client-toolkit", + "wasm-bindgen", + "wayland-client", + "wayland-protocols", + "web-sys", + "winapi", + "x11-dl", +] + +[[package]] +name = "x11-dl" +version = "2.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea26926b4ce81a6f5d9d0f3a0bc401e5a37c6ae14a1bfaa8ff6099ca80038c59" +dependencies = [ + "lazy_static", + "libc", + "pkg-config", +] + +[[package]] +name = "xcursor" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "463705a63313cd4301184381c5e8042f0a7e9b4bb63653f216311d4ae74690b7" +dependencies = [ + "nom", +] + +[[package]] +name = "xml-rs" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2d7d3948613f75c98fd9328cfdcc45acc4d360655289d0a7d4ec931392200a3" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..e8c0e78 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "glyphon" +description = "Fast, simple 2D text rendering for wgpu" +version = "0.1.0" +edition = "2021" +homepage = "https://github.com/grovesNL/glyphon.git" +repository = "https://github.com/grovesNL/glyphon" +license = "MIT OR Apache-2.0 OR Zlib" + +[dependencies] +wgpu = { git = "https://github.com/gfx-rs/wgpu/" } +fontdue = "0.7.2" +etagere = "0.2.6" +pollster = "0.2.5" + +[dev-dependencies] +winit = "0.26.1" diff --git a/LICENSE-APACHE b/LICENSE-APACHE new file mode 100644 index 0000000..16fe87b --- /dev/null +++ b/LICENSE-APACHE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/LICENSE-MIT b/LICENSE-MIT new file mode 100644 index 0000000..31aa793 --- /dev/null +++ b/LICENSE-MIT @@ -0,0 +1,23 @@ +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/LICENSE-ZLIB b/LICENSE-ZLIB new file mode 100644 index 0000000..480c61e --- /dev/null +++ b/LICENSE-ZLIB @@ -0,0 +1,15 @@ +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. diff --git a/README.md b/README.md index 9ec5688..3ad9827 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,32 @@ -# glyphon -🦅🦁 Fast, simple 2D text rendering for wgpu +

+ 🦅🦁 glyphon +

+
+ Fast, simple 2D text rendering for wgpu +
+
+
+ Minimum Rust Version + crates.io + docs.rs + Build Status +
+ +## What is this? + +This crate provides a simple way to render 2D text with [`wgpu`](https://github.com/gfx-rs/wgpu/) by: + +- rasterizing glyphs (with [`fontdue`](https://github.com/mooman219/fontdue/)) +- packing the glyphs into texture atlas (with [`etagere`](https://github.com/nical/etagere/)) +- calculate layout for text (with [`fontdue`](https://github.com/mooman219/fontdue/)) +- sampling from the texture atlas to render text (with [`wgpu`](https://github.com/gfx-rs/wgpu/)) + +To avoid extra render passes, rendering uses existing render passes(following the middleware pattern described in [`wgpu`'s Encapsulating Graphics Work wiki page](https://github.com/gfx-rs/wgpu/wiki/Encapsulating-Graphics-Work). + +## License + +This project is licensed under either [Apache License, Version 2.0](LICENSE-APACHE), [zlib License](LICENSE-ZLIB), or [MIT License](LICENSE-MIT), at your option. + +## Contribution + +Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the Apache 2.0 license, shall be triple licensed as above, without any additional terms or conditions. diff --git a/examples/Inter-Bold.ttf b/examples/Inter-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..76a215ccbcdb56d9dace9e673312505354488419 GIT binary patch literal 316100 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 literal 0 HcmV?d00001 diff --git a/examples/hello-world.rs b/examples/hello-world.rs new file mode 100644 index 0000000..00ca933 --- /dev/null +++ b/examples/hello-world.rs @@ -0,0 +1,140 @@ +use fontdue::{ + layout::{CoordinateSystem, Layout, LayoutSettings, TextStyle}, + Font, FontSettings, +}; +use wgpu::{ + Color, CommandEncoderDescriptor, LoadOp, Operations, RenderPassColorAttachment, + RenderPassDescriptor, TextureViewDescriptor, +}; +use glyphon::{Resolution, TextRenderer}; +use winit::{ + event::{Event, WindowEvent}, + event_loop::{ControlFlow, EventLoop}, + window::Window, +}; + +fn main() { + pollster::block_on(run()); +} + +async fn run() { + let instance = wgpu::Instance::new(wgpu::Backends::all()); + let adapter = instance + .request_adapter(&wgpu::RequestAdapterOptions::default()) + .await + .unwrap(); + let (device, queue) = adapter + .request_device( + &wgpu::DeviceDescriptor { + label: None, + features: wgpu::Features::empty(), + limits: wgpu::Limits::downlevel_defaults(), + }, + None, + ) + .await + .unwrap(); + + let event_loop = EventLoop::new(); + let window = Window::new(&event_loop).unwrap(); + let surface = unsafe { instance.create_surface(&window) }; + let size = window.inner_size(); + let swapchain_format = surface.get_preferred_format(&adapter).unwrap(); + let mut config = wgpu::SurfaceConfiguration { + usage: wgpu::TextureUsages::RENDER_ATTACHMENT, + format: swapchain_format, + width: size.width, + height: size.height, + present_mode: wgpu::PresentMode::Mailbox, + }; + surface.configure(&device, &config); + + let mut text_renderer = TextRenderer::new( + &device, + &queue, + swapchain_format, + Resolution { + width: size.width, + height: size.height, + }, + ); + + let font = include_bytes!("./Inter-Bold.ttf") as &[u8]; + let font = Font::from_bytes(font, FontSettings::default()).unwrap(); + let fonts = vec![font]; + let mut layout = Layout::new(CoordinateSystem::PositiveYDown); + + event_loop.run(move |event, _, control_flow| { + let _ = (&instance, &adapter); + + *control_flow = ControlFlow::Poll; + match event { + Event::WindowEvent { + event: WindowEvent::Resized(size), + .. + } => { + config.width = size.width; + config.height = size.height; + surface.configure(&device, &config); + window.request_redraw(); + } + Event::RedrawRequested(_) => { + layout.reset(&LayoutSettings { + x: 0.0, + y: 0.0, + ..LayoutSettings::default() + }); + + layout.append( + fonts.as_slice(), + &TextStyle::new("Hello world!\nI'm on a new line!", 50.0, 0), + ); + + text_renderer + .prepare( + &device, + &queue, + Resolution { + width: config.width, + height: config.height, + }, + &fonts, + &[&layout], + ) + .unwrap(); + + let frame = surface.get_current_texture().unwrap(); + let view = frame.texture.create_view(&TextureViewDescriptor::default()); + let mut encoder = + device.create_command_encoder(&CommandEncoderDescriptor { label: None }); + { + let mut pass = encoder.begin_render_pass(&RenderPassDescriptor { + label: None, + color_attachments: &[RenderPassColorAttachment { + view: &view, + resolve_target: None, + ops: Operations { + load: LoadOp::Clear(Color::BLACK), + store: true, + }, + }], + depth_stencil_attachment: None, + }); + + text_renderer.render(&mut pass).unwrap(); + } + + queue.submit(Some(encoder.finish())); + frame.present(); + } + Event::WindowEvent { + event: WindowEvent::CloseRequested, + .. + } => *control_flow = ControlFlow::Exit, + Event::MainEventsCleared => { + window.request_redraw(); + } + _ => {} + } + }); +} diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..ad6fce0 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,566 @@ +use std::{ + borrow::Cow, + collections::{HashMap, HashSet}, + error::Error, + fmt::{self, Display, Formatter}, + iter, mem, + num::{NonZeroU32, NonZeroU64}, + slice, +}; + +use etagere::{size2, AllocId, Allocation, BucketedAtlasAllocator}; +use fontdue::{ + layout::{GlyphRasterConfig, Layout}, + Font, +}; +use wgpu::{ + util::{BufferInitDescriptor, DeviceExt}, + BindGroup, BindGroupEntry, BindGroupLayoutEntry, BindingResource, BindingType, BlendState, + Buffer, BufferBindingType, BufferDescriptor, BufferUsages, ColorTargetState, ColorWrites, + Device, Extent3d, FilterMode, FragmentState, ImageCopyTexture, ImageDataLayout, IndexFormat, + MultisampleState, Origin3d, PipelineLayoutDescriptor, PrimitiveState, Queue, RenderPass, + RenderPipeline, RenderPipelineDescriptor, SamplerBindingType, SamplerDescriptor, + ShaderModuleDescriptor, ShaderSource, ShaderStages, Texture, TextureAspect, TextureDescriptor, + TextureDimension, TextureFormat, TextureSampleType, TextureUsages, TextureViewDescriptor, + TextureViewDimension, VertexFormat, VertexState, +}; + +#[derive(Clone, Copy, Debug, Eq, PartialEq)] +pub enum PrepareError { + AtlasFull, +} + +impl Display for PrepareError { + fn fmt(&self, f: &mut Formatter) -> fmt::Result { + write!(f, "prepare error") + } +} + +impl Error for PrepareError {} + +#[derive(Clone, Copy, Debug, Eq, PartialEq)] +pub enum RenderError {} + +impl Display for RenderError { + fn fmt(&self, f: &mut Formatter) -> fmt::Result { + write!(f, "render error") + } +} + +enum GpuCache { + InAtlas { x: u16, y: u16 }, + SkipRasterization, +} + +struct GlyphDetails { + width: u32, + height: u32, + gpu_cache: GpuCache, + atlas_id: Option, +} + +#[repr(C)] +#[derive(Clone, Copy, Debug)] +struct GlyphToRender { + x: f32, + y: f32, + width: f32, + height: f32, + atlas_x: f32, + atlas_y: f32, + color: [u8; 4], +} + +#[repr(C)] +#[derive(Clone, Copy, Debug, Eq, PartialEq)] +pub struct Resolution { + pub width: u32, + pub height: u32, +} + +#[repr(C)] +#[derive(Clone, Copy, Debug, Eq, PartialEq)] +pub struct Params { + screen_resolution: Resolution, +} + +fn try_allocate( + atlas_packer: &mut BucketedAtlasAllocator, + layout: &Layout, + glyph_cache: &mut HashMap, + width: usize, + height: usize, +) -> Option { + let size = size2(width as i32, height as i32); + let allocation = atlas_packer.allocate(size); + + if allocation.is_some() { + return allocation; + } + + // Try to free any allocations not used in the current layout + let used_glyphs = layout + .glyphs() + .iter() + .map(|gp| gp.key) + .collect::>(); + + glyph_cache.retain(|key, details| { + if used_glyphs.contains(&key) { + true + } else { + if let Some(atlas_id) = details.atlas_id { + atlas_packer.deallocate(atlas_id) + } + false + } + }); + + // Attempt to reallocate + atlas_packer.allocate(size) +} + +pub struct TextRenderer { + glyph_cache: HashMap, + atlas_texture_pending: Vec, + atlas_texture: Texture, + atlas_packer: BucketedAtlasAllocator, + atlas_width: u32, + atlas_height: u32, + pipeline: RenderPipeline, + vertex_buffer: Buffer, + vertex_buffer_size: u64, + index_buffer: Buffer, + index_buffer_size: u64, + params: Params, + params_buffer: Buffer, + bind_group: BindGroup, + vertices_to_render: u32, +} + +impl TextRenderer { + pub fn new( + device: &Device, + _queue: &Queue, + format: TextureFormat, + screen_resolution: Resolution, + ) -> Self { + let glyph_cache = HashMap::new(); + let max_texture_dimension_2d = device.limits().max_texture_dimension_2d; + let atlas_width = max_texture_dimension_2d; + let atlas_height = max_texture_dimension_2d; + + let atlas_packer = + BucketedAtlasAllocator::new(size2(atlas_width as i32, atlas_height as i32)); + + // Create a texture to use for our atlas + let atlas_texture_pending = vec![0; (atlas_width * atlas_height) as usize]; + let atlas_texture = device.create_texture(&TextureDescriptor { + label: Some("glyphon atlas"), + size: Extent3d { + width: atlas_width, + height: atlas_height, + depth_or_array_layers: 1, + }, + mip_level_count: 1, + sample_count: 1, + dimension: TextureDimension::D2, + format: TextureFormat::R8Unorm, + usage: TextureUsages::TEXTURE_BINDING | TextureUsages::COPY_DST, + }); + let atlas_texture_view = atlas_texture.create_view(&TextureViewDescriptor::default()); + let atlas_sampler = device.create_sampler(&SamplerDescriptor { + label: Some("glyphon sampler"), + min_filter: FilterMode::Nearest, + mag_filter: FilterMode::Nearest, + mipmap_filter: FilterMode::Nearest, + lod_min_clamp: 0f32, + lod_max_clamp: 0f32, + ..Default::default() + }); + + // Create a render pipeline to use for rendering later + let shader = device.create_shader_module(&ShaderModuleDescriptor { + label: Some("glyphon shader"), + source: ShaderSource::Wgsl(Cow::Borrowed(include_str!("shader.wgsl"))), + }); + + let vertex_buffers = [wgpu::VertexBufferLayout { + array_stride: mem::size_of::() as wgpu::BufferAddress, + step_mode: wgpu::VertexStepMode::Vertex, + attributes: &[ + wgpu::VertexAttribute { + format: VertexFormat::Float32x4, + offset: 0, + shader_location: 0, + }, + wgpu::VertexAttribute { + format: VertexFormat::Float32x2, + offset: mem::size_of::() as u64 * 4, + shader_location: 1, + }, + wgpu::VertexAttribute { + format: VertexFormat::Uint32, + offset: mem::size_of::() as u64 * 6, + shader_location: 2, + }, + ], + }]; + + let bind_group_layout = device.create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor { + entries: &[ + BindGroupLayoutEntry { + binding: 0, + visibility: ShaderStages::VERTEX, + ty: BindingType::Buffer { + ty: BufferBindingType::Uniform, + has_dynamic_offset: false, + min_binding_size: NonZeroU64::new(mem::size_of::() as u64), + }, + count: None, + }, + BindGroupLayoutEntry { + binding: 1, + visibility: ShaderStages::VERTEX | ShaderStages::FRAGMENT, + ty: BindingType::Texture { + multisampled: false, + view_dimension: TextureViewDimension::D2, + sample_type: TextureSampleType::Float { filterable: true }, + }, + count: None, + }, + BindGroupLayoutEntry { + binding: 2, + visibility: ShaderStages::FRAGMENT, + ty: BindingType::Sampler(SamplerBindingType::Filtering), + count: None, + }, + ], + label: Some("glyphon bind group layout"), + }); + + let params = Params { screen_resolution }; + + let params_raw = unsafe { + slice::from_raw_parts( + ¶ms as *const Params as *const u8, + mem::size_of::(), + ) + }; + + let params_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { + label: Some("glyphon params"), + contents: params_raw, + usage: BufferUsages::UNIFORM | BufferUsages::COPY_DST, + }); + + let bind_group = device.create_bind_group(&wgpu::BindGroupDescriptor { + layout: &bind_group_layout, + entries: &[ + BindGroupEntry { + binding: 0, + resource: params_buffer.as_entire_binding(), + }, + BindGroupEntry { + binding: 1, + resource: BindingResource::TextureView(&atlas_texture_view), + }, + BindGroupEntry { + binding: 2, + resource: BindingResource::Sampler(&atlas_sampler), + }, + ], + label: Some("glyphon bind group"), + }); + + let pipeline_layout = device.create_pipeline_layout(&PipelineLayoutDescriptor { + label: None, + bind_group_layouts: &[&bind_group_layout], + push_constant_ranges: &[], + }); + + let pipeline = device.create_render_pipeline(&RenderPipelineDescriptor { + label: Some("glyphon pipeline"), + layout: Some(&pipeline_layout), + vertex: VertexState { + module: &shader, + entry_point: "vs_main", + buffers: &vertex_buffers, + }, + fragment: Some(FragmentState { + module: &shader, + entry_point: "fs_main", + targets: &[ColorTargetState { + format, + blend: Some(BlendState::ALPHA_BLENDING), + write_mask: ColorWrites::default(), + }], + }), + primitive: PrimitiveState::default(), + depth_stencil: None, + multisample: MultisampleState { + count: 1, + mask: !0, + alpha_to_coverage_enabled: false, + }, + multiview: None, + }); + + let vertex_buffer_size = 4096; + let vertex_buffer = device.create_buffer(&BufferDescriptor { + label: Some("glyphon vertices"), + size: vertex_buffer_size, + usage: BufferUsages::VERTEX | BufferUsages::COPY_DST, + mapped_at_creation: false, + }); + + let index_buffer_size = 4096; + let index_buffer = device.create_buffer(&BufferDescriptor { + label: Some("glyphon indices"), + size: index_buffer_size, + usage: BufferUsages::INDEX | BufferUsages::COPY_DST, + mapped_at_creation: false, + }); + + Self { + glyph_cache, + atlas_texture_pending, + atlas_texture, + atlas_packer, + atlas_width, + atlas_height, + pipeline, + vertex_buffer, + vertex_buffer_size, + index_buffer, + index_buffer_size, + params, + params_buffer, + bind_group, + vertices_to_render: 0, + } + } + + pub fn prepare( + &mut self, + device: &Device, + queue: &Queue, + screen_resolution: Resolution, + fonts: &[Font], + layouts: &[&Layout], + ) -> Result<(), PrepareError> { + if screen_resolution != self.params.screen_resolution { + self.params.screen_resolution = screen_resolution; + queue.write_buffer(&self.params_buffer, 0, unsafe { + slice::from_raw_parts( + &self.params as *const Params as *const u8, + mem::size_of::(), + ) + }); + } + + struct UploadBounds { + x_min: usize, + x_max: usize, + y_min: usize, + y_max: usize, + } + let mut upload_bounds = None::; + + for layout in layouts.iter() { + for glyph in layout.glyphs() { + let already_on_gpu = self.glyph_cache.contains_key(&glyph.key); + if already_on_gpu { + continue; + } + + let font = &fonts[glyph.font_index]; + let (metrics, bitmap) = font.rasterize_config(glyph.key); + + let (gpu_cache, atlas_id) = if glyph.char_data.rasterize() { + // Find a position in the packer + let allocation = match try_allocate( + &mut self.atlas_packer, + layout, + &mut self.glyph_cache, + metrics.width, + metrics.height, + ) { + Some(a) => a, + None => return Err(PrepareError::AtlasFull), + }; + let atlas_min = allocation.rectangle.min; + let atlas_max = allocation.rectangle.max; + + for row in 0..metrics.height { + let y_offset = atlas_min.y as usize; + let x_offset = + (y_offset + row) * self.atlas_width as usize + atlas_min.x as usize; + let bitmap_row = &bitmap[row * metrics.width..(row + 1) * metrics.width]; + self.atlas_texture_pending[x_offset..x_offset + metrics.width] + .copy_from_slice(bitmap_row); + } + + match upload_bounds.as_mut() { + Some(ub) => { + ub.x_min = ub.x_min.min(atlas_min.x as usize); + ub.x_max = ub.x_max.max(atlas_max.x as usize); + ub.y_min = ub.y_min.min(atlas_min.y as usize); + ub.y_max = ub.y_max.max(atlas_max.y as usize); + } + None => { + upload_bounds = Some(UploadBounds { + x_min: atlas_min.x as usize, + x_max: atlas_max.x as usize, + y_min: atlas_min.y as usize, + y_max: atlas_max.y as usize, + }); + } + } + + ( + GpuCache::InAtlas { + x: atlas_min.x as u16, + y: atlas_min.y as u16, + }, + Some(allocation.id), + ) + } else { + (GpuCache::SkipRasterization, None) + }; + + self.glyph_cache.insert( + glyph.key, + GlyphDetails { + width: metrics.width as u32, + height: metrics.height as u32, + gpu_cache, + atlas_id, + }, + ); + } + } + + if let Some(ub) = upload_bounds { + queue.write_texture( + ImageCopyTexture { + texture: &self.atlas_texture, + mip_level: 0, + origin: Origin3d { + x: ub.x_min as u32, + y: ub.y_min as u32, + z: 0, + }, + aspect: TextureAspect::All, + }, + &self.atlas_texture_pending[ub.y_min * self.atlas_width as usize + ub.x_min..], + ImageDataLayout { + offset: 0, + bytes_per_row: NonZeroU32::new(self.atlas_width as u32), + rows_per_image: NonZeroU32::new(self.atlas_height as u32), + }, + Extent3d { + width: (ub.x_max - ub.x_min) as u32, + height: (ub.y_max - ub.y_min) as u32, + depth_or_array_layers: 1, + }, + ); + } + + let mut glyph_vertices = Vec::new(); + let mut glyph_indices = Vec::new(); + let mut glyphs_added = 0; + + for layout in layouts.iter() { + for glyph in layout.glyphs() { + let details = self.glyph_cache.get_mut(&glyph.key).unwrap(); + let (atlas_x, atlas_y) = match details.gpu_cache { + GpuCache::InAtlas { x, y } => (x, y), + GpuCache::SkipRasterization => continue, + }; + + glyph_vertices.extend( + iter::repeat(GlyphToRender { + x: glyph.x, + y: glyph.y, + width: details.width as f32, + height: details.height as f32, + atlas_x: atlas_x as f32, + atlas_y: atlas_y as f32, + color: [255, 255, 0, 255], + }) + .take(4), + ); + + let start = 4 * glyphs_added as u32; + glyph_indices.extend([start, start + 1, start + 2, start, start + 2, start + 3]); + + glyphs_added += 1; + } + } + + const VERTICES_PER_GLYPH: u32 = 6; + self.vertices_to_render = glyphs_added as u32 * VERTICES_PER_GLYPH; + + let will_render = glyphs_added > 0; + if !will_render { + return Ok(()); + } + + let vertices = glyph_vertices.as_slice(); + let vertices_raw = unsafe { + slice::from_raw_parts( + vertices as *const _ as *const u8, + mem::size_of::() * vertices.len(), + ) + }; + + if self.vertex_buffer_size >= vertices_raw.len() as u64 { + queue.write_buffer(&self.vertex_buffer, 0, vertices_raw); + } else { + self.vertex_buffer.destroy(); + self.vertex_buffer_size = vertices_raw.len().next_power_of_two() as u64; + self.vertex_buffer = device.create_buffer_init(&BufferInitDescriptor { + label: Some("glyphon vertices"), + contents: vertices_raw, + usage: BufferUsages::VERTEX | BufferUsages::COPY_DST, + }); + } + + let indices = glyph_indices.as_slice(); + let indices_raw = unsafe { + slice::from_raw_parts( + indices as *const _ as *const u8, + mem::size_of::() * indices.len(), + ) + }; + + if self.index_buffer_size >= indices_raw.len() as u64 { + queue.write_buffer(&self.index_buffer, 0, indices_raw); + } else { + self.index_buffer.destroy(); + self.index_buffer_size = indices_raw.len().next_power_of_two() as u64; + self.index_buffer = device.create_buffer_init(&BufferInitDescriptor { + label: Some("glyphon indices"), + contents: indices_raw, + usage: BufferUsages::INDEX | BufferUsages::COPY_DST, + }); + } + + Ok(()) + } + + pub fn render<'pass>(&'pass mut self, pass: &mut RenderPass<'pass>) -> Result<(), ()> { + if self.vertices_to_render == 0 { + return Ok(()); + } + + pass.set_pipeline(&self.pipeline); + pass.set_bind_group(0, &self.bind_group, &[]); + pass.set_vertex_buffer(0, self.vertex_buffer.slice(..)); + pass.set_index_buffer(self.index_buffer.slice(..), IndexFormat::Uint32); + pass.draw_indexed(0..self.vertices_to_render, 0, 0..1); + + Ok(()) + } +} diff --git a/src/shader.wgsl b/src/shader.wgsl new file mode 100644 index 0000000..b1b21b4 --- /dev/null +++ b/src/shader.wgsl @@ -0,0 +1,71 @@ +struct VertexOutput { + @builtin(position) position: vec4, + @location(0) color: vec4, + @location(1) tex_coords: vec2, +}; + +struct Params { + screen_resolution: vec2, +}; + +@group(0) @binding(0) +var params: Params; + +@group(0) @binding(1) +var atlas_texture: texture_2d; + +@group(0) @binding(2) +var atlas_sampler: sampler; + +@vertex +fn vs_main(@builtin(vertex_index) vertex_idx: u32, @location(0) in_vert: vec4, @location(1) tex_coords: vec2, @location(2) color: u32) -> VertexOutput { + let width = in_vert.z; + let height = in_vert.w; + + let v = vertex_idx % 4u; + var pos = in_vert.xy; + var uv = tex_coords; + + switch v { + case 0u: { + } + case 1u: { + pos.x += width; + uv.x += width; + } + case 2u: { + pos.x += width; + pos.y += height; + uv.x += width; + uv.y += height; + } + case 3u: { + pos.y += height; + uv.y += height; + } + default: {} + } + + pos = 2.0 * pos / vec2(params.screen_resolution) - 1.0; + pos.y *= -1.0; + + var vert_output: VertexOutput; + + vert_output.position = vec4(pos.xy, 0.0, 1.0); + + vert_output.color = vec4( + f32((color & 0xffu)), + f32((color & 0xff00u) >> 8u), + f32((color & 0xff0000u) >> 16u), + f32((color & 0xff000000u) >> 24u), + ) / 255.0; + + vert_output.tex_coords = uv / vec2(textureDimensions(atlas_texture).xy); + + return vert_output; +} + +@fragment +fn fs_main(in_frag: VertexOutput) -> @location(0) vec4 { + return in_frag.color * textureSample(atlas_texture, atlas_sampler, in_frag.tex_coords).x; +}