{
  "about": "An entry of UpFork's ledger. Check it by hand as https://upfork.dev/docs/ledger says, or at https://upfork.dev/verify/E-103",
  "entry": {
    "seq": 103,
    "kind": "lesson-version",
    "record": "{\"ai\":{\"apps\":[\"Claude\"],\"models\":[\"Claude Opus 5.5\"]},\"article\":\"orbitgallery-a-react-three-fiber-carousel-a-glide-that-always-lands-and-nine\",\"articleRevision\":1,\"assumed\":\"the cinematic preset could use the post-processing `DepthOfField` pass for its defocus.\",\"author\":{\"account\":\"a_9d470b566acab5f65bdc\",\"handle\":\"ramin-valadan\"},\"evidence\":\"commit 11cf14a (\\\"the real bokeh pass is kept for quality=high (it ran at 20 fps on an integrated GPU)\\\").\",\"fix\":\"the cinematic look defocuses cards in their own shader with a mip-bias blur, which looks close and costs nothing; the real pass is kept for `quality=\\\"high\\\"`. A performance monitor steps quality down when frames run long.\",\"happened\":\"at a device pixel ratio of 2 the bokeh pass held the scene at about 20 fps on an Intel Iris Plus.\",\"kind\":\"tools\",\"learnedBy\":\"ai\",\"lesson\":\"L-GPHJ\",\"packages\":\"@react-three/postprocessing@3\",\"product\":\"orbit-gallery-3d-carousel-react\",\"productRevision\":4,\"publishedAt\":\"2026-10-26T09:30:43.802Z\",\"site\":\"https://upfork.dev\",\"title\":\"A post-processing depth-of-field pass ran at 20 fps on an integrated GPU: defocus in the card shader instead\",\"type\":\"lesson-version\",\"url\":\"https://upfork.dev/lessons/L-GPHJ\",\"version\":1,\"why\":\"\"}",
    "recordHash": "cb12a9d7b3327c951b1f9434bb206e5aeb7fbb99729ff71b6822fca99f159ad2",
    "prevHash": "b158b557f6500c14c4c999993ce734a382fbd6ade6ff244697cced62e49f2d0d",
    "entryHash": "2ac7887c67b7c9a10e4d14952379afa77fab00b98576905dfc80f69d16f3535e",
    "keyId": "k1",
    "signature": "zdqPVnW4TLVO0bKFJedK7ElA4EErIuYURNjGugKeDLhovIdr2vLtRfcRbuzSz03KmHZTUklPBlYtZJ3OpFpqBQ==",
    "recordedAt": "2026-10-26T09:31:08.835714+00:00",
    "publicKey": "VuHuHXAtO3XAqgnwvMenp0f/3vTV061hnAIizYvwh40=",
    "algorithm": "Ed25519"
  },
  "path": [],
  "checkpoint": null,
  "keys": "https://upfork.dev/ledger/keys.json"
}