A downloadable asset pack

Download NowName your own price

Make a scene look like an old film, a home recording or a failing signal. Film grain, projector flicker, scanlines, static and more, as full-screen transparent loops you lay over your scene.

Contains flashing. TV static changes most of its pixels 12.5 times a second, the block glitch flashes coloured blocks for a frame at a time, and the projector flicker pulses the whole screen. The README gives measured numbers for every file and ways to tone it down.

What it is

Eight full-screen screen textures with no visible seam: film grain, scratches and dust, projector flicker, a breathing vignette, a tape tracking band, CRT scanlines, TV static and a block glitch. Each comes in three strengths - light, normal, heavy - so there are 24 loops, all drawn at 1280 x 720 with a transparent background.

Every loop comes in four formats, so it drops into the tool you already use:

  • Ren'Py - side-mask movies plus a ready-to-paste screen_texture.rpy. Ren'Py's documentation says its movie player does not support alpha inside a video; side-mask movies are the format it does support. The definitions stretch each loop to your project's screen size, so it is just show tex_grain normal.
  • Transparent WebM (VP9 with alpha) - for OBS and other streaming software and for web pages.
  • PNG frames - one transparent PNG per frame, for Godot, Unity, GameMaker, any frame list, and video editors.
  • APNG - the original masters, for browsers and browser-based TTRPG tables.

When you would use it

  • A flashback in your visual novel: grain plus a breathing vignette, without editing a single background
  • Found footage and horror: scanlines and static over a security-camera shot, a feed that cuts out
  • Streaming: an old-film look for a story segment, a glitch for a technical-difficulties screen
  • TTRPG sessions on a shared screen: a recording the players find, a transmission breaking up
  • Video: an intro, a music video, a "home movie" title card

What it does

  • No visible seam. Periodic textures (flicker, vignette, tracking band, scanlines) are computed on a closed loop; random ones (grain, dust, static, blocks) are a ring of independently drawn frames. For every file and every format, the jump at the loop point is no more than 1.1 times the largest change between two frames inside the loop.
  • Three strengths. Swap light / normal / heavy instead of fiddling with opacity.
  • Measured brightness changes, including the ones averages hide. We capped and measured how much each loop changes from one frame to the next. Averaged over each sixteenth of the screen, one frame never changes by more than 3.7% of full brightness - but that is a coarse average: within a small area the block glitch changes by up to 41.0%, and static flips most of its pixels every frame. The README lists all three measures for every file.
  • Ren'Py in three steps. Copy one folder and one file into game/, then show tex_vignette light. Each texture has its own tag, so they layer, and shown images sit below the dialogue window.
  • Layers with Loop Atmosphere Overlays. Same size, same three strengths, same naming: rain under film grain for a rainy flashback, fog under static for a lost signal.
  • Commercial use, no credit needed. Ship it in a paid game, earn from a stream. Just do not redistribute the files (LICENSE.txt has worked examples).
  • Film grain — Loop: 0.64 s · Frames: 8 at 12.5 fps
  • Scratches and dust — Loop: 1.92 s · Frames: 24 at 12.5 fps
  • Projector flicker — Loop: 3.84 s · Frames: 48 at 12.5 fps
  • Breathing vignette — Loop: 4.00 s · Frames: 16 at 4 fps
  • Tape tracking band — Loop: 3.20 s · Frames: 40 at 12.5 fps
  • CRT scanlines — Loop: 3.84 s · Frames: 48 at 12.5 fps
  • TV static — Loop: 0.64 s · Frames: 8 at 12.5 fps
  • Block glitch — Loop: 1.28 s · Frames: 16 at 12.5 fps

What it does not do

  • No guarantee about flashing light. We have not tested how these loops affect people who are sensitive to flashing light, and we make no promise about it. TV static and grain flash at the pixel level; the README says how to tone things down.
  • It cannot distort the picture underneath. These are images laid on top: no wave distortion, no colour separation, no screen shake.
  • No sound. Picture only.
  • One resolution: 1280 x 720. Scaled up to 1920 x 1080 (the Ren'Py snippet does this for you), grain, static and scanlines get a little thicker.
  • Grain and static repeat every 8 frames (0.64 s). That kept every master under 1 MB; stare long enough and you may notice it.
  • Not tileable. Seamless in time, not at the edges.
  • The plain WebM is not for Ren'Py. Ren'Py's movie player does not support alpha inside a video. Use the renpy/ folder.
  • Checked in Ren'Py 8.5.3 at 1920 x 1080 only. On Windows, lint passes and each of the eight textures (at heavy) is stretched across the whole screen with its transparency. Other screen sizes were not tried. Try the free sample in your project.
  • The free sample has no TV static, the heaviest texture (more than twice the data per second of the sample's grain lv3). If grain lv3 stutters on your machine, static will too.

How to use it

  1. Download the free sample first (film grain and the breathing vignette, all strengths, all formats) and try it in your tool.
  2. Open the folder for your tool: renpy/, webm/, png_sequence/ or apng/ (the README has a table).
  3. Put the loop above your scene and below your text box, with the normal blend mode - as a Ren'Py show, an OBS Media Source, a frame sequence in your video editor, or a frame list in your engine.
  4. Choose the strength: lv1 light, lv2 normal, lv3 heavy.

Easy things to get wrong

  • 24 loops = 8 textures x 3 strengths, not 24 different textures.
  • Dark textures vanish on dark scenes. Flicker, vignette and scanlines are dark, so on a night scene they almost disappear; on a mid-tone or bright scene they show strongly. The tape tracking band is pale and almost disappears on a bright scene. The README has measured numbers for both.
  • No blend modes needed. Use normal blending; the files already contain their colour.
  • Video editors: start with the PNG frames. Many editors do not read VP9 transparency and show a black background. If you convert the WebM with ffmpeg, decode it with -c:v libvpx-vp9, or the transparency is dropped.
  • The grain and static WebM files are big for their length (several MB for 0.64 s), because every pixel changes every frame.
  • APNG is not GIF. Many image viewers show only the first frame. Browsers play it.

What you need

  • Ren'Py: checked in 8.5.3 (Windows, 1920 x 1080). Side-mask movies are described in the Ren'Py documentation.
  • OBS Studio: according to the OBS Studio 17.0.1 release notes, a Media Source reads transparent WebM from that version on. We have not tested OBS ourselves - try the free sample.
  • Everything else: anything that opens PNG, APNG or WebM (VP9). Every master is built the same way, so a tool that reads the free sample reads the full pack the same way.

Made by ASTERISM. 1280 x 720. 24 loops, about 80 MB unzipped (the free sample is about 21 MB).

Download

Download NowName your own price

Click download now to get access to the following files:

screen-texture-free.zip 20 MB
Version 1
screen-texture-paid.zip 70 MB
if you pay $5 USD or more
Version 1