onejs-sl 0.7.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,38 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.9.0
4
+
5
+ A program can hold 64 uniforms and 8 textures, say how it samples a texture, and read a texture's size and its texels unfiltered. Every existing program keeps its hash and draws as it did; one that uses the new texture features is IR 6, which a host has to implement (below) to draw.
6
+
7
+ - 64 uniforms and 8 textures, where it was 16 and 4
8
+ - `[Wrap(Repeat)]`, `[Wrap(Mirror)]`, `[Wrap(Clamp)]` and `[Filter(Point)]`, `[Filter(Linear)]` on a `texture2D`; `sl.texture(name, { wrap, filter })`
9
+ - `textureSize(t)` and `tex2Dfetch(t, pixel)`; `t.size()` and `t.fetch(pixel)`
10
+ - IR 6: `TEXTURE_SIZE`, `SAMPLE_FETCH`, and `wrap` and `filter` on a `TextureDecl`, in the hash only when set
11
+ - `samplingOf`, `TEXTURE_WRAPS` and `TEXTURE_FILTERS` in `onejs-sl/core`; `TEXTURE_ATTRIBUTE_NAMES` and `TEXTURE_ATTRIBUTE_DOCS` in `onejs-sl/tables`
12
+ - `fromJSON` refuses a node that reads a texture slot the program does not declare
13
+ - `fromGLSL` turns `texelFetch` and `textureSize` into `tex2Dfetch` and `textureSize`
14
+ - `classifyLine` classifies a line at a time from the state the line before ended in, for an editor like Monaco
15
+ - `fromGLSL` declares a texture channel once when the shader declares it too
16
+ - The goldens anchor `wrap-repeat.sl`, `wrap-mirror.sl`, `filter-point.sl`, `fetch.sl` and `uniforms-64.sl` to arithmetic
17
+
18
+ ### What a host implements
19
+
20
+ A host that draws only programs it compiles from text (`compile`) gets all of this from the emitters. One with a frame of its own:
21
+
22
+ - **Caps.** 64 uniform slots of a float4 each, and texture slots 0 to 7. The web frame's uniform block stays 16 slots for a program with 16 uniforms or fewer, so an older WebGPU host's buffer still fits it; a web host fills all 64 either way. The web frame's previous frame moves with them, to WGSL bindings 17 and 18 (`1 + 2 * TEXTURE_SLOTS`), and a GLSL host should bind it on the unit after the eighth texture's.
23
+ - **`BodyTarget.sampleWith(slot, uv, lod, sampling)`**, for a texture whose program sets its sampler. `lod` is null for a plain sample and a level expression otherwise; `sampling` always has both halves, `wrap` one of `repeat`, `clamp`, `mirror` and `filter` one of `point`, `linear`. The sampler is the program's whatever the bound texture's settings: repeat and mirror wrap the filter's footprint too, point reads the nearest texel and level, linear blends four texels within the nearest level. Without it `emitBody` refuses such a program.
24
+ - **`BodyTarget.size(slot)`**, a float2 of the texture's full size in pixels, and **`BodyTarget.fetch(slot, pixel)`**, a float4 of one texel at full size, unfiltered, in the space `colour` names. `pixel` arrives floored and held inside the texture, so `fetch` only converts and loads (`t.Load(int3(pixel, 0))`, Metal's `t.read(uint2(pixel))`). `fetch` needs `size`. Without them `emitBody` refuses a program that uses them.
25
+ - **The web frame.** A slot the program samples with its own sampler ends its declaration with `// sampler <wrap> <filter>` (the `sl_samp<slot>` line in WGSL, the `sl_Tex<slot>` line in GLSL), which the host reads to build that slot's sampler. A WGSL slot that is only measured or fetched from declares its texture and no sampler, so the bind group leaves the sampler out.
26
+ - **JSON.** `fromJSON` reads `wrap` and `filter` on a texture; a reader before IR 6 refuses such a program by its version, rather than drawing it with the texture's own sampler.
27
+
28
+ `src/body.test.ts` spells all of this as Magerie's macros (`SL_SAMPLE_WITH`, `SL_SAMPLE_LEVEL_WITH`, `SL_SIZE`, `SL_FETCH`), and `src/metal.test.ts` compiles them with Apple's Metal compiler.
29
+
30
+ ## 0.8.0
31
+
32
+ A fractional `tex2Dlod` level now blends the two levels either side on every backend. No existing program's hash changes, but a host now gets two whole-level samples and a blend where it got one fractional sample, so a host that blended levels itself would blend twice, which makes this a minor.
33
+
34
+ - A fractional `tex2Dlod` level blends the two levels either side, whatever the texture's filter mode
35
+
3
36
  ## 0.7.0
4
37
 
5
38
  A program can read what it drew the frame before, and count frames (`Specs/SL_NEXT.md` 4). Every existing program keeps its hash and its shader; one that reads the new names is IR 5. A host has to forward the new `reads` to draw such a program, which makes this a minor.
package/README.md CHANGED
@@ -27,6 +27,11 @@ const plasma = sl.program(({ uv, time }) => {
27
27
  })
28
28
  ```
29
29
 
30
+ `npm install onejs-sl`. The package ships TypeScript source (its `exports`
31
+ point at `src/*.ts`): bundle it (esbuild, Vite) or run it with a TypeScript
32
+ loader (`npx tsx script.ts`). Plain `node` cannot load `.ts` from
33
+ `node_modules`.
34
+
30
35
  ## Entry points
31
36
 
32
37
  `"sideEffects": false`, and each backend is its own entry, so a host bundles
@@ -34,8 +39,8 @@ only what it calls.
34
39
 
35
40
  | Entry | Contents |
36
41
  |---|---|
37
- | `onejs-sl` | `parse` and `analyze`, `diagnose` (every error in a file, not just the first), `classify` (every token with its class, comments kept, never throws), `fromGLSL` (a pasted Shadertoy or WebGL shader as a `.sl` file, with notes on what did not carry over), the TypeScript form `sl`, the IR types, `SL_IR_VERSION`, `toJSON`/`fromJSON`, `SLParseError` (file, line, column, offset, length, the bare `text`, and a `fix` where one is certain) |
38
- | `onejs-sl/core` | the same without the parser: what a game needs at run time. Also the caps on one program, `UNIFORM_SLOTS` (16) and `TEXTURE_SLOTS` (4), which the parser and the builder enforce and a host can read |
42
+ | `onejs-sl` | `parse` and `analyze`, `diagnose` (every error in a file, not just the first), `classify` (every token with its class, comments kept, never throws) and `classifyLine` (the same a line at a time, for Monaco), `fromGLSL` (a pasted Shadertoy or WebGL shader as a `.sl` file, with notes on what did not carry over), the TypeScript form `sl`, the IR types, `SL_IR_VERSION`, `toJSON`/`fromJSON`, `SLParseError` (file, line, column, offset, length, the bare `text`, and a `fix` where one is certain) |
43
+ | `onejs-sl/core` | the same without the parser: what a game needs at run time. Also the caps on one program, `UNIFORM_SLOTS` (64) and `TEXTURE_SLOTS` (8), which the parser and the builder enforce and a host can read |
39
44
  | `onejs-sl/tables` | `BUILTINS`, `SL_HLSL`, `INPUTS`, `SL_SDF_SHAPES`, `SL_SDF_PARAMS`, `SL_KEYWORDS`, `SL_TYPES`, `TYPE_WIDTH`, `PRELUDE_NAMES`: what completion and highlighting read. `BUILTIN_PARAMS`, `SL_SDF_PARAM_NAMES` and `LIB_SIGNATURES` name every parameter, so an editor can show `lerp(x, y, s)`, and `BUILTIN_DOCS`, `INPUT_DOCS` and `PRELUDE_DOCS` give each a line for its tooltip |
40
45
  | `onejs-sl/compile` | `compile(program)`: what a host draws a program with. Its hash, its uniform and texture names in slot order, their defaults, and `hlsl`, `wgsl` and `glsl` as lazy getters. No budget |
41
46
  | `onejs-sl/emit/hlsl-body` | `emitBody`: a program as a function body for a host's own frame; `emitLibrary`: the library functions it calls |
@@ -43,7 +48,9 @@ only what it calls.
43
48
  | `onejs-sl/emit/web` | `emitWGSL`, `emitGLSL`: OneJS's web frame |
44
49
  | `onejs-sl/goldens.json` | the goldens (below), as data |
45
50
 
46
- `src/entries.test.ts` pins every name, since removing one breaks a host.
51
+ [`src/entries.test.ts`](https://github.com/Singtaa/onejs-sl/blob/main/src/entries.test.ts)
52
+ (in the repository, not the npm package) pins every name, since removing one
53
+ breaks a host.
47
54
 
48
55
  ## A host's own frame: `emitBody`
49
56
 
@@ -63,8 +70,16 @@ slots the body uses and the library functions it calls. The sample's contract
63
70
  is on `BodyTarget.sample`: straight alpha in and out, rgb in the space `colour`
64
71
  names (an sRGB texture decoded before filtering when it is `linear`), and
65
72
  filtering and wrapping left to the host, which OneJS's hosts take from the
66
- bound texture's own settings. OneJS's Unity shader is
67
- one frame over it (`hlsl.ts`); Magerie's compute kernel is another, and its
73
+ bound texture's own settings. Between mip levels the body decides instead: a
74
+ fractional `tex2Dlod` level blends the two levels either side by the fraction,
75
+ whatever the texture's filter mode, since the body asks for both whole levels
76
+ and blends them itself. A level it can prove whole (a whole constant, a
77
+ `floor`, an int) costs one sample, and a level past the smallest reads the
78
+ smallest. A texture whose program sets its own sampler (`[Wrap(Repeat)]`,
79
+ `[Filter(Point)]`) goes to `sampleWith` instead, with both halves filled in,
80
+ and `textureSize` and `tex2Dfetch` to `size` and `fetch`; each is optional,
81
+ and `emitBody` refuses a program that needs one a target lacks (CHANGELOG.md's
82
+ 0.9.0 entry says what a host implements). OneJS's Unity shader is one frame over it (`hlsl.ts`); Magerie's compute kernel is another, and its
68
83
  target is in `src/body.test.ts` so an opcode cannot change without the text
69
84
  Magerie compiles changing in front of a test.
70
85
 
@@ -142,11 +157,16 @@ what a WebGL player draws.
142
157
 
143
158
  `npm run goldens` draws it on WebGPU and WebGL2 in a Chrome with its own
144
159
  profile (set `CHROME` to choose one). The two backends must agree within 1/255
145
- over every pixel, and seven anchors must match arithmetic, not each other:
160
+ over every pixel, and the anchors must match arithmetic, not each other:
146
161
  `orient.sl` (orientation, and the linear to sRGB store), `hex.sl` (a hex colour
147
- stores as written), `texture.sl` (a texture's orientation and sRGB decode) and
162
+ stores as written), `texture.sl` (a texture's orientation and sRGB decode),
148
163
  `lod.sl` (each mip level `tex2Dlod` reads, the texture's smaller levels being
149
- solid colours). `sdf-values.sl`, `fbm-values.sl` and `ramp-values.sl` are black unless a
164
+ solid colours), `lod-frac.sl` (a fractional level blends the two levels
165
+ either side, on a texture sampled nearest between levels), `wrap-repeat.sl`
166
+ and `wrap-mirror.sl` (a program's own wrap over a texture the host binds
167
+ clamped, the filter's footprint wrapping with it), `filter-point.sl` (its own
168
+ point filter, to the byte, through `tex2D` and `tex2Dlod`) and `fetch.sl`
169
+ (`tex2Dfetch` held at the edges and `textureSize`, to the byte), and `uniforms-64.sl` (every uniform slot arrives). `sdf-values.sl`, `fbm-values.sl` and `ramp-values.sl` are black unless a
150
170
  shape, a noise or a ramp draws differently with its parameters as values than
151
171
  as constants.
152
172
  A fixture that reads the previous frame, `frame` or `deltaTime` is stepped
@@ -242,9 +262,10 @@ drew what had no shader yet; OneJS 3.8 deleted it.) `hlsl.ts` feeds OneJS's
242
262
  `Editor/SLShaderGenerator.cs`. Nobody writes a manifest for it: an editor that
243
263
  draws a program asks the compiled program for its
244
264
  `hlsl` (a lazy getter, never read in Play), records it into
245
- `Assets/OneJS/Recorded.sl.json`, generates the shader and
246
- moves the live material onto it. `manifest()` is still there for an app that
247
- would rather write its programs out at build time.
265
+ `Assets/OneJS.Recorded.sl.json`, generates the shader and
266
+ moves the live material onto it. `manifest()`, in `onejs-unity/sl` and
267
+ `onejs-unity/sl/compiler` rather than this package, is still there for an app
268
+ that would rather write its programs out at build time.
248
269
 
249
270
  **A third and fourth backend, for the browser.** A player cannot compile a
250
271
  shader, but the page it runs in can. `web.ts` prints every program as WGSL and
@@ -256,8 +277,8 @@ printed at build time; a `compile()` result has them as lazy getters, like
256
277
  `hlsl`. The element draws nothing until the compiled
257
278
  program is ready, and nothing after a compile error, which the page reports.
258
279
  The host contract (the frame block, the
259
- 16 uniform slots, one binding pair per sampled texture) is written out at the
260
- top of `web.ts`.
280
+ uniform block, one binding pair per sampled texture, the note that names a
281
+ program's own sampler) is written out at the top of `web.ts`.
261
282
 
262
283
  The emitters match the HLSL emitter's semantics rather than each language's
263
284
  own: `%` truncates like `fmod`, `pow` takes `abs` of its base, `asin` and
@@ -313,7 +334,7 @@ at module load, not at draw time:
313
334
  | A program returning something other than a `vec4` | "a program must return a vec4. Wrap it: sl.vec4(value, 1)" |
314
335
  | `vec4` given the wrong number of parts | "vec4 needs 4 components, got 3" |
315
336
  | One uniform name at two widths | "declared as both a float and a vec4" |
316
- | More than 16 uniforms or 4 textures | "this program declares 5 textures and a program may sample 4", the parser's words |
337
+ | More than 64 uniforms or 8 textures | "this program declares 9 textures and a program may sample 8", the parser's words |
317
338
  | A value borrowed from another program | "a value from another program cannot be used in this one" |
318
339
 
319
340
  The caps are `UNIFORM_SLOTS` and `TEXTURE_SLOTS`: what OneJS binds to one
@@ -370,7 +391,10 @@ control flow (the `if` and `loop` nodes, a loop's `param`s and each result's
370
391
  none of them is still IR 3 and keeps its hash; one with an `if` statement is
371
392
  IR 4, since the statement is now a real branch rather than a select. IR 5 added
372
393
  the previous frame (`SAMPLE_PREVIOUS`) and the `frame` and `deltaTime` inputs;
373
- a program that reads none of them keeps the version and the hash it had.
394
+ a program that reads none of them keeps the version and the hash it had. IR 6
395
+ added `TEXTURE_SIZE` and `SAMPLE_FETCH`, and a texture's own sampler (`wrap`
396
+ and `filter` on its `TextureDecl`); the sampler is in the hash only when a
397
+ texture has one, so every other program keeps its hash.
374
398
 
375
399
  ## Control flow
376
400
 
@@ -478,6 +502,28 @@ control as `float`, with a matching Properties line (`[ToggleUI]`, since
478
502
  `[Toggle]` also defines a keyword; `[Enum]` as name, value pairs), and the bridge
479
503
  setting it with `SetFloat`. `Specs/SL_NEXT.md` 1 keeps that as a later change.
480
504
 
505
+ ## Textures
506
+
507
+ A program declares up to eight textures (`texture2D grain;`,
508
+ `sl.texture("grain")`), which a host binds by slot. `tex2D(t, uv)` samples one
509
+ as the bound texture is set, and `tex2Dlod(t, uv, lod)` at a mip level.
510
+
511
+ A program can set the sampler itself: `[Wrap(Repeat)]`, `[Wrap(Mirror)]` or
512
+ `[Wrap(Clamp)]`, and `[Filter(Point)]` or `[Filter(Linear)]`, before the
513
+ declaration, or `sl.texture("grain", { wrap: "repeat", filter: "point" })`.
514
+ Then every host samples it that way whatever the texture's own settings, and
515
+ the half left out is clamp or linear, since a Unity inline sampler state and a
516
+ WebGPU sampler each say both. A tiled noise texture no longer depends on
517
+ somebody remembering its import settings. Linear is bilinear within the
518
+ nearest mip level, as Unity's Bilinear is.
519
+
520
+ `textureSize(t)` is the texture's width and height in pixels (`t.size()`), and
521
+ `tex2Dfetch(t, pixel)` one texel, unfiltered and at full size (`t.fetch(pixel)`):
522
+ pixel (0, 0) is the texel `uv` (0, 0) samples, and a pixel is floored and held
523
+ inside the texture, so one past an edge reads the edge on every host rather
524
+ than what a host's load returns out of range. `tex2Dfetch(t, fragCoord)` on a
525
+ texture the size of the target reads it texel for texel.
526
+
481
527
  ## Colours
482
528
 
483
529
  A hex colour is sRGB as written, the way CSS reads it, and the target holds
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "generatedBy": "onejs-sl goldens/run.mjs",
3
- "package": "0.7.0",
4
- "ir": 5,
3
+ "package": "0.9.0",
4
+ "ir": 6,
5
5
  "target": "rgba8unorm-srgb: straight alpha, 8 bit, sRGB encoded, the stored bytes of a Linear OneJS game's element",
6
6
  "size": [
7
7
  64,
@@ -54,7 +54,7 @@
54
54
  },
55
55
  "cov-arith.sl": {
56
56
  "hash": "6af8b494",
57
- "source": "// + - * / pow, unary -, rcp, min, max and clamp over continuous inputs. The\n// stepwise ops are in step.sl: together they need more than the VM's eight\n// registers.\nfloat4 main() {\n float2 q = (uv - 0.5) * 6.0;\n float a = pow(abs(q.x) * 0.3, 1.7) + rcp(abs(q.y) + 1.0) - (-q.x) * 0.1;\n float c = q.y / (abs(q.x) + 2.0) + abs(q.y) * 0.1;\n return float4(saturate(a * 0.3), clamp(c * 0.5 + 0.5, 0.0, 1.0), min(max(a * 0.2, 0.1), 0.9), 1);\n}\n",
57
+ "source": "// + - * / pow, unary -, rcp, min, max and clamp over continuous inputs. The\n// stepwise ops are in cov-step.sl, a split made when the VM had eight registers.\nfloat4 main() {\n float2 q = (uv - 0.5) * 6.0;\n float a = pow(abs(q.x) * 0.3, 1.7) + rcp(abs(q.y) + 1.0) - (-q.x) * 0.1;\n float c = q.y / (abs(q.x) + 2.0) + abs(q.y) * 0.1;\n return float4(saturate(a * 0.3), clamp(c * 0.5 + 0.5, 0.0, 1.0), min(max(a * 0.2, 0.1), 0.9), 1);\n}\n",
58
58
  "samples": {
59
59
  "0": [128,247,106,255,117,250,97,255,107,253,89,255,97,255,89,255,89,255,89,255,82,255,89,255,78,255,89,255,78,255,89,255,85,255,89,255,95,255,89,255,107,255,89,255,119,255,99,255,132,255,109,255,144,252,120,255,157,249,130,255,169,246,141,255,130,240,108,255,120,242,99,255,110,245,91,255,101,249,89,255,93,253,89,255,86,255,89,255,83,255,89,255,83,255,89,255,89,255,89,255,99,255,89,255,110,255,91,255,122,252,101,255,134,248,111,255,147,245,122,255,159,242,132,255,171,239,142,255,133,233,110,255,123,235,102,255,113,238,94,255,105,241,89,255,97,245,89,255,91,249,89,255,88,255,89,255,88,255,89,255,93,255,89,255,103,254,89,255,114,248,94,255,125,244,103,255,137,240,114,255,149,237,124,255,161,234,134,255,173,232,144,255,137,225,113,255,127,227,105,255,118,229,97,255,109,232,90,255,102,235,89,255,97,239,89,255,93,244,89,255,94,251,89,255,99,249,89,255,107,243,89,255,118,238,97,255,129,234,107,255,141,231,117,255,152,229,126,255,164,227,136,255,175,225,146,255,141,217,117,255,132,219,109,255,123,221,102,255,116,223,95,255,109,226,90,255,104,229,89,255,101,233,89,255,101,238,89,255,105,237,89,255,114,232,94,255,123,228,102,255,134,225,111,255,145,222,120,255,156,220,130,255,168,218,139,255,179,217,149,255,148,209,122,255,139,210,115,255,131,212,108,255,123,213,102,255,117,215,97,255,113,218,93,255,110,221,91,255,110,225,91,255,114,224,94,255,122,220,101,255,131,217,108,255,141,215,117,255,151,213,125,255,162,211,134,255,172,210,144,255,183,209,153,255,156,200,130,255,148,201,123,255,141,202,117,255,134,203,111,255,129,204,106,255,124,206,103,255,122,208,101,255,122,210,101,255,126,210,104,255,133,207,110,255,141,205,117,255,150,204,124,255,159,203,132,255,169,202,141,255,180,201,150,255,190,200,158,255,169,191,141,255,162,191,135,255,156,192,129,255,150,192,124,255,145,192,120,255,141,193,117,255,139,193,116,255,139,194,116,255,143,194,118,255,148,193,123,255,156,193,129,255,164,192,136,255,172,192,143,255,181,192,151,255,191,191,159,255,200,191,167,255,165,185,138,255,158,185,131,255,151,185,125,255,145,184,120,255,140,183,116,255,136,183,113,255,134,182,111,255,134,180,111,255,138,181,114,255,144,182,119,255,151,183,125,255,160,184,133,255,168,184,140,255,178,185,148,255,187,185,156,255,197,185,164,255,154,182,128,255,145,181,121,255,138,180,114,255,131,178,108,255,125,177,104,255,121,174,100,255,119,171,98,255,119,167,98,255,123,168,101,255,130,172,107,255,138,175,114,255,147,177,122,255,157,179,130,255,167,180,139,255,178,181,148,255,188,182,157,255,146,178,121,255,137,177,113,255,129,175,106,255,121,172,100,255,115,169,95,255,110,166,91,255,107,160,89,255,107,153,89,255,112,155,92,255,119,162,99,255,129,167,106,255,139,170,115,255,149,173,124,255,160,175,133,255,171,177,142,255,182,178,152,255,140,174,116,255,131,172,108,255,122,169,101,255,114,166,94,255,107,162,89,255,102,156,89,255,99,148,89,255,99,137,89,255,104,140,89,255,112,151,92,255,122,158,101,255,133,163,110,255,144,167,119,255,155,170,129,255,166,173,138,255,178,175,148,255,136,171,112,255,126,168,104,255,117,164,96,255,108,159,89,255,101,154,89,255,95,146,89,255,92,135,89,255,92,118,89,255,97,123,89,255,106,138,89,255,117,148,96,255,128,155,106,255,140,161,116,255,151,165,126,255,163,168,135,255,175,171,145,255,132,167,110,255,122,163,101,255,113,158,93,255,104,152,89,255,96,145,89,255,90,135,89,255,86,120,89,255,86,94,89,255,92,102,89,255,101,124,89,255,113,137,93,255,124,147,103,255,136,154,113,255,148,159,123,255,160,164,133,255,172,167,143,255,130,162,107,255,119,158,98,255,109,152,90,255,100,145,89,255,92,135,89,255,85,122,89,255,81,101,89,255,81,59,89,255,88,74,89,255,98,107,89,255,109,126,90,255,121,138,100,255,134,147,111,255,146,154,121,255,158,159,131,255,170,163,142,255,127,158,105,255,117,153,96,255,106,146,89,255,97,137,89,255,88,125,89,255,81,107,89,255,77,77,89,255,77,0,89,255,84,10,89,255,94,87,89,255,106,113,89,255,119,128,98,255,131,139,109,255,144,148,119,255,156,154,130,255,169,159,140,255],
60
60
  "1.25": [128,247,106,255,117,250,97,255,107,253,89,255,97,255,89,255,89,255,89,255,82,255,89,255,78,255,89,255,78,255,89,255,85,255,89,255,95,255,89,255,107,255,89,255,119,255,99,255,132,255,109,255,144,252,120,255,157,249,130,255,169,246,141,255,130,240,108,255,120,242,99,255,110,245,91,255,101,249,89,255,93,253,89,255,86,255,89,255,83,255,89,255,83,255,89,255,89,255,89,255,99,255,89,255,110,255,91,255,122,252,101,255,134,248,111,255,147,245,122,255,159,242,132,255,171,239,142,255,133,233,110,255,123,235,102,255,113,238,94,255,105,241,89,255,97,245,89,255,91,249,89,255,88,255,89,255,88,255,89,255,93,255,89,255,103,254,89,255,114,248,94,255,125,244,103,255,137,240,114,255,149,237,124,255,161,234,134,255,173,232,144,255,137,225,113,255,127,227,105,255,118,229,97,255,109,232,90,255,102,235,89,255,97,239,89,255,93,244,89,255,94,251,89,255,99,249,89,255,107,243,89,255,118,238,97,255,129,234,107,255,141,231,117,255,152,229,126,255,164,227,136,255,175,225,146,255,141,217,117,255,132,219,109,255,123,221,102,255,116,223,95,255,109,226,90,255,104,229,89,255,101,233,89,255,101,238,89,255,105,237,89,255,114,232,94,255,123,228,102,255,134,225,111,255,145,222,120,255,156,220,130,255,168,218,139,255,179,217,149,255,148,209,122,255,139,210,115,255,131,212,108,255,123,213,102,255,117,215,97,255,113,218,93,255,110,221,91,255,110,225,91,255,114,224,94,255,122,220,101,255,131,217,108,255,141,215,117,255,151,213,125,255,162,211,134,255,172,210,144,255,183,209,153,255,156,200,130,255,148,201,123,255,141,202,117,255,134,203,111,255,129,204,106,255,124,206,103,255,122,208,101,255,122,210,101,255,126,210,104,255,133,207,110,255,141,205,117,255,150,204,124,255,159,203,132,255,169,202,141,255,180,201,150,255,190,200,158,255,169,191,141,255,162,191,135,255,156,192,129,255,150,192,124,255,145,192,120,255,141,193,117,255,139,193,116,255,139,194,116,255,143,194,118,255,148,193,123,255,156,193,129,255,164,192,136,255,172,192,143,255,181,192,151,255,191,191,159,255,200,191,167,255,165,185,138,255,158,185,131,255,151,185,125,255,145,184,120,255,140,183,116,255,136,183,113,255,134,182,111,255,134,180,111,255,138,181,114,255,144,182,119,255,151,183,125,255,160,184,133,255,168,184,140,255,178,185,148,255,187,185,156,255,197,185,164,255,154,182,128,255,145,181,121,255,138,180,114,255,131,178,108,255,125,177,104,255,121,174,100,255,119,171,98,255,119,167,98,255,123,168,101,255,130,172,107,255,138,175,114,255,147,177,122,255,157,179,130,255,167,180,139,255,178,181,148,255,188,182,157,255,146,178,121,255,137,177,113,255,129,175,106,255,121,172,100,255,115,169,95,255,110,166,91,255,107,160,89,255,107,153,89,255,112,155,92,255,119,162,99,255,129,167,106,255,139,170,115,255,149,173,124,255,160,175,133,255,171,177,142,255,182,178,152,255,140,174,116,255,131,172,108,255,122,169,101,255,114,166,94,255,107,162,89,255,102,156,89,255,99,148,89,255,99,137,89,255,104,140,89,255,112,151,92,255,122,158,101,255,133,163,110,255,144,167,119,255,155,170,129,255,166,173,138,255,178,175,148,255,136,171,112,255,126,168,104,255,117,164,96,255,108,159,89,255,101,154,89,255,95,146,89,255,92,135,89,255,92,118,89,255,97,123,89,255,106,138,89,255,117,148,96,255,128,155,106,255,140,161,116,255,151,165,126,255,163,168,135,255,175,171,145,255,132,167,110,255,122,163,101,255,113,158,93,255,104,152,89,255,96,145,89,255,90,135,89,255,86,120,89,255,86,94,89,255,92,102,89,255,101,124,89,255,113,137,93,255,124,147,103,255,136,154,113,255,148,159,123,255,160,164,133,255,172,167,143,255,130,162,107,255,119,158,98,255,109,152,90,255,100,145,89,255,92,135,89,255,85,122,89,255,81,101,89,255,81,59,89,255,88,74,89,255,98,107,89,255,109,126,90,255,121,138,100,255,134,147,111,255,146,154,121,255,158,159,131,255,170,163,142,255,127,158,105,255,117,153,96,255,106,146,89,255,97,137,89,255,88,125,89,255,81,107,89,255,77,77,89,255,77,0,89,255,84,10,89,255,94,87,89,255,106,113,89,255,119,128,98,255,131,139,109,255,144,148,119,255,156,154,130,255,169,159,140,255]
@@ -102,7 +102,7 @@
102
102
  },
103
103
  "cov-trig.sl": {
104
104
  "hash": "49fcabc8",
105
- "source": "// Trigonometry over continuous inputs. exp, log, sqrt and atan2 are in\n// exp.sl: together they need more than the VM's eight registers.\nfloat4 main() {\n float2 q = (uv - 0.5) * 2.0;\n float a = sin(q.x * 5.0) * cos(q.y * 4.0) * 0.5 + 0.5;\n float b = tan(q.x * 0.6) * 0.3 + asin(q.y * 0.9) * 0.2 + acos(q.x * 0.9) * 0.1;\n return float4(a, saturate(b + 0.5), 0.5, 1);\n}\n",
105
+ "source": "// Trigonometry over continuous inputs. exp, log, sqrt and atan2 are in\n// cov-exp.sl, a split made when the VM had eight registers.\nfloat4 main() {\n float2 q = (uv - 0.5) * 2.0;\n float a = sin(q.x * 5.0) * cos(q.y * 4.0) * 0.5 + 0.5;\n float b = tan(q.x * 0.6) * 0.3 + asin(q.y * 0.9) * 0.2 + acos(q.x * 0.9) * 0.1;\n return float4(a, saturate(b + 0.5), 0.5, 1);\n}\n",
106
106
  "samples": {
107
107
  "0": [77,227,188,255,118,228,188,255,171,230,188,255,214,231,188,255,239,233,188,255,246,234,188,255,234,236,188,255,203,237,188,255,157,239,188,255,103,240,188,255,77,241,188,255,115,243,188,255,168,244,188,255,212,246,188,255,239,247,188,255,247,248,188,255,10,222,188,255,100,223,188,255,168,225,188,255,218,227,188,255,247,228,188,255,255,230,188,255,241,231,188,255,206,233,188,255,151,234,188,255,78,236,188,255,6,237,188,255,96,238,188,255,165,240,188,255,215,241,188,255,246,243,188,255,255,244,188,255,65,218,188,255,113,219,188,255,170,221,188,255,215,223,188,255,242,224,188,255,249,226,188,255,236,227,188,255,204,229,188,255,155,230,188,255,96,232,188,255,64,233,188,255,110,235,188,255,167,236,188,255,213,238,188,255,241,239,188,255,249,241,188,255,127,214,188,255,145,216,188,255,177,217,188,255,206,219,188,255,224,221,188,255,230,222,188,255,220,224,188,255,198,225,188,255,168,227,188,255,138,228,188,255,127,230,188,255,144,231,188,255,175,233,188,255,204,234,188,255,224,236,188,255,230,237,188,255,177,210,188,255,180,212,188,255,185,214,188,255,191,216,188,255,196,217,188,255,197,219,188,255,195,221,188,255,190,222,188,255,184,224,188,255,179,225,188,255,177,227,188,255,180,228,188,255,185,230,188,255,191,231,188,255,196,233,188,255,197,234,188,255,216,207,188,255,209,209,188,255,194,211,188,255,174,212,188,255,157,214,188,255,152,216,188,255,161,217,188,255,180,219,188,255,199,220,188,255,212,222,188,255,216,223,188,255,210,225,188,255,195,227,188,255,176,228,188,255,158,230,188,255,152,231,188,255,242,204,188,255,230,205,188,255,201,207,188,255,159,209,188,255,114,211,188,255,95,212,188,255,126,214,188,255,172,216,188,255,210,217,188,255,235,219,188,255,242,220,188,255,231,222,188,255,203,224,188,255,161,225,188,255,116,227,188,255,95,228,188,255,254,200,188,255,239,202,188,255,204,204,188,255,150,206,188,255,79,207,188,255,26,209,188,255,100,211,188,255,167,212,188,255,216,214,188,255,246,216,188,255,254,217,188,255,241,219,188,255,207,220,188,255,153,222,188,255,83,224,188,255,25,225,188,255,252,197,188,255,238,198,188,255,204,200,188,255,151,202,188,255,85,204,188,255,45,206,188,255,104,208,188,255,168,209,188,255,215,211,188,255,244,212,188,255,252,214,188,255,239,216,188,255,206,217,188,255,155,219,188,255,89,221,188,255,44,222,188,255,236,193,188,255,226,195,188,255,200,197,188,255,163,199,188,255,125,201,188,255,111,202,188,255,134,204,188,255,173,206,188,255,208,208,188,255,230,209,188,255,237,211,188,255,226,213,188,255,201,214,188,255,165,216,188,255,127,218,188,255,110,219,188,255,207,189,188,255,203,191,188,255,192,193,188,255,179,195,188,255,168,197,188,255,164,199,188,255,170,201,188,255,182,202,188,255,195,204,188,255,205,206,188,255,208,207,188,255,203,209,188,255,193,211,188,255,179,213,188,255,168,214,188,255,164,216,188,255,166,185,188,255,172,187,188,255,183,189,188,255,195,191,188,255,204,193,188,255,206,195,188,255,202,197,188,255,192,199,188,255,180,200,188,255,169,202,188,255,166,204,188,255,171,206,188,255,182,207,188,255,195,209,188,255,204,211,188,255,206,213,188,255,113,181,188,255,136,183,188,255,175,185,188,255,208,187,188,255,230,189,188,255,236,191,188,255,225,193,188,255,200,195,188,255,164,196,188,255,127,198,188,255,112,200,188,255,135,202,188,255,173,204,188,255,207,205,188,255,229,207,188,255,236,209,188,255,48,176,188,255,107,178,188,255,169,180,188,255,216,182,188,255,244,184,188,255,252,186,188,255,238,188,188,255,205,190,188,255,153,192,188,255,88,194,188,255,47,196,188,255,103,198,188,255,166,199,188,255,214,201,188,255,243,203,188,255,252,205,188,255,25,170,188,255,102,172,188,255,168,174,188,255,217,177,188,255,246,179,188,255,254,181,188,255,240,183,188,255,206,185,188,255,152,187,188,255,81,189,188,255,23,191,188,255,98,193,188,255,165,195,188,255,215,196,188,255,245,198,188,255,254,200,188,255,93,162,188,255,126,165,188,255,173,167,188,255,212,170,188,255,236,172,188,255,242,174,188,255,231,176,188,255,202,178,188,255,160,180,188,255,114,182,188,255,93,184,188,255,123,186,188,255,170,188,188,255,210,190,188,255,235,192,188,255,242,194,188,255],
108
108
  "1.25": [77,227,188,255,118,228,188,255,171,230,188,255,214,231,188,255,239,233,188,255,246,234,188,255,234,236,188,255,203,237,188,255,157,239,188,255,103,240,188,255,77,241,188,255,115,243,188,255,168,244,188,255,212,246,188,255,239,247,188,255,247,248,188,255,10,222,188,255,100,223,188,255,168,225,188,255,218,227,188,255,247,228,188,255,255,230,188,255,241,231,188,255,206,233,188,255,151,234,188,255,78,236,188,255,6,237,188,255,96,238,188,255,165,240,188,255,215,241,188,255,246,243,188,255,255,244,188,255,65,218,188,255,113,219,188,255,170,221,188,255,215,223,188,255,242,224,188,255,249,226,188,255,236,227,188,255,204,229,188,255,155,230,188,255,96,232,188,255,64,233,188,255,110,235,188,255,167,236,188,255,213,238,188,255,241,239,188,255,249,241,188,255,127,214,188,255,145,216,188,255,177,217,188,255,206,219,188,255,224,221,188,255,230,222,188,255,220,224,188,255,198,225,188,255,168,227,188,255,138,228,188,255,127,230,188,255,144,231,188,255,175,233,188,255,204,234,188,255,224,236,188,255,230,237,188,255,177,210,188,255,180,212,188,255,185,214,188,255,191,216,188,255,196,217,188,255,197,219,188,255,195,221,188,255,190,222,188,255,184,224,188,255,179,225,188,255,177,227,188,255,180,228,188,255,185,230,188,255,191,231,188,255,196,233,188,255,197,234,188,255,216,207,188,255,209,209,188,255,194,211,188,255,174,212,188,255,157,214,188,255,152,216,188,255,161,217,188,255,180,219,188,255,199,220,188,255,212,222,188,255,216,223,188,255,210,225,188,255,195,227,188,255,176,228,188,255,158,230,188,255,152,231,188,255,242,204,188,255,230,205,188,255,201,207,188,255,159,209,188,255,114,211,188,255,95,212,188,255,126,214,188,255,172,216,188,255,210,217,188,255,235,219,188,255,242,220,188,255,231,222,188,255,203,224,188,255,161,225,188,255,116,227,188,255,95,228,188,255,254,200,188,255,239,202,188,255,204,204,188,255,150,206,188,255,79,207,188,255,26,209,188,255,100,211,188,255,167,212,188,255,216,214,188,255,246,216,188,255,254,217,188,255,241,219,188,255,207,220,188,255,153,222,188,255,83,224,188,255,25,225,188,255,252,197,188,255,238,198,188,255,204,200,188,255,151,202,188,255,85,204,188,255,45,206,188,255,104,208,188,255,168,209,188,255,215,211,188,255,244,212,188,255,252,214,188,255,239,216,188,255,206,217,188,255,155,219,188,255,89,221,188,255,44,222,188,255,236,193,188,255,226,195,188,255,200,197,188,255,163,199,188,255,125,201,188,255,111,202,188,255,134,204,188,255,173,206,188,255,208,208,188,255,230,209,188,255,237,211,188,255,226,213,188,255,201,214,188,255,165,216,188,255,127,218,188,255,110,219,188,255,207,189,188,255,203,191,188,255,192,193,188,255,179,195,188,255,168,197,188,255,164,199,188,255,170,201,188,255,182,202,188,255,195,204,188,255,205,206,188,255,208,207,188,255,203,209,188,255,193,211,188,255,179,213,188,255,168,214,188,255,164,216,188,255,166,185,188,255,172,187,188,255,183,189,188,255,195,191,188,255,204,193,188,255,206,195,188,255,202,197,188,255,192,199,188,255,180,200,188,255,169,202,188,255,166,204,188,255,171,206,188,255,182,207,188,255,195,209,188,255,204,211,188,255,206,213,188,255,113,181,188,255,136,183,188,255,175,185,188,255,208,187,188,255,230,189,188,255,236,191,188,255,225,193,188,255,200,195,188,255,164,196,188,255,127,198,188,255,112,200,188,255,135,202,188,255,173,204,188,255,207,205,188,255,229,207,188,255,236,209,188,255,48,176,188,255,107,178,188,255,169,180,188,255,216,182,188,255,244,184,188,255,252,186,188,255,238,188,188,255,205,190,188,255,153,192,188,255,88,194,188,255,47,196,188,255,103,198,188,255,166,199,188,255,214,201,188,255,243,203,188,255,252,205,188,255,25,170,188,255,102,172,188,255,168,174,188,255,217,177,188,255,246,179,188,255,254,181,188,255,240,183,188,255,206,185,188,255,152,187,188,255,81,189,188,255,23,191,188,255,98,193,188,255,165,195,188,255,215,196,188,255,245,198,188,255,254,200,188,255,93,162,188,255,126,165,188,255,173,167,188,255,212,170,188,255,236,172,188,255,242,174,188,255,231,176,188,255,202,178,188,255,160,180,188,255,114,182,188,255,93,184,188,255,123,186,188,255,170,188,188,255,210,190,188,255,235,192,188,255,242,194,188,255]
@@ -141,7 +141,7 @@
141
141
  },
142
142
  "ember.sl": {
143
143
  "hash": "9a55af34",
144
- "source": "// A fire, in one file: one texture, one loop, one function.\n//\n// Everything a Unity shader makes you write that is not the effect is absent.\n// No Properties block, no SubShader, no CGPROGRAM, no appdata or v2f, no\n// _Time.y. `uniform` declares the slot AND the name React binds against, and\n// `texture2D` does the same for a sampler.\n//\n// This program sits at exactly 8 of the VM's 8 registers, which is why it is\n// in the corpus: the VM refused a ninth live value. Compiled, there is no such\n// ceiling, and the same file draws the same in the editor, a player and a\n// browser, with no edit in between.\ntexture2D smoke;\n\nuniform float heat = 0.55;\nuniform float2 source = float2(0.5, 0.08);\n\n// Layered noise: one texture, three scales, drifting.\n//\n// The loop UNROLLS at build time. `i` is a number the parser substitutes, so\n// both backends see straight line code and neither needs a branch, which is\n// also why the bound has to be a constant. The function inlines, so calling it\n// costs exactly what writing the three lines out would.\nfloat plume(float2 p, float t) {\n float s = 0;\n for (int i = 0; i < 3; i++) {\n s = s + tex2D(smoke, p * (1 + i * 1.9) - t).r * (0.6 / (1 + i));\n }\n return s;\n}\n\nfloat4 main() {\n float2 p = uv - source;\n // A cone: narrow across, tall up, brightest at the source.\n float cone = saturate(1 - length(p * float2(3, 1.1)));\n float fuel = saturate(cone * (0.5 + heat) * (plume(p, time * 0.4) + 0.35));\n\n // Colours as written. They are mixed in sRGB and converted once, so the\n // ramp reads as evenly as its swatches do.\n return ramp(fuel, #00000000, #b53205cc, #ff8a20, #ffe7b0);\n}\n",
144
+ "source": "// A fire, in one file: one texture, one loop, one function.\n//\n// Everything a Unity shader makes you write that is not the effect is absent.\n// No Properties block, no SubShader, no CGPROGRAM, no appdata or v2f, no\n// _Time.y. `uniform` declares the slot AND the name React binds against, and\n// `texture2D` does the same for a sampler.\n//\n// This program sat at exactly 8 of the VM's 8 registers, which is why it is\n// in the corpus: the VM refused a ninth live value. Compiled, there is no such\n// ceiling, and the same file draws the same in the editor, a player and a\n// browser, with no edit in between.\ntexture2D smoke;\n\nuniform float heat = 0.55;\nuniform float2 source = float2(0.5, 0.08);\n\n// Layered noise: one texture, three scales, drifting.\n//\n// The loop UNROLLS at build time. `i` is a number the parser substitutes, so\n// both backends see straight line code and neither needs a branch, which is\n// also why the bound has to be a constant. The function inlines, so calling it\n// costs exactly what writing the three lines out would.\nfloat plume(float2 p, float t) {\n float s = 0;\n for (int i = 0; i < 3; i++) {\n s = s + tex2D(smoke, p * (1 + i * 1.9) - t).r * (0.6 / (1 + i));\n }\n return s;\n}\n\nfloat4 main() {\n float2 p = uv - source;\n // A cone: narrow across, tall up, brightest at the source.\n float cone = saturate(1 - length(p * float2(3, 1.1)));\n float fuel = saturate(cone * (0.5 + heat) * (plume(p, time * 0.4) + 0.35));\n\n // Colours as written. They are mixed in sRGB and converted once, so the\n // ramp reads as evenly as its swatches do.\n return ramp(fuel, #00000000, #b53205cc, #ff8a20, #ffe7b0);\n}\n",
145
145
  "samples": {
146
146
  "0": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,6,2,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,1,0,15,16,2,0,22,15,2,0,22,7,1,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,1,0,13,23,3,0,30,32,5,0,38,31,5,0,37,25,3,0,31,6,1,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,2,21,2,0,27,38,6,0,45,46,8,0,53,46,8,0,53,42,7,0,48,26,3,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,1,0,14,34,5,0,40,52,10,0,59,61,13,0,69,61,13,0,69,58,12,0,66,45,8,0,52,6,1,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,2,0,25,46,8,0,53,66,14,1,74,75,17,1,85,75,18,1,85,73,16,1,82,63,13,0,71,27,3,0,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,30,4,0,36,58,12,0,66,78,18,1,88,89,22,1,100,90,22,1,101,88,21,1,99,80,19,1,90,46,8,0,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,0,10,40,6,0,46,69,15,1,78,91,22,1,102,103,26,1,116,104,26,1,116,102,25,1,115,95,23,1,107,62,13,0,70,1,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,2,0,18,48,9,0,55,79,19,1,89,103,26,1,116,117,30,1,131,117,30,1,132,116,30,1,130,110,28,1,123,77,18,1,87,12,2,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,2,0,25,56,11,0,63,88,21,1,99,115,30,1,129,131,34,1,147,131,34,1,147,129,34,1,145,123,32,1,138,90,22,1,101,26,3,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,3,0,30,62,13,0,70,96,24,1,108,126,33,1,141,144,38,1,162,144,38,1,162,141,37,1,158,134,35,1,151,101,25,1,114,37,6,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,4,0,35,67,15,1,76,103,26,1,116,135,36,1,152,157,42,2,177,157,42,2,177,151,41,2,170,144,38,1,162,110,28,1,124,46,8,0,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,5,0,38,71,16,1,80,108,27,1,122,143,38,1,161,170,46,2,192,169,46,2,190,159,43,2,179,151,40,2,170,117,30,1,132,52,10,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,5,0,40,74,16,1,83,111,29,1,125,148,40,2,167,181,50,2,204,178,48,2,201,165,44,2,186,155,42,2,175,121,31,1,136,57,11,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,5,0,41,74,17,1,84,113,29,1,127,151,40,2,170,184,53,2,206,182,50,2,205,167,45,2,188,157,42,2,177,123,32,1,138,58,12,0,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,5,0,41,74,17,1,83,112,29,1,126,149,40,2,168,182,51,2,205,180,49,2,203,165,45,2,187,156,42,2,176,122,32,1,137,57,11,0,65,0,0,0,0,0,0,0,0,0,0,0,0],
147
147
  "1.25": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,6,2,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,1,0,15,16,2,0,22,15,2,0,21,5,1,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,1,0,13,23,3,0,30,32,5,0,38,30,4,0,37,20,2,0,26,3,1,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,2,21,2,0,27,38,6,0,45,46,8,0,53,45,8,0,52,34,5,0,41,16,2,0,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,1,0,14,34,5,0,40,52,10,0,59,61,13,0,69,60,13,0,68,48,9,0,55,29,4,0,35,2,1,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,2,0,25,46,8,0,53,66,14,1,74,75,17,1,85,74,17,1,83,61,13,0,70,42,7,0,48,15,2,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,30,4,0,36,58,12,0,66,78,18,1,88,89,22,1,100,88,21,1,99,74,17,1,84,53,10,0,61,27,3,0,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,0,10,40,6,0,46,69,15,1,78,91,22,1,102,103,26,1,116,101,25,1,114,86,21,1,97,64,14,0,73,38,6,0,44,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,2,0,18,48,9,0,55,79,19,1,89,103,26,1,116,117,30,1,131,115,30,1,129,98,24,1,110,74,17,1,84,48,9,0,55,6,1,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,2,0,25,56,11,0,63,88,21,1,99,115,30,1,129,131,34,1,147,128,34,1,144,109,28,1,122,83,20,1,94,56,11,0,64,16,2,0,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,3,0,30,62,13,0,70,96,24,1,108,126,33,1,141,144,38,1,162,141,37,1,159,119,31,1,134,91,22,1,103,63,13,0,72,24,3,0,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,4,0,35,67,15,1,76,103,26,1,116,135,36,1,152,157,42,2,177,154,41,2,173,128,34,1,144,98,24,1,110,69,15,1,78,31,4,0,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,5,0,38,71,16,1,80,108,27,1,122,143,38,1,161,170,46,2,192,165,45,2,186,135,36,1,152,103,26,1,115,74,16,1,83,35,6,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,5,0,40,74,16,1,83,111,29,1,125,148,40,2,167,181,50,2,204,174,47,2,197,139,37,1,157,106,27,1,119,76,18,1,86,38,6,0,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,5,0,41,74,17,1,84,113,29,1,127,151,40,2,170,184,53,2,206,179,49,2,202,141,37,1,159,107,27,1,120,77,18,1,87,39,6,0,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,5,0,41,74,17,1,83,112,29,1,126,149,40,2,168,182,51,2,205,176,48,2,198,140,37,1,157,106,27,1,119,77,18,1,86,39,6,0,45,0,0,0,0,0,0,0,0,0,0,0,0]
@@ -156,6 +156,24 @@
156
156
  "1.25": [0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255]
157
157
  }
158
158
  },
159
+ "fetch.sl": {
160
+ "hash": "5050430b",
161
+ "exact": true,
162
+ "source": "// An anchor for tex2Dfetch and textureSize. The left half fetches texels at\n// pixels from -1 to 9, which hold at the edge texels past 0 and 7. The right\n// half samples the same texture as it is set, at texel centres, so one texture\n// is read both ways and both are exact. Blue is the texture's width over 16,\n// which is 0.5.\ntexture2D t;\nfloat4 main() {\n float2 size = textureSize(t);\n float2 centre = (floor(uv * size) + 0.5) / size;\n float4 c = uv.x < 0.5 ? tex2Dfetch(t, uv * 10 - 1) : tex2D(t, centre);\n return float4(c.rg, size.x / 16, 1);\n}\n",
163
+ "samples": {
164
+ "0": [16,16,188,255,16,16,188,255,16,16,188,255,48,16,188,255,48,16,188,255,80,16,188,255,112,16,188,255,112,16,188,255,144,16,188,255,144,16,188,255,176,16,188,255,176,16,188,255,208,16,188,255,208,16,188,255,240,16,188,255,240,16,188,255,16,16,188,255,16,16,188,255,16,16,188,255,48,16,188,255,48,16,188,255,80,16,188,255,112,16,188,255,112,16,188,255,144,16,188,255,144,16,188,255,176,16,188,255,176,16,188,255,208,16,188,255,208,16,188,255,240,16,188,255,240,16,188,255,16,16,188,255,16,16,188,255,16,16,188,255,48,16,188,255,48,16,188,255,80,16,188,255,112,16,188,255,112,16,188,255,144,48,188,255,144,48,188,255,176,48,188,255,176,48,188,255,208,48,188,255,208,48,188,255,240,48,188,255,240,48,188,255,16,48,188,255,16,48,188,255,16,48,188,255,48,48,188,255,48,48,188,255,80,48,188,255,112,48,188,255,112,48,188,255,144,48,188,255,144,48,188,255,176,48,188,255,176,48,188,255,208,48,188,255,208,48,188,255,240,48,188,255,240,48,188,255,16,48,188,255,16,48,188,255,16,48,188,255,48,48,188,255,48,48,188,255,80,48,188,255,112,48,188,255,112,48,188,255,144,80,188,255,144,80,188,255,176,80,188,255,176,80,188,255,208,80,188,255,208,80,188,255,240,80,188,255,240,80,188,255,16,80,188,255,16,80,188,255,16,80,188,255,48,80,188,255,48,80,188,255,80,80,188,255,112,80,188,255,112,80,188,255,144,80,188,255,144,80,188,255,176,80,188,255,176,80,188,255,208,80,188,255,208,80,188,255,240,80,188,255,240,80,188,255,16,112,188,255,16,112,188,255,16,112,188,255,48,112,188,255,48,112,188,255,80,112,188,255,112,112,188,255,112,112,188,255,144,112,188,255,144,112,188,255,176,112,188,255,176,112,188,255,208,112,188,255,208,112,188,255,240,112,188,255,240,112,188,255,16,112,188,255,16,112,188,255,16,112,188,255,48,112,188,255,48,112,188,255,80,112,188,255,112,112,188,255,112,112,188,255,144,112,188,255,144,112,188,255,176,112,188,255,176,112,188,255,208,112,188,255,208,112,188,255,240,112,188,255,240,112,188,255,16,144,188,255,16,144,188,255,16,144,188,255,48,144,188,255,48,144,188,255,80,144,188,255,112,144,188,255,112,144,188,255,144,144,188,255,144,144,188,255,176,144,188,255,176,144,188,255,208,144,188,255,208,144,188,255,240,144,188,255,240,144,188,255,16,176,188,255,16,176,188,255,16,176,188,255,48,176,188,255,48,176,188,255,80,176,188,255,112,176,188,255,112,176,188,255,144,144,188,255,144,144,188,255,176,144,188,255,176,144,188,255,208,144,188,255,208,144,188,255,240,144,188,255,240,144,188,255,16,176,188,255,16,176,188,255,16,176,188,255,48,176,188,255,48,176,188,255,80,176,188,255,112,176,188,255,112,176,188,255,144,176,188,255,144,176,188,255,176,176,188,255,176,176,188,255,208,176,188,255,208,176,188,255,240,176,188,255,240,176,188,255,16,208,188,255,16,208,188,255,16,208,188,255,48,208,188,255,48,208,188,255,80,208,188,255,112,208,188,255,112,208,188,255,144,176,188,255,144,176,188,255,176,176,188,255,176,176,188,255,208,176,188,255,208,176,188,255,240,176,188,255,240,176,188,255,16,208,188,255,16,208,188,255,16,208,188,255,48,208,188,255,48,208,188,255,80,208,188,255,112,208,188,255,112,208,188,255,144,208,188,255,144,208,188,255,176,208,188,255,176,208,188,255,208,208,188,255,208,208,188,255,240,208,188,255,240,208,188,255,16,240,188,255,16,240,188,255,16,240,188,255,48,240,188,255,48,240,188,255,80,240,188,255,112,240,188,255,112,240,188,255,144,208,188,255,144,208,188,255,176,208,188,255,176,208,188,255,208,208,188,255,208,208,188,255,240,208,188,255,240,208,188,255,16,240,188,255,16,240,188,255,16,240,188,255,48,240,188,255,48,240,188,255,80,240,188,255,112,240,188,255,112,240,188,255,144,240,188,255,144,240,188,255,176,240,188,255,176,240,188,255,208,240,188,255,208,240,188,255,240,240,188,255,240,240,188,255,16,240,188,255,16,240,188,255,16,240,188,255,48,240,188,255,48,240,188,255,80,240,188,255,112,240,188,255,112,240,188,255,144,240,188,255,144,240,188,255,176,240,188,255,176,240,188,255,208,240,188,255,208,240,188,255,240,240,188,255,240,240,188,255],
165
+ "1.25": [16,16,188,255,16,16,188,255,16,16,188,255,48,16,188,255,48,16,188,255,80,16,188,255,112,16,188,255,112,16,188,255,144,16,188,255,144,16,188,255,176,16,188,255,176,16,188,255,208,16,188,255,208,16,188,255,240,16,188,255,240,16,188,255,16,16,188,255,16,16,188,255,16,16,188,255,48,16,188,255,48,16,188,255,80,16,188,255,112,16,188,255,112,16,188,255,144,16,188,255,144,16,188,255,176,16,188,255,176,16,188,255,208,16,188,255,208,16,188,255,240,16,188,255,240,16,188,255,16,16,188,255,16,16,188,255,16,16,188,255,48,16,188,255,48,16,188,255,80,16,188,255,112,16,188,255,112,16,188,255,144,48,188,255,144,48,188,255,176,48,188,255,176,48,188,255,208,48,188,255,208,48,188,255,240,48,188,255,240,48,188,255,16,48,188,255,16,48,188,255,16,48,188,255,48,48,188,255,48,48,188,255,80,48,188,255,112,48,188,255,112,48,188,255,144,48,188,255,144,48,188,255,176,48,188,255,176,48,188,255,208,48,188,255,208,48,188,255,240,48,188,255,240,48,188,255,16,48,188,255,16,48,188,255,16,48,188,255,48,48,188,255,48,48,188,255,80,48,188,255,112,48,188,255,112,48,188,255,144,80,188,255,144,80,188,255,176,80,188,255,176,80,188,255,208,80,188,255,208,80,188,255,240,80,188,255,240,80,188,255,16,80,188,255,16,80,188,255,16,80,188,255,48,80,188,255,48,80,188,255,80,80,188,255,112,80,188,255,112,80,188,255,144,80,188,255,144,80,188,255,176,80,188,255,176,80,188,255,208,80,188,255,208,80,188,255,240,80,188,255,240,80,188,255,16,112,188,255,16,112,188,255,16,112,188,255,48,112,188,255,48,112,188,255,80,112,188,255,112,112,188,255,112,112,188,255,144,112,188,255,144,112,188,255,176,112,188,255,176,112,188,255,208,112,188,255,208,112,188,255,240,112,188,255,240,112,188,255,16,112,188,255,16,112,188,255,16,112,188,255,48,112,188,255,48,112,188,255,80,112,188,255,112,112,188,255,112,112,188,255,144,112,188,255,144,112,188,255,176,112,188,255,176,112,188,255,208,112,188,255,208,112,188,255,240,112,188,255,240,112,188,255,16,144,188,255,16,144,188,255,16,144,188,255,48,144,188,255,48,144,188,255,80,144,188,255,112,144,188,255,112,144,188,255,144,144,188,255,144,144,188,255,176,144,188,255,176,144,188,255,208,144,188,255,208,144,188,255,240,144,188,255,240,144,188,255,16,176,188,255,16,176,188,255,16,176,188,255,48,176,188,255,48,176,188,255,80,176,188,255,112,176,188,255,112,176,188,255,144,144,188,255,144,144,188,255,176,144,188,255,176,144,188,255,208,144,188,255,208,144,188,255,240,144,188,255,240,144,188,255,16,176,188,255,16,176,188,255,16,176,188,255,48,176,188,255,48,176,188,255,80,176,188,255,112,176,188,255,112,176,188,255,144,176,188,255,144,176,188,255,176,176,188,255,176,176,188,255,208,176,188,255,208,176,188,255,240,176,188,255,240,176,188,255,16,208,188,255,16,208,188,255,16,208,188,255,48,208,188,255,48,208,188,255,80,208,188,255,112,208,188,255,112,208,188,255,144,176,188,255,144,176,188,255,176,176,188,255,176,176,188,255,208,176,188,255,208,176,188,255,240,176,188,255,240,176,188,255,16,208,188,255,16,208,188,255,16,208,188,255,48,208,188,255,48,208,188,255,80,208,188,255,112,208,188,255,112,208,188,255,144,208,188,255,144,208,188,255,176,208,188,255,176,208,188,255,208,208,188,255,208,208,188,255,240,208,188,255,240,208,188,255,16,240,188,255,16,240,188,255,16,240,188,255,48,240,188,255,48,240,188,255,80,240,188,255,112,240,188,255,112,240,188,255,144,208,188,255,144,208,188,255,176,208,188,255,176,208,188,255,208,208,188,255,208,208,188,255,240,208,188,255,240,208,188,255,16,240,188,255,16,240,188,255,16,240,188,255,48,240,188,255,48,240,188,255,80,240,188,255,112,240,188,255,112,240,188,255,144,240,188,255,144,240,188,255,176,240,188,255,176,240,188,255,208,240,188,255,208,240,188,255,240,240,188,255,240,240,188,255,16,240,188,255,16,240,188,255,16,240,188,255,48,240,188,255,48,240,188,255,80,240,188,255,112,240,188,255,112,240,188,255,144,240,188,255,144,240,188,255,176,240,188,255,176,240,188,255,208,240,188,255,208,240,188,255,240,240,188,255,240,240,188,255]
166
+ }
167
+ },
168
+ "filter-point.sl": {
169
+ "hash": "83692186",
170
+ "exact": true,
171
+ "source": "// An anchor for [Filter(Point)] with [Wrap(Repeat)]: the texture's eight by\n// eight texels as hard squares over two tiles, which the host binds linear and\n// clamped. The bottom half reads through tex2Dlod at level 0, so the program's\n// sampler reaches a sample at a level as well as a plain one.\n[Filter(Point)] [Wrap(Repeat)] texture2D t;\nfloat4 main() {\n float2 q = uv * 2 - 0.5;\n return uv.y > 0.5 ? tex2D(t, q) : tex2Dlod(t, q, 0);\n}\n",
172
+ "samples": {
173
+ "0": [144,144,200,255,176,144,40,255,208,144,200,255,240,144,40,255,16,144,200,255,48,144,40,255,80,144,200,255,112,144,40,255,144,144,200,255,176,144,40,255,208,144,200,255,240,144,40,255,16,144,200,255,48,144,40,255,80,144,200,255,112,144,40,255,144,176,40,255,176,176,200,255,208,176,40,255,240,176,200,255,16,176,40,255,48,176,200,255,80,176,40,255,112,176,200,255,144,176,40,255,176,176,200,255,208,176,40,255,240,176,200,255,16,176,40,255,48,176,200,255,80,176,40,255,112,176,200,255,144,208,200,255,176,208,40,255,208,208,200,255,240,208,40,255,16,208,200,255,48,208,40,255,80,208,200,255,112,208,40,255,144,208,200,255,176,208,40,255,208,208,200,255,240,208,40,255,16,208,200,255,48,208,40,255,80,208,200,255,112,208,40,255,144,240,40,255,176,240,200,255,208,240,40,255,240,240,200,255,16,240,40,255,48,240,200,255,80,240,40,255,112,240,200,255,144,240,40,255,176,240,200,255,208,240,40,255,240,240,200,255,16,240,40,255,48,240,200,255,80,240,40,255,112,240,200,255,144,16,200,255,176,16,40,255,208,16,200,255,240,16,40,255,16,16,200,255,48,16,40,255,80,16,200,255,112,16,40,255,144,16,200,255,176,16,40,255,208,16,200,255,240,16,40,255,16,16,200,255,48,16,40,255,80,16,200,255,112,16,40,255,144,48,40,255,176,48,200,255,208,48,40,255,240,48,200,255,16,48,40,255,48,48,200,255,80,48,40,255,112,48,200,255,144,48,40,255,176,48,200,255,208,48,40,255,240,48,200,255,16,48,40,255,48,48,200,255,80,48,40,255,112,48,200,255,144,80,200,255,176,80,40,255,208,80,200,255,240,80,40,255,16,80,200,255,48,80,40,255,80,80,200,255,112,80,40,255,144,80,200,255,176,80,40,255,208,80,200,255,240,80,40,255,16,80,200,255,48,80,40,255,80,80,200,255,112,80,40,255,144,112,40,255,176,112,200,255,208,112,40,255,240,112,200,255,16,112,40,255,48,112,200,255,80,112,40,255,112,112,200,255,144,112,40,255,176,112,200,255,208,112,40,255,240,112,200,255,16,112,40,255,48,112,200,255,80,112,40,255,112,112,200,255,144,144,200,255,176,144,40,255,208,144,200,255,240,144,40,255,16,144,200,255,48,144,40,255,80,144,200,255,112,144,40,255,144,144,200,255,176,144,40,255,208,144,200,255,240,144,40,255,16,144,200,255,48,144,40,255,80,144,200,255,112,144,40,255,144,176,40,255,176,176,200,255,208,176,40,255,240,176,200,255,16,176,40,255,48,176,200,255,80,176,40,255,112,176,200,255,144,176,40,255,176,176,200,255,208,176,40,255,240,176,200,255,16,176,40,255,48,176,200,255,80,176,40,255,112,176,200,255,144,208,200,255,176,208,40,255,208,208,200,255,240,208,40,255,16,208,200,255,48,208,40,255,80,208,200,255,112,208,40,255,144,208,200,255,176,208,40,255,208,208,200,255,240,208,40,255,16,208,200,255,48,208,40,255,80,208,200,255,112,208,40,255,144,240,40,255,176,240,200,255,208,240,40,255,240,240,200,255,16,240,40,255,48,240,200,255,80,240,40,255,112,240,200,255,144,240,40,255,176,240,200,255,208,240,40,255,240,240,200,255,16,240,40,255,48,240,200,255,80,240,40,255,112,240,200,255,144,16,200,255,176,16,40,255,208,16,200,255,240,16,40,255,16,16,200,255,48,16,40,255,80,16,200,255,112,16,40,255,144,16,200,255,176,16,40,255,208,16,200,255,240,16,40,255,16,16,200,255,48,16,40,255,80,16,200,255,112,16,40,255,144,48,40,255,176,48,200,255,208,48,40,255,240,48,200,255,16,48,40,255,48,48,200,255,80,48,40,255,112,48,200,255,144,48,40,255,176,48,200,255,208,48,40,255,240,48,200,255,16,48,40,255,48,48,200,255,80,48,40,255,112,48,200,255,144,80,200,255,176,80,40,255,208,80,200,255,240,80,40,255,16,80,200,255,48,80,40,255,80,80,200,255,112,80,40,255,144,80,200,255,176,80,40,255,208,80,200,255,240,80,40,255,16,80,200,255,48,80,40,255,80,80,200,255,112,80,40,255,144,112,40,255,176,112,200,255,208,112,40,255,240,112,200,255,16,112,40,255,48,112,200,255,80,112,40,255,112,112,200,255,144,112,40,255,176,112,200,255,208,112,40,255,240,112,200,255,16,112,40,255,48,112,200,255,80,112,40,255,112,112,200,255],
174
+ "1.25": [144,144,200,255,176,144,40,255,208,144,200,255,240,144,40,255,16,144,200,255,48,144,40,255,80,144,200,255,112,144,40,255,144,144,200,255,176,144,40,255,208,144,200,255,240,144,40,255,16,144,200,255,48,144,40,255,80,144,200,255,112,144,40,255,144,176,40,255,176,176,200,255,208,176,40,255,240,176,200,255,16,176,40,255,48,176,200,255,80,176,40,255,112,176,200,255,144,176,40,255,176,176,200,255,208,176,40,255,240,176,200,255,16,176,40,255,48,176,200,255,80,176,40,255,112,176,200,255,144,208,200,255,176,208,40,255,208,208,200,255,240,208,40,255,16,208,200,255,48,208,40,255,80,208,200,255,112,208,40,255,144,208,200,255,176,208,40,255,208,208,200,255,240,208,40,255,16,208,200,255,48,208,40,255,80,208,200,255,112,208,40,255,144,240,40,255,176,240,200,255,208,240,40,255,240,240,200,255,16,240,40,255,48,240,200,255,80,240,40,255,112,240,200,255,144,240,40,255,176,240,200,255,208,240,40,255,240,240,200,255,16,240,40,255,48,240,200,255,80,240,40,255,112,240,200,255,144,16,200,255,176,16,40,255,208,16,200,255,240,16,40,255,16,16,200,255,48,16,40,255,80,16,200,255,112,16,40,255,144,16,200,255,176,16,40,255,208,16,200,255,240,16,40,255,16,16,200,255,48,16,40,255,80,16,200,255,112,16,40,255,144,48,40,255,176,48,200,255,208,48,40,255,240,48,200,255,16,48,40,255,48,48,200,255,80,48,40,255,112,48,200,255,144,48,40,255,176,48,200,255,208,48,40,255,240,48,200,255,16,48,40,255,48,48,200,255,80,48,40,255,112,48,200,255,144,80,200,255,176,80,40,255,208,80,200,255,240,80,40,255,16,80,200,255,48,80,40,255,80,80,200,255,112,80,40,255,144,80,200,255,176,80,40,255,208,80,200,255,240,80,40,255,16,80,200,255,48,80,40,255,80,80,200,255,112,80,40,255,144,112,40,255,176,112,200,255,208,112,40,255,240,112,200,255,16,112,40,255,48,112,200,255,80,112,40,255,112,112,200,255,144,112,40,255,176,112,200,255,208,112,40,255,240,112,200,255,16,112,40,255,48,112,200,255,80,112,40,255,112,112,200,255,144,144,200,255,176,144,40,255,208,144,200,255,240,144,40,255,16,144,200,255,48,144,40,255,80,144,200,255,112,144,40,255,144,144,200,255,176,144,40,255,208,144,200,255,240,144,40,255,16,144,200,255,48,144,40,255,80,144,200,255,112,144,40,255,144,176,40,255,176,176,200,255,208,176,40,255,240,176,200,255,16,176,40,255,48,176,200,255,80,176,40,255,112,176,200,255,144,176,40,255,176,176,200,255,208,176,40,255,240,176,200,255,16,176,40,255,48,176,200,255,80,176,40,255,112,176,200,255,144,208,200,255,176,208,40,255,208,208,200,255,240,208,40,255,16,208,200,255,48,208,40,255,80,208,200,255,112,208,40,255,144,208,200,255,176,208,40,255,208,208,200,255,240,208,40,255,16,208,200,255,48,208,40,255,80,208,200,255,112,208,40,255,144,240,40,255,176,240,200,255,208,240,40,255,240,240,200,255,16,240,40,255,48,240,200,255,80,240,40,255,112,240,200,255,144,240,40,255,176,240,200,255,208,240,40,255,240,240,200,255,16,240,40,255,48,240,200,255,80,240,40,255,112,240,200,255,144,16,200,255,176,16,40,255,208,16,200,255,240,16,40,255,16,16,200,255,48,16,40,255,80,16,200,255,112,16,40,255,144,16,200,255,176,16,40,255,208,16,200,255,240,16,40,255,16,16,200,255,48,16,40,255,80,16,200,255,112,16,40,255,144,48,40,255,176,48,200,255,208,48,40,255,240,48,200,255,16,48,40,255,48,48,200,255,80,48,40,255,112,48,200,255,144,48,40,255,176,48,200,255,208,48,40,255,240,48,200,255,16,48,40,255,48,48,200,255,80,48,40,255,112,48,200,255,144,80,200,255,176,80,40,255,208,80,200,255,240,80,40,255,16,80,200,255,48,80,40,255,80,80,200,255,112,80,40,255,144,80,200,255,176,80,40,255,208,80,200,255,240,80,40,255,16,80,200,255,48,80,40,255,80,80,200,255,112,80,40,255,144,112,40,255,176,112,200,255,208,112,40,255,240,112,200,255,16,112,40,255,48,112,200,255,80,112,40,255,112,112,200,255,144,112,40,255,176,112,200,255,208,112,40,255,240,112,200,255,16,112,40,255,48,112,200,255,80,112,40,255,112,112,200,255]
175
+ }
176
+ },
159
177
  "frame-delta.sl": {
160
178
  "hash": "12de4ff1",
161
179
  "historyExact": true,
@@ -197,6 +215,14 @@
197
215
  "1.25": [0,255,0,255,0,255,0,255,255,0,0,255,255,0,0,255,0,0,0,255,0,0,0,255,255,255,0,255,255,255,0,255,0,0,0,255,0,0,0,255,255,255,0,255,255,255,0,255,0,0,0,255,0,0,0,255,255,0,0,255,255,0,0,255,0,255,0,255,0,255,0,255,255,0,0,255,255,0,0,255,0,0,0,255,0,0,0,255,255,255,0,255,255,255,0,255,0,0,0,255,0,0,0,255,255,255,0,255,255,255,0,255,0,0,0,255,0,0,0,255,255,0,0,255,255,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,255,255,0,255,255,255,0,255,255,0,0,255,255,0,0,255,0,255,0,255,0,255,0,255,255,255,0,255,255,255,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,255,255,0,255,255,255,0,255,255,0,0,255,255,0,0,255,0,255,0,255,0,255,0,255,255,255,0,255,255,255,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,255,255,255,255,255,255,255,255,255,0,255,255,255,0,255,0,255,0,255,0,255,0,255,255,255,0,255,255,255,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,255,0,255,0,255,0,255,255,255,0,255,255,255,0,255,255,255,255,255,255,255,255,255,255,255,0,255,255,255,0,255,0,255,0,255,0,255,0,255,255,255,0,255,255,255,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,255,0,255,0,255,0,255,255,255,0,255,255,255,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,255,255,255,255,255,255,255,255,0,255,255,255,0,255,255,255,0,0,255,255,0,0,255,255,0,255,255,255,0,255,255,255,255,0,255,255,255,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,255,255,255,255,255,255,255,255,0,255,255,255,0,255,255,255,0,0,255,255,0,0,255,255,0,255,255,255,0,255,255,255,255,0,255,255,255,0,255,255,0,0,255,255,0,0,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,255,255,255,255,255,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,255,255,255,255,255,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,255,255,0,0,255,255,255,0,255,255,255,0,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,255,255,255,255,255,255,255,255,0,0,255,255,0,0,255,255,255,255,255,255,255,255,255,255,0,0,255,255,0,0,255,255,255,0,255,255,255,0,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,255,255,255,255,255,255,255,255,0,0,255,255,0,0,255,255,255,255,255,255,255,255,255,255,0,255,255,255,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,255,255,255,0,255,255,0,255,255,255,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,255,255,255,0,255,255,0,255,255,255,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,255,255,255,0,255,255,255,0,255,0,255,0,255,0,255,255,255,255,255,255,255,255,255,0,255,0,255,0,255,0,255,255,0,0,255,255,0,0,255,0,0,255,255,0,0,255,255,255,255,0,255,255,255,0,255,0,255,255,255,0,255,255,255,255,255,255,255,255,255,255,255,0,255,0,255,0,255,0,255,255,255,255,255,255,255,255,255,0,255,0,255,0,255,0,255,255,0,0,255,255,0,0,255,0,0,255,255,0,0,255,255,255,255,0,255,255,255,0,255,0,255,255,255,0,255,255,255,255,255,255,255,255,255,255,255]
198
216
  }
199
217
  },
218
+ "lod-frac.sl": {
219
+ "hash": "fd3f2852",
220
+ "source": "// An anchor for a fractional tex2Dlod level: the level runs from 0 at the left\n// edge to 4.5 at the right. A fraction blends the level below and the level\n// above by that fraction, whatever the texture's own filter between levels,\n// and past level 3, the smallest, both are level 3.\ntexture2D t;\nfloat4 main() { return tex2Dlod(t, uv, uv.x * 4.5); }\n",
221
+ "samples": {
222
+ "0": [103,30,184,255,159,45,131,255,197,56,59,255,222,72,33,255,192,139,44,255,153,180,53,255,95,211,61,255,38,209,109,255,48,176,159,255,57,131,194,255,64,42,223,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,103,38,157,255,159,49,121,255,197,57,76,255,222,72,33,255,192,139,44,255,153,180,53,255,95,211,61,255,38,209,109,255,48,176,159,255,57,131,194,255,64,42,223,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,103,48,92,255,159,54,102,255,197,59,96,255,222,72,33,255,192,139,44,255,153,180,53,255,95,211,61,255,38,209,109,255,48,176,159,255,57,131,194,255,64,42,223,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,103,61,112,255,159,62,107,255,197,63,92,255,222,72,33,255,192,139,44,255,153,180,53,255,95,211,61,255,38,209,109,255,48,176,159,255,57,131,194,255,64,42,223,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,103,73,168,255,159,70,125,255,197,67,70,255,222,72,33,255,192,139,44,255,153,180,53,255,95,211,61,255,38,209,109,255,48,176,159,255,57,131,194,255,64,42,223,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,103,88,157,255,159,80,121,255,197,72,76,255,222,72,33,255,192,139,44,255,153,180,53,255,95,211,61,255,38,209,109,255,48,176,159,255,57,131,194,255,64,42,223,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,103,101,92,255,159,90,102,255,197,78,96,255,222,72,33,255,192,139,44,255,153,180,53,255,95,211,61,255,38,209,109,255,48,176,159,255,57,131,194,255,64,42,223,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,103,115,112,255,159,101,107,255,197,85,92,255,222,72,33,255,192,139,44,255,153,180,53,255,95,211,61,255,38,209,109,255,48,176,159,255,57,131,194,255,64,42,223,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,103,129,168,255,159,112,125,255,197,91,70,255,222,72,33,255,192,139,44,255,153,180,53,255,95,211,61,255,38,209,109,255,48,176,159,255,57,131,194,255,64,42,223,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,103,144,157,255,159,124,121,255,197,99,76,255,222,72,33,255,192,139,44,255,153,180,53,255,95,211,61,255,38,209,109,255,48,176,159,255,57,131,194,255,64,42,223,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,103,158,92,255,159,135,102,255,197,106,96,255,222,72,33,255,192,139,44,255,153,180,53,255,95,211,61,255,38,209,109,255,48,176,159,255,57,131,194,255,64,42,223,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,103,173,112,255,159,147,107,255,197,114,92,255,222,72,33,255,192,139,44,255,153,180,53,255,95,211,61,255,38,209,109,255,48,176,159,255,57,131,194,255,64,42,223,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,103,187,168,255,159,159,125,255,197,122,70,255,222,72,33,255,192,139,44,255,153,180,53,255,95,211,61,255,38,209,109,255,48,176,159,255,57,131,194,255,64,42,223,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,103,202,157,255,159,171,121,255,197,130,76,255,222,72,33,255,192,139,44,255,153,180,53,255,95,211,61,255,38,209,109,255,48,176,159,255,57,131,194,255,64,42,223,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,103,216,92,255,159,183,102,255,197,138,96,255,222,72,33,255,192,139,44,255,153,180,53,255,95,211,61,255,38,209,109,255,48,176,159,255,57,131,194,255,64,42,223,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,103,222,39,255,159,187,94,255,197,141,103,255,222,72,33,255,192,139,44,255,153,180,53,255,95,211,61,255,38,209,109,255,48,176,159,255,57,131,194,255,64,42,223,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255],
223
+ "1.25": [103,30,184,255,159,45,131,255,197,56,59,255,222,72,33,255,192,139,44,255,153,180,53,255,95,211,61,255,38,209,109,255,48,176,159,255,57,131,194,255,64,42,223,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,103,38,157,255,159,49,121,255,197,57,76,255,222,72,33,255,192,139,44,255,153,180,53,255,95,211,61,255,38,209,109,255,48,176,159,255,57,131,194,255,64,42,223,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,103,48,92,255,159,54,102,255,197,59,96,255,222,72,33,255,192,139,44,255,153,180,53,255,95,211,61,255,38,209,109,255,48,176,159,255,57,131,194,255,64,42,223,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,103,61,112,255,159,62,107,255,197,63,92,255,222,72,33,255,192,139,44,255,153,180,53,255,95,211,61,255,38,209,109,255,48,176,159,255,57,131,194,255,64,42,223,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,103,73,168,255,159,70,125,255,197,67,70,255,222,72,33,255,192,139,44,255,153,180,53,255,95,211,61,255,38,209,109,255,48,176,159,255,57,131,194,255,64,42,223,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,103,88,157,255,159,80,121,255,197,72,76,255,222,72,33,255,192,139,44,255,153,180,53,255,95,211,61,255,38,209,109,255,48,176,159,255,57,131,194,255,64,42,223,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,103,101,92,255,159,90,102,255,197,78,96,255,222,72,33,255,192,139,44,255,153,180,53,255,95,211,61,255,38,209,109,255,48,176,159,255,57,131,194,255,64,42,223,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,103,115,112,255,159,101,107,255,197,85,92,255,222,72,33,255,192,139,44,255,153,180,53,255,95,211,61,255,38,209,109,255,48,176,159,255,57,131,194,255,64,42,223,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,103,129,168,255,159,112,125,255,197,91,70,255,222,72,33,255,192,139,44,255,153,180,53,255,95,211,61,255,38,209,109,255,48,176,159,255,57,131,194,255,64,42,223,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,103,144,157,255,159,124,121,255,197,99,76,255,222,72,33,255,192,139,44,255,153,180,53,255,95,211,61,255,38,209,109,255,48,176,159,255,57,131,194,255,64,42,223,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,103,158,92,255,159,135,102,255,197,106,96,255,222,72,33,255,192,139,44,255,153,180,53,255,95,211,61,255,38,209,109,255,48,176,159,255,57,131,194,255,64,42,223,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,103,173,112,255,159,147,107,255,197,114,92,255,222,72,33,255,192,139,44,255,153,180,53,255,95,211,61,255,38,209,109,255,48,176,159,255,57,131,194,255,64,42,223,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,103,187,168,255,159,159,125,255,197,122,70,255,222,72,33,255,192,139,44,255,153,180,53,255,95,211,61,255,38,209,109,255,48,176,159,255,57,131,194,255,64,42,223,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,103,202,157,255,159,171,121,255,197,130,76,255,222,72,33,255,192,139,44,255,153,180,53,255,95,211,61,255,38,209,109,255,48,176,159,255,57,131,194,255,64,42,223,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,103,216,92,255,159,183,102,255,197,138,96,255,222,72,33,255,192,139,44,255,153,180,53,255,95,211,61,255,38,209,109,255,48,176,159,255,57,131,194,255,64,42,223,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,103,222,39,255,159,187,94,255,197,141,103,255,222,72,33,255,192,139,44,255,153,180,53,255,95,211,61,255,38,209,109,255,48,176,159,255,57,131,194,255,64,42,223,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255,64,32,224,255]
224
+ }
225
+ },
200
226
  "lod.sl": {
201
227
  "hash": "ac177cc0",
202
228
  "source": "// An anchor for tex2Dlod: four bands, left to right, each reading one mip level\n// of the goldens' texture. Level 0 is the image and levels 1 to 3 are each one\n// solid colour, so a band that read the wrong level shows it.\ntexture2D t;\nfloat4 main() { return tex2Dlod(t, uv, floor(uv.x * 4)); }\n",
@@ -318,6 +344,31 @@
318
344
  "1.25": [118,155,220,255,111,160,209,255,104,162,197,255,100,161,189,255,98,161,186,255,100,161,189,255,103,161,194,255,105,162,199,255,107,161,201,255,106,161,199,255,103,162,195,255,100,161,189,255,98,160,185,255,98,160,186,255,102,161,192,255,108,161,204,255,122,149,229,255,118,155,221,255,114,159,214,255,111,160,209,255,111,160,208,255,112,159,211,255,114,158,215,255,116,157,217,255,115,158,216,255,112,159,211,255,108,161,203,255,103,162,195,255,100,161,189,255,100,161,190,255,105,162,197,255,112,160,211,255,124,146,232,255,121,150,227,255,119,154,223,255,118,154,222,255,119,153,224,255,122,150,228,255,124,147,231,255,124,146,232,255,123,148,229,255,119,154,222,255,113,159,212,255,106,161,200,255,102,161,192,255,101,161,191,255,105,162,198,255,113,159,212,255,122,149,228,255,120,152,225,255,119,153,224,255,120,152,226,255,123,148,230,255,127,141,236,255,129,134,241,255,130,132,242,255,128,137,239,255,123,148,230,255,116,157,218,255,108,161,203,255,101,161,191,255,99,161,187,255,102,161,192,255,110,161,207,255,116,157,217,255,114,158,214,255,115,158,215,255,117,156,220,255,122,150,228,255,127,140,237,255,132,131,244,255,139,132,246,255,131,130,243,255,125,144,234,255,117,156,219,255,107,161,202,255,98,161,186,255,93,158,177,255,95,159,180,255,103,161,194,255,106,162,199,255,104,162,196,255,105,162,198,255,109,161,205,255,116,157,217,255,123,149,229,255,128,137,239,255,133,131,244,255,130,132,242,255,125,144,233,255,116,157,218,255,105,162,198,255,94,159,178,255,86,153,164,255,85,153,163,255,92,158,175,255,93,158,177,255,90,156,171,255,91,157,173,255,97,160,183,255,105,162,199,255,115,158,216,255,123,148,229,255,127,139,237,255,127,139,238,255,123,148,230,255,114,158,214,255,102,161,193,255,89,155,169,255,78,145,150,255,74,141,143,255,79,147,152,255,82,149,157,255,75,143,145,255,75,142,145,255,82,149,157,255,93,158,177,255,105,162,198,255,115,157,216,255,122,150,228,255,124,146,232,255,121,152,226,255,113,159,211,255,100,161,190,255,86,153,164,255,73,139,141,255,71,137,137,255,71,137,137,255,75,142,145,255,71,137,137,255,71,137,137,255,71,137,137,255,81,149,155,255,96,160,181,255,108,161,204,255,117,156,219,255,121,151,226,255,119,154,223,255,112,159,211,255,101,161,191,255,87,154,167,255,73,140,142,255,71,137,137,255,71,137,137,255,77,145,148,255,71,137,137,255,71,137,137,255,71,137,137,255,73,140,141,255,89,156,170,255,103,162,195,255,114,159,213,255,119,154,223,255,119,153,223,255,114,158,215,255,105,162,198,255,93,158,177,255,81,148,155,255,71,138,138,255,71,137,137,255,87,154,166,255,72,139,140,255,71,137,137,255,71,137,137,255,73,140,141,255,88,155,167,255,102,161,192,255,113,159,212,255,119,153,224,255,121,151,227,255,118,155,221,255,111,160,209,255,102,161,192,255,92,157,175,255,84,152,161,255,81,149,156,255,100,161,189,255,87,154,165,255,76,143,146,255,73,140,141,255,79,147,152,255,91,157,173,255,103,162,195,255,114,158,214,255,121,151,227,255,124,146,231,255,122,149,229,255,118,155,220,255,111,160,208,255,103,162,195,255,98,160,186,255,96,160,182,255,113,159,211,255,101,161,190,255,90,157,172,255,86,153,164,255,88,155,168,255,97,160,183,255,107,161,201,255,116,157,218,255,123,148,230,255,126,142,235,255,126,143,235,255,123,149,229,255,118,155,221,255,113,159,212,255,110,161,207,255,109,161,205,255,122,149,229,255,112,160,210,255,102,161,193,255,97,160,184,255,97,160,184,255,103,161,194,255,110,160,208,255,118,155,221,255,124,147,231,255,127,141,237,255,127,140,237,255,125,145,233,255,122,150,228,255,119,154,223,255,117,155,220,255,118,155,221,255,128,138,238,255,119,154,222,255,110,160,207,255,105,162,198,255,104,162,196,255,107,161,201,255,112,159,211,255,118,155,222,255,123,149,229,255,125,145,233,255,125,145,233,255,123,148,230,255,121,151,227,255,120,153,224,255,120,152,225,255,122,149,229,255,128,136,239,255,121,151,226,255,114,159,213,255,108,161,204,255,107,161,202,255,109,161,205,255,113,159,212,255,117,156,219,255,119,153,224,255,120,152,225,255,119,153,223,255,117,155,220,255,116,157,217,255,116,157,217,255,118,155,221,255,122,150,228,255]
319
345
  }
320
346
  },
347
+ "uniforms-64.sl": {
348
+ "hash": "a71ac2c4",
349
+ "exact": true,
350
+ "source": "// An anchor: every one of the 64 uniform slots reaches the program with its\n// default (slot i holds i + 1), so a host that binds fewer draws green where\n// this draws red. Slots past 16 also widen the web frame's uniform block.\n\nuniform float u0 = 1;\nuniform float u1 = 2;\nuniform float u2 = 3;\nuniform float u3 = 4;\nuniform float u4 = 5;\nuniform float u5 = 6;\nuniform float u6 = 7;\nuniform float u7 = 8;\nuniform float u8 = 9;\nuniform float u9 = 10;\nuniform float u10 = 11;\nuniform float u11 = 12;\nuniform float u12 = 13;\nuniform float u13 = 14;\nuniform float u14 = 15;\nuniform float u15 = 16;\nuniform float u16 = 17;\nuniform float u17 = 18;\nuniform float u18 = 19;\nuniform float u19 = 20;\nuniform float u20 = 21;\nuniform float u21 = 22;\nuniform float u22 = 23;\nuniform float u23 = 24;\nuniform float u24 = 25;\nuniform float u25 = 26;\nuniform float u26 = 27;\nuniform float u27 = 28;\nuniform float u28 = 29;\nuniform float u29 = 30;\nuniform float u30 = 31;\nuniform float u31 = 32;\nuniform float u32 = 33;\nuniform float u33 = 34;\nuniform float u34 = 35;\nuniform float u35 = 36;\nuniform float u36 = 37;\nuniform float u37 = 38;\nuniform float u38 = 39;\nuniform float u39 = 40;\nuniform float u40 = 41;\nuniform float u41 = 42;\nuniform float u42 = 43;\nuniform float u43 = 44;\nuniform float u44 = 45;\nuniform float u45 = 46;\nuniform float u46 = 47;\nuniform float u47 = 48;\nuniform float u48 = 49;\nuniform float u49 = 50;\nuniform float u50 = 51;\nuniform float u51 = 52;\nuniform float u52 = 53;\nuniform float u53 = 54;\nuniform float u54 = 55;\nuniform float u55 = 56;\nuniform float u56 = 57;\nuniform float u57 = 58;\nuniform float u58 = 59;\nuniform float u59 = 60;\nuniform float u60 = 61;\nuniform float u61 = 62;\nuniform float u62 = 63;\nuniform float u63 = 64;\nfloat4 main() {\n float off = abs(u0 - 1) + abs(u1 - 2) + abs(u2 - 3) + abs(u3 - 4) + abs(u4 - 5) + abs(u5 - 6)\n + abs(u6 - 7) + abs(u7 - 8) + abs(u8 - 9) + abs(u9 - 10) + abs(u10 - 11) + abs(u11 - 12)\n + abs(u12 - 13) + abs(u13 - 14) + abs(u14 - 15) + abs(u15 - 16) + abs(u16 - 17) + abs(u17 - 18)\n + abs(u18 - 19) + abs(u19 - 20) + abs(u20 - 21) + abs(u21 - 22) + abs(u22 - 23) + abs(u23 - 24)\n + abs(u24 - 25) + abs(u25 - 26) + abs(u26 - 27) + abs(u27 - 28) + abs(u28 - 29) + abs(u29 - 30)\n + abs(u30 - 31) + abs(u31 - 32) + abs(u32 - 33) + abs(u33 - 34) + abs(u34 - 35) + abs(u35 - 36)\n + abs(u36 - 37) + abs(u37 - 38) + abs(u38 - 39) + abs(u39 - 40) + abs(u40 - 41) + abs(u41 - 42)\n + abs(u42 - 43) + abs(u43 - 44) + abs(u44 - 45) + abs(u45 - 46) + abs(u46 - 47) + abs(u47 - 48)\n + abs(u48 - 49) + abs(u49 - 50) + abs(u50 - 51) + abs(u51 - 52) + abs(u52 - 53) + abs(u53 - 54)\n + abs(u54 - 55) + abs(u55 - 56) + abs(u56 - 57) + abs(u57 - 58) + abs(u58 - 59) + abs(u59 - 60)\n + abs(u60 - 61) + abs(u61 - 62) + abs(u62 - 63) + abs(u63 - 64);\n return float4(1, off > 0.5 ? 1 : 0, 0, 1);\n}\n",
351
+ "samples": {
352
+ "0": [255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255],
353
+ "1.25": [255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255,255,0,0,255]
354
+ }
355
+ },
356
+ "wrap-mirror.sl": {
357
+ "hash": "31800abb",
358
+ "source": "// An anchor for [Wrap(Mirror)]: the goldens' texture over three tiles each way,\n// every other tile flipped, so the middle tile is the image as it is and the\n// tiles either side are its reflections.\n[Wrap(Mirror)] texture2D t;\nfloat4 main() { return tex2D(t, uv * 3 - 1); }\n",
359
+ "samples": {
360
+ "0": [227,227,150,255,178,227,155,255,131,227,148,255,83,227,142,255,37,227,150,255,16,227,141,255,64,227,150,255,110,227,155,255,159,227,148,255,206,227,142,255,240,227,156,255,210,227,142,255,163,227,150,255,114,227,155,255,68,227,148,255,19,227,142,255,227,178,155,255,178,178,190,255,131,178,142,255,83,178,83,255,37,178,155,255,16,178,67,255,64,178,155,255,110,178,190,255,159,178,142,255,206,178,83,255,240,178,195,255,210,178,83,255,163,178,155,255,114,178,190,255,68,178,142,255,19,178,83,255,227,131,148,255,178,131,142,255,131,131,150,255,83,131,155,255,37,131,148,255,16,131,156,255,64,131,148,255,110,131,142,255,159,131,150,255,206,131,155,255,240,131,141,255,210,131,155,255,163,131,148,255,114,131,142,255,68,131,150,255,19,131,155,255,227,83,142,255,178,83,83,255,131,83,155,255,83,83,190,255,37,83,142,255,16,83,195,255,64,83,142,255,110,83,83,255,159,83,155,255,206,83,190,255,240,83,67,255,210,83,190,255,163,83,142,255,114,83,83,255,68,83,155,255,19,83,190,255,227,37,150,255,178,37,155,255,131,37,148,255,83,37,142,255,37,37,150,255,16,37,141,255,64,37,150,255,110,37,155,255,159,37,148,255,206,37,142,255,240,37,156,255,210,37,142,255,163,37,150,255,114,37,155,255,68,37,148,255,19,37,142,255,227,16,141,255,178,16,67,255,131,16,156,255,83,16,195,255,37,16,141,255,16,16,200,255,64,16,141,255,110,16,67,255,159,16,156,255,206,16,195,255,240,16,40,255,210,16,195,255,163,16,141,255,114,16,67,255,68,16,156,255,19,16,195,255,227,64,150,255,178,64,155,255,131,64,148,255,83,64,142,255,37,64,150,255,16,64,141,255,64,64,150,255,110,64,155,255,159,64,148,255,206,64,142,255,240,64,156,255,210,64,142,255,163,64,150,255,114,64,155,255,68,64,148,255,19,64,142,255,227,110,155,255,178,110,190,255,131,110,142,255,83,110,83,255,37,110,155,255,16,110,67,255,64,110,155,255,110,110,190,255,159,110,142,255,206,110,83,255,240,110,195,255,210,110,83,255,163,110,155,255,114,110,190,255,68,110,142,255,19,110,83,255,227,159,148,255,178,159,142,255,131,159,150,255,83,159,155,255,37,159,148,255,16,159,156,255,64,159,148,255,110,159,142,255,159,159,150,255,206,159,155,255,240,159,141,255,210,159,155,255,163,159,148,255,114,159,142,255,68,159,150,255,19,159,155,255,227,206,142,255,178,206,83,255,131,206,155,255,83,206,190,255,37,206,142,255,16,206,195,255,64,206,142,255,110,206,83,255,159,206,155,255,206,206,190,255,240,206,67,255,210,206,190,255,163,206,142,255,114,206,83,255,68,206,155,255,19,206,190,255,227,240,156,255,178,240,195,255,131,240,141,255,83,240,67,255,37,240,156,255,16,240,40,255,64,240,156,255,110,240,195,255,159,240,141,255,206,240,67,255,240,240,200,255,210,240,67,255,163,240,156,255,114,240,195,255,68,240,141,255,19,240,67,255,227,210,142,255,178,210,83,255,131,210,155,255,83,210,190,255,37,210,142,255,16,210,195,255,64,210,142,255,110,210,83,255,159,210,155,255,206,210,190,255,240,210,67,255,210,210,190,255,163,210,142,255,114,210,83,255,68,210,155,255,19,210,190,255,227,163,150,255,178,163,155,255,131,163,148,255,83,163,142,255,37,163,150,255,16,163,141,255,64,163,150,255,110,163,155,255,159,163,148,255,206,163,142,255,240,163,156,255,210,163,142,255,163,163,150,255,114,163,155,255,68,163,148,255,19,163,142,255,227,114,155,255,178,114,190,255,131,114,142,255,83,114,83,255,37,114,155,255,16,114,67,255,64,114,155,255,110,114,190,255,159,114,142,255,206,114,83,255,240,114,195,255,210,114,83,255,163,114,155,255,114,114,190,255,68,114,142,255,19,114,83,255,227,68,148,255,178,68,142,255,131,68,150,255,83,68,155,255,37,68,148,255,16,68,156,255,64,68,148,255,110,68,142,255,159,68,150,255,206,68,155,255,240,68,141,255,210,68,155,255,163,68,148,255,114,68,142,255,68,68,150,255,19,68,155,255,227,19,142,255,178,19,83,255,131,19,155,255,83,19,190,255,37,19,142,255,16,19,195,255,64,19,142,255,110,19,83,255,159,19,155,255,206,19,190,255,240,19,67,255,210,19,190,255,163,19,142,255,114,19,83,255,68,19,155,255,19,19,190,255],
361
+ "1.25": [227,227,150,255,178,227,155,255,131,227,148,255,83,227,142,255,37,227,150,255,16,227,141,255,64,227,150,255,110,227,155,255,159,227,148,255,206,227,142,255,240,227,156,255,210,227,142,255,163,227,150,255,114,227,155,255,68,227,148,255,19,227,142,255,227,178,155,255,178,178,190,255,131,178,142,255,83,178,83,255,37,178,155,255,16,178,67,255,64,178,155,255,110,178,190,255,159,178,142,255,206,178,83,255,240,178,195,255,210,178,83,255,163,178,155,255,114,178,190,255,68,178,142,255,19,178,83,255,227,131,148,255,178,131,142,255,131,131,150,255,83,131,155,255,37,131,148,255,16,131,156,255,64,131,148,255,110,131,142,255,159,131,150,255,206,131,155,255,240,131,141,255,210,131,155,255,163,131,148,255,114,131,142,255,68,131,150,255,19,131,155,255,227,83,142,255,178,83,83,255,131,83,155,255,83,83,190,255,37,83,142,255,16,83,195,255,64,83,142,255,110,83,83,255,159,83,155,255,206,83,190,255,240,83,67,255,210,83,190,255,163,83,142,255,114,83,83,255,68,83,155,255,19,83,190,255,227,37,150,255,178,37,155,255,131,37,148,255,83,37,142,255,37,37,150,255,16,37,141,255,64,37,150,255,110,37,155,255,159,37,148,255,206,37,142,255,240,37,156,255,210,37,142,255,163,37,150,255,114,37,155,255,68,37,148,255,19,37,142,255,227,16,141,255,178,16,67,255,131,16,156,255,83,16,195,255,37,16,141,255,16,16,200,255,64,16,141,255,110,16,67,255,159,16,156,255,206,16,195,255,240,16,40,255,210,16,195,255,163,16,141,255,114,16,67,255,68,16,156,255,19,16,195,255,227,64,150,255,178,64,155,255,131,64,148,255,83,64,142,255,37,64,150,255,16,64,141,255,64,64,150,255,110,64,155,255,159,64,148,255,206,64,142,255,240,64,156,255,210,64,142,255,163,64,150,255,114,64,155,255,68,64,148,255,19,64,142,255,227,110,155,255,178,110,190,255,131,110,142,255,83,110,83,255,37,110,155,255,16,110,67,255,64,110,155,255,110,110,190,255,159,110,142,255,206,110,83,255,240,110,195,255,210,110,83,255,163,110,155,255,114,110,190,255,68,110,142,255,19,110,83,255,227,159,148,255,178,159,142,255,131,159,150,255,83,159,155,255,37,159,148,255,16,159,156,255,64,159,148,255,110,159,142,255,159,159,150,255,206,159,155,255,240,159,141,255,210,159,155,255,163,159,148,255,114,159,142,255,68,159,150,255,19,159,155,255,227,206,142,255,178,206,83,255,131,206,155,255,83,206,190,255,37,206,142,255,16,206,195,255,64,206,142,255,110,206,83,255,159,206,155,255,206,206,190,255,240,206,67,255,210,206,190,255,163,206,142,255,114,206,83,255,68,206,155,255,19,206,190,255,227,240,156,255,178,240,195,255,131,240,141,255,83,240,67,255,37,240,156,255,16,240,40,255,64,240,156,255,110,240,195,255,159,240,141,255,206,240,67,255,240,240,200,255,210,240,67,255,163,240,156,255,114,240,195,255,68,240,141,255,19,240,67,255,227,210,142,255,178,210,83,255,131,210,155,255,83,210,190,255,37,210,142,255,16,210,195,255,64,210,142,255,110,210,83,255,159,210,155,255,206,210,190,255,240,210,67,255,210,210,190,255,163,210,142,255,114,210,83,255,68,210,155,255,19,210,190,255,227,163,150,255,178,163,155,255,131,163,148,255,83,163,142,255,37,163,150,255,16,163,141,255,64,163,150,255,110,163,155,255,159,163,148,255,206,163,142,255,240,163,156,255,210,163,142,255,163,163,150,255,114,163,155,255,68,163,148,255,19,163,142,255,227,114,155,255,178,114,190,255,131,114,142,255,83,114,83,255,37,114,155,255,16,114,67,255,64,114,155,255,110,114,190,255,159,114,142,255,206,114,83,255,240,114,195,255,210,114,83,255,163,114,155,255,114,114,190,255,68,114,142,255,19,114,83,255,227,68,148,255,178,68,142,255,131,68,150,255,83,68,155,255,37,68,148,255,16,68,156,255,64,68,148,255,110,68,142,255,159,68,150,255,206,68,155,255,240,68,141,255,210,68,155,255,163,68,148,255,114,68,142,255,68,68,150,255,19,68,155,255,227,19,142,255,178,19,83,255,131,19,155,255,83,19,190,255,37,19,142,255,16,19,195,255,64,19,142,255,110,19,83,255,159,19,155,255,206,19,190,255,240,19,67,255,210,19,190,255,163,19,142,255,114,19,83,255,68,19,155,255,19,19,190,255]
362
+ }
363
+ },
364
+ "wrap-repeat.sl": {
365
+ "hash": "42fd2cf7",
366
+ "source": "// An anchor for [Wrap(Repeat)]: the goldens' texture tiled three times each\n// way, which the host binds clamped. A texture held at its edge shows as\n// stripes, and a seam at a tile edge as a hard line where the filter should\n// have blended the last column into the first.\n[Wrap(Repeat)] texture2D t;\nfloat4 main() { return tex2D(t, uv * 3 - 1); }\n",
367
+ "samples": {
368
+ "0": [34,34,150,255,78,34,155,255,127,34,148,255,174,34,142,255,223,34,150,255,69,34,155,255,64,34,148,255,110,34,142,255,159,34,150,255,206,34,155,255,186,34,148,255,47,34,142,255,96,34,150,255,142,34,155,255,191,34,148,255,238,34,142,255,34,78,155,255,78,78,190,255,127,78,142,255,174,78,83,255,223,78,155,255,69,78,190,255,64,78,142,255,110,78,83,255,159,78,155,255,206,78,190,255,186,78,142,255,47,78,83,255,96,78,155,255,142,78,190,255,191,78,142,255,238,78,83,255,34,127,148,255,78,127,142,255,127,127,150,255,174,127,155,255,223,127,148,255,69,127,142,255,64,127,150,255,110,127,155,255,159,127,148,255,206,127,142,255,186,127,150,255,47,127,155,255,96,127,148,255,142,127,142,255,191,127,150,255,238,127,155,255,34,174,142,255,78,174,83,255,127,174,155,255,174,174,190,255,223,174,142,255,69,174,83,255,64,174,155,255,110,174,190,255,159,174,142,255,206,174,83,255,186,174,155,255,47,174,190,255,96,174,142,255,142,174,83,255,191,174,155,255,238,174,190,255,34,223,150,255,78,223,155,255,127,223,148,255,174,223,142,255,223,223,150,255,69,223,155,255,64,223,148,255,110,223,142,255,159,223,150,255,206,223,155,255,186,223,148,255,47,223,142,255,96,223,150,255,142,223,155,255,191,223,148,255,238,223,142,255,34,69,155,255,78,69,190,255,127,69,142,255,174,69,83,255,223,69,155,255,69,69,190,255,64,69,142,255,110,69,83,255,159,69,155,255,206,69,190,255,186,69,142,255,47,69,83,255,96,69,155,255,142,69,190,255,191,69,142,255,238,69,83,255,34,64,148,255,78,64,142,255,127,64,150,255,174,64,155,255,223,64,148,255,69,64,142,255,64,64,150,255,110,64,155,255,159,64,148,255,206,64,142,255,186,64,150,255,47,64,155,255,96,64,148,255,142,64,142,255,191,64,150,255,238,64,155,255,34,110,142,255,78,110,83,255,127,110,155,255,174,110,190,255,223,110,142,255,69,110,83,255,64,110,155,255,110,110,190,255,159,110,142,255,206,110,83,255,186,110,155,255,47,110,190,255,96,110,142,255,142,110,83,255,191,110,155,255,238,110,190,255,34,159,150,255,78,159,155,255,127,159,148,255,174,159,142,255,223,159,150,255,69,159,155,255,64,159,148,255,110,159,142,255,159,159,150,255,206,159,155,255,186,159,148,255,47,159,142,255,96,159,150,255,142,159,155,255,191,159,148,255,238,159,142,255,34,206,155,255,78,206,190,255,127,206,142,255,174,206,83,255,223,206,155,255,69,206,190,255,64,206,142,255,110,206,83,255,159,206,155,255,206,206,190,255,186,206,142,255,47,206,83,255,96,206,155,255,142,206,190,255,191,206,142,255,238,206,83,255,34,186,148,255,78,186,142,255,127,186,150,255,174,186,155,255,223,186,148,255,69,186,142,255,64,186,150,255,110,186,155,255,159,186,148,255,206,186,142,255,186,186,150,255,47,186,155,255,96,186,148,255,142,186,142,255,191,186,150,255,238,186,155,255,34,47,142,255,78,47,83,255,127,47,155,255,174,47,190,255,223,47,142,255,69,47,83,255,64,47,155,255,110,47,190,255,159,47,142,255,206,47,83,255,186,47,155,255,47,47,190,255,96,47,142,255,142,47,83,255,191,47,155,255,238,47,190,255,34,96,150,255,78,96,155,255,127,96,148,255,174,96,142,255,223,96,150,255,69,96,155,255,64,96,148,255,110,96,142,255,159,96,150,255,206,96,155,255,186,96,148,255,47,96,142,255,96,96,150,255,142,96,155,255,191,96,148,255,238,96,142,255,34,142,155,255,78,142,190,255,127,142,142,255,174,142,83,255,223,142,155,255,69,142,190,255,64,142,142,255,110,142,83,255,159,142,155,255,206,142,190,255,186,142,142,255,47,142,83,255,96,142,155,255,142,142,190,255,191,142,142,255,238,142,83,255,34,191,148,255,78,191,142,255,127,191,150,255,174,191,155,255,223,191,148,255,69,191,142,255,64,191,150,255,110,191,155,255,159,191,148,255,206,191,142,255,186,191,150,255,47,191,155,255,96,191,148,255,142,191,142,255,191,191,150,255,238,191,155,255,34,238,142,255,78,238,83,255,127,238,155,255,174,238,190,255,223,238,142,255,69,238,83,255,64,238,155,255,110,238,190,255,159,238,142,255,206,238,83,255,186,238,155,255,47,238,190,255,96,238,142,255,142,238,83,255,191,238,155,255,238,238,190,255],
369
+ "1.25": [34,34,150,255,78,34,155,255,127,34,148,255,174,34,142,255,223,34,150,255,69,34,155,255,64,34,148,255,110,34,142,255,159,34,150,255,206,34,155,255,186,34,148,255,47,34,142,255,96,34,150,255,142,34,155,255,191,34,148,255,238,34,142,255,34,78,155,255,78,78,190,255,127,78,142,255,174,78,83,255,223,78,155,255,69,78,190,255,64,78,142,255,110,78,83,255,159,78,155,255,206,78,190,255,186,78,142,255,47,78,83,255,96,78,155,255,142,78,190,255,191,78,142,255,238,78,83,255,34,127,148,255,78,127,142,255,127,127,150,255,174,127,155,255,223,127,148,255,69,127,142,255,64,127,150,255,110,127,155,255,159,127,148,255,206,127,142,255,186,127,150,255,47,127,155,255,96,127,148,255,142,127,142,255,191,127,150,255,238,127,155,255,34,174,142,255,78,174,83,255,127,174,155,255,174,174,190,255,223,174,142,255,69,174,83,255,64,174,155,255,110,174,190,255,159,174,142,255,206,174,83,255,186,174,155,255,47,174,190,255,96,174,142,255,142,174,83,255,191,174,155,255,238,174,190,255,34,223,150,255,78,223,155,255,127,223,148,255,174,223,142,255,223,223,150,255,69,223,155,255,64,223,148,255,110,223,142,255,159,223,150,255,206,223,155,255,186,223,148,255,47,223,142,255,96,223,150,255,142,223,155,255,191,223,148,255,238,223,142,255,34,69,155,255,78,69,190,255,127,69,142,255,174,69,83,255,223,69,155,255,69,69,190,255,64,69,142,255,110,69,83,255,159,69,155,255,206,69,190,255,186,69,142,255,47,69,83,255,96,69,155,255,142,69,190,255,191,69,142,255,238,69,83,255,34,64,148,255,78,64,142,255,127,64,150,255,174,64,155,255,223,64,148,255,69,64,142,255,64,64,150,255,110,64,155,255,159,64,148,255,206,64,142,255,186,64,150,255,47,64,155,255,96,64,148,255,142,64,142,255,191,64,150,255,238,64,155,255,34,110,142,255,78,110,83,255,127,110,155,255,174,110,190,255,223,110,142,255,69,110,83,255,64,110,155,255,110,110,190,255,159,110,142,255,206,110,83,255,186,110,155,255,47,110,190,255,96,110,142,255,142,110,83,255,191,110,155,255,238,110,190,255,34,159,150,255,78,159,155,255,127,159,148,255,174,159,142,255,223,159,150,255,69,159,155,255,64,159,148,255,110,159,142,255,159,159,150,255,206,159,155,255,186,159,148,255,47,159,142,255,96,159,150,255,142,159,155,255,191,159,148,255,238,159,142,255,34,206,155,255,78,206,190,255,127,206,142,255,174,206,83,255,223,206,155,255,69,206,190,255,64,206,142,255,110,206,83,255,159,206,155,255,206,206,190,255,186,206,142,255,47,206,83,255,96,206,155,255,142,206,190,255,191,206,142,255,238,206,83,255,34,186,148,255,78,186,142,255,127,186,150,255,174,186,155,255,223,186,148,255,69,186,142,255,64,186,150,255,110,186,155,255,159,186,148,255,206,186,142,255,186,186,150,255,47,186,155,255,96,186,148,255,142,186,142,255,191,186,150,255,238,186,155,255,34,47,142,255,78,47,83,255,127,47,155,255,174,47,190,255,223,47,142,255,69,47,83,255,64,47,155,255,110,47,190,255,159,47,142,255,206,47,83,255,186,47,155,255,47,47,190,255,96,47,142,255,142,47,83,255,191,47,155,255,238,47,190,255,34,96,150,255,78,96,155,255,127,96,148,255,174,96,142,255,223,96,150,255,69,96,155,255,64,96,148,255,110,96,142,255,159,96,150,255,206,96,155,255,186,96,148,255,47,96,142,255,96,96,150,255,142,96,155,255,191,96,148,255,238,96,142,255,34,142,155,255,78,142,190,255,127,142,142,255,174,142,83,255,223,142,155,255,69,142,190,255,64,142,142,255,110,142,83,255,159,142,155,255,206,142,190,255,186,142,142,255,47,142,83,255,96,142,155,255,142,142,190,255,191,142,142,255,238,142,83,255,34,191,148,255,78,191,142,255,127,191,150,255,174,191,155,255,223,191,148,255,69,191,142,255,64,191,150,255,110,191,155,255,159,191,148,255,206,191,142,255,186,191,150,255,47,191,155,255,96,191,148,255,142,191,142,255,191,191,150,255,238,191,155,255,34,238,142,255,78,238,83,255,127,238,155,255,174,238,190,255,223,238,142,255,69,238,83,255,64,238,155,255,110,238,190,255,159,238,142,255,206,238,83,255,186,238,155,255,47,238,190,255,96,238,142,255,142,238,83,255,191,238,155,255,238,238,190,255]
370
+ }
371
+ },
321
372
  "sdf-circle.sl": {
322
373
  "hash": "0b0033fc",
323
374
  "source": "float4 main() {\n float2 p = (uv - 0.5) * 1.2;\n float d = sdf.circle(p, 0.35);\n return float4(0.5 + 0.5 * cos(d * 40.0), 0.5 + 0.5 * sin(d * 23.0), saturate(0.5 - d * 2.0), 1);\n}",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "onejs-sl",
3
- "version": "0.7.0",
3
+ "version": "0.9.0",
4
4
  "description": "The OneJS shader language: a small typed language for per pixel programs, compiled to a portable IR and emitted as HLSL, WGSL or GLSL ES",
5
5
  "main": "src/index.ts",
6
6
  "types": "src/index.ts",