Sixty-four lights in one pass: each is a loop iteration, not a pass per object. Same colour as Unity's own lights, falloff fitted to Unity's curve, cost measured.Built-in: ready to use. URP: the Setup window writes the URP build of the shader in one click (SRP batcher compatible). HDRP: not supported; neither the Fake Lit shader nor Fake Light Receivers work there. Unity 2022.3 or newer, no package dependencies.A real forward point light adds an extra pass over every object it touches. Eight lights over a wall is eight passes over that wall.A fake light is four numbers in a global array. The shader loops over that array once, in the pass it was already drawing. Adding the sixty-fourth light adds one more iteration, not one more draw.MEASURED, NOT CLAIMEDTwo hundred cubes and a floor, point lights of range 6, Unity 2022.3, Built-in forward, an Apple M4 Max, every real light a per-pixel light. Milliseconds per frame at 1920x1080:1 light: 0.44 ms real, 0.20 ms fake8 lights: 0.93 ms real, 0.31 ms fake16 lights: 1.34 ms real, 0.42 ms fake32 lights: 2.15 ms real, 0.66 ms fake64 lights: 3.80 ms real, 1.17 ms fakeAt 960x540, 32 lights: 1.93 ms real, 0.33 ms fake.Fake lights are not free. Each one is one more loop iteration for every lit pixel, so their cost grows with the number of lights and the size of the screen: at 1080p thirty-two of them cost about a third of the real ones, at half that resolution about a sixth. A few small lights that touch little are cheap either way.The Fake Lights window has a Measure button that renders your own scene with the lights on and again with them off, and waits for the GPU, so you get this comparison for your project rather than mine.IT LOOKS LIKE A REAL LIGHTIn a linear-space project Unity converts a real light's colour and intensity before lighting with it, with one rule for Built-in and another for URP. Fake lights apply the same rule, so a fake light is the same colour as the real one it replaces: measured over a plane, every channel within 2 percent of the others.Unity's own point-light falloff was rendered and read off pixel by pixel, and the inverse-square curve here is fitted to it: mean error 13 percent across the range, and the worst disagreement is past 90 percent of the range where both curves are already too dark to see.Same intensity, same range, same colour: close to the same picture, for a fraction of the cost.SIMPLE TO USEGameObject > Light > Fake Light. It arrives already looking like a torch, not like eight sliders at zero.Eight presets to start from: Torch, Candle, Ceiling lamp, Neon, Broken tube, Magic, Muzzle flash, Moonlight. Each one says what it is for.Fake lights are invisible to every shader but this package's, which trips everybody once. So the inspector says so in red and offers one button that moves every material in the scene onto the Fake Lit shader, keeping its colour and its texture. One undo puts it back.CUSTOMISABLELight Profiles: save a look as an asset, drop it on two hundred lamps, edit it once and all two hundred change. Detach any single light whenever you want to go your own way with it.Custom falloff: set the falloff to Custom and draw the curve. It is baked into a texture the shader point-samples, and the editor reads the same baked data, so the graph in the inspector is the light rather than a picture of it. Sixteen curves can be in play at once.Six flicker styles: noise, candle, pulse, strobe, and one driven by a curve you draw. Every light gets its own seed, so a row of torches does not pulse in unison.Point, spot and directional shapes, with soft cone edges.WHAT YOU GIVE UPShadow casting and light cookies. That is the whole trade.Fake lights are for the lights that are there for atmosphere: lamps, torches, neon, muzzle flashes, pickups, magic. Keep real lights for the two or three that define the shape of a room and fake the other forty. The Fake Lights window converts them for you and warns you about the ones that cast shadows.NO DEPENDENCIESNo packages, no renderer feature, no shader to install. Built-in and URP.On URP the Setup window writes out a URP build of the shader in one click - same falloff, same pixels, plus a UniversalForward pass the SRP batcher accepts. It ships as a template rather than a shader so a project without URP still compiles.Objects on other shaders (Standard, URP Lit, particles) can still react through a Fake Light Receiver, which drives the material's emission through a property block. Emission has to be switched on in the material; the receiver's inspector says so in red when it is not. HDRP is not supported.WHAT IS IN THE BOXFake Light: point, spot and directional, four falloffs, six flicker styles.Light Profile assets, and eight presets to start from.Fake Light Receiver for objects on other shaders with emission switched on.The Fake Lights window: budget, scene overview, one-click conversion of real lights, and a measurement of what the lights cost in your own scene.LightMath: plain C# falloff, cones and Lambert, callable from your own tools and tests.A demo scene: a hall with twenty-four lamps that flips between real and fake lighting on a keypress, with the frame time on screen.Full commented C# source.Support: koraykaftanoglu@gmail.comUp to 64 lights evaluated in a single pass, uploaded as shader globals so objects still batch.Colour converted the way Unity converts its own lights, and an inverse-square falloff fitted to Unity's measured point-light curve: same colour, close to the same brightness.Measured at 1920x1080 in the same 200-object scene: 32 fake lights 0.66 ms, 32 real per-pixel lights 2.15 ms.Point, spot and directional shapes, with a soft cone edge.Custom falloff curves you draw yourself, baked once and read the same way by the shader and the editor.Six flicker styles, including one driven by a curve. Per-light seeds.Light Profile assets: one look worn by many lights, edited in one place.Eight presets, and a GameObject > Light > Fake Light menu entry.One-click conversion of every material in a scene onto the Fake Lit shader, keeping colour and texture.A light budget with influence ranking, so a level can hold more lights than a frame can afford.Fake Light Receiver for objects on other shaders with emission switched on, driven through a MaterialPropertyBlock.Built-in and URP, with an SRP-batcher-compatible URP build written by the Setup window.Full commented C# source, and a demo scene that measures itself.


