Skip to content

Add a paper-look reading mode (paper effect)#150

Closed
Wiredframe wants to merge 1 commit into
MaddTheSane:arcfrom
Wiredframe:paper-effect
Closed

Add a paper-look reading mode (paper effect)#150
Wiredframe wants to merge 1 commit into
MaddTheSane:arcfrom
Wiredframe:paper-effect

Conversation

@Wiredframe

Copy link
Copy Markdown

Renders comic pages to look like ink on paper instead of a backlit screen, toggled from View > Paper Effect (off by default).

  • SCPaperFilter: a non-destructive Core Image pipeline applied at draw time in TSSTPageView (originals untouched, results cached, animated images skipped). A warm-cream tonal remap lifts pure black to a dark warm grey and pulls white to a cream stock.
  • PaperKernels.metal (paperTexture CIKernel): an even, isotropic paper grain applied two ways at once — a multiply "body" on the light stock plus a screen "show-through" so the paper peeks through dense ink. The .metal is compiled with -fcikernel and linked with -cikernel (MTLLINKER_FLAGS); SCPaperFilter falls back to a pure Core Image approximation if the kernel can not be loaded.
  • SCPaperSettingsController: a floating panel (View > Paper Effect Settings…) with live sliders (show-through, grain, warmth, black lift) and Cream / Newsprint / Manga / E-Ink presets, backed by NSUserDefaults.
Bildschirmfoto 2026-07-06 um 13 55 26 Bildschirmfoto 2026-07-06 um 13 55 19 Bildschirmfoto 2026-07-06 um 13 55 39

Renders comic pages to look like ink on paper instead of a backlit
screen, toggled from View > Paper Effect (off by default).

- SCPaperFilter: a non-destructive Core Image pipeline applied at draw
  time in TSSTPageView (originals untouched, results cached, animated
  images skipped). A warm-cream tonal remap lifts pure black to a dark
  warm grey and pulls white to a cream stock.
- PaperKernels.metal (paperTexture CIKernel): an even, isotropic paper
  grain applied two ways at once — a multiply "body" on the light stock
  plus a screen "show-through" so the paper peeks through dense ink. The
  .metal is compiled with -fcikernel and linked with -cikernel
  (MTLLINKER_FLAGS); SCPaperFilter falls back to a pure Core Image
  approximation if the kernel can not be loaded.
- SCPaperSettingsController: a floating panel (View > Paper Effect
  Settings…) with live sliders (show-through, grain, warmth, black lift)
  and Cream / Newsprint / Manga / E-Ink presets, backed by NSUserDefaults.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Comment thread Classes/Session/SCPaperSettingsController.swift
@Wiredframe Wiredframe closed this Jul 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants