[INFO] fetching crate oak-wgsl 0.0.11... [INFO] testing oak-wgsl-0.0.11 against try#dec9417b8611e34e787a3e4c37686b5131f9e5c5 for pr-154210-2 [INFO] extracting crate oak-wgsl 0.0.11 into /workspace/builds/worker-6-tc2/source [INFO] started tweaking crates.io crate oak-wgsl 0.0.11 [INFO] removed 0 missing tests [INFO] finished tweaking crates.io crate oak-wgsl 0.0.11 [INFO] tweaked toml for crates.io crate oak-wgsl 0.0.11 written to /workspace/builds/worker-6-tc2/source/Cargo.toml [INFO] validating manifest of crates.io crate oak-wgsl 0.0.11 on toolchain dec9417b8611e34e787a3e4c37686b5131f9e5c5 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate oak-wgsl 0.0.11 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] f00f35de97bd249a5fe87310f08f9e9503cfb479cf51b4e171b60e6cb31a1500 [INFO] running `Command { std: "docker" "start" "-a" "f00f35de97bd249a5fe87310f08f9e9503cfb479cf51b4e171b60e6cb31a1500", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "f00f35de97bd249a5fe87310f08f9e9503cfb479cf51b4e171b60e6cb31a1500", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f00f35de97bd249a5fe87310f08f9e9503cfb479cf51b4e171b60e6cb31a1500", kill_on_drop: false }` [INFO] [stdout] f00f35de97bd249a5fe87310f08f9e9503cfb479cf51b4e171b60e6cb31a1500 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 3a86f3b7d2fb03758e19655b200edf84be5c7232d2991830edaaa649dd085045 [INFO] running `Command { std: "docker" "start" "-a" "3a86f3b7d2fb03758e19655b200edf84be5c7232d2991830edaaa649dd085045", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.182 [INFO] [stderr] Compiling zerocopy v0.8.40 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling rand_core v0.9.5 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling ppv-lite86 v0.2.21 [INFO] [stderr] Compiling rand_chacha v0.9.0 [INFO] [stderr] Compiling rand v0.9.2 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling twox-hash v2.1.2 [INFO] [stderr] Compiling triomphe v0.1.15 [INFO] [stderr] Compiling oak-core v0.0.11 [INFO] [stderr] Compiling oak-wgsl v0.0.11 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused imports: `TextEdit` and `TokenType` [INFO] [stdout] --> src/parser/mod.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | TokenType, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 7 | parser::{Parser, ParserState, parse_with_lexer}, [INFO] [stdout] 8 | source::{Source, TextEdit}, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `config` is never read [INFO] [stdout] --> src/lexer/mod.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 12 | pub struct WgslLexer<'config> { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] 13 | config: &'config WgslLanguage, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `WgslLexer` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 17.79s [INFO] running `Command { std: "docker" "inspect" "3a86f3b7d2fb03758e19655b200edf84be5c7232d2991830edaaa649dd085045", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "3a86f3b7d2fb03758e19655b200edf84be5c7232d2991830edaaa649dd085045", kill_on_drop: false }` [INFO] [stdout] 3a86f3b7d2fb03758e19655b200edf84be5c7232d2991830edaaa649dd085045 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 7939d86118ae2fb37bd587fbcbd102574634534a15e8663ebeea396428b7bc8e [INFO] running `Command { std: "docker" "start" "-a" "7939d86118ae2fb37bd587fbcbd102574634534a15e8663ebeea396428b7bc8e", kill_on_drop: false }` [INFO] [stderr] Compiling memchr v2.8.0 [INFO] [stdout] warning: unused imports: `TextEdit` and `TokenType` [INFO] [stdout] --> src/parser/mod.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | TokenType, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 7 | parser::{Parser, ParserState, parse_with_lexer}, [INFO] [stdout] 8 | source::{Source, TextEdit}, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `config` is never read [INFO] [stdout] --> src/lexer/mod.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 12 | pub struct WgslLexer<'config> { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] 13 | config: &'config WgslLanguage, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `WgslLexer` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling oak-testing v0.0.11 [INFO] [stderr] Compiling oak-wgsl v0.0.11 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused imports: `TextEdit` and `TokenType` [INFO] [stdout] --> src/parser/mod.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | TokenType, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 7 | parser::{Parser, ParserState, parse_with_lexer}, [INFO] [stdout] 8 | source::{Source, TextEdit}, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `config` is never read [INFO] [stdout] --> src/lexer/mod.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 12 | pub struct WgslLexer<'config> { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] 13 | config: &'config WgslLanguage, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `WgslLexer` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 3.65s [INFO] running `Command { std: "docker" "inspect" "7939d86118ae2fb37bd587fbcbd102574634534a15e8663ebeea396428b7bc8e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "7939d86118ae2fb37bd587fbcbd102574634534a15e8663ebeea396428b7bc8e", kill_on_drop: false }` [INFO] [stdout] 7939d86118ae2fb37bd587fbcbd102574634534a15e8663ebeea396428b7bc8e [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 44c3a374bd7c77a272f3cdc27d59c2e258cdec42aea6293327f80f6e2b9d9128 [INFO] running `Command { std: "docker" "start" "-a" "44c3a374bd7c77a272f3cdc27d59c2e258cdec42aea6293327f80f6e2b9d9128", kill_on_drop: false }` [INFO] [stderr] warning: unused imports: `TextEdit` and `TokenType` [INFO] [stderr] --> src/parser/mod.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | TokenType, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] 7 | parser::{Parser, ParserState, parse_with_lexer}, [INFO] [stderr] 8 | source::{Source, TextEdit}, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: field `config` is never read [INFO] [stderr] --> src/lexer/mod.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 12 | pub struct WgslLexer<'config> { [INFO] [stderr] | --------- field in this struct [INFO] [stderr] 13 | config: &'config WgslLanguage, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `WgslLexer` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stderr] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: `oak-wgsl` (lib) generated 2 warnings (run `cargo fix --lib -p oak-wgsl` to apply 1 suggestion) [INFO] [stderr] warning: `oak-wgsl` (lib test) generated 2 warnings (2 duplicates) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.07s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/oak_wgsl-af4fa1c2b4643b90) [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running tests/main.rs (/opt/rustwide/target/debug/deps/main-eeab3e382ed10a13) [INFO] [stdout] [INFO] [stdout] running 3 tests [INFO] [stdout] test ready ... ok [INFO] [stdout] test parser::test_parser_basic ... ok [INFO] [stdout] test lexer::test_wgsl_lexer ... FAILED [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] [INFO] [stdout] ---- lexer::test_wgsl_lexer stdout ---- [INFO] [stdout] Testing file: /opt/rustwide/workdir/tests/lexer/basic.wgsl [INFO] [stdout] Error: TestFailure { path: "/opt/rustwide/workdir/tests/lexer/basic.wgsl", expected: "LexerTestExpected {\n success: true,\n count: 100,\n tokens: [\n TokenData {\n kind: \"StructKw\",\n text: \"struct\",\n start: 169,\n end: 175,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"VertexInput\",\n start: 176,\n end: 187,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 188,\n end: 189,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 195,\n end: 196,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"location\",\n start: 196,\n end: 204,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 204,\n end: 205,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"0\",\n start: 205,\n end: 206,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 206,\n end: 207,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"position\",\n start: 208,\n end: 216,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 216,\n end: 217,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 218,\n end: 222,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 222,\n end: 223,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 223,\n end: 226,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 226,\n end: 227,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 227,\n end: 228,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 234,\n end: 235,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"location\",\n start: 235,\n end: 243,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 243,\n end: 244,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"1\",\n start: 244,\n end: 245,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 245,\n end: 246,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"normal\",\n start: 247,\n end: 253,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 253,\n end: 254,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 255,\n end: 259,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 259,\n end: 260,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 260,\n end: 263,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 263,\n end: 264,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 264,\n end: 265,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 271,\n end: 272,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"location\",\n start: 272,\n end: 280,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 280,\n end: 281,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"2\",\n start: 281,\n end: 282,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 282,\n end: 283,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"uv\",\n start: 284,\n end: 286,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 286,\n end: 287,\n },\n TokenData {\n kind: \"Vec2Kw\",\n text: \"vec2\",\n start: 288,\n end: 292,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 292,\n end: 293,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 293,\n end: 296,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 296,\n end: 297,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 297,\n end: 298,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 304,\n end: 305,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"location\",\n start: 305,\n end: 313,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 313,\n end: 314,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"3\",\n start: 314,\n end: 315,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 315,\n end: 316,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 317,\n end: 322,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 322,\n end: 323,\n },\n TokenData {\n kind: \"Vec4Kw\",\n text: \"vec4\",\n start: 324,\n end: 328,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 328,\n end: 329,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 329,\n end: 332,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 332,\n end: 333,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 333,\n end: 334,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 336,\n end: 337,\n },\n TokenData {\n kind: \"StructKw\",\n text: \"struct\",\n start: 341,\n end: 347,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"VertexOutput\",\n start: 348,\n end: 360,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 361,\n end: 362,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 368,\n end: 369,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"builtin\",\n start: 369,\n end: 376,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 376,\n end: 377,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"position\",\n start: 377,\n end: 385,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 385,\n end: 386,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"clip_position\",\n start: 387,\n end: 400,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 400,\n end: 401,\n },\n TokenData {\n kind: \"Vec4Kw\",\n text: \"vec4\",\n start: 402,\n end: 406,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 406,\n end: 407,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 407,\n end: 410,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 410,\n end: 411,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 411,\n end: 412,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 418,\n end: 419,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"location\",\n start: 419,\n end: 427,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 427,\n end: 428,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"0\",\n start: 428,\n end: 429,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 429,\n end: 430,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"world_position\",\n start: 431,\n end: 445,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 445,\n end: 446,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 447,\n end: 451,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 451,\n end: 452,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 452,\n end: 455,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 455,\n end: 456,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 456,\n end: 457,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 463,\n end: 464,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"location\",\n start: 464,\n end: 472,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 472,\n end: 473,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"1\",\n start: 473,\n end: 474,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 474,\n end: 475,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"world_normal\",\n start: 476,\n end: 488,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 488,\n end: 489,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 490,\n end: 494,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 494,\n end: 495,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 495,\n end: 498,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 498,\n end: 499,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 499,\n end: 500,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 506,\n end: 507,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"location\",\n start: 507,\n end: 515,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 515,\n end: 516,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"2\",\n start: 516,\n end: 517,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 517,\n end: 518,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"uv\",\n start: 519,\n end: 521,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 521,\n end: 522,\n },\n TokenData {\n kind: \"Vec2Kw\",\n text: \"vec2\",\n start: 523,\n end: 527,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 527,\n end: 528,\n },\n ],\n errors: [],\n}", actual: "LexerTestExpected {\n success: true,\n count: 2870,\n tokens: [\n TokenData {\n kind: \"StructKw\",\n text: \"struct\",\n start: 169,\n end: 175,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"VertexInput\",\n start: 176,\n end: 187,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 188,\n end: 189,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 195,\n end: 196,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"location\",\n start: 196,\n end: 204,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 204,\n end: 205,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"0\",\n start: 205,\n end: 206,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 206,\n end: 207,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"position\",\n start: 208,\n end: 216,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 216,\n end: 217,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 218,\n end: 222,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 222,\n end: 223,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 223,\n end: 226,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 226,\n end: 227,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 227,\n end: 228,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 234,\n end: 235,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"location\",\n start: 235,\n end: 243,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 243,\n end: 244,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"1\",\n start: 244,\n end: 245,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 245,\n end: 246,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"normal\",\n start: 247,\n end: 253,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 253,\n end: 254,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 255,\n end: 259,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 259,\n end: 260,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 260,\n end: 263,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 263,\n end: 264,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 264,\n end: 265,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 271,\n end: 272,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"location\",\n start: 272,\n end: 280,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 280,\n end: 281,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"2\",\n start: 281,\n end: 282,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 282,\n end: 283,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"uv\",\n start: 284,\n end: 286,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 286,\n end: 287,\n },\n TokenData {\n kind: \"Vec2Kw\",\n text: \"vec2\",\n start: 288,\n end: 292,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 292,\n end: 293,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 293,\n end: 296,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 296,\n end: 297,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 297,\n end: 298,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 304,\n end: 305,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"location\",\n start: 305,\n end: 313,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 313,\n end: 314,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"3\",\n start: 314,\n end: 315,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 315,\n end: 316,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 317,\n end: 322,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 322,\n end: 323,\n },\n TokenData {\n kind: \"Vec4Kw\",\n text: \"vec4\",\n start: 324,\n end: 328,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 328,\n end: 329,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 329,\n end: 332,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 332,\n end: 333,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 333,\n end: 334,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 336,\n end: 337,\n },\n TokenData {\n kind: \"StructKw\",\n text: \"struct\",\n start: 341,\n end: 347,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"VertexOutput\",\n start: 348,\n end: 360,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 361,\n end: 362,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 368,\n end: 369,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"builtin\",\n start: 369,\n end: 376,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 376,\n end: 377,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"position\",\n start: 377,\n end: 385,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 385,\n end: 386,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"clip_position\",\n start: 387,\n end: 400,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 400,\n end: 401,\n },\n TokenData {\n kind: \"Vec4Kw\",\n text: \"vec4\",\n start: 402,\n end: 406,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 406,\n end: 407,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 407,\n end: 410,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 410,\n end: 411,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 411,\n end: 412,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 418,\n end: 419,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"location\",\n start: 419,\n end: 427,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 427,\n end: 428,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"0\",\n start: 428,\n end: 429,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 429,\n end: 430,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"world_position\",\n start: 431,\n end: 445,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 445,\n end: 446,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 447,\n end: 451,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 451,\n end: 452,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 452,\n end: 455,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 455,\n end: 456,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 456,\n end: 457,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 463,\n end: 464,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"location\",\n start: 464,\n end: 472,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 472,\n end: 473,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"1\",\n start: 473,\n end: 474,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 474,\n end: 475,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"world_normal\",\n start: 476,\n end: 488,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 488,\n end: 489,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 490,\n end: 494,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 494,\n end: 495,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 495,\n end: 498,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 498,\n end: 499,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 499,\n end: 500,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 506,\n end: 507,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"location\",\n start: 507,\n end: 515,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 515,\n end: 516,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"2\",\n start: 516,\n end: 517,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 517,\n end: 518,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"uv\",\n start: 519,\n end: 521,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 521,\n end: 522,\n },\n TokenData {\n kind: \"Vec2Kw\",\n text: \"vec2\",\n start: 523,\n end: 527,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 527,\n end: 528,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 528,\n end: 531,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 531,\n end: 532,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 532,\n end: 533,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 539,\n end: 540,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"location\",\n start: 540,\n end: 548,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 548,\n end: 549,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"3\",\n start: 549,\n end: 550,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 550,\n end: 551,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 552,\n end: 557,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 557,\n end: 558,\n },\n TokenData {\n kind: \"Vec4Kw\",\n text: \"vec4\",\n start: 559,\n end: 563,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 563,\n end: 564,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 564,\n end: 567,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 567,\n end: 568,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 568,\n end: 569,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 571,\n end: 572,\n },\n TokenData {\n kind: \"StructKw\",\n text: \"struct\",\n start: 576,\n end: 582,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"FragmentOutput\",\n start: 583,\n end: 597,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 598,\n end: 599,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 605,\n end: 606,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"location\",\n start: 606,\n end: 614,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 614,\n end: 615,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"0\",\n start: 615,\n end: 616,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 616,\n end: 617,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 618,\n end: 623,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 623,\n end: 624,\n },\n TokenData {\n kind: \"Vec4Kw\",\n text: \"vec4\",\n start: 625,\n end: 629,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 629,\n end: 630,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 630,\n end: 633,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 633,\n end: 634,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 634,\n end: 635,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 637,\n end: 638,\n },\n TokenData {\n kind: \"StructKw\",\n text: \"struct\",\n start: 642,\n end: 648,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Camera\",\n start: 649,\n end: 655,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 656,\n end: 657,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"view_proj\",\n start: 663,\n end: 672,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 672,\n end: 673,\n },\n TokenData {\n kind: \"Mat4x4Kw\",\n text: \"mat4x4\",\n start: 674,\n end: 680,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 680,\n end: 681,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 681,\n end: 684,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 684,\n end: 685,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 685,\n end: 686,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"view\",\n start: 692,\n end: 696,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 696,\n end: 697,\n },\n TokenData {\n kind: \"Mat4x4Kw\",\n text: \"mat4x4\",\n start: 698,\n end: 704,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 704,\n end: 705,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 705,\n end: 708,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 708,\n end: 709,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 709,\n end: 710,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"proj\",\n start: 716,\n end: 720,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 720,\n end: 721,\n },\n TokenData {\n kind: \"Mat4x4Kw\",\n text: \"mat4x4\",\n start: 722,\n end: 728,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 728,\n end: 729,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 729,\n end: 732,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 732,\n end: 733,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 733,\n end: 734,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"position\",\n start: 740,\n end: 748,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 748,\n end: 749,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 750,\n end: 754,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 754,\n end: 755,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 755,\n end: 758,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 758,\n end: 759,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 759,\n end: 760,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"direction\",\n start: 766,\n end: 775,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 775,\n end: 776,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 777,\n end: 781,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 781,\n end: 782,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 782,\n end: 785,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 785,\n end: 786,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 786,\n end: 787,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 789,\n end: 790,\n },\n TokenData {\n kind: \"StructKw\",\n text: \"struct\",\n start: 794,\n end: 800,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Light\",\n start: 801,\n end: 806,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 807,\n end: 808,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"position\",\n start: 814,\n end: 822,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 822,\n end: 823,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 824,\n end: 828,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 828,\n end: 829,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 829,\n end: 832,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 832,\n end: 833,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 833,\n end: 834,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 840,\n end: 845,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 845,\n end: 846,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 847,\n end: 851,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 851,\n end: 852,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 852,\n end: 855,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 855,\n end: 856,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 856,\n end: 857,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"intensity\",\n start: 863,\n end: 872,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 872,\n end: 873,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 874,\n end: 877,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 877,\n end: 878,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"range\",\n start: 884,\n end: 889,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 889,\n end: 890,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 891,\n end: 894,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 894,\n end: 895,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 897,\n end: 898,\n },\n TokenData {\n kind: \"StructKw\",\n text: \"struct\",\n start: 902,\n end: 908,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Material\",\n start: 909,\n end: 917,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 918,\n end: 919,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"albedo\",\n start: 925,\n end: 931,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 931,\n end: 932,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 933,\n end: 937,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 937,\n end: 938,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 938,\n end: 941,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 941,\n end: 942,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 942,\n end: 943,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"metallic\",\n start: 949,\n end: 957,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 957,\n end: 958,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 959,\n end: 962,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 962,\n end: 963,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"roughness\",\n start: 969,\n end: 978,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 978,\n end: 979,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 980,\n end: 983,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 983,\n end: 984,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"ao\",\n start: 990,\n end: 992,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 992,\n end: 993,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 994,\n end: 997,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 997,\n end: 998,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"emissive\",\n start: 1004,\n end: 1012,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 1012,\n end: 1013,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 1014,\n end: 1018,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 1018,\n end: 1019,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 1019,\n end: 1022,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 1022,\n end: 1023,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 1023,\n end: 1024,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 1026,\n end: 1027,\n },\n TokenData {\n kind: \"StructKw\",\n text: \"struct\",\n start: 1031,\n end: 1037,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Transform\",\n start: 1038,\n end: 1047,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 1048,\n end: 1049,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"model\",\n start: 1055,\n end: 1060,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 1060,\n end: 1061,\n },\n TokenData {\n kind: \"Mat4x4Kw\",\n text: \"mat4x4\",\n start: 1062,\n end: 1068,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 1068,\n end: 1069,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 1069,\n end: 1072,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 1072,\n end: 1073,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 1073,\n end: 1074,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"normal\",\n start: 1080,\n end: 1086,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 1086,\n end: 1087,\n },\n TokenData {\n kind: \"Mat3x3Kw\",\n text: \"mat3x3\",\n start: 1088,\n end: 1094,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 1094,\n end: 1095,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 1095,\n end: 1098,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 1098,\n end: 1099,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 1099,\n end: 1100,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 1102,\n end: 1103,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 1135,\n end: 1136,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"group\",\n start: 1136,\n end: 1141,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1141,\n end: 1142,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"0\",\n start: 1142,\n end: 1143,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1143,\n end: 1144,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 1145,\n end: 1146,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"binding\",\n start: 1146,\n end: 1153,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1153,\n end: 1154,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"0\",\n start: 1154,\n end: 1155,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1155,\n end: 1156,\n },\n TokenData {\n kind: \"VarKw\",\n text: \"var\",\n start: 1157,\n end: 1160,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 1160,\n end: 1161,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"uniform\",\n start: 1161,\n end: 1168,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 1168,\n end: 1169,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"camera\",\n start: 1170,\n end: 1176,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 1176,\n end: 1177,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Camera\",\n start: 1178,\n end: 1184,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1184,\n end: 1185,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 1187,\n end: 1188,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"group\",\n start: 1188,\n end: 1193,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1193,\n end: 1194,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"0\",\n start: 1194,\n end: 1195,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1195,\n end: 1196,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 1197,\n end: 1198,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"binding\",\n start: 1198,\n end: 1205,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1205,\n end: 1206,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"1\",\n start: 1206,\n end: 1207,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1207,\n end: 1208,\n },\n TokenData {\n kind: \"VarKw\",\n text: \"var\",\n start: 1209,\n end: 1212,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 1212,\n end: 1213,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"uniform\",\n start: 1213,\n end: 1220,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 1220,\n end: 1221,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"transform\",\n start: 1222,\n end: 1231,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 1231,\n end: 1232,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Transform\",\n start: 1233,\n end: 1242,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1242,\n end: 1243,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 1245,\n end: 1246,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"group\",\n start: 1246,\n end: 1251,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1251,\n end: 1252,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"0\",\n start: 1252,\n end: 1253,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1253,\n end: 1254,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 1255,\n end: 1256,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"binding\",\n start: 1256,\n end: 1263,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1263,\n end: 1264,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"2\",\n start: 1264,\n end: 1265,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1265,\n end: 1266,\n },\n TokenData {\n kind: \"VarKw\",\n text: \"var\",\n start: 1267,\n end: 1270,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 1270,\n end: 1271,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"uniform\",\n start: 1271,\n end: 1278,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 1278,\n end: 1279,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"material\",\n start: 1280,\n end: 1288,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 1288,\n end: 1289,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Material\",\n start: 1290,\n end: 1298,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1298,\n end: 1299,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 1301,\n end: 1302,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"group\",\n start: 1302,\n end: 1307,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1307,\n end: 1308,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"0\",\n start: 1308,\n end: 1309,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1309,\n end: 1310,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 1311,\n end: 1312,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"binding\",\n start: 1312,\n end: 1319,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1319,\n end: 1320,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"3\",\n start: 1320,\n end: 1321,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1321,\n end: 1322,\n },\n TokenData {\n kind: \"VarKw\",\n text: \"var\",\n start: 1323,\n end: 1326,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 1326,\n end: 1327,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"uniform\",\n start: 1327,\n end: 1334,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 1334,\n end: 1335,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"lights\",\n start: 1336,\n end: 1342,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 1342,\n end: 1343,\n },\n TokenData {\n kind: \"ArrayKw\",\n text: \"array\",\n start: 1344,\n end: 1349,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 1349,\n end: 1350,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Light\",\n start: 1350,\n end: 1355,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 1355,\n end: 1356,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"8\",\n start: 1357,\n end: 1358,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 1358,\n end: 1359,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1359,\n end: 1360,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 1362,\n end: 1363,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"group\",\n start: 1363,\n end: 1368,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1368,\n end: 1369,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"0\",\n start: 1369,\n end: 1370,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1370,\n end: 1371,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 1372,\n end: 1373,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"binding\",\n start: 1373,\n end: 1380,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1380,\n end: 1381,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"4\",\n start: 1381,\n end: 1382,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1382,\n end: 1383,\n },\n TokenData {\n kind: \"VarKw\",\n text: \"var\",\n start: 1384,\n end: 1387,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 1387,\n end: 1388,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"uniform\",\n start: 1388,\n end: 1395,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 1395,\n end: 1396,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"time\",\n start: 1397,\n end: 1401,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 1401,\n end: 1402,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 1403,\n end: 1406,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1406,\n end: 1407,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 1444,\n end: 1445,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"group\",\n start: 1445,\n end: 1450,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1450,\n end: 1451,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"1\",\n start: 1451,\n end: 1452,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1452,\n end: 1453,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 1454,\n end: 1455,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"binding\",\n start: 1455,\n end: 1462,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1462,\n end: 1463,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"0\",\n start: 1463,\n end: 1464,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1464,\n end: 1465,\n },\n TokenData {\n kind: \"VarKw\",\n text: \"var\",\n start: 1466,\n end: 1469,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"albedo_texture\",\n start: 1470,\n end: 1484,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 1484,\n end: 1485,\n },\n TokenData {\n kind: \"Texture2dKw\",\n text: \"texture_2d\",\n start: 1486,\n end: 1496,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 1496,\n end: 1497,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 1497,\n end: 1500,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 1500,\n end: 1501,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1501,\n end: 1502,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 1504,\n end: 1505,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"group\",\n start: 1505,\n end: 1510,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1510,\n end: 1511,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"1\",\n start: 1511,\n end: 1512,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1512,\n end: 1513,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 1514,\n end: 1515,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"binding\",\n start: 1515,\n end: 1522,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1522,\n end: 1523,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"1\",\n start: 1523,\n end: 1524,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1524,\n end: 1525,\n },\n TokenData {\n kind: \"VarKw\",\n text: \"var\",\n start: 1526,\n end: 1529,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"normal_texture\",\n start: 1530,\n end: 1544,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 1544,\n end: 1545,\n },\n TokenData {\n kind: \"Texture2dKw\",\n text: \"texture_2d\",\n start: 1546,\n end: 1556,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 1556,\n end: 1557,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 1557,\n end: 1560,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 1560,\n end: 1561,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1561,\n end: 1562,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 1564,\n end: 1565,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"group\",\n start: 1565,\n end: 1570,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1570,\n end: 1571,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"1\",\n start: 1571,\n end: 1572,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1572,\n end: 1573,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 1574,\n end: 1575,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"binding\",\n start: 1575,\n end: 1582,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1582,\n end: 1583,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"2\",\n start: 1583,\n end: 1584,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1584,\n end: 1585,\n },\n TokenData {\n kind: \"VarKw\",\n text: \"var\",\n start: 1586,\n end: 1589,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"metallic_roughness_texture\",\n start: 1590,\n end: 1616,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 1616,\n end: 1617,\n },\n TokenData {\n kind: \"Texture2dKw\",\n text: \"texture_2d\",\n start: 1618,\n end: 1628,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 1628,\n end: 1629,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 1629,\n end: 1632,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 1632,\n end: 1633,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1633,\n end: 1634,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 1636,\n end: 1637,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"group\",\n start: 1637,\n end: 1642,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1642,\n end: 1643,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"1\",\n start: 1643,\n end: 1644,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1644,\n end: 1645,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 1646,\n end: 1647,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"binding\",\n start: 1647,\n end: 1654,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1654,\n end: 1655,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"3\",\n start: 1655,\n end: 1656,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1656,\n end: 1657,\n },\n TokenData {\n kind: \"VarKw\",\n text: \"var\",\n start: 1658,\n end: 1661,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"ao_texture\",\n start: 1662,\n end: 1672,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 1672,\n end: 1673,\n },\n TokenData {\n kind: \"Texture2dKw\",\n text: \"texture_2d\",\n start: 1674,\n end: 1684,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 1684,\n end: 1685,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 1685,\n end: 1688,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 1688,\n end: 1689,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1689,\n end: 1690,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 1692,\n end: 1693,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"group\",\n start: 1693,\n end: 1698,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1698,\n end: 1699,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"1\",\n start: 1699,\n end: 1700,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1700,\n end: 1701,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 1702,\n end: 1703,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"binding\",\n start: 1703,\n end: 1710,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1710,\n end: 1711,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"4\",\n start: 1711,\n end: 1712,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1712,\n end: 1713,\n },\n TokenData {\n kind: \"VarKw\",\n text: \"var\",\n start: 1714,\n end: 1717,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"emissive_texture\",\n start: 1718,\n end: 1734,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 1734,\n end: 1735,\n },\n TokenData {\n kind: \"Texture2dKw\",\n text: \"texture_2d\",\n start: 1736,\n end: 1746,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 1746,\n end: 1747,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 1747,\n end: 1750,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 1750,\n end: 1751,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1751,\n end: 1752,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 1754,\n end: 1755,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"group\",\n start: 1755,\n end: 1760,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1760,\n end: 1761,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"1\",\n start: 1761,\n end: 1762,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1762,\n end: 1763,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 1764,\n end: 1765,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"binding\",\n start: 1765,\n end: 1772,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1772,\n end: 1773,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"5\",\n start: 1773,\n end: 1774,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1774,\n end: 1775,\n },\n TokenData {\n kind: \"VarKw\",\n text: \"var\",\n start: 1776,\n end: 1779,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"texture_sampler\",\n start: 1780,\n end: 1795,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 1795,\n end: 1796,\n },\n TokenData {\n kind: \"SamplerKw\",\n text: \"sampler\",\n start: 1797,\n end: 1804,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1804,\n end: 1805,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 1850,\n end: 1851,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"group\",\n start: 1851,\n end: 1856,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1856,\n end: 1857,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"2\",\n start: 1857,\n end: 1858,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1858,\n end: 1859,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 1860,\n end: 1861,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"binding\",\n start: 1861,\n end: 1868,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1868,\n end: 1869,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"0\",\n start: 1869,\n end: 1870,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1870,\n end: 1871,\n },\n TokenData {\n kind: \"VarKw\",\n text: \"var\",\n start: 1872,\n end: 1875,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"environment_map\",\n start: 1876,\n end: 1891,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 1891,\n end: 1892,\n },\n TokenData {\n kind: \"TextureCubeKw\",\n text: \"texture_cube\",\n start: 1893,\n end: 1905,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 1905,\n end: 1906,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 1906,\n end: 1909,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 1909,\n end: 1910,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1910,\n end: 1911,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 1913,\n end: 1914,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"group\",\n start: 1914,\n end: 1919,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1919,\n end: 1920,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"2\",\n start: 1920,\n end: 1921,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1921,\n end: 1922,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 1923,\n end: 1924,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"binding\",\n start: 1924,\n end: 1931,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1931,\n end: 1932,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"1\",\n start: 1932,\n end: 1933,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 1933,\n end: 1934,\n },\n TokenData {\n kind: \"VarKw\",\n text: \"var\",\n start: 1935,\n end: 1938,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"environment_sampler\",\n start: 1939,\n end: 1958,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 1958,\n end: 1959,\n },\n TokenData {\n kind: \"SamplerKw\",\n text: \"sampler\",\n start: 1960,\n end: 1967,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 1967,\n end: 1968,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 1992,\n end: 1993,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"group\",\n start: 1993,\n end: 1998,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 1998,\n end: 1999,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"3\",\n start: 1999,\n end: 2000,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 2000,\n end: 2001,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 2002,\n end: 2003,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"binding\",\n start: 2003,\n end: 2010,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 2010,\n end: 2011,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"0\",\n start: 2011,\n end: 2012,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 2012,\n end: 2013,\n },\n TokenData {\n kind: \"VarKw\",\n text: \"var\",\n start: 2014,\n end: 2017,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 2017,\n end: 2018,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"storage\",\n start: 2018,\n end: 2025,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 2025,\n end: 2026,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"read\",\n start: 2027,\n end: 2031,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 2031,\n end: 2032,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"vertex_buffer\",\n start: 2033,\n end: 2046,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 2046,\n end: 2047,\n },\n TokenData {\n kind: \"ArrayKw\",\n text: \"array\",\n start: 2048,\n end: 2053,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 2053,\n end: 2054,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"VertexInput\",\n start: 2054,\n end: 2065,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 2065,\n end: 2066,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 2066,\n end: 2067,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 2069,\n end: 2070,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"group\",\n start: 2070,\n end: 2075,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 2075,\n end: 2076,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"3\",\n start: 2076,\n end: 2077,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 2077,\n end: 2078,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 2079,\n end: 2080,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"binding\",\n start: 2080,\n end: 2087,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 2087,\n end: 2088,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"1\",\n start: 2088,\n end: 2089,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 2089,\n end: 2090,\n },\n TokenData {\n kind: \"VarKw\",\n text: \"var\",\n start: 2091,\n end: 2094,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 2094,\n end: 2095,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"storage\",\n start: 2095,\n end: 2102,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 2102,\n end: 2103,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"read_write\",\n start: 2104,\n end: 2114,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 2114,\n end: 2115,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"compute_buffer\",\n start: 2116,\n end: 2130,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 2130,\n end: 2131,\n },\n TokenData {\n kind: \"ArrayKw\",\n text: \"array\",\n start: 2132,\n end: 2137,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 2137,\n end: 2138,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 2138,\n end: 2141,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 2141,\n end: 2142,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 2142,\n end: 2143,\n },\n TokenData {\n kind: \"ConstKw\",\n text: \"const\",\n start: 2161,\n end: 2166,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"PI\",\n start: 2167,\n end: 2169,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 2169,\n end: 2170,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 2171,\n end: 2174,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 2175,\n end: 2176,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"3.14159265359\",\n start: 2177,\n end: 2190,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 2190,\n end: 2191,\n },\n TokenData {\n kind: \"ConstKw\",\n text: \"const\",\n start: 2193,\n end: 2198,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"TWO_PI\",\n start: 2199,\n end: 2205,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 2205,\n end: 2206,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 2207,\n end: 2210,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 2211,\n end: 2212,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"6.28318530718\",\n start: 2213,\n end: 2226,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 2226,\n end: 2227,\n },\n TokenData {\n kind: \"ConstKw\",\n text: \"const\",\n start: 2229,\n end: 2234,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"HALF_PI\",\n start: 2235,\n end: 2242,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 2242,\n end: 2243,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 2244,\n end: 2247,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 2248,\n end: 2249,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"1.57079632679\",\n start: 2250,\n end: 2263,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 2263,\n end: 2264,\n },\n TokenData {\n kind: \"ConstKw\",\n text: \"const\",\n start: 2266,\n end: 2271,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"INV_PI\",\n start: 2272,\n end: 2278,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 2278,\n end: 2279,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 2280,\n end: 2283,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 2284,\n end: 2285,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"0.31830988618\",\n start: 2286,\n end: 2299,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 2299,\n end: 2300,\n },\n TokenData {\n kind: \"ConstKw\",\n text: \"const\",\n start: 2302,\n end: 2307,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"MAX_LIGHTS\",\n start: 2308,\n end: 2318,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 2318,\n end: 2319,\n },\n TokenData {\n kind: \"U32Kw\",\n text: \"u32\",\n start: 2320,\n end: 2323,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 2324,\n end: 2325,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"8u\",\n start: 2326,\n end: 2328,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 2328,\n end: 2329,\n },\n TokenData {\n kind: \"AliasKw\",\n text: \"alias\",\n start: 2350,\n end: 2355,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Vec3\",\n start: 2356,\n end: 2360,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 2361,\n end: 2362,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 2363,\n end: 2367,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 2367,\n end: 2368,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 2368,\n end: 2371,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 2371,\n end: 2372,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 2372,\n end: 2373,\n },\n TokenData {\n kind: \"AliasKw\",\n text: \"alias\",\n start: 2375,\n end: 2380,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Vec4\",\n start: 2381,\n end: 2385,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 2386,\n end: 2387,\n },\n TokenData {\n kind: \"Vec4Kw\",\n text: \"vec4\",\n start: 2388,\n end: 2392,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 2392,\n end: 2393,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 2393,\n end: 2396,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 2396,\n end: 2397,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 2397,\n end: 2398,\n },\n TokenData {\n kind: \"AliasKw\",\n text: \"alias\",\n start: 2400,\n end: 2405,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Mat4\",\n start: 2406,\n end: 2410,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 2411,\n end: 2412,\n },\n TokenData {\n kind: \"Mat4x4Kw\",\n text: \"mat4x4\",\n start: 2413,\n end: 2419,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 2419,\n end: 2420,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 2420,\n end: 2423,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 2423,\n end: 2424,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 2424,\n end: 2425,\n },\n TokenData {\n kind: \"FnKw\",\n text: \"fn\",\n start: 2451,\n end: 2453,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"saturate\",\n start: 2454,\n end: 2462,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 2462,\n end: 2463,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"value\",\n start: 2463,\n end: 2468,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 2468,\n end: 2469,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 2470,\n end: 2473,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 2473,\n end: 2474,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 2475,\n end: 2477,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 2478,\n end: 2481,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 2482,\n end: 2483,\n },\n TokenData {\n kind: \"ReturnKw\",\n text: \"return\",\n start: 2489,\n end: 2495,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"clamp\",\n start: 2496,\n end: 2501,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 2501,\n end: 2502,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"value\",\n start: 2502,\n end: 2507,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 2507,\n end: 2508,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"0.0\",\n start: 2509,\n end: 2512,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 2512,\n end: 2513,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"1.0\",\n start: 2514,\n end: 2517,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 2517,\n end: 2518,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 2518,\n end: 2519,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 2521,\n end: 2522,\n },\n TokenData {\n kind: \"FnKw\",\n text: \"fn\",\n start: 2526,\n end: 2528,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"saturate_vec3\",\n start: 2529,\n end: 2542,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 2542,\n end: 2543,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"value\",\n start: 2543,\n end: 2548,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 2548,\n end: 2549,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 2550,\n end: 2554,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 2554,\n end: 2555,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 2555,\n end: 2558,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 2558,\n end: 2559,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 2559,\n end: 2560,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 2561,\n end: 2563,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 2564,\n end: 2568,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 2568,\n end: 2569,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 2569,\n end: 2572,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 2572,\n end: 2573,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 2574,\n end: 2575,\n },\n TokenData {\n kind: \"ReturnKw\",\n text: \"return\",\n start: 2581,\n end: 2587,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"clamp\",\n start: 2588,\n end: 2593,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 2593,\n end: 2594,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"value\",\n start: 2594,\n end: 2599,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 2599,\n end: 2600,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 2601,\n end: 2605,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 2605,\n end: 2606,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 2606,\n end: 2609,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 2609,\n end: 2610,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 2610,\n end: 2611,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"0.0\",\n start: 2611,\n end: 2614,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 2614,\n end: 2615,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 2615,\n end: 2616,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 2617,\n end: 2621,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 2621,\n end: 2622,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 2622,\n end: 2625,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 2625,\n end: 2626,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 2626,\n end: 2627,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"1.0\",\n start: 2627,\n end: 2630,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 2630,\n end: 2631,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 2631,\n end: 2632,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 2632,\n end: 2633,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 2635,\n end: 2636,\n },\n TokenData {\n kind: \"FnKw\",\n text: \"fn\",\n start: 2640,\n end: 2642,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"pow5\",\n start: 2643,\n end: 2647,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 2647,\n end: 2648,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"x\",\n start: 2648,\n end: 2649,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 2649,\n end: 2650,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 2651,\n end: 2654,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 2654,\n end: 2655,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 2656,\n end: 2658,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 2659,\n end: 2662,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 2663,\n end: 2664,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 2670,\n end: 2673,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"x2\",\n start: 2674,\n end: 2676,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 2677,\n end: 2678,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"x\",\n start: 2679,\n end: 2680,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 2681,\n end: 2682,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"x\",\n start: 2683,\n end: 2684,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 2684,\n end: 2685,\n },\n TokenData {\n kind: \"ReturnKw\",\n text: \"return\",\n start: 2691,\n end: 2697,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"x2\",\n start: 2698,\n end: 2700,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 2701,\n end: 2702,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"x2\",\n start: 2703,\n end: 2705,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 2706,\n end: 2707,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"x\",\n start: 2708,\n end: 2709,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 2709,\n end: 2710,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 2712,\n end: 2713,\n },\n TokenData {\n kind: \"FnKw\",\n text: \"fn\",\n start: 2717,\n end: 2719,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"luminance\",\n start: 2720,\n end: 2729,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 2729,\n end: 2730,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 2730,\n end: 2735,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 2735,\n end: 2736,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 2737,\n end: 2741,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 2741,\n end: 2742,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 2742,\n end: 2745,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 2745,\n end: 2746,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 2746,\n end: 2747,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 2748,\n end: 2750,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 2751,\n end: 2754,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 2755,\n end: 2756,\n },\n TokenData {\n kind: \"ReturnKw\",\n text: \"return\",\n start: 2762,\n end: 2768,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"dot\",\n start: 2769,\n end: 2772,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 2772,\n end: 2773,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 2773,\n end: 2778,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 2778,\n end: 2779,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 2780,\n end: 2784,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 2784,\n end: 2785,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 2785,\n end: 2788,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 2788,\n end: 2789,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 2789,\n end: 2790,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"0.299\",\n start: 2790,\n end: 2795,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 2795,\n end: 2796,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"0.587\",\n start: 2797,\n end: 2802,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 2802,\n end: 2803,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"0.114\",\n start: 2804,\n end: 2809,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 2809,\n end: 2810,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 2810,\n end: 2811,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 2811,\n end: 2812,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 2814,\n end: 2815,\n },\n TokenData {\n kind: \"FnKw\",\n text: \"fn\",\n start: 2846,\n end: 2848,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"length_squared\",\n start: 2849,\n end: 2863,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 2863,\n end: 2864,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"v\",\n start: 2864,\n end: 2865,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 2865,\n end: 2866,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 2867,\n end: 2871,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 2871,\n end: 2872,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 2872,\n end: 2875,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 2875,\n end: 2876,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 2876,\n end: 2877,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 2878,\n end: 2880,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 2881,\n end: 2884,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 2885,\n end: 2886,\n },\n TokenData {\n kind: \"ReturnKw\",\n text: \"return\",\n start: 2892,\n end: 2898,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"dot\",\n start: 2899,\n end: 2902,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 2902,\n end: 2903,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"v\",\n start: 2903,\n end: 2904,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 2904,\n end: 2905,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"v\",\n start: 2906,\n end: 2907,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 2907,\n end: 2908,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 2908,\n end: 2909,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 2911,\n end: 2912,\n },\n TokenData {\n kind: \"FnKw\",\n text: \"fn\",\n start: 2916,\n end: 2918,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"distance_squared\",\n start: 2919,\n end: 2935,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 2935,\n end: 2936,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"a\",\n start: 2936,\n end: 2937,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 2937,\n end: 2938,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 2939,\n end: 2943,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 2943,\n end: 2944,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 2944,\n end: 2947,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 2947,\n end: 2948,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 2948,\n end: 2949,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"b\",\n start: 2950,\n end: 2951,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 2951,\n end: 2952,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 2953,\n end: 2957,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 2957,\n end: 2958,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 2958,\n end: 2961,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 2961,\n end: 2962,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 2962,\n end: 2963,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 2964,\n end: 2966,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 2967,\n end: 2970,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 2971,\n end: 2972,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 2978,\n end: 2981,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"diff\",\n start: 2982,\n end: 2986,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 2987,\n end: 2988,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"a\",\n start: 2989,\n end: 2990,\n },\n TokenData {\n kind: \"Minus\",\n text: \"-\",\n start: 2991,\n end: 2992,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"b\",\n start: 2993,\n end: 2994,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 2994,\n end: 2995,\n },\n TokenData {\n kind: \"ReturnKw\",\n text: \"return\",\n start: 3001,\n end: 3007,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"dot\",\n start: 3008,\n end: 3011,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3011,\n end: 3012,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"diff\",\n start: 3012,\n end: 3016,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 3016,\n end: 3017,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"diff\",\n start: 3018,\n end: 3022,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 3022,\n end: 3023,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3023,\n end: 3024,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 3026,\n end: 3027,\n },\n TokenData {\n kind: \"FnKw\",\n text: \"fn\",\n start: 3031,\n end: 3033,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"reflect_vector\",\n start: 3034,\n end: 3048,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3048,\n end: 3049,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"incident\",\n start: 3049,\n end: 3057,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 3057,\n end: 3058,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 3059,\n end: 3063,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 3063,\n end: 3064,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 3064,\n end: 3067,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 3067,\n end: 3068,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 3068,\n end: 3069,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"normal\",\n start: 3070,\n end: 3076,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 3076,\n end: 3077,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 3078,\n end: 3082,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 3082,\n end: 3083,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 3083,\n end: 3086,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 3086,\n end: 3087,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 3087,\n end: 3088,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 3089,\n end: 3091,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 3092,\n end: 3096,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 3096,\n end: 3097,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 3097,\n end: 3100,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 3100,\n end: 3101,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 3102,\n end: 3103,\n },\n TokenData {\n kind: \"ReturnKw\",\n text: \"return\",\n start: 3109,\n end: 3115,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"incident\",\n start: 3116,\n end: 3124,\n },\n TokenData {\n kind: \"Minus\",\n text: \"-\",\n start: 3125,\n end: 3126,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"2.0\",\n start: 3127,\n end: 3130,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 3131,\n end: 3132,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"dot\",\n start: 3133,\n end: 3136,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3136,\n end: 3137,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"incident\",\n start: 3137,\n end: 3145,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 3145,\n end: 3146,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"normal\",\n start: 3147,\n end: 3153,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 3153,\n end: 3154,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 3155,\n end: 3156,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"normal\",\n start: 3157,\n end: 3163,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3163,\n end: 3164,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 3166,\n end: 3167,\n },\n TokenData {\n kind: \"FnKw\",\n text: \"fn\",\n start: 3196,\n end: 3198,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"fresnel_schlick\",\n start: 3199,\n end: 3214,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3214,\n end: 3215,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"cos_theta\",\n start: 3215,\n end: 3224,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 3224,\n end: 3225,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 3226,\n end: 3229,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 3229,\n end: 3230,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"f0\",\n start: 3231,\n end: 3233,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 3233,\n end: 3234,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 3235,\n end: 3239,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 3239,\n end: 3240,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 3240,\n end: 3243,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 3243,\n end: 3244,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 3244,\n end: 3245,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 3246,\n end: 3248,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 3249,\n end: 3253,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 3253,\n end: 3254,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 3254,\n end: 3257,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 3257,\n end: 3258,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 3259,\n end: 3260,\n },\n TokenData {\n kind: \"ReturnKw\",\n text: \"return\",\n start: 3266,\n end: 3272,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"f0\",\n start: 3273,\n end: 3275,\n },\n TokenData {\n kind: \"Plus\",\n text: \"+\",\n start: 3276,\n end: 3277,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3278,\n end: 3279,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"1.0\",\n start: 3279,\n end: 3282,\n },\n TokenData {\n kind: \"Minus\",\n text: \"-\",\n start: 3283,\n end: 3284,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"f0\",\n start: 3285,\n end: 3287,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 3287,\n end: 3288,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 3289,\n end: 3290,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"pow\",\n start: 3291,\n end: 3294,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3294,\n end: 3295,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"saturate\",\n start: 3295,\n end: 3303,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3303,\n end: 3304,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"1.0\",\n start: 3304,\n end: 3307,\n },\n TokenData {\n kind: \"Minus\",\n text: \"-\",\n start: 3308,\n end: 3309,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"cos_theta\",\n start: 3310,\n end: 3319,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 3319,\n end: 3320,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 3320,\n end: 3321,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"5.0\",\n start: 3322,\n end: 3325,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 3325,\n end: 3326,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3326,\n end: 3327,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 3329,\n end: 3330,\n },\n TokenData {\n kind: \"FnKw\",\n text: \"fn\",\n start: 3334,\n end: 3336,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"fresnel_schlick_roughness\",\n start: 3337,\n end: 3362,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3362,\n end: 3363,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"cos_theta\",\n start: 3363,\n end: 3372,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 3372,\n end: 3373,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 3374,\n end: 3377,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 3377,\n end: 3378,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"f0\",\n start: 3379,\n end: 3381,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 3381,\n end: 3382,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 3383,\n end: 3387,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 3387,\n end: 3388,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 3388,\n end: 3391,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 3391,\n end: 3392,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 3392,\n end: 3393,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"roughness\",\n start: 3394,\n end: 3403,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 3403,\n end: 3404,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 3405,\n end: 3408,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 3408,\n end: 3409,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 3410,\n end: 3412,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 3413,\n end: 3417,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 3417,\n end: 3418,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 3418,\n end: 3421,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 3421,\n end: 3422,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 3423,\n end: 3424,\n },\n TokenData {\n kind: \"ReturnKw\",\n text: \"return\",\n start: 3430,\n end: 3436,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"f0\",\n start: 3437,\n end: 3439,\n },\n TokenData {\n kind: \"Plus\",\n text: \"+\",\n start: 3440,\n end: 3441,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3442,\n end: 3443,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"max\",\n start: 3443,\n end: 3446,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3446,\n end: 3447,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 3447,\n end: 3451,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 3451,\n end: 3452,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 3452,\n end: 3455,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 3455,\n end: 3456,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3456,\n end: 3457,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"1.0\",\n start: 3457,\n end: 3460,\n },\n TokenData {\n kind: \"Minus\",\n text: \"-\",\n start: 3461,\n end: 3462,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"roughness\",\n start: 3463,\n end: 3472,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 3472,\n end: 3473,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 3473,\n end: 3474,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"f0\",\n start: 3475,\n end: 3477,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 3477,\n end: 3478,\n },\n TokenData {\n kind: \"Minus\",\n text: \"-\",\n start: 3479,\n end: 3480,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"f0\",\n start: 3481,\n end: 3483,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 3483,\n end: 3484,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 3485,\n end: 3486,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"pow\",\n start: 3487,\n end: 3490,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3490,\n end: 3491,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"saturate\",\n start: 3491,\n end: 3499,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3499,\n end: 3500,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"1.0\",\n start: 3500,\n end: 3503,\n },\n TokenData {\n kind: \"Minus\",\n text: \"-\",\n start: 3504,\n end: 3505,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"cos_theta\",\n start: 3506,\n end: 3515,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 3515,\n end: 3516,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 3516,\n end: 3517,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"5.0\",\n start: 3518,\n end: 3521,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 3521,\n end: 3522,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3522,\n end: 3523,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 3525,\n end: 3526,\n },\n TokenData {\n kind: \"FnKw\",\n text: \"fn\",\n start: 3557,\n end: 3559,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"distribution_ggx\",\n start: 3560,\n end: 3576,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3576,\n end: 3577,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"n_dot_h\",\n start: 3577,\n end: 3584,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 3584,\n end: 3585,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 3586,\n end: 3589,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 3589,\n end: 3590,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"roughness\",\n start: 3591,\n end: 3600,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 3600,\n end: 3601,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 3602,\n end: 3605,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 3605,\n end: 3606,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 3607,\n end: 3609,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 3610,\n end: 3613,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 3614,\n end: 3615,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 3621,\n end: 3624,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"a\",\n start: 3625,\n end: 3626,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 3627,\n end: 3628,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"roughness\",\n start: 3629,\n end: 3638,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 3639,\n end: 3640,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"roughness\",\n start: 3641,\n end: 3650,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3650,\n end: 3651,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 3657,\n end: 3660,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"a2\",\n start: 3661,\n end: 3663,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 3664,\n end: 3665,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"a\",\n start: 3666,\n end: 3667,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 3668,\n end: 3669,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"a\",\n start: 3670,\n end: 3671,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3671,\n end: 3672,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 3678,\n end: 3681,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"n_dot_h2\",\n start: 3682,\n end: 3690,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 3691,\n end: 3692,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"n_dot_h\",\n start: 3693,\n end: 3700,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 3701,\n end: 3702,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"n_dot_h\",\n start: 3703,\n end: 3710,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3710,\n end: 3711,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 3723,\n end: 3726,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"num\",\n start: 3727,\n end: 3730,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 3731,\n end: 3732,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"a2\",\n start: 3733,\n end: 3735,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3735,\n end: 3736,\n },\n TokenData {\n kind: \"VarKw\",\n text: \"var\",\n start: 3742,\n end: 3745,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"denom\",\n start: 3746,\n end: 3751,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 3752,\n end: 3753,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3754,\n end: 3755,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"n_dot_h2\",\n start: 3755,\n end: 3763,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 3764,\n end: 3765,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3766,\n end: 3767,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"a2\",\n start: 3767,\n end: 3769,\n },\n TokenData {\n kind: \"Minus\",\n text: \"-\",\n start: 3770,\n end: 3771,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"1.0\",\n start: 3772,\n end: 3775,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 3775,\n end: 3776,\n },\n TokenData {\n kind: \"Plus\",\n text: \"+\",\n start: 3777,\n end: 3778,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"1.0\",\n start: 3779,\n end: 3782,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 3782,\n end: 3783,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3783,\n end: 3784,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"denom\",\n start: 3790,\n end: 3795,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 3796,\n end: 3797,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"PI\",\n start: 3798,\n end: 3800,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 3801,\n end: 3802,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"denom\",\n start: 3803,\n end: 3808,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 3809,\n end: 3810,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"denom\",\n start: 3811,\n end: 3816,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3816,\n end: 3817,\n },\n TokenData {\n kind: \"ReturnKw\",\n text: \"return\",\n start: 3829,\n end: 3835,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"num\",\n start: 3836,\n end: 3839,\n },\n TokenData {\n kind: \"Slash\",\n text: \"/\",\n start: 3840,\n end: 3841,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"denom\",\n start: 3842,\n end: 3847,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3847,\n end: 3848,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 3850,\n end: 3851,\n },\n TokenData {\n kind: \"FnKw\",\n text: \"fn\",\n start: 3878,\n end: 3880,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"geometry_schlick_ggx\",\n start: 3881,\n end: 3901,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3901,\n end: 3902,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"n_dot_v\",\n start: 3902,\n end: 3909,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 3909,\n end: 3910,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 3911,\n end: 3914,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 3914,\n end: 3915,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"roughness\",\n start: 3916,\n end: 3925,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 3925,\n end: 3926,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 3927,\n end: 3930,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 3930,\n end: 3931,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 3932,\n end: 3934,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 3935,\n end: 3938,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 3939,\n end: 3940,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 3946,\n end: 3949,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"r\",\n start: 3950,\n end: 3951,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 3952,\n end: 3953,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3954,\n end: 3955,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"roughness\",\n start: 3955,\n end: 3964,\n },\n TokenData {\n kind: \"Plus\",\n text: \"+\",\n start: 3965,\n end: 3966,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"1.0\",\n start: 3967,\n end: 3970,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 3970,\n end: 3971,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3971,\n end: 3972,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 3978,\n end: 3981,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"k\",\n start: 3982,\n end: 3983,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 3984,\n end: 3985,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 3986,\n end: 3987,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"r\",\n start: 3987,\n end: 3988,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 3989,\n end: 3990,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"r\",\n start: 3991,\n end: 3992,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 3992,\n end: 3993,\n },\n TokenData {\n kind: \"Slash\",\n text: \"/\",\n start: 3994,\n end: 3995,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"8.0\",\n start: 3996,\n end: 3999,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 3999,\n end: 4000,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 4012,\n end: 4015,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"num\",\n start: 4016,\n end: 4019,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 4020,\n end: 4021,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"n_dot_v\",\n start: 4022,\n end: 4029,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 4029,\n end: 4030,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 4036,\n end: 4039,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"denom\",\n start: 4040,\n end: 4045,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 4046,\n end: 4047,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"n_dot_v\",\n start: 4048,\n end: 4055,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 4056,\n end: 4057,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 4058,\n end: 4059,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"1.0\",\n start: 4059,\n end: 4062,\n },\n TokenData {\n kind: \"Minus\",\n text: \"-\",\n start: 4063,\n end: 4064,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"k\",\n start: 4065,\n end: 4066,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 4066,\n end: 4067,\n },\n TokenData {\n kind: \"Plus\",\n text: \"+\",\n start: 4068,\n end: 4069,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"k\",\n start: 4070,\n end: 4071,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 4071,\n end: 4072,\n },\n TokenData {\n kind: \"ReturnKw\",\n text: \"return\",\n start: 4084,\n end: 4090,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"num\",\n start: 4091,\n end: 4094,\n },\n TokenData {\n kind: \"Slash\",\n text: \"/\",\n start: 4095,\n end: 4096,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"denom\",\n start: 4097,\n end: 4102,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 4102,\n end: 4103,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 4105,\n end: 4106,\n },\n TokenData {\n kind: \"FnKw\",\n text: \"fn\",\n start: 4110,\n end: 4112,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"geometry_smith\",\n start: 4113,\n end: 4127,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 4127,\n end: 4128,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"normal\",\n start: 4128,\n end: 4134,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 4134,\n end: 4135,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 4136,\n end: 4140,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 4140,\n end: 4141,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 4141,\n end: 4144,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 4144,\n end: 4145,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 4145,\n end: 4146,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"view\",\n start: 4147,\n end: 4151,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 4151,\n end: 4152,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 4153,\n end: 4157,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 4157,\n end: 4158,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 4158,\n end: 4161,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 4161,\n end: 4162,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 4162,\n end: 4163,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"light\",\n start: 4164,\n end: 4169,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 4169,\n end: 4170,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 4171,\n end: 4175,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 4175,\n end: 4176,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 4176,\n end: 4179,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 4179,\n end: 4180,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 4180,\n end: 4181,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"roughness\",\n start: 4182,\n end: 4191,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 4191,\n end: 4192,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 4193,\n end: 4196,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 4196,\n end: 4197,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 4198,\n end: 4200,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 4201,\n end: 4204,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 4205,\n end: 4206,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 4212,\n end: 4215,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"n_dot_v\",\n start: 4216,\n end: 4223,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 4224,\n end: 4225,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"max\",\n start: 4226,\n end: 4229,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 4229,\n end: 4230,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"dot\",\n start: 4230,\n end: 4233,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 4233,\n end: 4234,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"normal\",\n start: 4234,\n end: 4240,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 4240,\n end: 4241,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"view\",\n start: 4242,\n end: 4246,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 4246,\n end: 4247,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 4247,\n end: 4248,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"0.0\",\n start: 4249,\n end: 4252,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 4252,\n end: 4253,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 4253,\n end: 4254,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 4260,\n end: 4263,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"n_dot_l\",\n start: 4264,\n end: 4271,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 4272,\n end: 4273,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"max\",\n start: 4274,\n end: 4277,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 4277,\n end: 4278,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"dot\",\n start: 4278,\n end: 4281,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 4281,\n end: 4282,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"normal\",\n start: 4282,\n end: 4288,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 4288,\n end: 4289,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"light\",\n start: 4290,\n end: 4295,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 4295,\n end: 4296,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 4296,\n end: 4297,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"0.0\",\n start: 4298,\n end: 4301,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 4301,\n end: 4302,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 4302,\n end: 4303,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 4309,\n end: 4312,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"ggx2\",\n start: 4313,\n end: 4317,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 4318,\n end: 4319,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"geometry_schlick_ggx\",\n start: 4320,\n end: 4340,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 4340,\n end: 4341,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"n_dot_v\",\n start: 4341,\n end: 4348,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 4348,\n end: 4349,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"roughness\",\n start: 4350,\n end: 4359,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 4359,\n end: 4360,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 4360,\n end: 4361,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 4367,\n end: 4370,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"ggx1\",\n start: 4371,\n end: 4375,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 4376,\n end: 4377,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"geometry_schlick_ggx\",\n start: 4378,\n end: 4398,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 4398,\n end: 4399,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"n_dot_l\",\n start: 4399,\n end: 4406,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 4406,\n end: 4407,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"roughness\",\n start: 4408,\n end: 4417,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 4417,\n end: 4418,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 4418,\n end: 4419,\n },\n TokenData {\n kind: \"ReturnKw\",\n text: \"return\",\n start: 4431,\n end: 4437,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"ggx1\",\n start: 4438,\n end: 4442,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 4443,\n end: 4444,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"ggx2\",\n start: 4445,\n end: 4449,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 4449,\n end: 4450,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 4452,\n end: 4453,\n },\n TokenData {\n kind: \"FnKw\",\n text: \"fn\",\n start: 4486,\n end: 4488,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"calculate_pbr_lighting\",\n start: 4489,\n end: 4511,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 4511,\n end: 4512,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"world_pos\",\n start: 4518,\n end: 4527,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 4527,\n end: 4528,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 4529,\n end: 4533,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 4533,\n end: 4534,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 4534,\n end: 4537,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 4537,\n end: 4538,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 4538,\n end: 4539,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"normal\",\n start: 4545,\n end: 4551,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 4551,\n end: 4552,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 4553,\n end: 4557,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 4557,\n end: 4558,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 4558,\n end: 4561,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 4561,\n end: 4562,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 4562,\n end: 4563,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"view_dir\",\n start: 4569,\n end: 4577,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 4577,\n end: 4578,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 4579,\n end: 4583,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 4583,\n end: 4584,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 4584,\n end: 4587,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 4587,\n end: 4588,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 4588,\n end: 4589,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"albedo\",\n start: 4595,\n end: 4601,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 4601,\n end: 4602,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 4603,\n end: 4607,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 4607,\n end: 4608,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 4608,\n end: 4611,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 4611,\n end: 4612,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 4612,\n end: 4613,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"metallic\",\n start: 4619,\n end: 4627,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 4627,\n end: 4628,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 4629,\n end: 4632,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 4632,\n end: 4633,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"roughness\",\n start: 4639,\n end: 4648,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 4648,\n end: 4649,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 4650,\n end: 4653,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 4653,\n end: 4654,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"ao\",\n start: 4660,\n end: 4662,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 4662,\n end: 4663,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 4664,\n end: 4667,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 4669,\n end: 4670,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 4671,\n end: 4673,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 4674,\n end: 4678,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 4678,\n end: 4679,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 4679,\n end: 4682,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 4682,\n end: 4683,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 4684,\n end: 4685,\n },\n TokenData {\n kind: \"VarKw\",\n text: \"var\",\n start: 4691,\n end: 4694,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 4695,\n end: 4700,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 4701,\n end: 4702,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 4703,\n end: 4707,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 4707,\n end: 4708,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 4708,\n end: 4711,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 4711,\n end: 4712,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 4712,\n end: 4713,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"0.0\",\n start: 4713,\n end: 4716,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 4716,\n end: 4717,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 4717,\n end: 4718,\n },\n TokenData {\n kind: \"VarKw\",\n text: \"var\",\n start: 4790,\n end: 4793,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"f0\",\n start: 4794,\n end: 4796,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 4797,\n end: 4798,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 4799,\n end: 4803,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 4803,\n end: 4804,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 4804,\n end: 4807,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 4807,\n end: 4808,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 4808,\n end: 4809,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"0.04\",\n start: 4809,\n end: 4813,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 4813,\n end: 4814,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 4814,\n end: 4815,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"f0\",\n start: 4821,\n end: 4823,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 4824,\n end: 4825,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"mix\",\n start: 4826,\n end: 4829,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 4829,\n end: 4830,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"f0\",\n start: 4830,\n end: 4832,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 4832,\n end: 4833,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"albedo\",\n start: 4834,\n end: 4840,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 4840,\n end: 4841,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"metallic\",\n start: 4842,\n end: 4850,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 4850,\n end: 4851,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 4851,\n end: 4852,\n },\n TokenData {\n kind: \"ForKw\",\n text: \"for\",\n start: 4892,\n end: 4895,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 4896,\n end: 4897,\n },\n TokenData {\n kind: \"VarKw\",\n text: \"var\",\n start: 4897,\n end: 4900,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"i\",\n start: 4901,\n end: 4902,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 4902,\n end: 4903,\n },\n TokenData {\n kind: \"U32Kw\",\n text: \"u32\",\n start: 4904,\n end: 4907,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 4908,\n end: 4909,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"0u\",\n start: 4910,\n end: 4912,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 4912,\n end: 4913,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"i\",\n start: 4914,\n end: 4915,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 4916,\n end: 4917,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"MAX_LIGHTS\",\n start: 4918,\n end: 4928,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 4928,\n end: 4929,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"i\",\n start: 4930,\n end: 4931,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 4932,\n end: 4933,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"i\",\n start: 4934,\n end: 4935,\n },\n TokenData {\n kind: \"Plus\",\n text: \"+\",\n start: 4936,\n end: 4937,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"1u\",\n start: 4938,\n end: 4940,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 4940,\n end: 4941,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 4942,\n end: 4943,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 4953,\n end: 4956,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"light\",\n start: 4957,\n end: 4962,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 4963,\n end: 4964,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"lights\",\n start: 4965,\n end: 4971,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 4971,\n end: 4972,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"i\",\n start: 4972,\n end: 4973,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 4973,\n end: 4974,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 4974,\n end: 4975,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 5046,\n end: 5049,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"light_dir\",\n start: 5050,\n end: 5059,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 5060,\n end: 5061,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"normalize\",\n start: 5062,\n end: 5071,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 5071,\n end: 5072,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"light\",\n start: 5072,\n end: 5077,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 5077,\n end: 5078,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"position\",\n start: 5078,\n end: 5086,\n },\n TokenData {\n kind: \"Minus\",\n text: \"-\",\n start: 5087,\n end: 5088,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"world_pos\",\n start: 5089,\n end: 5098,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 5098,\n end: 5099,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 5099,\n end: 5100,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 5110,\n end: 5113,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"distance\",\n start: 5114,\n end: 5122,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 5123,\n end: 5124,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"length\",\n start: 5125,\n end: 5131,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 5131,\n end: 5132,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"light\",\n start: 5132,\n end: 5137,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 5137,\n end: 5138,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"position\",\n start: 5138,\n end: 5146,\n },\n TokenData {\n kind: \"Minus\",\n text: \"-\",\n start: 5147,\n end: 5148,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"world_pos\",\n start: 5149,\n end: 5158,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 5158,\n end: 5159,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 5159,\n end: 5160,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 5170,\n end: 5173,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"attenuation\",\n start: 5174,\n end: 5185,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 5186,\n end: 5187,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"1.0\",\n start: 5188,\n end: 5191,\n },\n TokenData {\n kind: \"Slash\",\n text: \"/\",\n start: 5192,\n end: 5193,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 5194,\n end: 5195,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"distance\",\n start: 5195,\n end: 5203,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 5204,\n end: 5205,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"distance\",\n start: 5206,\n end: 5214,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 5214,\n end: 5215,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 5215,\n end: 5216,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 5226,\n end: 5229,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"radiance\",\n start: 5230,\n end: 5238,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 5239,\n end: 5240,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"light\",\n start: 5241,\n end: 5246,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 5246,\n end: 5247,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 5247,\n end: 5252,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 5253,\n end: 5254,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"light\",\n start: 5255,\n end: 5260,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 5260,\n end: 5261,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"intensity\",\n start: 5261,\n end: 5270,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 5271,\n end: 5272,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"attenuation\",\n start: 5273,\n end: 5284,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 5284,\n end: 5285,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 5334,\n end: 5337,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"half_vector\",\n start: 5338,\n end: 5349,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 5350,\n end: 5351,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"normalize\",\n start: 5352,\n end: 5361,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 5361,\n end: 5362,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"view_dir\",\n start: 5362,\n end: 5370,\n },\n TokenData {\n kind: \"Plus\",\n text: \"+\",\n start: 5371,\n end: 5372,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"light_dir\",\n start: 5373,\n end: 5382,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 5382,\n end: 5383,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 5383,\n end: 5384,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 5394,\n end: 5397,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"n_dot_l\",\n start: 5398,\n end: 5405,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 5406,\n end: 5407,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"max\",\n start: 5408,\n end: 5411,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 5411,\n end: 5412,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"dot\",\n start: 5412,\n end: 5415,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 5415,\n end: 5416,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"normal\",\n start: 5416,\n end: 5422,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 5422,\n end: 5423,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"light_dir\",\n start: 5424,\n end: 5433,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 5433,\n end: 5434,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 5434,\n end: 5435,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"0.0\",\n start: 5436,\n end: 5439,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 5439,\n end: 5440,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 5440,\n end: 5441,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 5451,\n end: 5454,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"n_dot_v\",\n start: 5455,\n end: 5462,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 5463,\n end: 5464,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"max\",\n start: 5465,\n end: 5468,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 5468,\n end: 5469,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"dot\",\n start: 5469,\n end: 5472,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 5472,\n end: 5473,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"normal\",\n start: 5473,\n end: 5479,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 5479,\n end: 5480,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"view_dir\",\n start: 5481,\n end: 5489,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 5489,\n end: 5490,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 5490,\n end: 5491,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"0.0\",\n start: 5492,\n end: 5495,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 5495,\n end: 5496,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 5496,\n end: 5497,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 5507,\n end: 5510,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"n_dot_h\",\n start: 5511,\n end: 5518,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 5519,\n end: 5520,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"max\",\n start: 5521,\n end: 5524,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 5524,\n end: 5525,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"dot\",\n start: 5525,\n end: 5528,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 5528,\n end: 5529,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"normal\",\n start: 5529,\n end: 5535,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 5535,\n end: 5536,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"half_vector\",\n start: 5537,\n end: 5548,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 5548,\n end: 5549,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 5549,\n end: 5550,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"0.0\",\n start: 5551,\n end: 5554,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 5554,\n end: 5555,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 5555,\n end: 5556,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 5566,\n end: 5569,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"v_dot_h\",\n start: 5570,\n end: 5577,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 5578,\n end: 5579,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"max\",\n start: 5580,\n end: 5583,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 5583,\n end: 5584,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"dot\",\n start: 5584,\n end: 5587,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 5587,\n end: 5588,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"view_dir\",\n start: 5588,\n end: 5596,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 5596,\n end: 5597,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"half_vector\",\n start: 5598,\n end: 5609,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 5609,\n end: 5610,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 5610,\n end: 5611,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"0.0\",\n start: 5612,\n end: 5615,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 5615,\n end: 5616,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 5616,\n end: 5617,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 5675,\n end: 5678,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"ndf\",\n start: 5679,\n end: 5682,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 5683,\n end: 5684,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"distribution_ggx\",\n start: 5685,\n end: 5701,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 5701,\n end: 5702,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"n_dot_h\",\n start: 5702,\n end: 5709,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 5709,\n end: 5710,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"roughness\",\n start: 5711,\n end: 5720,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 5720,\n end: 5721,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 5721,\n end: 5722,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 5732,\n end: 5735,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"g\",\n start: 5736,\n end: 5737,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 5738,\n end: 5739,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"geometry_smith\",\n start: 5740,\n end: 5754,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 5754,\n end: 5755,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"normal\",\n start: 5755,\n end: 5761,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 5761,\n end: 5762,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"view_dir\",\n start: 5763,\n end: 5771,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 5771,\n end: 5772,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"light_dir\",\n start: 5773,\n end: 5782,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 5782,\n end: 5783,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"roughness\",\n start: 5784,\n end: 5793,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 5793,\n end: 5794,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 5794,\n end: 5795,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 5805,\n end: 5808,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"f\",\n start: 5809,\n end: 5810,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 5811,\n end: 5812,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"fresnel_schlick\",\n start: 5813,\n end: 5828,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 5828,\n end: 5829,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"v_dot_h\",\n start: 5829,\n end: 5836,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 5836,\n end: 5837,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"f0\",\n start: 5838,\n end: 5840,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 5840,\n end: 5841,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 5841,\n end: 5842,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 5905,\n end: 5908,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"numerator\",\n start: 5909,\n end: 5918,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 5919,\n end: 5920,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"ndf\",\n start: 5921,\n end: 5924,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 5925,\n end: 5926,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"g\",\n start: 5927,\n end: 5928,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 5929,\n end: 5930,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"f\",\n start: 5931,\n end: 5932,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 5932,\n end: 5933,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 5943,\n end: 5946,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"denominator\",\n start: 5947,\n end: 5958,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 5959,\n end: 5960,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"4.0\",\n start: 5961,\n end: 5964,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 5965,\n end: 5966,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"n_dot_v\",\n start: 5967,\n end: 5974,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 5975,\n end: 5976,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"n_dot_l\",\n start: 5977,\n end: 5984,\n },\n TokenData {\n kind: \"Plus\",\n text: \"+\",\n start: 5985,\n end: 5986,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"0.0001\",\n start: 5987,\n end: 5993,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 5993,\n end: 5994,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 6004,\n end: 6007,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"specular\",\n start: 6008,\n end: 6016,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 6017,\n end: 6018,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"numerator\",\n start: 6019,\n end: 6028,\n },\n TokenData {\n kind: \"Slash\",\n text: \"/\",\n start: 6029,\n end: 6030,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"denominator\",\n start: 6031,\n end: 6042,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 6042,\n end: 6043,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 6063,\n end: 6066,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"ks\",\n start: 6067,\n end: 6069,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 6070,\n end: 6071,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"f\",\n start: 6072,\n end: 6073,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 6073,\n end: 6074,\n },\n TokenData {\n kind: \"VarKw\",\n text: \"var\",\n start: 6084,\n end: 6087,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"kd\",\n start: 6088,\n end: 6090,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 6091,\n end: 6092,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 6093,\n end: 6097,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 6097,\n end: 6098,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 6098,\n end: 6101,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 6101,\n end: 6102,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 6102,\n end: 6103,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"1.0\",\n start: 6103,\n end: 6106,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 6106,\n end: 6107,\n },\n TokenData {\n kind: \"Minus\",\n text: \"-\",\n start: 6108,\n end: 6109,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"ks\",\n start: 6110,\n end: 6112,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 6112,\n end: 6113,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"kd\",\n start: 6123,\n end: 6125,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 6126,\n end: 6127,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"kd\",\n start: 6128,\n end: 6130,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 6131,\n end: 6132,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 6133,\n end: 6134,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"1.0\",\n start: 6134,\n end: 6137,\n },\n TokenData {\n kind: \"Minus\",\n text: \"-\",\n start: 6138,\n end: 6139,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"metallic\",\n start: 6140,\n end: 6148,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 6148,\n end: 6149,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 6149,\n end: 6150,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 6170,\n end: 6175,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 6176,\n end: 6177,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 6178,\n end: 6183,\n },\n TokenData {\n kind: \"Plus\",\n text: \"+\",\n start: 6184,\n end: 6185,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 6186,\n end: 6187,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"kd\",\n start: 6187,\n end: 6189,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 6190,\n end: 6191,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"albedo\",\n start: 6192,\n end: 6198,\n },\n TokenData {\n kind: \"Slash\",\n text: \"/\",\n start: 6199,\n end: 6200,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"PI\",\n start: 6201,\n end: 6203,\n },\n TokenData {\n kind: \"Plus\",\n text: \"+\",\n start: 6204,\n end: 6205,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"specular\",\n start: 6206,\n end: 6214,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 6214,\n end: 6215,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 6216,\n end: 6217,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"radiance\",\n start: 6218,\n end: 6226,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 6227,\n end: 6228,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"n_dot_l\",\n start: 6229,\n end: 6236,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 6236,\n end: 6237,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 6243,\n end: 6244,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 6281,\n end: 6284,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"ambient\",\n start: 6285,\n end: 6292,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 6293,\n end: 6294,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 6295,\n end: 6299,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 6299,\n end: 6300,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 6300,\n end: 6303,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 6303,\n end: 6304,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 6304,\n end: 6305,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"0.03\",\n start: 6305,\n end: 6309,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 6309,\n end: 6310,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 6311,\n end: 6312,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"albedo\",\n start: 6313,\n end: 6319,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 6320,\n end: 6321,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"ao\",\n start: 6322,\n end: 6324,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 6324,\n end: 6325,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 6331,\n end: 6336,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 6337,\n end: 6338,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 6339,\n end: 6344,\n },\n TokenData {\n kind: \"Plus\",\n text: \"+\",\n start: 6345,\n end: 6346,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"ambient\",\n start: 6347,\n end: 6354,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 6354,\n end: 6355,\n },\n TokenData {\n kind: \"ReturnKw\",\n text: \"return\",\n start: 6367,\n end: 6373,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 6374,\n end: 6379,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 6379,\n end: 6380,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 6382,\n end: 6383,\n },\n TokenData {\n kind: \"FnKw\",\n text: \"fn\",\n start: 6414,\n end: 6416,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"reinhard_tone_mapping\",\n start: 6417,\n end: 6438,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 6438,\n end: 6439,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 6439,\n end: 6444,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 6444,\n end: 6445,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 6446,\n end: 6450,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 6450,\n end: 6451,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 6451,\n end: 6454,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 6454,\n end: 6455,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 6455,\n end: 6456,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 6457,\n end: 6459,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 6460,\n end: 6464,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 6464,\n end: 6465,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 6465,\n end: 6468,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 6468,\n end: 6469,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 6470,\n end: 6471,\n },\n TokenData {\n kind: \"ReturnKw\",\n text: \"return\",\n start: 6477,\n end: 6483,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 6484,\n end: 6489,\n },\n TokenData {\n kind: \"Slash\",\n text: \"/\",\n start: 6490,\n end: 6491,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 6492,\n end: 6493,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 6493,\n end: 6498,\n },\n TokenData {\n kind: \"Plus\",\n text: \"+\",\n start: 6499,\n end: 6500,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 6501,\n end: 6505,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 6505,\n end: 6506,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 6506,\n end: 6509,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 6509,\n end: 6510,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 6510,\n end: 6511,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"1.0\",\n start: 6511,\n end: 6514,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 6514,\n end: 6515,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 6515,\n end: 6516,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 6516,\n end: 6517,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 6519,\n end: 6520,\n },\n TokenData {\n kind: \"FnKw\",\n text: \"fn\",\n start: 6524,\n end: 6526,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"aces_tone_mapping\",\n start: 6527,\n end: 6544,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 6544,\n end: 6545,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 6545,\n end: 6550,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 6550,\n end: 6551,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 6552,\n end: 6556,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 6556,\n end: 6557,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 6557,\n end: 6560,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 6560,\n end: 6561,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 6561,\n end: 6562,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 6563,\n end: 6565,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 6566,\n end: 6570,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 6570,\n end: 6571,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 6571,\n end: 6574,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 6574,\n end: 6575,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 6576,\n end: 6577,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 6583,\n end: 6586,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"a\",\n start: 6587,\n end: 6588,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 6589,\n end: 6590,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"2.51\",\n start: 6591,\n end: 6595,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 6595,\n end: 6596,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 6602,\n end: 6605,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"b\",\n start: 6606,\n end: 6607,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 6608,\n end: 6609,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"0.03\",\n start: 6610,\n end: 6614,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 6614,\n end: 6615,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 6621,\n end: 6624,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"c\",\n start: 6625,\n end: 6626,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 6627,\n end: 6628,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"2.43\",\n start: 6629,\n end: 6633,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 6633,\n end: 6634,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 6640,\n end: 6643,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"d\",\n start: 6644,\n end: 6645,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 6646,\n end: 6647,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"0.59\",\n start: 6648,\n end: 6652,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 6652,\n end: 6653,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 6659,\n end: 6662,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"e\",\n start: 6663,\n end: 6664,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 6665,\n end: 6666,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"0.14\",\n start: 6667,\n end: 6671,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 6671,\n end: 6672,\n },\n TokenData {\n kind: \"ReturnKw\",\n text: \"return\",\n start: 6678,\n end: 6684,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"saturate_vec3\",\n start: 6685,\n end: 6698,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 6698,\n end: 6699,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 6699,\n end: 6700,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 6700,\n end: 6705,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 6706,\n end: 6707,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 6708,\n end: 6709,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"a\",\n start: 6709,\n end: 6710,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 6711,\n end: 6712,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 6713,\n end: 6718,\n },\n TokenData {\n kind: \"Plus\",\n text: \"+\",\n start: 6719,\n end: 6720,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"b\",\n start: 6721,\n end: 6722,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 6722,\n end: 6723,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 6723,\n end: 6724,\n },\n TokenData {\n kind: \"Slash\",\n text: \"/\",\n start: 6725,\n end: 6726,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 6727,\n end: 6728,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 6728,\n end: 6733,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 6734,\n end: 6735,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 6736,\n end: 6737,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"c\",\n start: 6737,\n end: 6738,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 6739,\n end: 6740,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 6741,\n end: 6746,\n },\n TokenData {\n kind: \"Plus\",\n text: \"+\",\n start: 6747,\n end: 6748,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"d\",\n start: 6749,\n end: 6750,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 6750,\n end: 6751,\n },\n TokenData {\n kind: \"Plus\",\n text: \"+\",\n start: 6752,\n end: 6753,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"e\",\n start: 6754,\n end: 6755,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 6755,\n end: 6756,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 6756,\n end: 6757,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 6757,\n end: 6758,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 6760,\n end: 6761,\n },\n TokenData {\n kind: \"FnKw\",\n text: \"fn\",\n start: 6786,\n end: 6788,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"gamma_correct\",\n start: 6789,\n end: 6802,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 6802,\n end: 6803,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 6803,\n end: 6808,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 6808,\n end: 6809,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 6810,\n end: 6814,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 6814,\n end: 6815,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 6815,\n end: 6818,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 6818,\n end: 6819,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 6819,\n end: 6820,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 6821,\n end: 6823,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 6824,\n end: 6828,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 6828,\n end: 6829,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 6829,\n end: 6832,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 6832,\n end: 6833,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 6834,\n end: 6835,\n },\n TokenData {\n kind: \"ReturnKw\",\n text: \"return\",\n start: 6841,\n end: 6847,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"pow\",\n start: 6848,\n end: 6851,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 6851,\n end: 6852,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 6852,\n end: 6857,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 6857,\n end: 6858,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 6859,\n end: 6863,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 6863,\n end: 6864,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 6864,\n end: 6867,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 6867,\n end: 6868,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 6868,\n end: 6869,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"1.0\",\n start: 6869,\n end: 6872,\n },\n TokenData {\n kind: \"Slash\",\n text: \"/\",\n start: 6873,\n end: 6874,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"2.2\",\n start: 6875,\n end: 6878,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 6878,\n end: 6879,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 6879,\n end: 6880,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 6880,\n end: 6881,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 6883,\n end: 6884,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 6906,\n end: 6907,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"vertex\",\n start: 6907,\n end: 6913,\n },\n TokenData {\n kind: \"FnKw\",\n text: \"fn\",\n start: 6915,\n end: 6917,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"vs_main\",\n start: 6918,\n end: 6925,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 6925,\n end: 6926,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"input\",\n start: 6926,\n end: 6931,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 6931,\n end: 6932,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"VertexInput\",\n start: 6933,\n end: 6944,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 6944,\n end: 6945,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 6946,\n end: 6948,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"VertexOutput\",\n start: 6949,\n end: 6961,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 6962,\n end: 6963,\n },\n TokenData {\n kind: \"VarKw\",\n text: \"var\",\n start: 6969,\n end: 6972,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"output\",\n start: 6973,\n end: 6979,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 6979,\n end: 6980,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"VertexOutput\",\n start: 6981,\n end: 6993,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 6993,\n end: 6994,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 7048,\n end: 7051,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"world_position\",\n start: 7052,\n end: 7066,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 7067,\n end: 7068,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"transform\",\n start: 7069,\n end: 7078,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 7078,\n end: 7079,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"model\",\n start: 7079,\n end: 7084,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 7085,\n end: 7086,\n },\n TokenData {\n kind: \"Vec4Kw\",\n text: \"vec4\",\n start: 7087,\n end: 7091,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 7091,\n end: 7092,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 7092,\n end: 7095,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 7095,\n end: 7096,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 7096,\n end: 7097,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"input\",\n start: 7097,\n end: 7102,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 7102,\n end: 7103,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"position\",\n start: 7103,\n end: 7111,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 7111,\n end: 7112,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"1.0\",\n start: 7113,\n end: 7116,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 7116,\n end: 7117,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 7117,\n end: 7118,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"output\",\n start: 7124,\n end: 7130,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 7130,\n end: 7131,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"world_position\",\n start: 7131,\n end: 7145,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 7146,\n end: 7147,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"world_position\",\n start: 7148,\n end: 7162,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 7162,\n end: 7163,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"xyz\",\n start: 7163,\n end: 7166,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 7166,\n end: 7167,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"output\",\n start: 7211,\n end: 7217,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 7217,\n end: 7218,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"clip_position\",\n start: 7218,\n end: 7231,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 7232,\n end: 7233,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"camera\",\n start: 7234,\n end: 7240,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 7240,\n end: 7241,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"view_proj\",\n start: 7241,\n end: 7250,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 7251,\n end: 7252,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"world_position\",\n start: 7253,\n end: 7267,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 7267,\n end: 7268,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"output\",\n start: 7320,\n end: 7326,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 7326,\n end: 7327,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"world_normal\",\n start: 7327,\n end: 7339,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 7340,\n end: 7341,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"normalize\",\n start: 7342,\n end: 7351,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 7351,\n end: 7352,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"transform\",\n start: 7352,\n end: 7361,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 7361,\n end: 7362,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"normal\",\n start: 7362,\n end: 7368,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 7369,\n end: 7370,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"input\",\n start: 7371,\n end: 7376,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 7376,\n end: 7377,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"normal\",\n start: 7377,\n end: 7383,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 7383,\n end: 7384,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 7384,\n end: 7385,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"output\",\n start: 7433,\n end: 7439,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 7439,\n end: 7440,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"uv\",\n start: 7440,\n end: 7442,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 7443,\n end: 7444,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"input\",\n start: 7445,\n end: 7450,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 7450,\n end: 7451,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"uv\",\n start: 7451,\n end: 7453,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 7453,\n end: 7454,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"output\",\n start: 7500,\n end: 7506,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 7506,\n end: 7507,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 7507,\n end: 7512,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 7513,\n end: 7514,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"input\",\n start: 7515,\n end: 7520,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 7520,\n end: 7521,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 7521,\n end: 7526,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 7526,\n end: 7527,\n },\n TokenData {\n kind: \"ReturnKw\",\n text: \"return\",\n start: 7539,\n end: 7545,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"output\",\n start: 7546,\n end: 7552,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 7552,\n end: 7553,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 7555,\n end: 7556,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 7580,\n end: 7581,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"fragment\",\n start: 7581,\n end: 7589,\n },\n TokenData {\n kind: \"FnKw\",\n text: \"fn\",\n start: 7591,\n end: 7593,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"fs_main\",\n start: 7594,\n end: 7601,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 7601,\n end: 7602,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"input\",\n start: 7602,\n end: 7607,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 7607,\n end: 7608,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"VertexOutput\",\n start: 7609,\n end: 7621,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 7621,\n end: 7622,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 7623,\n end: 7625,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"FragmentOutput\",\n start: 7626,\n end: 7640,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 7641,\n end: 7642,\n },\n TokenData {\n kind: \"VarKw\",\n text: \"var\",\n start: 7648,\n end: 7651,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"output\",\n start: 7652,\n end: 7658,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 7658,\n end: 7659,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"FragmentOutput\",\n start: 7660,\n end: 7674,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 7674,\n end: 7675,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 7711,\n end: 7714,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"albedo_sample\",\n start: 7715,\n end: 7728,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 7729,\n end: 7730,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"textureSample\",\n start: 7731,\n end: 7744,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 7744,\n end: 7745,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"albedo_texture\",\n start: 7745,\n end: 7759,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 7759,\n end: 7760,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"texture_sampler\",\n start: 7761,\n end: 7776,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 7776,\n end: 7777,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"input\",\n start: 7778,\n end: 7783,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 7783,\n end: 7784,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"uv\",\n start: 7784,\n end: 7786,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 7786,\n end: 7787,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 7787,\n end: 7788,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 7794,\n end: 7797,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"normal_sample\",\n start: 7798,\n end: 7811,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 7812,\n end: 7813,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"textureSample\",\n start: 7814,\n end: 7827,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 7827,\n end: 7828,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"normal_texture\",\n start: 7828,\n end: 7842,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 7842,\n end: 7843,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"texture_sampler\",\n start: 7844,\n end: 7859,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 7859,\n end: 7860,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"input\",\n start: 7861,\n end: 7866,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 7866,\n end: 7867,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"uv\",\n start: 7867,\n end: 7869,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 7869,\n end: 7870,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 7870,\n end: 7871,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 7877,\n end: 7880,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"metallic_roughness_sample\",\n start: 7881,\n end: 7906,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 7907,\n end: 7908,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"textureSample\",\n start: 7909,\n end: 7922,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 7922,\n end: 7923,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"metallic_roughness_texture\",\n start: 7923,\n end: 7949,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 7949,\n end: 7950,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"texture_sampler\",\n start: 7951,\n end: 7966,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 7966,\n end: 7967,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"input\",\n start: 7968,\n end: 7973,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 7973,\n end: 7974,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"uv\",\n start: 7974,\n end: 7976,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 7976,\n end: 7977,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 7977,\n end: 7978,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 7984,\n end: 7987,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"ao_sample\",\n start: 7988,\n end: 7997,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 7998,\n end: 7999,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"textureSample\",\n start: 8000,\n end: 8013,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 8013,\n end: 8014,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"ao_texture\",\n start: 8014,\n end: 8024,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 8024,\n end: 8025,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"texture_sampler\",\n start: 8026,\n end: 8041,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 8041,\n end: 8042,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"input\",\n start: 8043,\n end: 8048,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 8048,\n end: 8049,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"uv\",\n start: 8049,\n end: 8051,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 8051,\n end: 8052,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 8052,\n end: 8053,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 8059,\n end: 8062,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"emissive_sample\",\n start: 8063,\n end: 8078,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 8079,\n end: 8080,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"textureSample\",\n start: 8081,\n end: 8094,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 8094,\n end: 8095,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"emissive_texture\",\n start: 8095,\n end: 8111,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 8111,\n end: 8112,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"texture_sampler\",\n start: 8113,\n end: 8128,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 8128,\n end: 8129,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"input\",\n start: 8130,\n end: 8135,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 8135,\n end: 8136,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"uv\",\n start: 8136,\n end: 8138,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 8138,\n end: 8139,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 8139,\n end: 8140,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 8188,\n end: 8191,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"albedo\",\n start: 8192,\n end: 8198,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 8199,\n end: 8200,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"albedo_sample\",\n start: 8201,\n end: 8214,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 8214,\n end: 8215,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"rgb\",\n start: 8215,\n end: 8218,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 8219,\n end: 8220,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"material\",\n start: 8221,\n end: 8229,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 8229,\n end: 8230,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"albedo\",\n start: 8230,\n end: 8236,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 8237,\n end: 8238,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"input\",\n start: 8239,\n end: 8244,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 8244,\n end: 8245,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 8245,\n end: 8250,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 8250,\n end: 8251,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"rgb\",\n start: 8251,\n end: 8254,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 8254,\n end: 8255,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 8261,\n end: 8264,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"metallic\",\n start: 8265,\n end: 8273,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 8274,\n end: 8275,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"metallic_roughness_sample\",\n start: 8276,\n end: 8301,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 8301,\n end: 8302,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"b\",\n start: 8302,\n end: 8303,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 8304,\n end: 8305,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"material\",\n start: 8306,\n end: 8314,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 8314,\n end: 8315,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"metallic\",\n start: 8315,\n end: 8323,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 8323,\n end: 8324,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 8330,\n end: 8333,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"roughness\",\n start: 8334,\n end: 8343,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 8344,\n end: 8345,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"metallic_roughness_sample\",\n start: 8346,\n end: 8371,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 8371,\n end: 8372,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"g\",\n start: 8372,\n end: 8373,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 8374,\n end: 8375,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"material\",\n start: 8376,\n end: 8384,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 8384,\n end: 8385,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"roughness\",\n start: 8385,\n end: 8394,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 8394,\n end: 8395,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 8401,\n end: 8404,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"ao\",\n start: 8405,\n end: 8407,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 8408,\n end: 8409,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"ao_sample\",\n start: 8410,\n end: 8419,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 8419,\n end: 8420,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"r\",\n start: 8420,\n end: 8421,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 8422,\n end: 8423,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"material\",\n start: 8424,\n end: 8432,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 8432,\n end: 8433,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"ao\",\n start: 8433,\n end: 8435,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 8435,\n end: 8436,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 8442,\n end: 8445,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"emissive\",\n start: 8446,\n end: 8454,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 8455,\n end: 8456,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"emissive_sample\",\n start: 8457,\n end: 8472,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 8472,\n end: 8473,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"rgb\",\n start: 8473,\n end: 8476,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 8477,\n end: 8478,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"material\",\n start: 8479,\n end: 8487,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 8487,\n end: 8488,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"emissive\",\n start: 8488,\n end: 8496,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 8496,\n end: 8497,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 8550,\n end: 8553,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"normal_map\",\n start: 8554,\n end: 8564,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 8565,\n end: 8566,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"normal_sample\",\n start: 8567,\n end: 8580,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 8580,\n end: 8581,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"rgb\",\n start: 8581,\n end: 8584,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 8585,\n end: 8586,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"2.0\",\n start: 8587,\n end: 8590,\n },\n TokenData {\n kind: \"Minus\",\n text: \"-\",\n start: 8591,\n end: 8592,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"1.0\",\n start: 8593,\n end: 8596,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 8596,\n end: 8597,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 8678,\n end: 8681,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"normal\",\n start: 8682,\n end: 8688,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 8689,\n end: 8690,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"normalize\",\n start: 8691,\n end: 8700,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 8700,\n end: 8701,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"input\",\n start: 8701,\n end: 8706,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 8706,\n end: 8707,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"world_normal\",\n start: 8707,\n end: 8719,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 8719,\n end: 8720,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 8720,\n end: 8721,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 8766,\n end: 8769,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"view_dir\",\n start: 8770,\n end: 8778,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 8779,\n end: 8780,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"normalize\",\n start: 8781,\n end: 8790,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 8790,\n end: 8791,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"camera\",\n start: 8791,\n end: 8797,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 8797,\n end: 8798,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"position\",\n start: 8798,\n end: 8806,\n },\n TokenData {\n kind: \"Minus\",\n text: \"-\",\n start: 8807,\n end: 8808,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"input\",\n start: 8809,\n end: 8814,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 8814,\n end: 8815,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"world_position\",\n start: 8815,\n end: 8829,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 8829,\n end: 8830,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 8830,\n end: 8831,\n },\n TokenData {\n kind: \"VarKw\",\n text: \"var\",\n start: 8874,\n end: 8877,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 8878,\n end: 8883,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 8884,\n end: 8885,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"calculate_pbr_lighting\",\n start: 8886,\n end: 8908,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 8908,\n end: 8909,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"input\",\n start: 8919,\n end: 8924,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 8924,\n end: 8925,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"world_position\",\n start: 8925,\n end: 8939,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 8939,\n end: 8940,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"normal\",\n start: 8950,\n end: 8956,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 8956,\n end: 8957,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"view_dir\",\n start: 8967,\n end: 8975,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 8975,\n end: 8976,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"albedo\",\n start: 8986,\n end: 8992,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 8992,\n end: 8993,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"metallic\",\n start: 9003,\n end: 9011,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 9011,\n end: 9012,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"roughness\",\n start: 9022,\n end: 9031,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 9031,\n end: 9032,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"ao\",\n start: 9042,\n end: 9044,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 9050,\n end: 9051,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 9051,\n end: 9052,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 9085,\n end: 9090,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 9091,\n end: 9092,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 9093,\n end: 9098,\n },\n TokenData {\n kind: \"Plus\",\n text: \"+\",\n start: 9099,\n end: 9100,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"emissive\",\n start: 9101,\n end: 9109,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 9109,\n end: 9110,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 9143,\n end: 9148,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 9149,\n end: 9150,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"aces_tone_mapping\",\n start: 9151,\n end: 9168,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 9168,\n end: 9169,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 9169,\n end: 9174,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 9174,\n end: 9175,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 9175,\n end: 9176,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 9213,\n end: 9218,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 9219,\n end: 9220,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"gamma_correct\",\n start: 9221,\n end: 9234,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 9234,\n end: 9235,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 9235,\n end: 9240,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 9240,\n end: 9241,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 9241,\n end: 9242,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"output\",\n start: 9254,\n end: 9260,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 9260,\n end: 9261,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 9261,\n end: 9266,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 9267,\n end: 9268,\n },\n TokenData {\n kind: \"Vec4Kw\",\n text: \"vec4\",\n start: 9269,\n end: 9273,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 9273,\n end: 9274,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 9274,\n end: 9277,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 9277,\n end: 9278,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 9278,\n end: 9279,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 9279,\n end: 9284,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 9284,\n end: 9285,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"albedo_sample\",\n start: 9286,\n end: 9299,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 9299,\n end: 9300,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"a\",\n start: 9300,\n end: 9301,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 9302,\n end: 9303,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"input\",\n start: 9304,\n end: 9309,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 9309,\n end: 9310,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 9310,\n end: 9315,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 9315,\n end: 9316,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"a\",\n start: 9316,\n end: 9317,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 9317,\n end: 9318,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 9318,\n end: 9319,\n },\n TokenData {\n kind: \"ReturnKw\",\n text: \"return\",\n start: 9331,\n end: 9337,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"output\",\n start: 9338,\n end: 9344,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 9344,\n end: 9345,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 9347,\n end: 9348,\n },\n TokenData {\n kind: \"StructKw\",\n text: \"struct\",\n start: 9395,\n end: 9401,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Particle\",\n start: 9402,\n end: 9410,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 9411,\n end: 9412,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"position\",\n start: 9418,\n end: 9426,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 9426,\n end: 9427,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 9428,\n end: 9432,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 9432,\n end: 9433,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 9433,\n end: 9436,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 9436,\n end: 9437,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 9437,\n end: 9438,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"velocity\",\n start: 9444,\n end: 9452,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 9452,\n end: 9453,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 9454,\n end: 9458,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 9458,\n end: 9459,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 9459,\n end: 9462,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 9462,\n end: 9463,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 9463,\n end: 9464,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"life\",\n start: 9470,\n end: 9474,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 9474,\n end: 9475,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 9476,\n end: 9479,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 9479,\n end: 9480,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"size\",\n start: 9486,\n end: 9490,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 9490,\n end: 9491,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 9492,\n end: 9495,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 9495,\n end: 9496,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 9498,\n end: 9499,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 9503,\n end: 9504,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"group\",\n start: 9504,\n end: 9509,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 9509,\n end: 9510,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"0\",\n start: 9510,\n end: 9511,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 9511,\n end: 9512,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 9513,\n end: 9514,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"binding\",\n start: 9514,\n end: 9521,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 9521,\n end: 9522,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"0\",\n start: 9522,\n end: 9523,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 9523,\n end: 9524,\n },\n TokenData {\n kind: \"VarKw\",\n text: \"var\",\n start: 9525,\n end: 9528,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 9528,\n end: 9529,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"storage\",\n start: 9529,\n end: 9536,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 9536,\n end: 9537,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"read_write\",\n start: 9538,\n end: 9548,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 9548,\n end: 9549,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"particles\",\n start: 9550,\n end: 9559,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 9559,\n end: 9560,\n },\n TokenData {\n kind: \"ArrayKw\",\n text: \"array\",\n start: 9561,\n end: 9566,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 9566,\n end: 9567,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"Particle\",\n start: 9567,\n end: 9575,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 9575,\n end: 9576,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 9576,\n end: 9577,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 9579,\n end: 9580,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"group\",\n start: 9580,\n end: 9585,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 9585,\n end: 9586,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"0\",\n start: 9586,\n end: 9587,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 9587,\n end: 9588,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 9589,\n end: 9590,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"binding\",\n start: 9590,\n end: 9597,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 9597,\n end: 9598,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"1\",\n start: 9598,\n end: 9599,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 9599,\n end: 9600,\n },\n TokenData {\n kind: \"VarKw\",\n text: \"var\",\n start: 9601,\n end: 9604,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 9604,\n end: 9605,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"uniform\",\n start: 9605,\n end: 9612,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 9612,\n end: 9613,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"delta_time\",\n start: 9614,\n end: 9624,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 9624,\n end: 9625,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 9626,\n end: 9629,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 9629,\n end: 9630,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 9632,\n end: 9633,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"group\",\n start: 9633,\n end: 9638,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 9638,\n end: 9639,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"0\",\n start: 9639,\n end: 9640,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 9640,\n end: 9641,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 9642,\n end: 9643,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"binding\",\n start: 9643,\n end: 9650,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 9650,\n end: 9651,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"2\",\n start: 9651,\n end: 9652,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 9652,\n end: 9653,\n },\n TokenData {\n kind: \"VarKw\",\n text: \"var\",\n start: 9654,\n end: 9657,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 9657,\n end: 9658,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"uniform\",\n start: 9658,\n end: 9665,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 9665,\n end: 9666,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"gravity\",\n start: 9667,\n end: 9674,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 9674,\n end: 9675,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 9676,\n end: 9680,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 9680,\n end: 9681,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 9681,\n end: 9684,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 9684,\n end: 9685,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 9685,\n end: 9686,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 9690,\n end: 9691,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"compute\",\n start: 9691,\n end: 9698,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 9699,\n end: 9700,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"workgroup_size\",\n start: 9700,\n end: 9714,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 9714,\n end: 9715,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"64\",\n start: 9715,\n end: 9717,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 9717,\n end: 9718,\n },\n TokenData {\n kind: \"FnKw\",\n text: \"fn\",\n start: 9720,\n end: 9722,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"cs_particle_update\",\n start: 9723,\n end: 9741,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 9741,\n end: 9742,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 9742,\n end: 9743,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"builtin\",\n start: 9743,\n end: 9750,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 9750,\n end: 9751,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"global_invocation_id\",\n start: 9751,\n end: 9771,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 9771,\n end: 9772,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"global_id\",\n start: 9773,\n end: 9782,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 9782,\n end: 9783,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 9784,\n end: 9788,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 9788,\n end: 9789,\n },\n TokenData {\n kind: \"U32Kw\",\n text: \"u32\",\n start: 9789,\n end: 9792,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 9792,\n end: 9793,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 9793,\n end: 9794,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 9795,\n end: 9796,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 9802,\n end: 9805,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"index\",\n start: 9806,\n end: 9811,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 9812,\n end: 9813,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"global_id\",\n start: 9814,\n end: 9823,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 9823,\n end: 9824,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"x\",\n start: 9824,\n end: 9825,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 9825,\n end: 9826,\n },\n TokenData {\n kind: \"IfKw\",\n text: \"if\",\n start: 9838,\n end: 9840,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 9841,\n end: 9842,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"index\",\n start: 9842,\n end: 9847,\n },\n TokenData {\n kind: \"Ge\",\n text: \">=\",\n start: 9848,\n end: 9850,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"arrayLength\",\n start: 9851,\n end: 9862,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 9862,\n end: 9863,\n },\n TokenData {\n kind: \"Ampersand\",\n text: \"&\",\n start: 9863,\n end: 9864,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"particles\",\n start: 9864,\n end: 9873,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 9873,\n end: 9874,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 9874,\n end: 9875,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 9876,\n end: 9877,\n },\n TokenData {\n kind: \"ReturnKw\",\n text: \"return\",\n start: 9887,\n end: 9893,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 9893,\n end: 9894,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 9900,\n end: 9901,\n },\n TokenData {\n kind: \"VarKw\",\n text: \"var\",\n start: 9913,\n end: 9916,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"particle\",\n start: 9917,\n end: 9925,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 9926,\n end: 9927,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"particles\",\n start: 9928,\n end: 9937,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 9937,\n end: 9938,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"index\",\n start: 9938,\n end: 9943,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 9943,\n end: 9944,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 9944,\n end: 9945,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"particle\",\n start: 9994,\n end: 10002,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 10002,\n end: 10003,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"velocity\",\n start: 10003,\n end: 10011,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 10012,\n end: 10013,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"particle\",\n start: 10014,\n end: 10022,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 10022,\n end: 10023,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"velocity\",\n start: 10023,\n end: 10031,\n },\n TokenData {\n kind: \"Plus\",\n text: \"+\",\n start: 10032,\n end: 10033,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"gravity\",\n start: 10034,\n end: 10041,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 10042,\n end: 10043,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"delta_time\",\n start: 10044,\n end: 10054,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 10054,\n end: 10055,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"particle\",\n start: 10091,\n end: 10099,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 10099,\n end: 10100,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"position\",\n start: 10100,\n end: 10108,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 10109,\n end: 10110,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"particle\",\n start: 10111,\n end: 10119,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 10119,\n end: 10120,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"position\",\n start: 10120,\n end: 10128,\n },\n TokenData {\n kind: \"Plus\",\n text: \"+\",\n start: 10129,\n end: 10130,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"particle\",\n start: 10131,\n end: 10139,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 10139,\n end: 10140,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"velocity\",\n start: 10140,\n end: 10148,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 10149,\n end: 10150,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"delta_time\",\n start: 10151,\n end: 10161,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 10161,\n end: 10162,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"particle\",\n start: 10194,\n end: 10202,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 10202,\n end: 10203,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"life\",\n start: 10203,\n end: 10207,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 10208,\n end: 10209,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"particle\",\n start: 10210,\n end: 10218,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 10218,\n end: 10219,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"life\",\n start: 10219,\n end: 10223,\n },\n TokenData {\n kind: \"Minus\",\n text: \"-\",\n start: 10224,\n end: 10225,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"delta_time\",\n start: 10226,\n end: 10236,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 10236,\n end: 10237,\n },\n TokenData {\n kind: \"IfKw\",\n text: \"if\",\n start: 10280,\n end: 10282,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 10283,\n end: 10284,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"particle\",\n start: 10284,\n end: 10292,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 10292,\n end: 10293,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"life\",\n start: 10293,\n end: 10297,\n },\n TokenData {\n kind: \"Le\",\n text: \"<=\",\n start: 10298,\n end: 10300,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"0.0\",\n start: 10301,\n end: 10304,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 10304,\n end: 10305,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 10306,\n end: 10307,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"particle\",\n start: 10317,\n end: 10325,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 10325,\n end: 10326,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"position\",\n start: 10326,\n end: 10334,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 10335,\n end: 10336,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 10337,\n end: 10341,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 10341,\n end: 10342,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 10342,\n end: 10345,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 10345,\n end: 10346,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 10346,\n end: 10347,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"0.0\",\n start: 10347,\n end: 10350,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 10350,\n end: 10351,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"10.0\",\n start: 10352,\n end: 10356,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 10356,\n end: 10357,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"0.0\",\n start: 10358,\n end: 10361,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 10361,\n end: 10362,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 10362,\n end: 10363,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"particle\",\n start: 10373,\n end: 10381,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 10381,\n end: 10382,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"velocity\",\n start: 10382,\n end: 10390,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 10391,\n end: 10392,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 10393,\n end: 10397,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 10397,\n end: 10398,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 10398,\n end: 10401,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 10401,\n end: 10402,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 10402,\n end: 10403,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 10417,\n end: 10418,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 10418,\n end: 10421,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 10421,\n end: 10422,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"index\",\n start: 10422,\n end: 10427,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 10427,\n end: 10428,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 10429,\n end: 10430,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"0.1\",\n start: 10431,\n end: 10434,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 10434,\n end: 10435,\n },\n TokenData {\n kind: \"Percent\",\n text: \"%\",\n start: 10436,\n end: 10437,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"2.0\",\n start: 10438,\n end: 10441,\n },\n TokenData {\n kind: \"Minus\",\n text: \"-\",\n start: 10442,\n end: 10443,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"1.0\",\n start: 10444,\n end: 10447,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 10447,\n end: 10448,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"5.0\",\n start: 10462,\n end: 10465,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 10465,\n end: 10466,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 10480,\n end: 10481,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 10481,\n end: 10484,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 10484,\n end: 10485,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"index\",\n start: 10485,\n end: 10490,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 10490,\n end: 10491,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 10492,\n end: 10493,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"0.2\",\n start: 10494,\n end: 10497,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 10497,\n end: 10498,\n },\n TokenData {\n kind: \"Percent\",\n text: \"%\",\n start: 10499,\n end: 10500,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"2.0\",\n start: 10501,\n end: 10504,\n },\n TokenData {\n kind: \"Minus\",\n text: \"-\",\n start: 10505,\n end: 10506,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"1.0\",\n start: 10507,\n end: 10510,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 10520,\n end: 10521,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 10521,\n end: 10522,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"particle\",\n start: 10532,\n end: 10540,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 10540,\n end: 10541,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"life\",\n start: 10541,\n end: 10545,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 10546,\n end: 10547,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"5.0\",\n start: 10548,\n end: 10551,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 10551,\n end: 10552,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"particle\",\n start: 10562,\n end: 10570,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 10570,\n end: 10571,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"size\",\n start: 10571,\n end: 10575,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 10576,\n end: 10577,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"1.0\",\n start: 10578,\n end: 10581,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 10581,\n end: 10582,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 10588,\n end: 10589,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"particles\",\n start: 10601,\n end: 10610,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 10610,\n end: 10611,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"index\",\n start: 10611,\n end: 10616,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 10616,\n end: 10617,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 10618,\n end: 10619,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"particle\",\n start: 10620,\n end: 10628,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 10628,\n end: 10629,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 10631,\n end: 10632,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 10671,\n end: 10672,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"group\",\n start: 10672,\n end: 10677,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 10677,\n end: 10678,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"0\",\n start: 10678,\n end: 10679,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 10679,\n end: 10680,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 10681,\n end: 10682,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"binding\",\n start: 10682,\n end: 10689,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 10689,\n end: 10690,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"0\",\n start: 10690,\n end: 10691,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 10691,\n end: 10692,\n },\n TokenData {\n kind: \"VarKw\",\n text: \"var\",\n start: 10693,\n end: 10696,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"input_texture\",\n start: 10697,\n end: 10710,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 10710,\n end: 10711,\n },\n TokenData {\n kind: \"Texture2dKw\",\n text: \"texture_2d\",\n start: 10712,\n end: 10722,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 10722,\n end: 10723,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 10723,\n end: 10726,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 10726,\n end: 10727,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 10727,\n end: 10728,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 10730,\n end: 10731,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"group\",\n start: 10731,\n end: 10736,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 10736,\n end: 10737,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"0\",\n start: 10737,\n end: 10738,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 10738,\n end: 10739,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 10740,\n end: 10741,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"binding\",\n start: 10741,\n end: 10748,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 10748,\n end: 10749,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"1\",\n start: 10749,\n end: 10750,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 10750,\n end: 10751,\n },\n TokenData {\n kind: \"VarKw\",\n text: \"var\",\n start: 10752,\n end: 10755,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"output_texture\",\n start: 10756,\n end: 10770,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 10770,\n end: 10771,\n },\n TokenData {\n kind: \"TextureStorage2dKw\",\n text: \"texture_storage_2d\",\n start: 10772,\n end: 10790,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 10790,\n end: 10791,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"rgba8unorm\",\n start: 10791,\n end: 10801,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 10801,\n end: 10802,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"write\",\n start: 10803,\n end: 10808,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 10808,\n end: 10809,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 10809,\n end: 10810,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 10814,\n end: 10815,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"compute\",\n start: 10815,\n end: 10822,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 10823,\n end: 10824,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"workgroup_size\",\n start: 10824,\n end: 10838,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 10838,\n end: 10839,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"8\",\n start: 10839,\n end: 10840,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 10840,\n end: 10841,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"8\",\n start: 10842,\n end: 10843,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 10843,\n end: 10844,\n },\n TokenData {\n kind: \"FnKw\",\n text: \"fn\",\n start: 10846,\n end: 10848,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"cs_post_process\",\n start: 10849,\n end: 10864,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 10864,\n end: 10865,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 10865,\n end: 10866,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"builtin\",\n start: 10866,\n end: 10873,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 10873,\n end: 10874,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"global_invocation_id\",\n start: 10874,\n end: 10894,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 10894,\n end: 10895,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"global_id\",\n start: 10896,\n end: 10905,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 10905,\n end: 10906,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 10907,\n end: 10911,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 10911,\n end: 10912,\n },\n TokenData {\n kind: \"U32Kw\",\n text: \"u32\",\n start: 10912,\n end: 10915,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 10915,\n end: 10916,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 10916,\n end: 10917,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 10918,\n end: 10919,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 10925,\n end: 10928,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"coords\",\n start: 10929,\n end: 10935,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 10936,\n end: 10937,\n },\n TokenData {\n kind: \"Vec2Kw\",\n text: \"vec2\",\n start: 10938,\n end: 10942,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 10942,\n end: 10943,\n },\n TokenData {\n kind: \"I32Kw\",\n text: \"i32\",\n start: 10943,\n end: 10946,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 10946,\n end: 10947,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 10947,\n end: 10948,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"global_id\",\n start: 10948,\n end: 10957,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 10957,\n end: 10958,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"xy\",\n start: 10958,\n end: 10960,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 10960,\n end: 10961,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 10961,\n end: 10962,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 10968,\n end: 10971,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"dimensions\",\n start: 10972,\n end: 10982,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 10983,\n end: 10984,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"textureDimensions\",\n start: 10985,\n end: 11002,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 11002,\n end: 11003,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"input_texture\",\n start: 11003,\n end: 11016,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 11016,\n end: 11017,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 11017,\n end: 11018,\n },\n TokenData {\n kind: \"IfKw\",\n text: \"if\",\n start: 11030,\n end: 11032,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 11033,\n end: 11034,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"coords\",\n start: 11034,\n end: 11040,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 11040,\n end: 11041,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"x\",\n start: 11041,\n end: 11042,\n },\n TokenData {\n kind: \"Ge\",\n text: \">=\",\n start: 11043,\n end: 11045,\n },\n TokenData {\n kind: \"I32Kw\",\n text: \"i32\",\n start: 11046,\n end: 11049,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 11049,\n end: 11050,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"dimensions\",\n start: 11050,\n end: 11060,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 11060,\n end: 11061,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"x\",\n start: 11061,\n end: 11062,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 11062,\n end: 11063,\n },\n TokenData {\n kind: \"PipePipe\",\n text: \"||\",\n start: 11064,\n end: 11066,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"coords\",\n start: 11067,\n end: 11073,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 11073,\n end: 11074,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"y\",\n start: 11074,\n end: 11075,\n },\n TokenData {\n kind: \"Ge\",\n text: \">=\",\n start: 11076,\n end: 11078,\n },\n TokenData {\n kind: \"I32Kw\",\n text: \"i32\",\n start: 11079,\n end: 11082,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 11082,\n end: 11083,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"dimensions\",\n start: 11083,\n end: 11093,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 11093,\n end: 11094,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"y\",\n start: 11094,\n end: 11095,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 11095,\n end: 11096,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 11096,\n end: 11097,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 11098,\n end: 11099,\n },\n TokenData {\n kind: \"ReturnKw\",\n text: \"return\",\n start: 11109,\n end: 11115,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 11115,\n end: 11116,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 11122,\n end: 11123,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 11164,\n end: 11167,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 11168,\n end: 11173,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 11174,\n end: 11175,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"textureLoad\",\n start: 11176,\n end: 11187,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 11187,\n end: 11188,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"input_texture\",\n start: 11188,\n end: 11201,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 11201,\n end: 11202,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"coords\",\n start: 11203,\n end: 11209,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 11209,\n end: 11210,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"0\",\n start: 11211,\n end: 11212,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 11212,\n end: 11213,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 11213,\n end: 11214,\n },\n TokenData {\n kind: \"VarKw\",\n text: \"var\",\n start: 11282,\n end: 11285,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"blurred_color\",\n start: 11286,\n end: 11299,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 11300,\n end: 11301,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 11302,\n end: 11307,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 11307,\n end: 11308,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 11314,\n end: 11317,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"blur_radius\",\n start: 11318,\n end: 11329,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 11330,\n end: 11331,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"1\",\n start: 11332,\n end: 11333,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 11333,\n end: 11334,\n },\n TokenData {\n kind: \"VarKw\",\n text: \"var\",\n start: 11340,\n end: 11343,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"sample_count\",\n start: 11344,\n end: 11356,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 11357,\n end: 11358,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"0.0\",\n start: 11359,\n end: 11362,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 11362,\n end: 11363,\n },\n TokenData {\n kind: \"ForKw\",\n text: \"for\",\n start: 11375,\n end: 11378,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 11379,\n end: 11380,\n },\n TokenData {\n kind: \"VarKw\",\n text: \"var\",\n start: 11380,\n end: 11383,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"x\",\n start: 11384,\n end: 11385,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 11386,\n end: 11387,\n },\n TokenData {\n kind: \"Minus\",\n text: \"-\",\n start: 11388,\n end: 11389,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"blur_radius\",\n start: 11389,\n end: 11400,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 11400,\n end: 11401,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"x\",\n start: 11402,\n end: 11403,\n },\n TokenData {\n kind: \"Le\",\n text: \"<=\",\n start: 11404,\n end: 11406,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"blur_radius\",\n start: 11407,\n end: 11418,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 11418,\n end: 11419,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"x\",\n start: 11420,\n end: 11421,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 11422,\n end: 11423,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"x\",\n start: 11424,\n end: 11425,\n },\n TokenData {\n kind: \"Plus\",\n text: \"+\",\n start: 11426,\n end: 11427,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"1\",\n start: 11428,\n end: 11429,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 11429,\n end: 11430,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 11431,\n end: 11432,\n },\n TokenData {\n kind: \"ForKw\",\n text: \"for\",\n start: 11442,\n end: 11445,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 11446,\n end: 11447,\n },\n TokenData {\n kind: \"VarKw\",\n text: \"var\",\n start: 11447,\n end: 11450,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"y\",\n start: 11451,\n end: 11452,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 11453,\n end: 11454,\n },\n TokenData {\n kind: \"Minus\",\n text: \"-\",\n start: 11455,\n end: 11456,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"blur_radius\",\n start: 11456,\n end: 11467,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 11467,\n end: 11468,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"y\",\n start: 11469,\n end: 11470,\n },\n TokenData {\n kind: \"Le\",\n text: \"<=\",\n start: 11471,\n end: 11473,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"blur_radius\",\n start: 11474,\n end: 11485,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 11485,\n end: 11486,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"y\",\n start: 11487,\n end: 11488,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 11489,\n end: 11490,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"y\",\n start: 11491,\n end: 11492,\n },\n TokenData {\n kind: \"Plus\",\n text: \"+\",\n start: 11493,\n end: 11494,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"1\",\n start: 11495,\n end: 11496,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 11496,\n end: 11497,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 11498,\n end: 11499,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 11513,\n end: 11516,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"sample_coords\",\n start: 11517,\n end: 11530,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 11531,\n end: 11532,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"coords\",\n start: 11533,\n end: 11539,\n },\n TokenData {\n kind: \"Plus\",\n text: \"+\",\n start: 11540,\n end: 11541,\n },\n TokenData {\n kind: \"Vec2Kw\",\n text: \"vec2\",\n start: 11542,\n end: 11546,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 11546,\n end: 11547,\n },\n TokenData {\n kind: \"I32Kw\",\n text: \"i32\",\n start: 11547,\n end: 11550,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 11550,\n end: 11551,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 11551,\n end: 11552,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"x\",\n start: 11552,\n end: 11553,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 11553,\n end: 11554,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"y\",\n start: 11555,\n end: 11556,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 11556,\n end: 11557,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 11557,\n end: 11558,\n },\n TokenData {\n kind: \"IfKw\",\n text: \"if\",\n start: 11572,\n end: 11574,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 11575,\n end: 11576,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"sample_coords\",\n start: 11576,\n end: 11589,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 11589,\n end: 11590,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"x\",\n start: 11590,\n end: 11591,\n },\n TokenData {\n kind: \"Ge\",\n text: \">=\",\n start: 11592,\n end: 11594,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"0\",\n start: 11595,\n end: 11596,\n },\n TokenData {\n kind: \"AmpersandAmpersand\",\n text: \"&&\",\n start: 11597,\n end: 11599,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"sample_coords\",\n start: 11600,\n end: 11613,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 11613,\n end: 11614,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"x\",\n start: 11614,\n end: 11615,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 11616,\n end: 11617,\n },\n TokenData {\n kind: \"I32Kw\",\n text: \"i32\",\n start: 11618,\n end: 11621,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 11621,\n end: 11622,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"dimensions\",\n start: 11622,\n end: 11632,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 11632,\n end: 11633,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"x\",\n start: 11633,\n end: 11634,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 11634,\n end: 11635,\n },\n TokenData {\n kind: \"AmpersandAmpersand\",\n text: \"&&\",\n start: 11636,\n end: 11638,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"sample_coords\",\n start: 11656,\n end: 11669,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 11669,\n end: 11670,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"y\",\n start: 11670,\n end: 11671,\n },\n TokenData {\n kind: \"Ge\",\n text: \">=\",\n start: 11672,\n end: 11674,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"0\",\n start: 11675,\n end: 11676,\n },\n TokenData {\n kind: \"AmpersandAmpersand\",\n text: \"&&\",\n start: 11677,\n end: 11679,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"sample_coords\",\n start: 11680,\n end: 11693,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 11693,\n end: 11694,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"y\",\n start: 11694,\n end: 11695,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 11696,\n end: 11697,\n },\n TokenData {\n kind: \"I32Kw\",\n text: \"i32\",\n start: 11698,\n end: 11701,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 11701,\n end: 11702,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"dimensions\",\n start: 11702,\n end: 11712,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 11712,\n end: 11713,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"y\",\n start: 11713,\n end: 11714,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 11714,\n end: 11715,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 11715,\n end: 11716,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 11717,\n end: 11718,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"blurred_color\",\n start: 11736,\n end: 11749,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 11750,\n end: 11751,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"blurred_color\",\n start: 11752,\n end: 11765,\n },\n TokenData {\n kind: \"Plus\",\n text: \"+\",\n start: 11766,\n end: 11767,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"textureLoad\",\n start: 11768,\n end: 11779,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 11779,\n end: 11780,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"input_texture\",\n start: 11780,\n end: 11793,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 11793,\n end: 11794,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"sample_coords\",\n start: 11795,\n end: 11808,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 11808,\n end: 11809,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"0\",\n start: 11810,\n end: 11811,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 11811,\n end: 11812,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 11812,\n end: 11813,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"sample_count\",\n start: 11831,\n end: 11843,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 11844,\n end: 11845,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"sample_count\",\n start: 11846,\n end: 11858,\n },\n TokenData {\n kind: \"Plus\",\n text: \"+\",\n start: 11859,\n end: 11860,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"1.0\",\n start: 11861,\n end: 11864,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 11864,\n end: 11865,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 11879,\n end: 11880,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 11890,\n end: 11891,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 11897,\n end: 11898,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"blurred_color\",\n start: 11910,\n end: 11923,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 11924,\n end: 11925,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"blurred_color\",\n start: 11926,\n end: 11939,\n },\n TokenData {\n kind: \"Slash\",\n text: \"/\",\n start: 11940,\n end: 11941,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"sample_count\",\n start: 11942,\n end: 11954,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 11954,\n end: 11955,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"textureStore\",\n start: 11999,\n end: 12011,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 12011,\n end: 12012,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"output_texture\",\n start: 12012,\n end: 12026,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 12026,\n end: 12027,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"coords\",\n start: 12028,\n end: 12034,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 12034,\n end: 12035,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"blurred_color\",\n start: 12036,\n end: 12049,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 12049,\n end: 12050,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 12050,\n end: 12051,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 12053,\n end: 12054,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 12091,\n end: 12092,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"vertex\",\n start: 12092,\n end: 12098,\n },\n TokenData {\n kind: \"FnKw\",\n text: \"fn\",\n start: 12100,\n end: 12102,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"vs_shadow\",\n start: 12103,\n end: 12112,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 12112,\n end: 12113,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 12113,\n end: 12114,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"location\",\n start: 12114,\n end: 12122,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 12122,\n end: 12123,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"0\",\n start: 12123,\n end: 12124,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 12124,\n end: 12125,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"position\",\n start: 12126,\n end: 12134,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 12134,\n end: 12135,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 12136,\n end: 12140,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 12140,\n end: 12141,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 12141,\n end: 12144,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 12144,\n end: 12145,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 12145,\n end: 12146,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 12147,\n end: 12149,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 12150,\n end: 12151,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"builtin\",\n start: 12151,\n end: 12158,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 12158,\n end: 12159,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"position\",\n start: 12159,\n end: 12167,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 12167,\n end: 12168,\n },\n TokenData {\n kind: \"Vec4Kw\",\n text: \"vec4\",\n start: 12169,\n end: 12173,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 12173,\n end: 12174,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 12174,\n end: 12177,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 12177,\n end: 12178,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 12179,\n end: 12180,\n },\n TokenData {\n kind: \"ReturnKw\",\n text: \"return\",\n start: 12186,\n end: 12192,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"camera\",\n start: 12193,\n end: 12199,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 12199,\n end: 12200,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"view_proj\",\n start: 12200,\n end: 12209,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 12210,\n end: 12211,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"transform\",\n start: 12212,\n end: 12221,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 12221,\n end: 12222,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"model\",\n start: 12222,\n end: 12227,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 12228,\n end: 12229,\n },\n TokenData {\n kind: \"Vec4Kw\",\n text: \"vec4\",\n start: 12230,\n end: 12234,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 12234,\n end: 12235,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 12235,\n end: 12238,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 12238,\n end: 12239,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 12239,\n end: 12240,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"position\",\n start: 12240,\n end: 12248,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 12248,\n end: 12249,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"1.0\",\n start: 12250,\n end: 12253,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 12253,\n end: 12254,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 12254,\n end: 12255,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 12257,\n end: 12258,\n },\n TokenData {\n kind: \"StructKw\",\n text: \"struct\",\n start: 12287,\n end: 12293,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"SkyboxOutput\",\n start: 12294,\n end: 12306,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 12307,\n end: 12308,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 12314,\n end: 12315,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"builtin\",\n start: 12315,\n end: 12322,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 12322,\n end: 12323,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"position\",\n start: 12323,\n end: 12331,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 12331,\n end: 12332,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"position\",\n start: 12333,\n end: 12341,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 12341,\n end: 12342,\n },\n TokenData {\n kind: \"Vec4Kw\",\n text: \"vec4\",\n start: 12343,\n end: 12347,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 12347,\n end: 12348,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 12348,\n end: 12351,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 12351,\n end: 12352,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 12352,\n end: 12353,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 12359,\n end: 12360,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"location\",\n start: 12360,\n end: 12368,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 12368,\n end: 12369,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"0\",\n start: 12369,\n end: 12370,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 12370,\n end: 12371,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"world_position\",\n start: 12372,\n end: 12386,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 12386,\n end: 12387,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 12388,\n end: 12392,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 12392,\n end: 12393,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 12393,\n end: 12396,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 12396,\n end: 12397,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 12397,\n end: 12398,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 12400,\n end: 12401,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 12405,\n end: 12406,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"vertex\",\n start: 12406,\n end: 12412,\n },\n TokenData {\n kind: \"FnKw\",\n text: \"fn\",\n start: 12414,\n end: 12416,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"vs_skybox\",\n start: 12417,\n end: 12426,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 12426,\n end: 12427,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 12427,\n end: 12428,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"location\",\n start: 12428,\n end: 12436,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 12436,\n end: 12437,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"0\",\n start: 12437,\n end: 12438,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 12438,\n end: 12439,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"position\",\n start: 12440,\n end: 12448,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 12448,\n end: 12449,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 12450,\n end: 12454,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 12454,\n end: 12455,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 12455,\n end: 12458,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 12458,\n end: 12459,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 12459,\n end: 12460,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 12461,\n end: 12463,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"SkyboxOutput\",\n start: 12464,\n end: 12476,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 12477,\n end: 12478,\n },\n TokenData {\n kind: \"VarKw\",\n text: \"var\",\n start: 12484,\n end: 12487,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"output\",\n start: 12488,\n end: 12494,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 12494,\n end: 12495,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"SkyboxOutput\",\n start: 12496,\n end: 12508,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 12508,\n end: 12509,\n },\n TokenData {\n kind: \"VarKw\",\n text: \"var\",\n start: 12565,\n end: 12568,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"view_no_translation\",\n start: 12569,\n end: 12588,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 12589,\n end: 12590,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"camera\",\n start: 12591,\n end: 12597,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 12597,\n end: 12598,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"view\",\n start: 12598,\n end: 12602,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 12602,\n end: 12603,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"view_no_translation\",\n start: 12609,\n end: 12628,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 12628,\n end: 12629,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"3\",\n start: 12629,\n end: 12630,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 12630,\n end: 12631,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 12631,\n end: 12632,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"0\",\n start: 12632,\n end: 12633,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 12633,\n end: 12634,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 12635,\n end: 12636,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"0.0\",\n start: 12637,\n end: 12640,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 12640,\n end: 12641,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"view_no_translation\",\n start: 12647,\n end: 12666,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 12666,\n end: 12667,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"3\",\n start: 12667,\n end: 12668,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 12668,\n end: 12669,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 12669,\n end: 12670,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"1\",\n start: 12670,\n end: 12671,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 12671,\n end: 12672,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 12673,\n end: 12674,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"0.0\",\n start: 12675,\n end: 12678,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 12678,\n end: 12679,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"view_no_translation\",\n start: 12685,\n end: 12704,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 12704,\n end: 12705,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"3\",\n start: 12705,\n end: 12706,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 12706,\n end: 12707,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 12707,\n end: 12708,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"2\",\n start: 12708,\n end: 12709,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 12709,\n end: 12710,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 12711,\n end: 12712,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"0.0\",\n start: 12713,\n end: 12716,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 12716,\n end: 12717,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 12729,\n end: 12732,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"clip_pos\",\n start: 12733,\n end: 12741,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 12742,\n end: 12743,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"camera\",\n start: 12744,\n end: 12750,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 12750,\n end: 12751,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"proj\",\n start: 12751,\n end: 12755,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 12756,\n end: 12757,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"view_no_translation\",\n start: 12758,\n end: 12777,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 12778,\n end: 12779,\n },\n TokenData {\n kind: \"Vec4Kw\",\n text: \"vec4\",\n start: 12780,\n end: 12784,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 12784,\n end: 12785,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 12785,\n end: 12788,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 12788,\n end: 12789,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 12789,\n end: 12790,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"position\",\n start: 12790,\n end: 12798,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 12798,\n end: 12799,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"1.0\",\n start: 12800,\n end: 12803,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 12803,\n end: 12804,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 12804,\n end: 12805,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"output\",\n start: 12811,\n end: 12817,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 12817,\n end: 12818,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"position\",\n start: 12818,\n end: 12826,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 12827,\n end: 12828,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"clip_pos\",\n start: 12829,\n end: 12837,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 12837,\n end: 12838,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"xyww\",\n start: 12838,\n end: 12842,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 12842,\n end: 12843,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"output\",\n start: 12889,\n end: 12895,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 12895,\n end: 12896,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"world_position\",\n start: 12896,\n end: 12910,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 12911,\n end: 12912,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"position\",\n start: 12913,\n end: 12921,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 12921,\n end: 12922,\n },\n TokenData {\n kind: \"ReturnKw\",\n text: \"return\",\n start: 12934,\n end: 12940,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"output\",\n start: 12941,\n end: 12947,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 12947,\n end: 12948,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 12950,\n end: 12951,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 12955,\n end: 12956,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"fragment\",\n start: 12956,\n end: 12964,\n },\n TokenData {\n kind: \"FnKw\",\n text: \"fn\",\n start: 12966,\n end: 12968,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"fs_skybox\",\n start: 12969,\n end: 12978,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 12978,\n end: 12979,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"input\",\n start: 12979,\n end: 12984,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 12984,\n end: 12985,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"SkyboxOutput\",\n start: 12986,\n end: 12998,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 12998,\n end: 12999,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 13000,\n end: 13002,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 13003,\n end: 13004,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"location\",\n start: 13004,\n end: 13012,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 13012,\n end: 13013,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"0\",\n start: 13013,\n end: 13014,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 13014,\n end: 13015,\n },\n TokenData {\n kind: \"Vec4Kw\",\n text: \"vec4\",\n start: 13016,\n end: 13020,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 13020,\n end: 13021,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 13021,\n end: 13024,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 13024,\n end: 13025,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 13026,\n end: 13027,\n },\n TokenData {\n kind: \"ReturnKw\",\n text: \"return\",\n start: 13033,\n end: 13039,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"textureSample\",\n start: 13040,\n end: 13053,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 13053,\n end: 13054,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"environment_map\",\n start: 13054,\n end: 13069,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 13069,\n end: 13070,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"environment_sampler\",\n start: 13071,\n end: 13090,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 13090,\n end: 13091,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"input\",\n start: 13092,\n end: 13097,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 13097,\n end: 13098,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"world_position\",\n start: 13098,\n end: 13112,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 13112,\n end: 13113,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 13113,\n end: 13114,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 13116,\n end: 13117,\n },\n TokenData {\n kind: \"StructKw\",\n text: \"struct\",\n start: 13156,\n end: 13162,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"InstanceData\",\n start: 13163,\n end: 13175,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 13176,\n end: 13177,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"model_matrix\",\n start: 13183,\n end: 13195,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 13195,\n end: 13196,\n },\n TokenData {\n kind: \"Mat4x4Kw\",\n text: \"mat4x4\",\n start: 13197,\n end: 13203,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 13203,\n end: 13204,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 13204,\n end: 13207,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 13207,\n end: 13208,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 13208,\n end: 13209,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 13215,\n end: 13220,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 13220,\n end: 13221,\n },\n TokenData {\n kind: \"Vec4Kw\",\n text: \"vec4\",\n start: 13222,\n end: 13226,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 13226,\n end: 13227,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 13227,\n end: 13230,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 13230,\n end: 13231,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 13231,\n end: 13232,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 13234,\n end: 13235,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 13239,\n end: 13240,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"group\",\n start: 13240,\n end: 13245,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 13245,\n end: 13246,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"0\",\n start: 13246,\n end: 13247,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 13247,\n end: 13248,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 13249,\n end: 13250,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"binding\",\n start: 13250,\n end: 13257,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 13257,\n end: 13258,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"0\",\n start: 13258,\n end: 13259,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 13259,\n end: 13260,\n },\n TokenData {\n kind: \"VarKw\",\n text: \"var\",\n start: 13261,\n end: 13264,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 13264,\n end: 13265,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"storage\",\n start: 13265,\n end: 13272,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 13272,\n end: 13273,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"read\",\n start: 13274,\n end: 13278,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 13278,\n end: 13279,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"instances\",\n start: 13280,\n end: 13289,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 13289,\n end: 13290,\n },\n TokenData {\n kind: \"ArrayKw\",\n text: \"array\",\n start: 13291,\n end: 13296,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 13296,\n end: 13297,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"InstanceData\",\n start: 13297,\n end: 13309,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 13309,\n end: 13310,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 13310,\n end: 13311,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 13315,\n end: 13316,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"vertex\",\n start: 13316,\n end: 13322,\n },\n TokenData {\n kind: \"FnKw\",\n text: \"fn\",\n start: 13324,\n end: 13326,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"vs_instanced\",\n start: 13327,\n end: 13339,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 13339,\n end: 13340,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 13346,\n end: 13347,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"location\",\n start: 13347,\n end: 13355,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 13355,\n end: 13356,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"0\",\n start: 13356,\n end: 13357,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 13357,\n end: 13358,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"position\",\n start: 13359,\n end: 13367,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 13367,\n end: 13368,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 13369,\n end: 13373,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 13373,\n end: 13374,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 13374,\n end: 13377,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 13377,\n end: 13378,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 13378,\n end: 13379,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 13385,\n end: 13386,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"location\",\n start: 13386,\n end: 13394,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 13394,\n end: 13395,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"1\",\n start: 13395,\n end: 13396,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 13396,\n end: 13397,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"normal\",\n start: 13398,\n end: 13404,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 13404,\n end: 13405,\n },\n TokenData {\n kind: \"Vec3Kw\",\n text: \"vec3\",\n start: 13406,\n end: 13410,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 13410,\n end: 13411,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 13411,\n end: 13414,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 13414,\n end: 13415,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 13415,\n end: 13416,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 13422,\n end: 13423,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"location\",\n start: 13423,\n end: 13431,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 13431,\n end: 13432,\n },\n TokenData {\n kind: \"IntegerLiteral\",\n text: \"2\",\n start: 13432,\n end: 13433,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 13433,\n end: 13434,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"uv\",\n start: 13435,\n end: 13437,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 13437,\n end: 13438,\n },\n TokenData {\n kind: \"Vec2Kw\",\n text: \"vec2\",\n start: 13439,\n end: 13443,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 13443,\n end: 13444,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 13444,\n end: 13447,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 13447,\n end: 13448,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 13448,\n end: 13449,\n },\n TokenData {\n kind: \"At\",\n text: \"@\",\n start: 13455,\n end: 13456,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"builtin\",\n start: 13456,\n end: 13463,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 13463,\n end: 13464,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"instance_index\",\n start: 13464,\n end: 13478,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 13478,\n end: 13479,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"instance_index\",\n start: 13480,\n end: 13494,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 13494,\n end: 13495,\n },\n TokenData {\n kind: \"U32Kw\",\n text: \"u32\",\n start: 13496,\n end: 13499,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 13501,\n end: 13502,\n },\n TokenData {\n kind: \"Arrow\",\n text: \"->\",\n start: 13503,\n end: 13505,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"VertexOutput\",\n start: 13506,\n end: 13518,\n },\n TokenData {\n kind: \"LeftBrace\",\n text: \"{\",\n start: 13519,\n end: 13520,\n },\n TokenData {\n kind: \"VarKw\",\n text: \"var\",\n start: 13526,\n end: 13529,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"output\",\n start: 13530,\n end: 13536,\n },\n TokenData {\n kind: \"Colon\",\n text: \":\",\n start: 13536,\n end: 13537,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"VertexOutput\",\n start: 13538,\n end: 13550,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 13550,\n end: 13551,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 13563,\n end: 13566,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"instance\",\n start: 13567,\n end: 13575,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 13576,\n end: 13577,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"instances\",\n start: 13578,\n end: 13587,\n },\n TokenData {\n kind: \"LeftBracket\",\n text: \"[\",\n start: 13587,\n end: 13588,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"instance_index\",\n start: 13588,\n end: 13602,\n },\n TokenData {\n kind: \"RightBracket\",\n text: \"]\",\n start: 13602,\n end: 13603,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 13603,\n end: 13604,\n },\n TokenData {\n kind: \"LetKw\",\n text: \"let\",\n start: 13680,\n end: 13683,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"world_position\",\n start: 13684,\n end: 13698,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 13699,\n end: 13700,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"instance\",\n start: 13701,\n end: 13709,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 13709,\n end: 13710,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"model_matrix\",\n start: 13710,\n end: 13722,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 13723,\n end: 13724,\n },\n TokenData {\n kind: \"Vec4Kw\",\n text: \"vec4\",\n start: 13725,\n end: 13729,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 13729,\n end: 13730,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 13730,\n end: 13733,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 13733,\n end: 13734,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 13734,\n end: 13735,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"position\",\n start: 13735,\n end: 13743,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 13743,\n end: 13744,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"1.0\",\n start: 13745,\n end: 13748,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 13748,\n end: 13749,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 13749,\n end: 13750,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"output\",\n start: 13756,\n end: 13762,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 13762,\n end: 13763,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"world_position\",\n start: 13763,\n end: 13777,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 13778,\n end: 13779,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"world_position\",\n start: 13780,\n end: 13794,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 13794,\n end: 13795,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"xyz\",\n start: 13795,\n end: 13798,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 13798,\n end: 13799,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"output\",\n start: 13843,\n end: 13849,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 13849,\n end: 13850,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"clip_position\",\n start: 13850,\n end: 13863,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 13864,\n end: 13865,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"camera\",\n start: 13866,\n end: 13872,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 13872,\n end: 13873,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"view_proj\",\n start: 13873,\n end: 13882,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 13883,\n end: 13884,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"world_position\",\n start: 13885,\n end: 13899,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 13899,\n end: 13900,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"output\",\n start: 13964,\n end: 13970,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 13970,\n end: 13971,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"world_normal\",\n start: 13971,\n end: 13983,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 13984,\n end: 13985,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"normalize\",\n start: 13986,\n end: 13995,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 13995,\n end: 13996,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 13996,\n end: 13997,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"instance\",\n start: 13997,\n end: 14005,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 14005,\n end: 14006,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"model_matrix\",\n start: 14006,\n end: 14018,\n },\n TokenData {\n kind: \"Star\",\n text: \"*\",\n start: 14019,\n end: 14020,\n },\n TokenData {\n kind: \"Vec4Kw\",\n text: \"vec4\",\n start: 14021,\n end: 14025,\n },\n TokenData {\n kind: \"Lt\",\n text: \"<\",\n start: 14025,\n end: 14026,\n },\n TokenData {\n kind: \"F32Kw\",\n text: \"f32\",\n start: 14026,\n end: 14029,\n },\n TokenData {\n kind: \"Gt\",\n text: \">\",\n start: 14029,\n end: 14030,\n },\n TokenData {\n kind: \"LeftParen\",\n text: \"(\",\n start: 14030,\n end: 14031,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"normal\",\n start: 14031,\n end: 14037,\n },\n TokenData {\n kind: \"Comma\",\n text: \",\",\n start: 14037,\n end: 14038,\n },\n TokenData {\n kind: \"FloatLiteral\",\n text: \"0.0\",\n start: 14039,\n end: 14042,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 14042,\n end: 14043,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 14043,\n end: 14044,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 14044,\n end: 14045,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"xyz\",\n start: 14045,\n end: 14048,\n },\n TokenData {\n kind: \"RightParen\",\n text: \")\",\n start: 14048,\n end: 14049,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 14049,\n end: 14050,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"output\",\n start: 14062,\n end: 14068,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 14068,\n end: 14069,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"uv\",\n start: 14069,\n end: 14071,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 14072,\n end: 14073,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"uv\",\n start: 14074,\n end: 14076,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 14076,\n end: 14077,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"output\",\n start: 14083,\n end: 14089,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 14089,\n end: 14090,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 14090,\n end: 14095,\n },\n TokenData {\n kind: \"Assign\",\n text: \"=\",\n start: 14096,\n end: 14097,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"instance\",\n start: 14098,\n end: 14106,\n },\n TokenData {\n kind: \"Dot\",\n text: \".\",\n start: 14106,\n end: 14107,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"color\",\n start: 14107,\n end: 14112,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 14112,\n end: 14113,\n },\n TokenData {\n kind: \"ReturnKw\",\n text: \"return\",\n start: 14125,\n end: 14131,\n },\n TokenData {\n kind: \"Identifier\",\n text: \"output\",\n start: 14132,\n end: 14138,\n },\n TokenData {\n kind: \"Semicolon\",\n text: \";\",\n start: 14138,\n end: 14139,\n },\n TokenData {\n kind: \"RightBrace\",\n text: \"}\",\n start: 14141,\n end: 14142,\n },\n TokenData {\n kind: \"Error\",\n text: \"\",\n start: 14142,\n end: 14142,\n },\n ],\n errors: [],\n}" } [INFO] [stderr] error: test failed, to rerun pass `--test main` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] lexer::test_wgsl_lexer [INFO] [stdout] [INFO] [stdout] test result: FAILED. 2 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "44c3a374bd7c77a272f3cdc27d59c2e258cdec42aea6293327f80f6e2b9d9128", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "44c3a374bd7c77a272f3cdc27d59c2e258cdec42aea6293327f80f6e2b9d9128", kill_on_drop: false }` [INFO] [stdout] 44c3a374bd7c77a272f3cdc27d59c2e258cdec42aea6293327f80f6e2b9d9128