{
  "schemaVersion": 1,
  "contractId": "vgpu-examples/v1",
  "revision": "69160a127bc8c2b54c5963763469d55909a349857129d91b3bc76c10839222a9",
  "id": "adaptive-quality",
  "title": "Adaptive Quality",
  "description": "Start on a High pipeline and downgrade once to a cheaper Low pipeline when the GPU tier, battery level, or presented FPS say so. The tier swap is prepared off-screen and every signal is advisory.",
  "tags": [
    "performance",
    "adaptive-quality",
    "bloom",
    "post-processing",
    "raymarching",
    "volumetric",
    "animation",
    "shader"
  ],
  "capabilities": [
    "webgpu",
    "fragment-shader",
    "render-targets",
    "multi-pass",
    "hdr",
    "adaptive-quality",
    "controls",
    "responsive-canvas",
    "continuous-rendering"
  ],
  "aggregateSha256": "dea0267b8a5c39bb2a9264acee1875a8c0ed2c739ec7cee7265bfe4c9fa82886",
  "files": [
    {
      "path": "index.tsx",
      "contentType": "text/typescript",
      "size": 2702,
      "sha256": "0b091bde70c23ae6ed4b4591fa31c72fee20f58388ab8fcce3a3aac2bd2ece8d",
      "url": "https://vgpu.sh/api/examples/v1/revisions/69160a127bc8c2b54c5963763469d55909a349857129d91b3bc76c10839222a9/examples/adaptive-quality/files/index.tsx.raw"
    },
    {
      "path": "renderer.ts",
      "contentType": "text/typescript",
      "size": 7927,
      "sha256": "2a22eb30b11778681ae1920e3b5cce0ffa51ba31489a993aa14e400890757aea",
      "url": "https://vgpu.sh/api/examples/v1/revisions/69160a127bc8c2b54c5963763469d55909a349857129d91b3bc76c10839222a9/examples/adaptive-quality/files/renderer.ts.raw"
    },
    {
      "path": "quality.ts",
      "contentType": "text/typescript",
      "size": 1264,
      "sha256": "4ac72db0300552f7a665856f781b31506a035efd5f9304892a6daa4b1b2feb89",
      "url": "https://vgpu.sh/api/examples/v1/revisions/69160a127bc8c2b54c5963763469d55909a349857129d91b3bc76c10839222a9/examples/adaptive-quality/files/quality.ts.raw"
    },
    {
      "path": "quality-controller.ts",
      "contentType": "text/typescript",
      "size": 5116,
      "sha256": "1c485489ec00c7340a977f35d8ba2ec0517bf95c02480f803f9ab740b373f527",
      "url": "https://vgpu.sh/api/examples/v1/revisions/69160a127bc8c2b54c5963763469d55909a349857129d91b3bc76c10839222a9/examples/adaptive-quality/files/quality-controller.ts.raw"
    },
    {
      "path": "quality-signals.ts",
      "contentType": "text/typescript",
      "size": 6745,
      "sha256": "8babdf47c2dff2fc0d6a9f1fd133411f6cc4763e9b8ac3e14064a226a26c5d15",
      "url": "https://vgpu.sh/api/examples/v1/revisions/69160a127bc8c2b54c5963763469d55909a349857129d91b3bc76c10839222a9/examples/adaptive-quality/files/quality-signals.ts.raw"
    },
    {
      "path": "frame-health.ts",
      "contentType": "text/typescript",
      "size": 5989,
      "sha256": "b667e976fdb42322da6afc135cbfc39995c89ea74127a2f010520df052899949",
      "url": "https://vgpu.sh/api/examples/v1/revisions/69160a127bc8c2b54c5963763469d55909a349857129d91b3bc76c10839222a9/examples/adaptive-quality/files/frame-health.ts.raw"
    },
    {
      "path": "scene.ts",
      "contentType": "text/typescript",
      "size": 4559,
      "sha256": "66024539e354f1d78475998d27fc31327c4a17415a4a08e0158e1be7e08d222d",
      "url": "https://vgpu.sh/api/examples/v1/revisions/69160a127bc8c2b54c5963763469d55909a349857129d91b3bc76c10839222a9/examples/adaptive-quality/files/scene.ts.raw"
    },
    {
      "path": "field.wgsl",
      "contentType": "text/wgsl",
      "size": 3351,
      "sha256": "268eb2b9938e56742da24b359ac004fc4f9ebf321f67d3fdacbb12e5d84159f1",
      "url": "https://vgpu.sh/api/examples/v1/revisions/69160a127bc8c2b54c5963763469d55909a349857129d91b3bc76c10839222a9/examples/adaptive-quality/files/field.wgsl.raw"
    },
    {
      "path": "bloom-extract.wgsl",
      "contentType": "text/wgsl",
      "size": 638,
      "sha256": "250258dac15a8245fc38f55b3eaadf79fb4a00427bda47ccd96ae179d03405ee",
      "url": "https://vgpu.sh/api/examples/v1/revisions/69160a127bc8c2b54c5963763469d55909a349857129d91b3bc76c10839222a9/examples/adaptive-quality/files/bloom-extract.wgsl.raw"
    },
    {
      "path": "bloom-blur.wgsl",
      "contentType": "text/wgsl",
      "size": 810,
      "sha256": "692c87630868d55e9a32d1a1f415fb34b76147fe058878fc7bf082f298a172fd",
      "url": "https://vgpu.sh/api/examples/v1/revisions/69160a127bc8c2b54c5963763469d55909a349857129d91b3bc76c10839222a9/examples/adaptive-quality/files/bloom-blur.wgsl.raw"
    },
    {
      "path": "composite.wgsl",
      "contentType": "text/wgsl",
      "size": 799,
      "sha256": "a1b03652099c561b96cdf805eeddd62686e4f07736ffb06ad80c08b02d464b3c",
      "url": "https://vgpu.sh/api/examples/v1/revisions/69160a127bc8c2b54c5963763469d55909a349857129d91b3bc76c10839222a9/examples/adaptive-quality/files/composite.wgsl.raw"
    }
  ]
}
