A rose bed and a fountain both render solid black in Unreal Engine 5.8, for two different reasons
A building that did not exist at breakfast
James had college that Tuesday. Before he left he set a session running and spent the day checking in on it between lectures, the way most of his building now happens — the machine carrying on at home while he is somewhere else entirely, and him reading back what it did whenever there was a gap. By the time he got home there was a new grand house standing on the riverbank that had not existed that morning.
The brief had come from his own reference photographs of Wollaton Hall, and by the end of the day it had grown three limbs: the hall itself, a formal terraced garden in the style of the Victoria Embankment memorial gardens, and a quay down to the water modelled on Trent Bridge and Wilford Bridge. None of it was a reuse of an existing building. Second Chance already has a mosque, a lodge and a church built from the same photographic method; this was a fourth, from scratch.

The quay went in first: a paved promenade following the river's real curve rather than a straight guess, a stone retaining wall dropping to the water, three stepped landings, and a pair of rowing boats — the only boat mesh in the project, there being no narrowboat to borrow instead. A boathouse followed it south along the same bank. The first attempt at the boathouse put three dark boxes behind a single solid wall to fake three arched openings, and the result was one flat red block with no arches in it at all — there is no way to cut a hole in a primitive here, only to build the wall in separate pieces with real gaps between them. Rebuilt that way, from four brick piers rather than one wall, the openings actually read.
Black roses
The garden's flower beds had been rejected once already, on a photograph: James looked at the first planting pass, a scatter of individual plants at random spacing, next to three real photographs of Britain in Bloom entries, and said they needed to be much denser and much more uniform — the reference beds are solid blocks of colour with no visible soil between plants. The beds were rebuilt as tight symmetric grids instead, and the rose garden as concentric rings rather than a scatter, about 130 bushes.
Then the roses came back solid black. Not dark — black, a silhouette, the same shape a rose bush makes and none of its colour. The agent's first two guesses were reasonable ones: a bad texture, or a streaming problem shrinking things down to nothing. Both checked out clean — the texture data read back sensibly, and forcing a smaller texture cap changed nothing. The asset's own thumbnail, rendered in isolation, showed the rose correctly. Only the level itself, in every viewing mode including a forced unlit one, showed it black.

The actual cause was a material inherited from Epic's own glTF import pipeline, set to an unlit shading model that the in-level renderer and the thumbnail renderer apparently disagree about for reasons nobody chased down once the fix worked. Rather than debug that graph, the fix swapped the mesh onto a completely different, already-proven material used elsewhere for foliage, carrying the rose pack's own colour texture across into it. One change at the asset level corrected all 130 roses in the level at once.
Black water, again
Later the same day, a second thing rendered black for a second, unrelated reason. The fountain had been given a proper Niagara spray — a jet, sized off the fountain mesh's own measured geometry rather than guessed, plus splash rings at each of its three bowls. James looked at it and said it looked like black ink coming out of the top.
The obvious suspects went first, and each one was actually tested rather than assumed. Low scalability — bumped to the top setting, still black. Backlighting from the sun — checked the material directly, and its shading was confirmed to be genuinely non-directional, so the sun's position could not be the cause. The real fault turned up two layers down: the Niagara system had been duplicated from an existing toilet-splash effect that gets its colour set at runtime by a Blueprint, and the fountain has no such Blueprint driving it — so its colour fell through to nothing, and nothing renders black.
Setting an explicit colour did not fix it either, on the first try. This project already has a name for what happened next: a daytime sky here sits at roughly (2, 7, 30) in the engine's own linear light units, and an unlit colour written at an ordinary, screen-looking value is simply dimmer than the sky behind it and reads as a dark smear. It is the same mechanism recorded against a long-standing bug where aircraft contrails render as black streaks rather than white ones. The fix was the same shape: push the colour values well past what looks reasonable on a colour picker, until the jet actually competes with the sky. Checked twice — once with the real sun placed directly behind the real fountain, once in an empty test level with nothing else in the frame — the spray came back reading pale and bright against blue, not black.
The ceiling underneath everything
Both of those bugs cost an afternoon each and were found. A third fault, the same day, was not. Bumping the whole open world's rendering quality to its top preset — done to rule out scalability as the cause of the black fountain — hard-crashed the editor outright. The level's video memory total had gone to just under 5.92 GB on an 8 GB card, and the crash log named it a GPU crash directly.
That was the editor. Separately, in a different session the same day, James played the actual standalone build and got stuck on a rope ladder at the cave entrance with no way to climb back down except reaching the very top or the very bottom — fixed in twenty minutes once found, a straightforward missing dismount check. Then the game crashed near that same cave, reliably, more than once. A full memory report taken at the crash site totalled 15,160 MB of video memory in active use, on a card with 7,896 MB to give. Every category the engine could name and account for — Nanite, Lumen, shadows, hair strands, virtual textures — added up to 4.65 GB of that. The other 10.4 GB belonged to nobody. One unnamed buffer, roughly a GPU crash's worth of memory, sitting off the books.
Rockstar have a department that owns a budget for exactly this question. James has an 8 GB card and whatever he can find between college, the gym and an evening. The two crashes that day were not really two separate bugs — the fountain's colour, the roses' material, the scalability crash and the cave crash are four completely different systems that all end up asking the same 8 GB card for more than it has, from four different directions, and the game keeps finding new ones.
Tired eyes, early
Gym at lunch, half an hour running. A walk after the last lecture. By the evening his eyes had had enough of screens for one day, and he called it early rather than push on.
He'd started trying Claude Code Sonnet 5 that week, after Anthropic ended the offer that had been giving him 50% extra tokens — just as capable for this kind of work, he thought, if it needed reminding of a decision slightly more often than the model it replaced. Not a complaint, just the trade he'd made. X, meanwhile, was full of people saying the same offer ending was reason enough to switch to ChatGPT Astra instead, and a separate wave of artists hinting they were doing collaboration work for GTA 6. Nobody outside people he already knows has shown much interest in his own game yet. He is still enjoying making it regardless, which is not the same thing as it being noticed.
The fault
Roses render solid black in the level, though the asset's own thumbnail shows them correctly
Ruled out a texture problem (the source data read back sensibly) and a streaming problem (capping the texture size changed nothing) before finding the real cause: the mesh's material is parented to Epic's own glTF import master, set to an Unlit shading model. Every in-level capture rendered it black, including a forced unlit viewmode, while the isolated asset thumbnail rendered it correctly.
The fix
Reparent the mesh onto a known-working lit material instead of debugging the glTF one
Built a new instance of an already-proven foliage material, carried the rose pack's own colour and opacity textures into it, then swapped the mesh's material slot at the asset level — every placed instance corrected in one move. If an imported glTF or Fab asset renders solid black in the level but fine in its own thumbnail, suspect the Interchange Unlit master first.
The fault
A Niagara fountain jet also renders solid black, having ruled out scalability and backlighting first
The particle system was duplicated from an effect that gets its colour set at runtime by a Blueprint. The fountain has no Blueprint driving it, so its colour resolved to "nothing set", which renders black — a silent gap in the donor asset rather than a fault in the copy.
The fix
Set an explicit colour override in HDR values, not ordinary 0–1 ones
A daytime sky in this project sits at roughly (2, 7, 30) in linear scene units, so an unlit colour written at a normal, screen-looking value is dimmer than the sky it's drawn against and reads as a dark streak — the same mechanism already on record against a black-contrail bug. Pushed the jet's colour well past 1.0 until it actually competed with the sky, and checked it against two different backgrounds before trusting it.
The fault
A standalone playtest crashes reproducibly near the cave, and a memory report shows nearly double the card's video budget in use
A full memory report at the crash site totalled 15,160 MB of video memory on a 7,896 MB card. Every named category — Nanite, Lumen, shadows, hair, virtual textures — accounted for only 4.65 GB of that. The remaining 10.4 GB was a single buffer with no owner the engine could report.
The fix
Not fixed yet — diagnosed, with the next test queued
A separate crash the same day, from bumping the whole open world's quality preset to its top setting while fully loaded, confirmed the same 8 GB ceiling from a different angle. The next step is switching Nanite, virtual shadow maps and Lumen off one at a time and watching which one actually moves the unnamed 10.4 GB, alongside a second piece of queued work: turning several hundred duplicate house meshes into one instanced draw call instead of one each.
The kit
| Tool | Why this one |
|---|---|
| Blender | where the manor, quay and boathouse blockouts were built |
| Unreal Engine 5.8 | where both black-rendering bugs and both crashes actually appeared |
| Reference photographs of Wollaton Hall and Nottingham's memorial gardens | set the brief for the manor, the garden and the quay before anything was built |
| A full engine memory report at the crash site | the only thing that actually named the video memory total, rather than guessing at it |
Plain English
| Term | What it means |
|---|---|
| Niagara | Unreal's particle system — rain, smoke, sparks, dust, fizz on a pint. |
| material | The recipe describing how a surface looks: colour, roughness, shininess, transparency. |
| material instance | A copy of a material with some settings changed. Cheap to make and cheap to render, so most surfaces are instances rather than originals. |
| shader | The small program that actually draws a surface. New materials must be compiled before they appear, which is why a change can take minutes to show. |
| static mesh | A 3D model that does not bend — a wall, a bin, a bottle. It can be moved as a whole, but its shape is fixed. |
| VRAM | Memory on the graphics card. This project has 8 GB of it, and that ceiling shapes most of the decisions in the devlog. |
| OOM | Running out of memory, at which point the program stops. |
| Nanite | Unreal's system for drawing extremely detailed models without hand-made LODs. It does not cover everything — foliage and transparency are the awkward cases. |
| Lumen | Unreal's lighting system for bounced light and reflections, worked out live rather than baked beforehand. |
| HISM | One object in the level that holds thousands of copies of the same model and draws them together. A street's worth of downpipes costs roughly what one downpipe costs. The hierarchical version also picks the right level of detail per copy. |
| scalability settings | The engine's quality dials — shadows, textures, effects, anti-aliasing — each of which can be set independently. Turning one up can cost far more than turning the rest up together. |
Things we still need to fix tomorrow:
- The unnamed 10.4 GB video memory buffer near the cave is still unidentified.
- Nearly 400 duplicate terrace-house meshes still draw one at a time instead of as one
instanced batch.
- Nobody has listened to the fountain's ambient sound yet — a live playtest near it hit the
same video memory warning and was stopped before the audio could be checked.
- The boathouse's finished brick and arches have not had their own review; only the empty
site was approved before it was built.
- The manor's vertical path from the new quay up to the house itself does not exist yet.