reflect/preprocess/presets: use SmallString where it makes sense
Most use cases are internal so at least for the runtime consumers there's no API change, but preset parsing and reflection items are public API so might as well put this as part of 0.4.0
This commit is contained in:
parent
c447e40583
commit
40a56bf165
168
Cargo.lock
generated
168
Cargo.lock
generated
|
@ -137,7 +137,7 @@ checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.75",
|
"syn 2.0.77",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -192,13 +192,13 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "async-trait"
|
name = "async-trait"
|
||||||
version = "0.1.81"
|
version = "0.1.82"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107"
|
checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.75",
|
"syn 2.0.77",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -313,9 +313,9 @@ checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bitstream-io"
|
name = "bitstream-io"
|
||||||
version = "2.5.2"
|
version = "2.5.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5b80895c12b34217892edc4718b2293748796b6570c6ff9f0935df8e10e26534"
|
checksum = "b81e1519b0d82120d2fd469d5bfb2919a9361c48b02d82d04befc1cdd2002452"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bitvec"
|
name = "bitvec"
|
||||||
|
@ -411,9 +411,9 @@ checksum = "5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bytemuck"
|
name = "bytemuck"
|
||||||
version = "1.17.0"
|
version = "1.17.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6fd4c6dcc3b0aea2f5c0b4b82c2b15fe39ddbc76041a310848f4706edf76bb31"
|
checksum = "773d90827bc3feecfb67fab12e24de0749aad83c74b9504ecde46237b5cd24e2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bytemuck_derive",
|
"bytemuck_derive",
|
||||||
]
|
]
|
||||||
|
@ -426,7 +426,7 @@ checksum = "0cc8b54b395f2fcfbb3d90c47b01c7f444d94d05bdeb775811dec868ac3bbc26"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.75",
|
"syn 2.0.77",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -494,9 +494,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cc"
|
name = "cc"
|
||||||
version = "1.1.13"
|
version = "1.1.16"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "72db2f7947ecee9b03b510377e8bb9077afa27176fdbff55c51027e976fdcc48"
|
checksum = "e9d013ecb737093c0e86b151a7b837993cf9ec6c502946cfb44bedc392421e0b"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"jobserver",
|
"jobserver",
|
||||||
"libc",
|
"libc",
|
||||||
|
@ -718,9 +718,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "constant_time_eq"
|
name = "constant_time_eq"
|
||||||
version = "0.3.0"
|
version = "0.3.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2"
|
checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "core-foundation"
|
name = "core-foundation"
|
||||||
|
@ -1006,9 +1006,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "fastrand"
|
name = "fastrand"
|
||||||
version = "2.1.0"
|
version = "2.1.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a"
|
checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "fdeflate"
|
name = "fdeflate"
|
||||||
|
@ -1027,9 +1027,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "flate2"
|
name = "flate2"
|
||||||
version = "1.0.32"
|
version = "1.0.33"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9c0596c1eac1f9e04ed902702e9878208b336edc9d6fddc8a48387349bab3666"
|
checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"crc32fast",
|
"crc32fast",
|
||||||
"miniz_oxide 0.8.0",
|
"miniz_oxide 0.8.0",
|
||||||
|
@ -1062,7 +1062,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.75",
|
"syn 2.0.77",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -1460,9 +1460,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "indexmap"
|
name = "indexmap"
|
||||||
version = "2.4.0"
|
version = "2.5.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "93ead53efc7ea8ed3cfb0c79fc8023fbb782a5432b52830b6518941cebe6505c"
|
checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"equivalent",
|
"equivalent",
|
||||||
"hashbrown 0.14.5",
|
"hashbrown 0.14.5",
|
||||||
|
@ -1476,7 +1476,7 @@ checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.75",
|
"syn 2.0.77",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -1698,6 +1698,7 @@ dependencies = [
|
||||||
"num-traits",
|
"num-traits",
|
||||||
"objc2-metal",
|
"objc2-metal",
|
||||||
"rustc-hash 2.0.0",
|
"rustc-hash 2.0.0",
|
||||||
|
"smartstring",
|
||||||
"wgpu-types",
|
"wgpu-types",
|
||||||
"windows 0.58.0",
|
"windows 0.58.0",
|
||||||
]
|
]
|
||||||
|
@ -1736,7 +1737,7 @@ dependencies = [
|
||||||
"bitflags 2.6.0",
|
"bitflags 2.6.0",
|
||||||
"bytemuck",
|
"bytemuck",
|
||||||
"glslang",
|
"glslang",
|
||||||
"indexmap 2.4.0",
|
"indexmap 2.5.0",
|
||||||
"librashader-common",
|
"librashader-common",
|
||||||
"librashader-preprocess",
|
"librashader-preprocess",
|
||||||
"librashader-presets",
|
"librashader-presets",
|
||||||
|
@ -2090,7 +2091,7 @@ dependencies = [
|
||||||
"cfg_aliases",
|
"cfg_aliases",
|
||||||
"codespan-reporting",
|
"codespan-reporting",
|
||||||
"hexf-parse",
|
"hexf-parse",
|
||||||
"indexmap 2.4.0",
|
"indexmap 2.5.0",
|
||||||
"log",
|
"log",
|
||||||
"petgraph",
|
"petgraph",
|
||||||
"pp-rs",
|
"pp-rs",
|
||||||
|
@ -2205,7 +2206,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.75",
|
"syn 2.0.77",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -2266,7 +2267,7 @@ dependencies = [
|
||||||
"proc-macro-crate",
|
"proc-macro-crate",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.75",
|
"syn 2.0.77",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -2468,7 +2469,7 @@ dependencies = [
|
||||||
"pest_meta",
|
"pest_meta",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.75",
|
"syn 2.0.77",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -2489,7 +2490,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db"
|
checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"fixedbitset",
|
"fixedbitset",
|
||||||
"indexmap 2.4.0",
|
"indexmap 2.5.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -2573,11 +2574,11 @@ checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "proc-macro-crate"
|
name = "proc-macro-crate"
|
||||||
version = "3.1.0"
|
version = "3.2.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284"
|
checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"toml_edit 0.21.1",
|
"toml_edit",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -2629,7 +2630,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8021cf59c8ec9c432cfc2526ac6b8aa508ecaf29cd415f271b8406c1b851c3fd"
|
checksum = "8021cf59c8ec9c432cfc2526ac6b8aa508ecaf29cd415f271b8406c1b851c3fd"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.75",
|
"syn 2.0.77",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -2649,18 +2650,18 @@ checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "quick-xml"
|
name = "quick-xml"
|
||||||
version = "0.34.0"
|
version = "0.36.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6f24d770aeca0eacb81ac29dfbc55ebcc09312fdd1f8bbecdc7e4a84e000e3b4"
|
checksum = "96a05e2e8efddfa51a84ca47cec303fac86c8541b686d37cac5efc0e094417bc"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"memchr",
|
"memchr",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "quote"
|
name = "quote"
|
||||||
version = "1.0.36"
|
version = "1.0.37"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
|
checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
]
|
]
|
||||||
|
@ -2884,9 +2885,9 @@ checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rgb"
|
name = "rgb"
|
||||||
version = "0.8.48"
|
version = "0.8.50"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "0f86ae463694029097b846d8f99fd5536740602ae00022c0c50c5600720b2f71"
|
checksum = "57397d16646700483b67d2dd6511d79318f9d057fdbd21a4066aeac8b41d310a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bytemuck",
|
"bytemuck",
|
||||||
]
|
]
|
||||||
|
@ -2936,9 +2937,9 @@ checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rustix"
|
name = "rustix"
|
||||||
version = "0.38.34"
|
version = "0.38.35"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f"
|
checksum = "a85d50532239da68e9addb745ba38ff4612a242c1c7ceea689c4bc7c2f43c36f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 2.6.0",
|
"bitflags 2.6.0",
|
||||||
"errno",
|
"errno",
|
||||||
|
@ -2989,29 +2990,29 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde"
|
name = "serde"
|
||||||
version = "1.0.208"
|
version = "1.0.209"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "cff085d2cb684faa248efb494c39b68e522822ac0de72ccf08109abde717cfb2"
|
checksum = "99fce0ffe7310761ca6bf9faf5115afbc19688edd00171d81b1bb1b116c63e09"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"serde_derive",
|
"serde_derive",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde_derive"
|
name = "serde_derive"
|
||||||
version = "1.0.208"
|
version = "1.0.209"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "24008e81ff7613ed8e5ba0cfaf24e2c2f1e5b8a0495711e44fcd4882fca62bcf"
|
checksum = "a5831b979fd7b5439637af1752d535ff49f4860c0f341d1baeb6faf0f4242170"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.75",
|
"syn 2.0.77",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde_json"
|
name = "serde_json"
|
||||||
version = "1.0.125"
|
version = "1.0.128"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "83c8e735a073ccf5be70aa8066aa984eaf2fa000db6c8d0100ae605b366d31ed"
|
checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"itoa",
|
"itoa",
|
||||||
"memchr",
|
"memchr",
|
||||||
|
@ -3084,6 +3085,17 @@ version = "1.13.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
|
checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "smartstring"
|
||||||
|
version = "1.0.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3fb72c633efbaa2dd666986505016c32c3044395ceaf881518399d2f4127ee29"
|
||||||
|
dependencies = [
|
||||||
|
"autocfg",
|
||||||
|
"static_assertions",
|
||||||
|
"version_check",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "smithay-client-toolkit"
|
name = "smithay-client-toolkit"
|
||||||
version = "0.18.1"
|
version = "0.18.1"
|
||||||
|
@ -3196,9 +3208,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "syn"
|
name = "syn"
|
||||||
version = "2.0.75"
|
version = "2.0.77"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f6af063034fc1935ede7be0122941bafa9bacb949334d090b77ca98b5817c7d9"
|
checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
|
@ -3275,7 +3287,7 @@ checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.75",
|
"syn 2.0.77",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -3347,7 +3359,7 @@ dependencies = [
|
||||||
"serde",
|
"serde",
|
||||||
"serde_spanned",
|
"serde_spanned",
|
||||||
"toml_datetime",
|
"toml_datetime",
|
||||||
"toml_edit 0.22.20",
|
"toml_edit",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -3359,28 +3371,17 @@ dependencies = [
|
||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "toml_edit"
|
|
||||||
version = "0.21.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1"
|
|
||||||
dependencies = [
|
|
||||||
"indexmap 2.4.0",
|
|
||||||
"toml_datetime",
|
|
||||||
"winnow 0.5.40",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "toml_edit"
|
name = "toml_edit"
|
||||||
version = "0.22.20"
|
version = "0.22.20"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d"
|
checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"indexmap 2.4.0",
|
"indexmap 2.5.0",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_spanned",
|
"serde_spanned",
|
||||||
"toml_datetime",
|
"toml_datetime",
|
||||||
"winnow 0.6.18",
|
"winnow",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -3520,7 +3521,7 @@ dependencies = [
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.75",
|
"syn 2.0.77",
|
||||||
"wasm-bindgen-shared",
|
"wasm-bindgen-shared",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -3554,7 +3555,7 @@ checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.75",
|
"syn 2.0.77",
|
||||||
"wasm-bindgen-backend",
|
"wasm-bindgen-backend",
|
||||||
"wasm-bindgen-shared",
|
"wasm-bindgen-shared",
|
||||||
]
|
]
|
||||||
|
@ -3567,9 +3568,9 @@ checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wayland-backend"
|
name = "wayland-backend"
|
||||||
version = "0.3.6"
|
version = "0.3.7"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f90e11ce2ca99c97b940ee83edbae9da2d56a08f9ea8158550fd77fa31722993"
|
checksum = "056535ced7a150d45159d3a8dc30f91a2e2d588ca0b23f70e56033622b8016f6"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cc",
|
"cc",
|
||||||
"downcast-rs",
|
"downcast-rs",
|
||||||
|
@ -3581,9 +3582,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wayland-client"
|
name = "wayland-client"
|
||||||
version = "0.31.5"
|
version = "0.31.6"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "7e321577a0a165911bdcfb39cf029302479d7527b517ee58ab0f6ad09edf0943"
|
checksum = "e3f45d1222915ef1fd2057220c1d9d9624b7654443ea35c3877f7a52bd0a5a2d"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 2.6.0",
|
"bitflags 2.6.0",
|
||||||
"rustix",
|
"rustix",
|
||||||
|
@ -3604,9 +3605,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wayland-cursor"
|
name = "wayland-cursor"
|
||||||
version = "0.31.5"
|
version = "0.31.6"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6ef9489a8df197ebf3a8ce8a7a7f0a2320035c3743f3c1bd0bdbccf07ce64f95"
|
checksum = "3a94697e66e76c85923b0d28a0c251e8f0666f58fc47d316c0f4da6da75d37cb"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"rustix",
|
"rustix",
|
||||||
"wayland-client",
|
"wayland-client",
|
||||||
|
@ -3653,9 +3654,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wayland-scanner"
|
name = "wayland-scanner"
|
||||||
version = "0.31.4"
|
version = "0.31.5"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d7b56f89937f1cf2ee1f1259cf2936a17a1f45d8f0aa1019fae6d470d304cfa6"
|
checksum = "597f2001b2e5fc1121e3d5b9791d3e78f05ba6bfa4641053846248e3a13661c3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quick-xml",
|
"quick-xml",
|
||||||
|
@ -3664,9 +3665,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wayland-sys"
|
name = "wayland-sys"
|
||||||
version = "0.31.4"
|
version = "0.31.5"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "43676fe2daf68754ecf1d72026e4e6c15483198b5d24e888b74d3f22f887a148"
|
checksum = "efa8ac0d8e8ed3e3b5c9fc92c7881406a268e11555abe36493efabe649a29e09"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"dlib",
|
"dlib",
|
||||||
"log",
|
"log",
|
||||||
|
@ -3736,7 +3737,7 @@ dependencies = [
|
||||||
"bitflags 2.6.0",
|
"bitflags 2.6.0",
|
||||||
"cfg_aliases",
|
"cfg_aliases",
|
||||||
"document-features",
|
"document-features",
|
||||||
"indexmap 2.4.0",
|
"indexmap 2.5.0",
|
||||||
"log",
|
"log",
|
||||||
"naga",
|
"naga",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
|
@ -3893,7 +3894,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.75",
|
"syn 2.0.77",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -3904,7 +3905,7 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.75",
|
"syn 2.0.77",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -4188,15 +4189,6 @@ dependencies = [
|
||||||
"xkbcommon-dl",
|
"xkbcommon-dl",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "winnow"
|
|
||||||
version = "0.5.40"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876"
|
|
||||||
dependencies = [
|
|
||||||
"memchr",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "winnow"
|
name = "winnow"
|
||||||
version = "0.6.18"
|
version = "0.6.18"
|
||||||
|
@ -4305,7 +4297,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.75",
|
"syn 2.0.77",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|
|
@ -205,7 +205,7 @@ extern_fn! {
|
||||||
let iter = librashader::presets::get_parameter_meta(preset)?;
|
let iter = librashader::presets::get_parameter_meta(preset)?;
|
||||||
let mut values = Vec::new();
|
let mut values = Vec::new();
|
||||||
for param in iter {
|
for param in iter {
|
||||||
let name = CString::new(param.id)
|
let name = CString::new(param.id.to_string())
|
||||||
.map_err(|err| LibrashaderError::UnknownError(Box::new(err)))?;
|
.map_err(|err| LibrashaderError::UnknownError(Box::new(err)))?;
|
||||||
let description = CString::new(param.description)
|
let description = CString::new(param.description)
|
||||||
.map_err(|err| LibrashaderError::UnknownError(Box::new(err)))?;
|
.map_err(|err| LibrashaderError::UnknownError(Box::new(err)))?;
|
||||||
|
|
|
@ -29,6 +29,7 @@ wgpu-types = { version = "22", optional = true }
|
||||||
num-traits = "0.2.15"
|
num-traits = "0.2.15"
|
||||||
rustc-hash = "2.0.0"
|
rustc-hash = "2.0.0"
|
||||||
halfbrown = "0.2.4"
|
halfbrown = "0.2.4"
|
||||||
|
smartstring = "1.0"
|
||||||
|
|
||||||
[target.'cfg(windows)'.dependencies.windows]
|
[target.'cfg(windows)'.dependencies.windows]
|
||||||
optional = true
|
optional = true
|
||||||
|
|
|
@ -2,4 +2,7 @@
|
||||||
pub type FastHashMap<K, V> =
|
pub type FastHashMap<K, V> =
|
||||||
halfbrown::SizedHashMap<K, V, core::hash::BuildHasherDefault<rustc_hash::FxHasher>, 32>;
|
halfbrown::SizedHashMap<K, V, core::hash::BuildHasherDefault<rustc_hash::FxHasher>, 32>;
|
||||||
|
|
||||||
|
/// A string with small string optimizations up to 23 bytes.
|
||||||
|
pub type ShortString = smartstring::SmartString<smartstring::LazyCompact>;
|
||||||
|
|
||||||
pub use halfbrown;
|
pub use halfbrown;
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
use librashader_common::map::ShortString;
|
||||||
use std::convert::Infallible;
|
use std::convert::Infallible;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
use thiserror::Error;
|
use thiserror::Error;
|
||||||
|
@ -27,7 +28,7 @@ pub enum PreprocessError {
|
||||||
PragmaParseError(String),
|
PragmaParseError(String),
|
||||||
/// The given pragma was declared multiple times with differing values.
|
/// The given pragma was declared multiple times with differing values.
|
||||||
#[error("duplicate pragma found")]
|
#[error("duplicate pragma found")]
|
||||||
DuplicatePragmaError(String),
|
DuplicatePragmaError(ShortString),
|
||||||
/// The image format requested by the shader was unknown or not supported.
|
/// The image format requested by the shader was unknown or not supported.
|
||||||
#[error("shader format is unknown or not found")]
|
#[error("shader format is unknown or not found")]
|
||||||
UnknownImageFormat,
|
UnknownImageFormat,
|
||||||
|
|
|
@ -15,7 +15,7 @@ mod stage;
|
||||||
|
|
||||||
use crate::include::read_source;
|
use crate::include::read_source;
|
||||||
pub use error::*;
|
pub use error::*;
|
||||||
use librashader_common::map::FastHashMap;
|
use librashader_common::map::{FastHashMap, ShortString};
|
||||||
use librashader_common::ImageFormat;
|
use librashader_common::ImageFormat;
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
|
|
||||||
|
@ -29,10 +29,10 @@ pub struct ShaderSource {
|
||||||
pub fragment: String,
|
pub fragment: String,
|
||||||
|
|
||||||
/// The alias of the shader if available.
|
/// The alias of the shader if available.
|
||||||
pub name: Option<String>,
|
pub name: Option<ShortString>,
|
||||||
|
|
||||||
/// The list of shader parameters found in the shader source.
|
/// The list of shader parameters found in the shader source.
|
||||||
pub parameters: FastHashMap<String, ShaderParameter>,
|
pub parameters: FastHashMap<ShortString, ShaderParameter>,
|
||||||
|
|
||||||
/// The image format the shader expects.
|
/// The image format the shader expects.
|
||||||
pub format: ImageFormat,
|
pub format: ImageFormat,
|
||||||
|
@ -42,7 +42,7 @@ pub struct ShaderSource {
|
||||||
#[derive(Debug, Clone, PartialEq)]
|
#[derive(Debug, Clone, PartialEq)]
|
||||||
pub struct ShaderParameter {
|
pub struct ShaderParameter {
|
||||||
/// The name of the parameter.
|
/// The name of the parameter.
|
||||||
pub id: String,
|
pub id: ShortString,
|
||||||
/// The description of the parameter.
|
/// The description of the parameter.
|
||||||
pub description: String,
|
pub description: String,
|
||||||
/// The initial value the parameter is set to.
|
/// The initial value the parameter is set to.
|
||||||
|
|
|
@ -2,6 +2,7 @@ use crate::{PreprocessError, ShaderParameter};
|
||||||
use librashader_common::ImageFormat;
|
use librashader_common::ImageFormat;
|
||||||
use nom::bytes::complete::{is_not, tag, take_while};
|
use nom::bytes::complete::{is_not, tag, take_while};
|
||||||
|
|
||||||
|
use librashader_common::map::ShortString;
|
||||||
use nom::character::complete::multispace1;
|
use nom::character::complete::multispace1;
|
||||||
use nom::number::complete::float;
|
use nom::number::complete::float;
|
||||||
use nom::sequence::delimited;
|
use nom::sequence::delimited;
|
||||||
|
@ -12,7 +13,7 @@ use std::str::FromStr;
|
||||||
pub(crate) struct ShaderMeta {
|
pub(crate) struct ShaderMeta {
|
||||||
pub(crate) format: ImageFormat,
|
pub(crate) format: ImageFormat,
|
||||||
pub(crate) parameters: Vec<ShaderParameter>,
|
pub(crate) parameters: Vec<ShaderParameter>,
|
||||||
pub(crate) name: Option<String>,
|
pub(crate) name: Option<ShortString>,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn parse_parameter_string(input: &str) -> Result<ShaderParameter, PreprocessError> {
|
fn parse_parameter_string(input: &str) -> Result<ShaderParameter, PreprocessError> {
|
||||||
|
@ -40,7 +41,7 @@ fn parse_parameter_string(input: &str) -> Result<ShaderParameter, PreprocessErro
|
||||||
Ok((
|
Ok((
|
||||||
input,
|
input,
|
||||||
ShaderParameter {
|
ShaderParameter {
|
||||||
id: name.to_string(),
|
id: name.into(),
|
||||||
description: description.to_string(),
|
description: description.to_string(),
|
||||||
initial,
|
initial,
|
||||||
minimum,
|
minimum,
|
||||||
|
@ -60,7 +61,7 @@ fn parse_parameter_string(input: &str) -> Result<ShaderParameter, PreprocessErro
|
||||||
Ok(param)
|
Ok(param)
|
||||||
} else {
|
} else {
|
||||||
Ok(ShaderParameter {
|
Ok(ShaderParameter {
|
||||||
id: name.to_string(),
|
id: name.into(),
|
||||||
description: description.to_string(),
|
description: description.to_string(),
|
||||||
initial: 0f32,
|
initial: 0f32,
|
||||||
minimum: 0f32,
|
minimum: 0f32,
|
||||||
|
@ -89,7 +90,7 @@ pub(crate) fn parse_pragma_meta(source: impl AsRef<str>) -> Result<ShaderMeta, P
|
||||||
|
|
||||||
if let Some(format_string) = line.strip_prefix("#pragma format ") {
|
if let Some(format_string) = line.strip_prefix("#pragma format ") {
|
||||||
if format != ImageFormat::Unknown {
|
if format != ImageFormat::Unknown {
|
||||||
return Err(PreprocessError::DuplicatePragmaError(line.to_string()));
|
return Err(PreprocessError::DuplicatePragmaError(line.into()));
|
||||||
}
|
}
|
||||||
|
|
||||||
let format_string = format_string.trim();
|
let format_string = format_string.trim();
|
||||||
|
@ -102,10 +103,10 @@ pub(crate) fn parse_pragma_meta(source: impl AsRef<str>) -> Result<ShaderMeta, P
|
||||||
|
|
||||||
if line.starts_with("#pragma name ") {
|
if line.starts_with("#pragma name ") {
|
||||||
if name.is_some() {
|
if name.is_some() {
|
||||||
return Err(PreprocessError::DuplicatePragmaError(line.to_string()));
|
return Err(PreprocessError::DuplicatePragmaError(line.into()));
|
||||||
}
|
}
|
||||||
|
|
||||||
name = Some(line.trim().to_string())
|
name = Some(ShortString::from(line.trim()))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -124,7 +125,7 @@ mod test {
|
||||||
#[test]
|
#[test]
|
||||||
fn parses_parameter_pragma() {
|
fn parses_parameter_pragma() {
|
||||||
assert_eq!(ShaderParameter {
|
assert_eq!(ShaderParameter {
|
||||||
id: "exc".to_string(),
|
id: "exc".into(),
|
||||||
description: "orizontal correction hack (games where players stay at center)".to_string(),
|
description: "orizontal correction hack (games where players stay at center)".to_string(),
|
||||||
initial: 0.0,
|
initial: 0.0,
|
||||||
minimum: -10.0,
|
minimum: -10.0,
|
||||||
|
@ -136,7 +137,7 @@ mod test {
|
||||||
#[test]
|
#[test]
|
||||||
fn parses_parameter_pragma_test() {
|
fn parses_parameter_pragma_test() {
|
||||||
assert_eq!(ShaderParameter {
|
assert_eq!(ShaderParameter {
|
||||||
id: "HSM_CORE_RES_SAMPLING_MULT_SCANLINE_DIR".to_string(),
|
id: "HSM_CORE_RES_SAMPLING_MULT_SCANLINE_DIR".into(),
|
||||||
description: " Scanline Dir Multiplier".to_string(),
|
description: " Scanline Dir Multiplier".to_string(),
|
||||||
initial: 100.0,
|
initial: 100.0,
|
||||||
minimum: 25.0,
|
minimum: 25.0,
|
||||||
|
|
|
@ -117,7 +117,7 @@ pub fn resolve_values(mut values: Vec<Value>) -> ShaderPreset {
|
||||||
id,
|
id,
|
||||||
name,
|
name,
|
||||||
alias: shader_values.iter().find_map(|f| match f {
|
alias: shader_values.iter().find_map(|f| match f {
|
||||||
Value::Alias(_, value) => Some(value.to_string()),
|
Value::Alias(_, value) => Some(value.clone()),
|
||||||
_ => None,
|
_ => None,
|
||||||
}),
|
}),
|
||||||
filter: shader_values
|
filter: shader_values
|
||||||
|
|
|
@ -10,7 +10,7 @@ use nom::IResult;
|
||||||
use num_traits::cast::ToPrimitive;
|
use num_traits::cast::ToPrimitive;
|
||||||
|
|
||||||
use crate::parse::token::do_lex;
|
use crate::parse::token::do_lex;
|
||||||
use librashader_common::map::FastHashMap;
|
use librashader_common::map::{FastHashMap, ShortString};
|
||||||
use librashader_common::{FilterMode, WrapMode};
|
use librashader_common::{FilterMode, WrapMode};
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use std::io::Read;
|
use std::io::Read;
|
||||||
|
@ -37,10 +37,10 @@ pub enum Value {
|
||||||
FloatFramebuffer(i32, bool),
|
FloatFramebuffer(i32, bool),
|
||||||
SrgbFramebuffer(i32, bool),
|
SrgbFramebuffer(i32, bool),
|
||||||
MipmapInput(i32, bool),
|
MipmapInput(i32, bool),
|
||||||
Alias(i32, String),
|
Alias(i32, ShortString),
|
||||||
Parameter(String, f32),
|
Parameter(ShortString, f32),
|
||||||
Texture {
|
Texture {
|
||||||
name: String,
|
name: ShortString,
|
||||||
filter_mode: FilterMode,
|
filter_mode: FilterMode,
|
||||||
wrap_mode: WrapMode,
|
wrap_mode: WrapMode,
|
||||||
mipmap: bool,
|
mipmap: bool,
|
||||||
|
@ -389,7 +389,7 @@ pub fn parse_values(
|
||||||
.map_or(None, |(_, v)| Some(FilterMode::from_str(&v.value).unwrap()));
|
.map_or(None, |(_, v)| Some(FilterMode::from_str(&v.value).unwrap()));
|
||||||
|
|
||||||
values.push(Value::Texture {
|
values.push(Value::Texture {
|
||||||
name: texture.to_string(),
|
name: ShortString::from(*texture.fragment()),
|
||||||
filter_mode: filter.unwrap_or(if linear {
|
filter_mode: filter.unwrap_or(if linear {
|
||||||
FilterMode::Linear
|
FilterMode::Linear
|
||||||
} else {
|
} else {
|
||||||
|
@ -412,7 +412,7 @@ pub fn parse_values(
|
||||||
// params (god help me), it would be pretty bad because we lose texture path fallback.
|
// params (god help me), it would be pretty bad because we lose texture path fallback.
|
||||||
.unwrap_or(0.0);
|
.unwrap_or(0.0);
|
||||||
values.push(Value::Parameter(
|
values.push(Value::Parameter(
|
||||||
token.key.fragment().to_string(),
|
ShortString::from(*token.key.fragment()),
|
||||||
param_val,
|
param_val,
|
||||||
));
|
));
|
||||||
continue;
|
continue;
|
||||||
|
@ -493,7 +493,10 @@ pub fn parse_values(
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Ok((_, idx)) = parse_indexed_key("alias", token.key) {
|
if let Ok((_, idx)) = parse_indexed_key("alias", token.key) {
|
||||||
values.push(Value::Alias(idx, token.value.to_string()));
|
values.push(Value::Alias(
|
||||||
|
idx,
|
||||||
|
ShortString::from(*token.value.fragment()),
|
||||||
|
));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if let Ok((_, idx)) = parse_indexed_key("scale_type", token.key) {
|
if let Ok((_, idx)) = parse_indexed_key("scale_type", token.key) {
|
||||||
|
@ -556,7 +559,7 @@ pub fn parse_values(
|
||||||
// handle undeclared parameters after parsing everything else as a last resort.
|
// handle undeclared parameters after parsing everything else as a last resort.
|
||||||
if let Ok(param_val) = from_float(token.value) {
|
if let Ok(param_val) = from_float(token.value) {
|
||||||
values.push(Value::Parameter(
|
values.push(Value::Parameter(
|
||||||
token.key.fragment().to_string(),
|
ShortString::from(*token.key.fragment()),
|
||||||
param_val,
|
param_val,
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
@ -605,7 +608,7 @@ pub fn parse_values(
|
||||||
});
|
});
|
||||||
|
|
||||||
values.push(Value::Texture {
|
values.push(Value::Texture {
|
||||||
name: texture.to_string(),
|
name: ShortString::from(*texture.fragment()),
|
||||||
filter_mode: if linear {
|
filter_mode: if linear {
|
||||||
FilterMode::Linear
|
FilterMode::Linear
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
use crate::error::ParsePresetError;
|
use crate::error::ParsePresetError;
|
||||||
|
use librashader_common::map::ShortString;
|
||||||
use librashader_common::{FilterMode, ImageFormat, WrapMode};
|
use librashader_common::{FilterMode, ImageFormat, WrapMode};
|
||||||
use std::ops::Mul;
|
use std::ops::Mul;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
|
@ -12,7 +13,7 @@ pub struct ShaderPassConfig {
|
||||||
/// The fully qualified path to the shader pass source file.
|
/// The fully qualified path to the shader pass source file.
|
||||||
pub name: PathBuf,
|
pub name: PathBuf,
|
||||||
/// The alias of the shader pass if available.
|
/// The alias of the shader pass if available.
|
||||||
pub alias: Option<String>,
|
pub alias: Option<ShortString>,
|
||||||
/// The filtering mode that this shader pass should expect.
|
/// The filtering mode that this shader pass should expect.
|
||||||
pub filter: FilterMode,
|
pub filter: FilterMode,
|
||||||
/// The texture addressing (wrap) mode that this shader pass expects.
|
/// The texture addressing (wrap) mode that this shader pass expects.
|
||||||
|
@ -151,7 +152,7 @@ pub struct Scale2D {
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct TextureConfig {
|
pub struct TextureConfig {
|
||||||
/// The name of the texture.
|
/// The name of the texture.
|
||||||
pub name: String,
|
pub name: ShortString,
|
||||||
/// The fully qualified path to the texture.
|
/// The fully qualified path to the texture.
|
||||||
pub path: PathBuf,
|
pub path: PathBuf,
|
||||||
/// The wrap (addressing) mode to use when sampling the texture.
|
/// The wrap (addressing) mode to use when sampling the texture.
|
||||||
|
@ -166,7 +167,7 @@ pub struct TextureConfig {
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct ParameterConfig {
|
pub struct ParameterConfig {
|
||||||
/// The name of the parameter.
|
/// The name of the parameter.
|
||||||
pub name: String,
|
pub name: ShortString,
|
||||||
/// The value it is set to in the preset.
|
/// The value it is set to in the preset.
|
||||||
pub value: f32,
|
pub value: f32,
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,7 +36,7 @@ mod test {
|
||||||
use crate::reflect::semantics::{Semantic, ShaderSemantics, UniformSemantic, UniqueSemantics};
|
use crate::reflect::semantics::{Semantic, ShaderSemantics, UniformSemantic, UniqueSemantics};
|
||||||
use crate::reflect::ReflectShader;
|
use crate::reflect::ReflectShader;
|
||||||
use bitflags::Flags;
|
use bitflags::Flags;
|
||||||
use librashader_common::map::FastHashMap;
|
use librashader_common::map::{FastHashMap, ShortString};
|
||||||
use librashader_preprocess::ShaderSource;
|
use librashader_preprocess::ShaderSource;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
@ -45,7 +45,7 @@ mod test {
|
||||||
// let result = ShaderSource::load("../test/shaders_slang/crt/shaders/crt-royale/src/crt-royale-scanlines-horizontal-apply-mask.slang").unwrap();
|
// let result = ShaderSource::load("../test/shaders_slang/crt/shaders/crt-royale/src/crt-royale-scanlines-horizontal-apply-mask.slang").unwrap();
|
||||||
let result = ShaderSource::load("../test/basic.slang").unwrap();
|
let result = ShaderSource::load("../test/basic.slang").unwrap();
|
||||||
|
|
||||||
let mut uniform_semantics: FastHashMap<String, UniformSemantic> = Default::default();
|
let mut uniform_semantics: FastHashMap<ShortString, UniformSemantic> = Default::default();
|
||||||
|
|
||||||
for (_index, param) in result.parameters.iter().enumerate() {
|
for (_index, param) in result.parameters.iter().enumerate() {
|
||||||
uniform_semantics.insert(
|
uniform_semantics.insert(
|
||||||
|
|
|
@ -19,11 +19,11 @@ use crate::reflect::{align_uniform_size, ReflectShader};
|
||||||
use std::fmt::Debug;
|
use std::fmt::Debug;
|
||||||
use std::ops::Deref;
|
use std::ops::Deref;
|
||||||
|
|
||||||
|
use crate::reflect::helper::{SemanticErrorBlame, TextureData, UboData};
|
||||||
|
use librashader_common::map::ShortString;
|
||||||
use spirv_cross::spirv::{Ast, Decoration, Module, Resource, ShaderResources, Type};
|
use spirv_cross::spirv::{Ast, Decoration, Module, Resource, ShaderResources, Type};
|
||||||
use spirv_cross::ErrorCode;
|
use spirv_cross::ErrorCode;
|
||||||
|
|
||||||
use crate::reflect::helper::{SemanticErrorBlame, TextureData, UboData};
|
|
||||||
|
|
||||||
/// Reflect shaders under SPIRV-Cross semantics.
|
/// Reflect shaders under SPIRV-Cross semantics.
|
||||||
///
|
///
|
||||||
/// SPIRV-Cross supports GLSL, HLSL, SPIR-V, and MSL targets.
|
/// SPIRV-Cross supports GLSL, HLSL, SPIR-V, and MSL targets.
|
||||||
|
@ -342,7 +342,7 @@ where
|
||||||
match ¶meter.semantics {
|
match ¶meter.semantics {
|
||||||
UniqueSemantics::FloatParameter => {
|
UniqueSemantics::FloatParameter => {
|
||||||
let offset = range.offset;
|
let offset = range.offset;
|
||||||
if let Some(meta) = meta.parameter_meta.get_mut(&name) {
|
if let Some(meta) = meta.parameter_meta.get_mut::<str>(&name.as_ref()) {
|
||||||
if let Some(expected) = meta.offset.offset(offset_type)
|
if let Some(expected) = meta.offset.offset(offset_type)
|
||||||
&& expected != offset
|
&& expected != offset
|
||||||
{
|
{
|
||||||
|
@ -365,6 +365,7 @@ where
|
||||||
|
|
||||||
*meta.offset.offset_mut(offset_type) = Some(offset);
|
*meta.offset.offset_mut(offset_type) = Some(offset);
|
||||||
} else {
|
} else {
|
||||||
|
let name = ShortString::from(name);
|
||||||
meta.parameter_meta.insert(
|
meta.parameter_meta.insert(
|
||||||
name.clone(),
|
name.clone(),
|
||||||
VariableMeta {
|
VariableMeta {
|
||||||
|
@ -403,7 +404,7 @@ where
|
||||||
meta.unique_meta.insert(
|
meta.unique_meta.insert(
|
||||||
*semantics,
|
*semantics,
|
||||||
VariableMeta {
|
VariableMeta {
|
||||||
id: name,
|
id: name.into(),
|
||||||
offset: MemberOffset::new(offset, offset_type),
|
offset: MemberOffset::new(offset, offset_type),
|
||||||
size: typeinfo.size * typeinfo.columns,
|
size: typeinfo.size * typeinfo.columns,
|
||||||
},
|
},
|
||||||
|
@ -454,7 +455,7 @@ where
|
||||||
SemanticErrorBlame::Vertex => BindingStage::VERTEX,
|
SemanticErrorBlame::Vertex => BindingStage::VERTEX,
|
||||||
SemanticErrorBlame::Fragment => BindingStage::FRAGMENT,
|
SemanticErrorBlame::Fragment => BindingStage::FRAGMENT,
|
||||||
},
|
},
|
||||||
id: name,
|
id: ShortString::from(name),
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -753,7 +754,7 @@ mod test {
|
||||||
use crate::back::{CompileShader, ShaderCompilerOutput};
|
use crate::back::{CompileShader, ShaderCompilerOutput};
|
||||||
use crate::front::{Glslang, ShaderInputCompiler};
|
use crate::front::{Glslang, ShaderInputCompiler};
|
||||||
use crate::reflect::semantics::{Semantic, ShaderSemantics, UniformSemantic, UniqueSemantics};
|
use crate::reflect::semantics::{Semantic, ShaderSemantics, UniformSemantic, UniqueSemantics};
|
||||||
use librashader_common::map::FastHashMap;
|
use librashader_common::map::{FastHashMap, ShortString};
|
||||||
use librashader_preprocess::ShaderSource;
|
use librashader_preprocess::ShaderSource;
|
||||||
use spirv_cross::glsl::{CompilerOptions, Version};
|
use spirv_cross::glsl::{CompilerOptions, Version};
|
||||||
use spirv_cross::hlsl::ShaderModel;
|
use spirv_cross::hlsl::ShaderModel;
|
||||||
|
@ -762,7 +763,7 @@ mod test {
|
||||||
#[test]
|
#[test]
|
||||||
pub fn test_into() {
|
pub fn test_into() {
|
||||||
let result = ShaderSource::load("../test/basic.slang").unwrap();
|
let result = ShaderSource::load("../test/basic.slang").unwrap();
|
||||||
let mut uniform_semantics: FastHashMap<String, UniformSemantic> = Default::default();
|
let mut uniform_semantics: FastHashMap<ShortString, UniformSemantic> = Default::default();
|
||||||
|
|
||||||
for (_index, param) in result.parameters.iter().enumerate() {
|
for (_index, param) in result.parameters.iter().enumerate() {
|
||||||
uniform_semantics.insert(
|
uniform_semantics.insert(
|
||||||
|
|
|
@ -110,7 +110,7 @@ mod test {
|
||||||
use crate::reflect::semantics::{Semantic, ShaderSemantics, UniformSemantic, UniqueSemantics};
|
use crate::reflect::semantics::{Semantic, ShaderSemantics, UniformSemantic, UniqueSemantics};
|
||||||
use crate::reflect::ReflectShader;
|
use crate::reflect::ReflectShader;
|
||||||
use bitflags::Flags;
|
use bitflags::Flags;
|
||||||
use librashader_common::map::FastHashMap;
|
use librashader_common::map::{FastHashMap, ShortString};
|
||||||
use librashader_preprocess::ShaderSource;
|
use librashader_preprocess::ShaderSource;
|
||||||
use rustc_hash::FxHashMap;
|
use rustc_hash::FxHashMap;
|
||||||
use spirv_cross::msl;
|
use spirv_cross::msl;
|
||||||
|
@ -122,7 +122,7 @@ mod test {
|
||||||
// let result = ShaderSource::load("../test/shaders_slang/crt/shaders/crt-royale/src/crt-royale-scanlines-horizontal-apply-mask.slang").unwrap();
|
// let result = ShaderSource::load("../test/shaders_slang/crt/shaders/crt-royale/src/crt-royale-scanlines-horizontal-apply-mask.slang").unwrap();
|
||||||
let result = ShaderSource::load("../test/basic.slang").unwrap();
|
let result = ShaderSource::load("../test/basic.slang").unwrap();
|
||||||
|
|
||||||
let mut uniform_semantics: FastHashMap<String, UniformSemantic> = Default::default();
|
let mut uniform_semantics: FastHashMap<ShortString, UniformSemantic> = Default::default();
|
||||||
|
|
||||||
for (_index, param) in result.parameters.iter().enumerate() {
|
for (_index, param) in result.parameters.iter().enumerate() {
|
||||||
uniform_semantics.insert(
|
uniform_semantics.insert(
|
||||||
|
|
|
@ -10,16 +10,8 @@ pub mod wgsl;
|
||||||
use crate::error::{SemanticsErrorKind, ShaderReflectError};
|
use crate::error::{SemanticsErrorKind, ShaderReflectError};
|
||||||
use std::fmt::Debug;
|
use std::fmt::Debug;
|
||||||
|
|
||||||
use crate::front::SpirvCompilation;
|
|
||||||
use naga::{
|
|
||||||
AddressSpace, Binding, Expression, GlobalVariable, Handle, ImageClass, Module, ResourceBinding,
|
|
||||||
Scalar, ScalarKind, StructMember, TypeInner, VectorSize,
|
|
||||||
};
|
|
||||||
use rspirv::binary::Assemble;
|
|
||||||
use rspirv::dr::Builder;
|
|
||||||
use rustc_hash::FxHashSet;
|
|
||||||
|
|
||||||
use crate::front::spirv_passes::lower_samplers;
|
use crate::front::spirv_passes::lower_samplers;
|
||||||
|
use crate::front::SpirvCompilation;
|
||||||
use crate::reflect::helper::{SemanticErrorBlame, TextureData, UboData};
|
use crate::reflect::helper::{SemanticErrorBlame, TextureData, UboData};
|
||||||
use crate::reflect::semantics::{
|
use crate::reflect::semantics::{
|
||||||
BindingMeta, BindingStage, BufferReflection, MemberOffset, ShaderSemantics, TextureBinding,
|
BindingMeta, BindingStage, BufferReflection, MemberOffset, ShaderSemantics, TextureBinding,
|
||||||
|
@ -28,6 +20,14 @@ use crate::reflect::semantics::{
|
||||||
MAX_PUSH_BUFFER_SIZE,
|
MAX_PUSH_BUFFER_SIZE,
|
||||||
};
|
};
|
||||||
use crate::reflect::{align_uniform_size, ReflectShader, ShaderReflection};
|
use crate::reflect::{align_uniform_size, ReflectShader, ShaderReflection};
|
||||||
|
use librashader_common::map::ShortString;
|
||||||
|
use naga::{
|
||||||
|
AddressSpace, Binding, Expression, GlobalVariable, Handle, ImageClass, Module, ResourceBinding,
|
||||||
|
Scalar, ScalarKind, StructMember, TypeInner, VectorSize,
|
||||||
|
};
|
||||||
|
use rspirv::binary::Assemble;
|
||||||
|
use rspirv::dr::Builder;
|
||||||
|
use rustc_hash::FxHashSet;
|
||||||
|
|
||||||
/// Reflect under Naga semantics
|
/// Reflect under Naga semantics
|
||||||
///
|
///
|
||||||
|
@ -678,7 +678,7 @@ impl NagaReflect {
|
||||||
match ¶meter.semantics {
|
match ¶meter.semantics {
|
||||||
UniqueSemantics::FloatParameter => {
|
UniqueSemantics::FloatParameter => {
|
||||||
let offset = member.offset;
|
let offset = member.offset;
|
||||||
if let Some(meta) = meta.parameter_meta.get_mut(&name) {
|
if let Some(meta) = meta.parameter_meta.get_mut::<str>(name.as_ref()) {
|
||||||
if let Some(expected) = meta.offset.offset(offset_type)
|
if let Some(expected) = meta.offset.offset(offset_type)
|
||||||
&& expected != offset as usize
|
&& expected != offset as usize
|
||||||
{
|
{
|
||||||
|
@ -701,6 +701,7 @@ impl NagaReflect {
|
||||||
|
|
||||||
*meta.offset.offset_mut(offset_type) = Some(offset as usize);
|
*meta.offset.offset_mut(offset_type) = Some(offset as usize);
|
||||||
} else {
|
} else {
|
||||||
|
let name = ShortString::from(name);
|
||||||
meta.parameter_meta.insert(
|
meta.parameter_meta.insert(
|
||||||
name.clone(),
|
name.clone(),
|
||||||
VariableMeta {
|
VariableMeta {
|
||||||
|
@ -739,7 +740,7 @@ impl NagaReflect {
|
||||||
meta.unique_meta.insert(
|
meta.unique_meta.insert(
|
||||||
*semantics,
|
*semantics,
|
||||||
VariableMeta {
|
VariableMeta {
|
||||||
id: name,
|
id: ShortString::from(name),
|
||||||
offset: MemberOffset::new(offset as usize, offset_type),
|
offset: MemberOffset::new(offset as usize, offset_type),
|
||||||
size: typeinfo.size * typeinfo.columns,
|
size: typeinfo.size * typeinfo.columns,
|
||||||
},
|
},
|
||||||
|
@ -790,7 +791,7 @@ impl NagaReflect {
|
||||||
SemanticErrorBlame::Vertex => BindingStage::VERTEX,
|
SemanticErrorBlame::Vertex => BindingStage::VERTEX,
|
||||||
SemanticErrorBlame::Fragment => BindingStage::FRAGMENT,
|
SemanticErrorBlame::Fragment => BindingStage::FRAGMENT,
|
||||||
},
|
},
|
||||||
id: name,
|
id: ShortString::from(name),
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -166,7 +166,7 @@ mod test {
|
||||||
use crate::reflect::semantics::{Semantic, ShaderSemantics, UniformSemantic, UniqueSemantics};
|
use crate::reflect::semantics::{Semantic, ShaderSemantics, UniformSemantic, UniqueSemantics};
|
||||||
use crate::reflect::ReflectShader;
|
use crate::reflect::ReflectShader;
|
||||||
use bitflags::Flags;
|
use bitflags::Flags;
|
||||||
use librashader_common::map::FastHashMap;
|
use librashader_common::map::{FastHashMap, ShortString};
|
||||||
use librashader_preprocess::ShaderSource;
|
use librashader_preprocess::ShaderSource;
|
||||||
use spirv_cross::msl;
|
use spirv_cross::msl;
|
||||||
|
|
||||||
|
@ -174,7 +174,7 @@ mod test {
|
||||||
pub fn test_into() {
|
pub fn test_into() {
|
||||||
let result = ShaderSource::load("../test/basic.slang").unwrap();
|
let result = ShaderSource::load("../test/basic.slang").unwrap();
|
||||||
|
|
||||||
let mut uniform_semantics: FastHashMap<String, UniformSemantic> = Default::default();
|
let mut uniform_semantics: FastHashMap<ShortString, UniformSemantic> = Default::default();
|
||||||
|
|
||||||
for (_index, param) in result.parameters.iter().enumerate() {
|
for (_index, param) in result.parameters.iter().enumerate() {
|
||||||
uniform_semantics.insert(
|
uniform_semantics.insert(
|
||||||
|
|
|
@ -5,7 +5,7 @@ use crate::front::{ShaderInputCompiler, ShaderReflectObject};
|
||||||
use crate::reflect::semantics::{
|
use crate::reflect::semantics::{
|
||||||
Semantic, ShaderSemantics, TextureSemantics, UniformSemantic, UniqueSemantics,
|
Semantic, ShaderSemantics, TextureSemantics, UniformSemantic, UniqueSemantics,
|
||||||
};
|
};
|
||||||
use librashader_common::map::FastHashMap;
|
use librashader_common::map::{FastHashMap, ShortString};
|
||||||
use librashader_preprocess::{PreprocessError, ShaderSource};
|
use librashader_preprocess::{PreprocessError, ShaderSource};
|
||||||
use librashader_presets::{ShaderPassConfig, TextureConfig};
|
use librashader_presets::{ShaderPassConfig, TextureConfig};
|
||||||
|
|
||||||
|
@ -80,8 +80,9 @@ where
|
||||||
E: From<ShaderReflectError>,
|
E: From<ShaderReflectError>,
|
||||||
E: From<ShaderCompileError>,
|
E: From<ShaderCompileError>,
|
||||||
{
|
{
|
||||||
let mut uniform_semantics: FastHashMap<String, UniformSemantic> = Default::default();
|
let mut uniform_semantics: FastHashMap<ShortString, UniformSemantic> = Default::default();
|
||||||
let mut texture_semantics: FastHashMap<String, Semantic<TextureSemantics>> = Default::default();
|
let mut texture_semantics: FastHashMap<ShortString, Semantic<TextureSemantics>> =
|
||||||
|
Default::default();
|
||||||
|
|
||||||
let passes = passes
|
let passes = passes
|
||||||
.into_iter()
|
.into_iter()
|
||||||
|
@ -119,8 +120,8 @@ where
|
||||||
|
|
||||||
/// Insert the available semantics for the input pass config into the provided semantic maps.
|
/// Insert the available semantics for the input pass config into the provided semantic maps.
|
||||||
fn insert_pass_semantics(
|
fn insert_pass_semantics(
|
||||||
uniform_semantics: &mut FastHashMap<String, UniformSemantic>,
|
uniform_semantics: &mut FastHashMap<ShortString, UniformSemantic>,
|
||||||
texture_semantics: &mut FastHashMap<String, Semantic<TextureSemantics>>,
|
texture_semantics: &mut FastHashMap<ShortString, Semantic<TextureSemantics>>,
|
||||||
config: &ShaderPassConfig,
|
config: &ShaderPassConfig,
|
||||||
) {
|
) {
|
||||||
let Some(alias) = &config.alias else {
|
let Some(alias) = &config.alias else {
|
||||||
|
@ -142,24 +143,32 @@ fn insert_pass_semantics(
|
||||||
index,
|
index,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
let mut alias_size = alias.clone();
|
||||||
|
alias_size.push_str("Size");
|
||||||
uniform_semantics.insert(
|
uniform_semantics.insert(
|
||||||
format!("{alias}Size"),
|
alias_size,
|
||||||
UniformSemantic::Texture(Semantic {
|
UniformSemantic::Texture(Semantic {
|
||||||
semantics: TextureSemantics::PassOutput,
|
semantics: TextureSemantics::PassOutput,
|
||||||
index,
|
index,
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
let mut alias_feedback = alias.clone();
|
||||||
|
alias_feedback.push_str("Feedback");
|
||||||
// PassFeedback
|
// PassFeedback
|
||||||
texture_semantics.insert(
|
texture_semantics.insert(
|
||||||
format!("{alias}Feedback"),
|
alias_feedback,
|
||||||
Semantic {
|
Semantic {
|
||||||
semantics: TextureSemantics::PassFeedback,
|
semantics: TextureSemantics::PassFeedback,
|
||||||
index,
|
index,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
let mut alias_feedback_size = alias.clone();
|
||||||
|
alias_feedback_size.push_str("FeedbackSize");
|
||||||
uniform_semantics.insert(
|
uniform_semantics.insert(
|
||||||
format!("{alias}FeedbackSize"),
|
alias_feedback_size,
|
||||||
UniformSemantic::Texture(Semantic {
|
UniformSemantic::Texture(Semantic {
|
||||||
semantics: TextureSemantics::PassFeedback,
|
semantics: TextureSemantics::PassFeedback,
|
||||||
index,
|
index,
|
||||||
|
@ -170,10 +179,13 @@ fn insert_pass_semantics(
|
||||||
/// Insert the available semantics for the input texture config into the provided semantic maps.
|
/// Insert the available semantics for the input texture config into the provided semantic maps.
|
||||||
fn insert_lut_semantics(
|
fn insert_lut_semantics(
|
||||||
textures: &[TextureConfig],
|
textures: &[TextureConfig],
|
||||||
uniform_semantics: &mut FastHashMap<String, UniformSemantic>,
|
uniform_semantics: &mut FastHashMap<ShortString, UniformSemantic>,
|
||||||
texture_semantics: &mut FastHashMap<String, Semantic<TextureSemantics>>,
|
texture_semantics: &mut FastHashMap<ShortString, Semantic<TextureSemantics>>,
|
||||||
) {
|
) {
|
||||||
for (index, texture) in textures.iter().enumerate() {
|
for (index, texture) in textures.iter().enumerate() {
|
||||||
|
let mut size_semantic = texture.name.clone();
|
||||||
|
size_semantic.push_str("Size");
|
||||||
|
|
||||||
texture_semantics.insert(
|
texture_semantics.insert(
|
||||||
texture.name.clone(),
|
texture.name.clone(),
|
||||||
Semantic {
|
Semantic {
|
||||||
|
@ -183,7 +195,7 @@ fn insert_lut_semantics(
|
||||||
);
|
);
|
||||||
|
|
||||||
uniform_semantics.insert(
|
uniform_semantics.insert(
|
||||||
format!("{}Size", texture.name),
|
size_semantic,
|
||||||
UniformSemantic::Texture(Semantic {
|
UniformSemantic::Texture(Semantic {
|
||||||
semantics: TextureSemantics::User,
|
semantics: TextureSemantics::User,
|
||||||
index,
|
index,
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
use bitflags::bitflags;
|
use bitflags::bitflags;
|
||||||
use librashader_common::map::FastHashMap;
|
use librashader_common::map::{FastHashMap, ShortString};
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
|
|
||||||
/// The maximum number of bindings allowed in a shader.
|
/// The maximum number of bindings allowed in a shader.
|
||||||
|
@ -255,7 +255,7 @@ pub struct VariableMeta {
|
||||||
/// The size of the uniform.
|
/// The size of the uniform.
|
||||||
pub size: u32,
|
pub size: u32,
|
||||||
/// The name of the uniform.
|
/// The name of the uniform.
|
||||||
pub id: String,
|
pub id: ShortString,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Reflection information about a texture size uniform variable.
|
/// Reflection information about a texture size uniform variable.
|
||||||
|
@ -267,7 +267,7 @@ pub struct TextureSizeMeta {
|
||||||
/// The mask indicating for which stages the texture size uniform should be bound.
|
/// The mask indicating for which stages the texture size uniform should be bound.
|
||||||
pub stage_mask: BindingStage,
|
pub stage_mask: BindingStage,
|
||||||
/// The name of the uniform.
|
/// The name of the uniform.
|
||||||
pub id: String,
|
pub id: ShortString,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Reflection information about texture samplers.
|
/// Reflection information about texture samplers.
|
||||||
|
@ -321,7 +321,7 @@ pub trait TextureSemanticMap {
|
||||||
fn get_texture_semantic(&self, name: &str) -> Option<Semantic<TextureSemantics>>;
|
fn get_texture_semantic(&self, name: &str) -> Option<Semantic<TextureSemantics>>;
|
||||||
}
|
}
|
||||||
|
|
||||||
impl TextureSemanticMap for FastHashMap<String, UniformSemantic> {
|
impl TextureSemanticMap for FastHashMap<ShortString, UniformSemantic> {
|
||||||
fn get_texture_semantic(&self, name: &str) -> Option<Semantic<TextureSemantics>> {
|
fn get_texture_semantic(&self, name: &str) -> Option<Semantic<TextureSemantics>> {
|
||||||
match self.get(name) {
|
match self.get(name) {
|
||||||
None => {
|
None => {
|
||||||
|
@ -353,7 +353,7 @@ impl TextureSemanticMap for FastHashMap<String, UniformSemantic> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl TextureSemanticMap for FastHashMap<String, Semantic<TextureSemantics>> {
|
impl TextureSemanticMap for FastHashMap<ShortString, Semantic<TextureSemantics>> {
|
||||||
fn get_texture_semantic(&self, name: &str) -> Option<Semantic<TextureSemantics>> {
|
fn get_texture_semantic(&self, name: &str) -> Option<Semantic<TextureSemantics>> {
|
||||||
match self.get(name) {
|
match self.get(name) {
|
||||||
None => {
|
None => {
|
||||||
|
@ -390,7 +390,7 @@ pub trait UniqueSemanticMap {
|
||||||
fn get_unique_semantic(&self, name: &str) -> Option<Semantic<UniqueSemantics, ()>>;
|
fn get_unique_semantic(&self, name: &str) -> Option<Semantic<UniqueSemantics, ()>>;
|
||||||
}
|
}
|
||||||
|
|
||||||
impl UniqueSemanticMap for FastHashMap<String, UniformSemantic> {
|
impl UniqueSemanticMap for FastHashMap<ShortString, UniformSemantic> {
|
||||||
fn get_unique_semantic(&self, name: &str) -> Option<Semantic<UniqueSemantics, ()>> {
|
fn get_unique_semantic(&self, name: &str) -> Option<Semantic<UniqueSemantics, ()>> {
|
||||||
match self.get(name) {
|
match self.get(name) {
|
||||||
// existing uniforms in the semantic map have priority
|
// existing uniforms in the semantic map have priority
|
||||||
|
@ -448,9 +448,9 @@ pub enum UniformSemantic {
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct ShaderSemantics {
|
pub struct ShaderSemantics {
|
||||||
/// A map of uniform names to filter chain semantics.
|
/// A map of uniform names to filter chain semantics.
|
||||||
pub uniform_semantics: FastHashMap<String, UniformSemantic>,
|
pub uniform_semantics: FastHashMap<ShortString, UniformSemantic>,
|
||||||
/// A map of texture names to filter chain semantics.
|
/// A map of texture names to filter chain semantics.
|
||||||
pub texture_semantics: FastHashMap<String, Semantic<TextureSemantics>>,
|
pub texture_semantics: FastHashMap<ShortString, Semantic<TextureSemantics>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The binding of a uniform after the shader has been linked.
|
/// The binding of a uniform after the shader has been linked.
|
||||||
|
@ -460,7 +460,7 @@ pub struct ShaderSemantics {
|
||||||
#[derive(Debug, Clone, Eq, Hash, PartialEq)]
|
#[derive(Debug, Clone, Eq, Hash, PartialEq)]
|
||||||
pub enum UniformBinding {
|
pub enum UniformBinding {
|
||||||
/// A user parameter (`float`) binding.
|
/// A user parameter (`float`) binding.
|
||||||
Parameter(String),
|
Parameter(ShortString),
|
||||||
/// A known semantic binding.
|
/// A known semantic binding.
|
||||||
SemanticVariable(UniqueSemantics),
|
SemanticVariable(UniqueSemantics),
|
||||||
/// A texture size (`float4`) binding.
|
/// A texture size (`float4`) binding.
|
||||||
|
@ -483,7 +483,7 @@ impl From<Semantic<TextureSemantics>> for UniformBinding {
|
||||||
#[derive(Debug, Default)]
|
#[derive(Debug, Default)]
|
||||||
pub struct BindingMeta {
|
pub struct BindingMeta {
|
||||||
/// A map of parameter names to uniform binding metadata.
|
/// A map of parameter names to uniform binding metadata.
|
||||||
pub parameter_meta: FastHashMap<String, VariableMeta>,
|
pub parameter_meta: FastHashMap<ShortString, VariableMeta>,
|
||||||
/// A map of unique semantics to uniform binding metadata.
|
/// A map of unique semantics to uniform binding metadata.
|
||||||
pub unique_meta: FastHashMap<UniqueSemantics, VariableMeta>,
|
pub unique_meta: FastHashMap<UniqueSemantics, VariableMeta>,
|
||||||
/// A map of texture semantics to texture binding points.
|
/// A map of texture semantics to texture binding points.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use crate::parameters::RuntimeParameters;
|
use crate::parameters::RuntimeParameters;
|
||||||
use crate::uniforms::{BindUniform, NoUniformBinder, UniformStorage};
|
use crate::uniforms::{BindUniform, NoUniformBinder, UniformStorage};
|
||||||
use librashader_common::map::FastHashMap;
|
use librashader_common::map::{FastHashMap, ShortString};
|
||||||
use librashader_common::Size;
|
use librashader_common::Size;
|
||||||
use librashader_preprocess::ShaderParameter;
|
use librashader_preprocess::ShaderParameter;
|
||||||
use librashader_reflect::reflect::semantics::{
|
use librashader_reflect::reflect::semantics::{
|
||||||
|
@ -120,7 +120,7 @@ where
|
||||||
pass_feedback: impl Iterator<Item = Option<impl AsRef<Self::InputTexture>>>,
|
pass_feedback: impl Iterator<Item = Option<impl AsRef<Self::InputTexture>>>,
|
||||||
original_history: impl Iterator<Item = Option<impl AsRef<Self::InputTexture>>>,
|
original_history: impl Iterator<Item = Option<impl AsRef<Self::InputTexture>>>,
|
||||||
lookup_textures: impl Iterator<Item = (usize, impl AsRef<Self::InputTexture>)>,
|
lookup_textures: impl Iterator<Item = (usize, impl AsRef<Self::InputTexture>)>,
|
||||||
parameter_defaults: &FastHashMap<String, ShaderParameter>,
|
parameter_defaults: &FastHashMap<ShortString, ShaderParameter>,
|
||||||
runtime_parameters: &RuntimeParameters,
|
runtime_parameters: &RuntimeParameters,
|
||||||
) {
|
) {
|
||||||
let runtime_parameters = runtime_parameters.parameters.load();
|
let runtime_parameters = runtime_parameters.parameters.load();
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
use std::ops::Deref;
|
|
||||||
use arc_swap::ArcSwap;
|
use arc_swap::ArcSwap;
|
||||||
use librashader_common::map::FastHashMap;
|
use librashader_common::map::{FastHashMap, ShortString};
|
||||||
use librashader_presets::ParameterConfig;
|
use librashader_presets::ParameterConfig;
|
||||||
use std::sync::atomic::{AtomicUsize, Ordering};
|
use std::sync::atomic::{AtomicUsize, Ordering};
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
@ -17,7 +16,7 @@ pub trait FilterChainParameters {
|
||||||
/// any thread.
|
/// any thread.
|
||||||
pub struct RuntimeParameters {
|
pub struct RuntimeParameters {
|
||||||
passes_enabled: AtomicUsize,
|
passes_enabled: AtomicUsize,
|
||||||
pub(crate) parameters: ArcSwap<FastHashMap<String, f32>>,
|
pub(crate) parameters: ArcSwap<FastHashMap<ShortString, f32>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl RuntimeParameters {
|
impl RuntimeParameters {
|
||||||
|
@ -59,7 +58,7 @@ impl RuntimeParameters {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Get a reference to the runtime parameters.
|
/// Get a reference to the runtime parameters.
|
||||||
pub fn parameters(&self) -> Arc<FastHashMap<String, f32>> {
|
pub fn parameters(&self) -> Arc<FastHashMap<ShortString, f32>> {
|
||||||
self.parameters.load_full()
|
self.parameters.load_full()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue