Dark-region electrical noise
How target dark current and electrical fluctuations become most visible where the useful video signal is weak.
Visible effect
Shadows reveal fluctuations hidden by stronger signals
Dark areas shimmer with electrical variation while bright regions remain comparatively stable. The noise belongs to the captured signal rather than to photochemical grain, and its apparent strength depends on both absolute noise and the weak shadow signal beneath it.
The playground isolates a scalar, rapidly renewed component. Real camera noise can also include fixed-pattern structure, amplifier noise, interference, and scan-correlated components.
Physics
Dark current competes with a weak target signal
Even without useful illumination, leakage and thermally influenced currents can contribute to the target and readout signal. Shot-like fluctuations and downstream electronics add further variation.
The model multiplies random noise by inverse luminance to isolate it perceptually in dark regions. An integer-mixed pixel hash avoids a visibly periodic sine lattice.
Mathematics
Noise is gated by inverse luminance
Luma Y controls a shadow weight. Exponent gamma changes how quickly noise disappears as the useful signal rises; n is a deterministic signed hash renewed at a bounded rate.
Shader
Inverse-luminance noise with integer hashing
The shader evaluates luma, calculates a shadow weight, renews an integer-mixed pixel hash, and adds the signed result without a repeating trigonometric lattice.
// WHAT: Add electrical-looking fluctuations that are most visible in shadows.
// HOW: Generate one deterministic random value from pixel position and a
// time-step number, then multiply it by an inverse-luminance shadow weight.
// WHY: Dark current and readout noise compete with a weak target signal; the
// same absolute fluctuation becomes less noticeable as useful signal rises.
// This integer mixer is only a compact pseudorandom-number generator. Its bit
// shifts and hexadecimal constants have no camera-tube meaning: they repeatedly
// scramble nearby integer inputs so adjacent pixels do not receive similar noise.
uint vidiconHashUint(uint value) {
value ^= value >> 16u;
value *= 0x7feb352du;
value ^= value >> 15u;
value *= 0x846ca68bu;
value ^= value >> 16u;
return value;
}
float vidiconNoiseHash(uvec2 pixel, uint timeState) {
// Give x, y, and time different large multipliers before the final mixer.
uint seed = pixel.x * 0x8da6b343u;
seed ^= pixel.y * 0xd8163841u;
seed ^= timeState * 0xcb1ab31fu;
// Convert the complete unsigned 32-bit range to approximately [0, 1].
return float(vidiconHashUint(seed)) * (1.0 / 4294967295.0);
}
vec3 darkRegionElectricalNoise(
vec3 source,
vec2 pixel,
float time,
float amount,
float shadowBias,
float rate
) {
float luminance = dot(source, vec3(0.299, 0.587, 0.114));
// Weight is near one in black and falls toward zero in bright regions.
// shadowBias controls how quickly the fluctuation disappears with luminance.
float shadowWeight = pow(
1.0 - clamp(luminance, 0.0, 1.0),
max(0.25, shadowBias)
);
// Holding an integer state avoids unrelated random noise on every display
// refresh. rate selects how many new noise states appear per second.
uint timeState = uint(floor(time * max(1.0, rate)));
float signedNoise = vidiconNoiseHash(uvec2(pixel), timeState) * 2.0 - 1.0;
return source + vec3(signedNoise * amount * shadowWeight);
}- Source texture
- Shadow-weighted noiseOne fullscreen render pass
- Measure source luminance
- Calculate inverse-luminance weighting
- Renew integer-hashed electrical noise
- Add the bounded fluctuation
- Display output
Why these steps are here
- Measure the source luma.
- Raise inverse luma to the shadow-weight exponent.
- Quantise time to a controllable renewal state.
- Mix pixel coordinates and state as unsigned integers.
- Scale the signed fluctuation before mixing with the clean image.
Notes
- The shader does not distinguish target dark current, beam noise, shot noise, and preamplifier noise quantitatively.
- Fixed-pattern noise would require a persistent spatial component in addition to the renewed hash.
- Clipping is left to the output surface so extreme settings remain visible for diagnosis.
References
US3883769A — Vidicon target patent — describes target charge storage, dark current, electron-beam readout, and bright-source blooming.
RCA Review, June 1961 — Vidicon performance — primary research on Vidicon beam operation, lag, resolution, dark current, and local contrast.