Better Simple Clouds 1.2.3 (NeoForge 1.21.1)
Curse Maven Snippet
What's new
1.2.3
A crash fix, a fix for an OpenGL error in every frame, and two fixes for clouds that did not show at all, for both builds (NeoForge 1.21.1 and Forge 1.20.1).
No more crash ("Pipeline not determined") on entering a dimension Simple Clouds does not draw clouds in - any dimension outside its whitelist, which is the overworld by default - with the soft terrain fade on and no shader pack. Thanks to PheonixArcher for the report.
No more OpenGL error in the log in every frame ("GL_INVALID_OPERATION ... Depth formats do not match", or "id=1175" on AMD cards) when another mod switches stencil on in the game's framebuffer, as Supplementaries 4.0.1 does, while the clouds are drawn after the terrain (the soft terrain fade, no shader pack). The game's framebuffer then has another depth format, the cloud framebuffers kept the old one, and every depth copy between them failed: Simple Clouds stopped copying depth ("Unable to copy depth between the main and clouds frame buffers, even after enabling stencil"), so the clouds' see-through edges were drawn over their own bodies, and water and particles behind a cloud were drawn over it. The cloud framebuffers now get the depth format of the game's framebuffer, also when a mod switches stencil on after they were made. Thanks to Cocoa for the report and the diagnosis.
With Project Atmosphere and Distant Horizons installed the clouds could be missing, with Simple Clouds reporting mesh overflows. Better Simple Clouds still stretched the cloud field out to Distant Horizons' distance there, and Simple Clouds' own mesh generator, which builds the clouds beside Project Atmosphere since 1.2.2, has no room for a field that size (5,740 mesh chunks instead of its 364 in the report). The field is now only stretched, and the Max LOD Level only applied to it, when Better Simple Clouds builds the mesh itself. Beside Project Atmosphere, and with the Sync-Free Mesh Path option switched off, the clouds keep Simple Clouds' own reach. Thanks to Mysticpasta1 for the reports.
Clouds are drawn again when Distant Horizons is installed but draws nothing: with its rendering switched off, or when its renderer could not start. Simple Clouds draws its clouds inside Distant Horizons' frame whenever that mod is installed, so no frame meant no clouds. Better Simple Clouds now notices after a few seconds, draws the clouds the way it does without Distant Horizons, and goes back when Distant Horizons draws again. The log says so once.
With Distant Horizons, the cloud you are flying through is drawn again (NeoForge 1.21.1 only so far: the Forge 1.20.1 build does not have this yet). Simple Clouds draws its clouds inside Distant Horizons' frame, where everything closer to the camera than Distant Horizons' own terrain starts is cut away: a few blocks with Distant Horizons itself, a hundred or more with builds of it that move that distance out when the camera is high above the ground. The faces of the cloud around you, the in-cloud haze and the view shell were all missing, and loaded terrain was drawn over what was left. The clouds nearest the camera are now drawn a second time after the world, with the game's own view. Those nearest clouds are not seen through stained glass, ice or a water surface, and rain in front of them is hidden.
Huge clouds no longer blink out in chunk-sized pieces for a few frames. Two causes. Where the mesh grid follows the camera (every chunk of it, in steps of a chunk) a far chunk left to its staggered turn kept drawing the clouds of the area next to its own while that area's old chunk had already moved on: a hole up to two kilometres across, for up to eight cycles. After a step every chunk now regenerates, in the order the clouds move through the slots. And a chunk whose faces no longer fit its slot in the mesh buffer was cut off until it regrew into a bigger one: the growth-ahead that should have prevented that had been switched off by its own test since the buffer is mostly handed out at the start; it works again, a chunk is grown when its faces reach four fifths of its slot, and after a grid step each chunk is sized for what its neighbour held. Over a flight across a stratus deck that overflowed once instead of every few seconds.
With Distant Horizons, clouds meeting its terrain fade out over the last blocks instead of z-fighting with it (NeoForge 1.21.1).
Rain (NeoForge 1.21.1):
- The rain is drawn in front of the storm fog (the far rain wall) and of the clouds nearest the camera, not behind them: on the Distant Horizons and shader-pack render paths the streaks were a faint grey smear under the fog in every storm.
- Rain weather, on by default: the rain is as heavy as the cloud it falls from, and changes with time. Under a stratus deck it drizzles - thin, slow, nearly vertical, a few streaks, the view hardly dimmed. A thunderstorm throws it down in long, dense, slanted sheets that shift with the wind: gusts come and go every few seconds, squalls build and pass over minutes, and the view closes in to a rainy grey haze all around: over the terrain, over Distant Horizons' LODs (read from DH's own depth; the game's fog never reaches them) and over the sky, where it is as thick at the horizon as over the farthest ground and thins upward, so the cloud deck overhead still shows through it. Not under a shader pack, which fogs its own world. Everything in between scales with the cloud's storminess; a thunderstorm nearby makes the weather a storm even where another cloud's rain falls, and the rain thickens sooner inside a cloud's edge than Simple Clouds' own level does (which starts some 500 blocks inside the cloud's radius: a dark storm overhead and a sprinkle). Three options in the Rain group: Rain Weather (off = the one rain of 1.2.2), Rain Wind Strength and Rain Fog Strength. Once a minute while it rains the log says what the weather makes of the spot.
- The drops look like water: a soft streak with a bright core and see-through edges, cool grey-blue instead of white, thinner and more transparent, no two the same brightness. They no longer show through the blocks in front of them on the Distant Horizons render path (the depth test it leaves behind is reversed).
- Where a drop lands within sight it splashes: a small crown on the very surface it struck (a slab's top, a stair step, the water's face) and a ring spreading from it, for a third of a second. Vanilla's blue drop particles, which rain scatters over random block tops where no drop falls, are left out while the rain weather is on.
- No more see-through gaps in the clouds: inside a cloud, and looking into one from outside, a sight line that left the cloud through a pocket could find no face on the far side (only the faces that faced the camera when the cloud was last meshed exist, to keep the mesh small) and showed the sky. Faces now keep a margin for a moving camera, and inside a cloud the gaps that remain are painted over with the cloud around them.
- Wet ground (Wet Ground option, on with the rain weather): rain shows on what it falls on. Flat tops open to the sky go dark and glossy and mirror the sky at low angles, puddles collect in the hollows as the rain goes on - soaked in half a minute of heavy rain, a few minutes of drizzle - and it all dries out some minutes after the rain stops. The puddles are water, not paint: the ground shows through them, darker, the sky mirrors in them a little from above and more the flatter the view strikes them, and the rain pocks them with spreading rings. Under an overhang the wet thins out over about a block, as blown-in rain and spreading water do, instead of stopping along the block's edge. Within 48 blocks of the camera, on the game's own terrain; not under a shader pack, whose own puddles and fog are the ones there.
Frame rate with a large cloud field (2026-10-11)
- Two storage-buffer writes that stalled the render thread until the graphics card had finished everything queued: the lightning positions of the storm post-processing (every frame of a thunderstorm) and the cloud formations of each mesh cycle. Both buffers are rewritten from the start, so they are now written with the invalidate bit and the driver hands out fresh storage instead of waiting. In a profile of a 5 000-chunk world under Complementary the two waits were 8% of the render thread.
- The per-frame readback of the mesh counters no longer looks up every chunk's buffer sets and allocates an Optional lambda per chunk (3.5% of the render thread with a Distant Horizons-sized field).
- A cloud chunk is rebuilt only when its picture would change ("Rebuild Only What Changes", the option that was "Stagger Far Ring Updates"). Simple Clouds rebuilds every chunk in view on every mesh cycle; the fixed stagger of earlier versions rebuilt the far rings every 4th, 8th and 16th cycle instead, which made far clouds step several pixels at a time. Now the three things that change a chunk are measured in pixels at its distance: a cloud's edge moving through it (a cloud is a fixed noise field cut out by a circle that drifts with the wind, so only the chunks that circle's rim runs through see it move), the slow morph of the noise itself, and the camera moving. A chunk is rebuilt when any of them amounts to about one and a half pixels on screen, so near chunks rebuild every cycle, far ones only when needed, and nothing steps. Chunks around the camera, chunks that overflowed their slot, chunks coming back into view and the whole field after a grid step are rebuilt regardless.
- The cloud field stretched to a Distant Horizons distance is built from rings that double in cell size, as Simple Clouds' own rings do, instead of thousands of rings of the same size: 80 km of clouds is about 550 mesh chunks instead of 5 740, every one of which was culled, counted and drawn each frame and rebuilt in turn. A cell stays about the same size on screen wherever its ring starts; the coarsest cell is 512 blocks (a cube about as tall as the cloud layer), beyond which more rings of that size are added. Mesh generation was the single largest graphics-card cost of the frame with the 5 740-chunk field (5.7 ms a frame in an 854 x 480 window).
- A chunk returning into view fades in by how long it was out of view, not by how long ago it was rebuilt, so a chunk that keeps its mesh for a few seconds no longer blinks out.
- The chunks that are not rebuilt are not looked up either: Simple Clouds asked which cloud type covers each of a chunk's four corners before queueing it, a walk over every formation per corner, which was 13 per cent of the render thread in a profile with a Distant Horizons-sized field. The decision now comes first, and a chunk of clear sky with no formation over it and no cloud edge anywhere near is left alone entirely.
- The draw passes reuse their per-chunk arrays instead of allocating two per pass per frame.
Without Project Atmosphere, with Distant Horizons drawing normally and no cloud close to the camera, nothing else changes.
Requires Simple Clouds 0.7.3. Optional: Sodium / Embeddium (options pages), Iris / Oculus, Distant Horizons.
All Relations
- All Relations
- Embedded Library
- Optional Dependency
- Required Dependency
- Tool
- Incompatible
- Include

