From e69110cde88fc021ee1bd474510c3fe3e9e1a6b2 Mon Sep 17 00:00:00 2001 From: KthanidKisure <161649271+KthanidKisure@users.noreply.github.com> Date: Thu, 27 Aug 2026 02:25:31 +0100 Subject: [PATCH 01/25] Add files via upload --- shaders/common/display_common.slang | 13 + shaders/pipelines/display/main.comp.slang | 128 +++++- shaders/pipelines/world/any_hit.rahit.slang | 8 +- shaders/pipelines/world/clouds.slang | 384 ++++++++++++++++++ shaders/pipelines/world/fog.slang | 123 ++++++ shaders/pipelines/world/indirect.rgen.slang | 52 ++- shaders/pipelines/world/sky.rmiss.slang | 17 + shaders/pipelines/world/world_common.slang | 15 + .../comfyfluffy/caustica/CausticaConfig.java | 181 ++++++++- .../comfyfluffy/caustica/rt/RtComposite.java | 100 ++++- .../rt/pipeline/RtDisplayPipeline.java | 8 +- .../color/luts/sdr_agx_base_rec709.bin | Bin 0 -> 2197020 bytes .../color/luts/sdr_agx_punchy_rec709.bin | Bin 0 -> 2197020 bytes tools/bake_display_lut.py | 65 +++ 14 files changed, 1080 insertions(+), 14 deletions(-) create mode 100644 shaders/pipelines/world/clouds.slang create mode 100644 shaders/pipelines/world/fog.slang create mode 100644 src/main/resources/caustica/color/luts/sdr_agx_base_rec709.bin create mode 100644 src/main/resources/caustica/color/luts/sdr_agx_punchy_rec709.bin diff --git a/shaders/common/display_common.slang b/shaders/common/display_common.slang index 54ef9fe1e..520d9af94 100644 --- a/shaders/common/display_common.slang +++ b/shaders/common/display_common.slang @@ -77,6 +77,19 @@ public struct DisplayPush { // SUM of every band, so RtComposite folds the 1/levelCount normalisation into this value: the authored // look-package strength then means the same thing whichever level count the resolution supports. public float bloomStrength; + // ---- Unreal-style scene-referred colour grading, applied after the LMT and before the output + // transform, which is where UE's own grade sits relative to its tonemapper. Values are the + // renderer's working space (ACEScg/AP1) and UE's default working space is also AP1, so the + // published numbers from a UE post-process volume transfer directly rather than approximately. + public int gradeEnabled; // 0 = skip the whole stage + public float saturation; // global + public float contrast; // global, pivoted at 0.18 + public float gain; // global + public float highlightSaturation; // multiplies the global value in the highlight region + public float highlightGain; // multiplies the global value in the highlight region + public float highlightsMin; // luma where the highlight region starts blending in + // ---- RCAS. 0 disables it and its four extra taps. + public float sharpness; }; public struct BloomPush { diff --git a/shaders/pipelines/display/main.comp.slang b/shaders/pipelines/display/main.comp.slang index b92d243d7..7f7e7c712 100644 --- a/shaders/pipelines/display/main.comp.slang +++ b/shaders/pipelines/display/main.comp.slang @@ -44,6 +44,56 @@ float3 applyLook(float3 exposedAcesCg) { return shaperDecode(shaped); } +// ---- Unreal-style colour grading ----------------------------------------------------------------- +// +// A reimplementation of UE's ColorCorrectAll from PostProcessCombineLUTs.usf, so that a grade authored +// against a UE post-process volume — such as the one in the "Ultra Realism Tonemapper" guide — produces +// the same image here. Two things make that transfer exact rather than approximate: UE's default +// working colour space is AP1, which is this renderer's working space too, and UE grades scene-referred +// before its tonemapper, which is where this sits relative to the output transform. +// +// The 0.18 contrast pivot is what keeps contrast from also being an exposure change: scaling around +// mid grey leaves mid grey fixed, so contrast and exposure stay independent controls. +// ACEScg luma weights, matching world_common.slang's ACESCG_LUMA. Duplicated rather than imported: +// this pipeline does not otherwise depend on the ray tracer's module tree. +static const float3 ACESCG_LUMA = float3(0.27222872, 0.67408177, 0.05368952); +static const float GRADE_PIVOT = 0.18; +// UE's ColorCorrectionShadowsMax / HighlightsMax defaults. Only HighlightsMin is worth exposing — +// it is the one the guide actually moves, and the other two only reshape the blend between regions. +static const float GRADE_SHADOWS_MAX = 0.09; +static const float GRADE_HIGHLIGHTS_MAX = 1.0; + +float3 colorCorrect(float3 color, float saturation, float contrast, float gain) { + float luma = dot(color, ACESCG_LUMA); + // Saturation as a lerp from luma, clamped at zero: values above 1 extrapolate away from grey, and + // without the clamp a strongly saturated colour can extrapolate a channel negative and come back + // through the tone LUT as a hard chroma artifact. + color = max(lerp(float3(luma), color, saturation), float3(0.0)); + color = pow(max(color / GRADE_PIVOT, float3(0.0)), float3(contrast)) * GRADE_PIVOT; + return color * gain; +} + +float3 applyGrade(float3 acesCg) { + if (pc.gradeEnabled == 0) { + return acesCg; + } + float luma = dot(acesCg, ACESCG_LUMA); + // Region weights sum to 1 by construction, so the three graded results blend without changing + // overall level — the midtone weight is whatever the other two leave behind. + float shadowWeight = 1.0 - smoothstep(0.0, GRADE_SHADOWS_MAX, luma); + float highlightWeight = smoothstep(pc.highlightsMin, GRADE_HIGHLIGHTS_MAX, luma); + float midWeight = max(1.0 - shadowWeight - highlightWeight, 0.0); + + // Region parameters multiply the global ones, exactly as UE composes them — so the guide's + // highlight saturation of 0.95 means 0.95 x the global 0.75, not 0.95 outright. + float3 midtones = colorCorrect(acesCg, pc.saturation, pc.contrast, pc.gain); + float3 highlights = colorCorrect(acesCg, pc.saturation * pc.highlightSaturation, + pc.contrast, pc.gain * pc.highlightGain); + // Shadows use the global grade unmodified: the guide overrides no shadow-region parameters, and + // inventing a shadow lift here would silently diverge from the source it is reproducing. + return midtones * (shadowWeight + midWeight) + highlights * highlightWeight; +} + float3 sampleBloom(int2 outputPixel, uint outputWidth, uint outputHeight) { float2 uv = (float2(outputPixel) + 0.5) / float2(outputWidth, outputHeight); return bloomImage.SampleLevel(uv, 0.0).rgb; @@ -141,6 +191,55 @@ float3 tonemapHdr(float3 lookedAcesCg) { return displayGammaHdr(hdrToneLut.SampleLevel(lutTexCoord(uvw, pc.lutSize), 0.0).rgb); } +// Everything up to, but not including, the output transform. Factored out because RCAS below needs it +// at four neighbouring pixels as well as the centre. +float3 gradedAcesCg(int2 pix, float exposure, uint w, uint h) { + float3 exposedAcesCg = max(rtImage[pix].rgb * exposure, float3(0.0)); + exposedAcesCg += sampleBloom(pix, w, h) * max(pc.bloomStrength, 0.0); + return applyGrade(applyLook(exposedAcesCg)); +} + +// ---- RCAS ------------------------------------------------------------------------------------------ +// +// AMD's Robust Contrast-Adaptive Sharpening, from FSR. "Robust" is the operative word: rather than a +// fixed unsharp kernel, it derives a per-pixel sharpening lobe from how much headroom the local +// neighbourhood actually has, so it cannot ring a highlight into clipping or crush a shadow. That makes +// it the right choice downstream of DLSS Ray Reconstruction, where a fixed sharpen would amplify the +// denoiser's own reconstruction error along edges. +// +// TWO DELIBERATE PLACEMENT DECISIONS: +// +// It runs AFTER the output transform, on display code values, not on scene-linear radiance. RCAS's +// headroom maths assumes a bounded signal with a peak of 1. Scene-linear HDR has no such bound — a +// 10,000 nit emitter is just a large number — and sharpening it would produce overshoot proportional to +// the highlight's absolute intensity rather than to its visible contrast. +// +// The HDR path sharpens PQ code values, which is what "HDR-aware" means here. PQ is perceptually +// uniform and bounded [0,1], so the same lobe produces the same *apparent* edge enhancement at 100 nits +// and at 1000 nits. Sharpening linear nits instead would make bright highlights receive hundreds of +// times more absolute overshoot than midtones, which reads as ringing exactly where the display is most +// able to show it. +// +// Cost is four extra pipeline evaluations per pixel. Gated on sharpness, so a disabled slider costs one +// comparison. +static const float RCAS_LIMIT = -0.1875; // FSR's clamp on the lobe; beyond it the filter visibly rings. + +float3 rcas(float3 e, float3 b, float3 d, float3 f, float3 h, float sharpness) { + float3 mn4 = min(min(b, d), min(f, h)); + float3 mx4 = max(max(b, d), max(f, h)); + // Headroom to black and to peak white, per channel. The tighter of the two bounds the lobe, so a + // pixel already near either end of the range is sharpened less rather than pushed past it. + float3 hitMin = mn4 / (4.0 * max(mx4, float3(1.0e-6))); + float3 hitMax = (1.0 - mx4) / (4.0 * max(mx4, float3(1.0e-6))); + float3 lobeRgb = max(-hitMin, hitMax); + float lobe = max(RCAS_LIMIT, min(max(lobeRgb.r, max(lobeRgb.g, lobeRgb.b)), 0.0)) * sharpness; + return (lobe * (b + d + f + h) + e) / (4.0 * lobe + 1.0); +} + +int2 clampPixel(int2 pix, uint w, uint h) { + return int2(clamp(pix.x, 0, int(w) - 1), clamp(pix.y, 0, int(h) - 1)); +} + [shader("compute")] [numthreads(16, 16, 1)] void main(uint3 dispatchId : SV_DispatchThreadID) { @@ -151,14 +250,31 @@ void main(uint3 dispatchId : SV_DispatchThreadID) { return; } - float4 rt = rtImage[pix]; float exposure = max(exposureImage[int2(0, 0)], 0.0); - float3 exposedAcesCg = max(rt.rgb * exposure, float3(0.0)); - exposedAcesCg += sampleBloom(pix, w, h) * max(pc.bloomStrength, 0.0); - float3 lookedAcesCg = applyLook(exposedAcesCg); - outputImage[pix] = float4(tonemap(lookedAcesCg), 1.0); + float3 lookedAcesCg = gradedAcesCg(pix, exposure, w, h); + + float sharpness = max(pc.sharpness, 0.0); + if (sharpness <= 0.0) { + outputImage[pix] = float4(tonemap(lookedAcesCg), 1.0); + if (pc.hdrEnabled != 0) { + hdrImage[pix] = float4(tonemapHdr(lookedAcesCg), 1.0); + } + return; + } + + // Edge pixels clamp to themselves, which makes the lobe collapse toward zero at the border rather + // than sharpening against a wrapped or undefined neighbour. + float3 upAcesCg = gradedAcesCg(clampPixel(pix + int2(0, -1), w, h), exposure, w, h); + float3 leftAcesCg = gradedAcesCg(clampPixel(pix + int2(-1, 0), w, h), exposure, w, h); + float3 rightAcesCg = gradedAcesCg(clampPixel(pix + int2(1, 0), w, h), exposure, w, h); + float3 downAcesCg = gradedAcesCg(clampPixel(pix + int2(0, 1), w, h), exposure, w, h); + + outputImage[pix] = float4(rcas(tonemap(lookedAcesCg), tonemap(upAcesCg), tonemap(leftAcesCg), + tonemap(rightAcesCg), tonemap(downAcesCg), sharpness), 1.0); if (pc.hdrEnabled != 0) { - hdrImage[pix] = float4(tonemapHdr(lookedAcesCg), 1.0); + hdrImage[pix] = float4(rcas(tonemapHdr(lookedAcesCg), tonemapHdr(upAcesCg), + tonemapHdr(leftAcesCg), tonemapHdr(rightAcesCg), + tonemapHdr(downAcesCg), sharpness), 1.0); } } diff --git a/shaders/pipelines/world/any_hit.rahit.slang b/shaders/pipelines/world/any_hit.rahit.slang index 67762c735..4b2e3a738 100644 --- a/shaders/pipelines/world/any_hit.rahit.slang +++ b/shaders/pipelines/world/any_hit.rahit.slang @@ -64,7 +64,13 @@ void main(inout Payload payload, in BuiltInTriangleIntersectionAttributes attr) int texSlot = int(epr.tint.w + 0.5); float4 texel = entityAlbedoTex[NonUniformResourceIndex(texSlot)].SampleLevel(uv, 0.0); bool stochasticAlpha = false; - MaterialHeader materialHeader; + // Zero-initialised rather than left to the ENTITY_BIT branch below. Every read of this is + // already guarded by an instanceKind == ENTITY_BIT test, so the value is never observed + // unassigned -- but the compiler cannot prove that across the separate guards, and newer slangc + // versions promote the resulting may-be-uninitialised diagnostic to an error under the + // project's -warnings-as-errors. A defined zero is also the safer failure mode: model 0 falls + // through the dielectric and water branches instead of reading a stack value as a material. + MaterialHeader materialHeader = {}; if (instanceKind == ENTITY_BIT) { materialHeader = ConstPtr(pc.materialTableAddr)[epr.materialId]; stochasticAlpha = (materialHeader.features & MATERIAL_FEATURE_STOCHASTIC_ALPHA) != 0u; diff --git a/shaders/pipelines/world/clouds.slang b/shaders/pipelines/world/clouds.slang new file mode 100644 index 000000000..10cd9866a --- /dev/null +++ b/shaders/pipelines/world/clouds.slang @@ -0,0 +1,384 @@ +// Raymarched volumetric cloud layer. Depends on sky and bindings. +// +// A single cumulus deck between cloudBottom and cloudBottom+thickness, marched front to back and lit by +// whichever celestial body dominates, through the same transmittance LUT the terrain and the sun disc +// use. Output is linear BT.709 (sky.slang's working space), returned as a scattered-radiance plus +// transmittance pair so the caller composites the deck over the sky it already computed. +// +// Density is procedural rather than textured. A 3D noise texture would be the faster answer per sample, +// but it costs a descriptor binding, a CPU-side bake, and a resource lifetime to manage in RtComposite; +// the arithmetic version keeps the entire feature inside two shader files plus eight push floats. If this +// ever becomes the frame's bottleneck, the density function is the single thing to move to a texture and +// nothing else here changes. +// +// Shape is the standard cumulus recipe: a low-frequency fBm establishes the base shape, coverage remaps +// it so raising coverage grows existing clouds outward instead of fading a uniform haze up from zero, a +// height gradient rounds the bottom and flattens-then-billows the top, and a high-frequency fBm erodes +// the edges so silhouettes are wispy rather than blobby. +// +// Lighting is dual-lobe Henyey-Greenstein — a strong forward lobe for the silver lining when you look +// toward the sun, a weak backward lobe so the deck does not go flat when you look away — with a Beer's +// law transmittance along a short march toward the light, and the "powder" term that reproduces the dark +// edge on the lit side of a cloud that pure Beer's law gets wrong. +// +// COST WARNING, and the reason for the gate in sky.rmiss: this is a nested march, ~64 view samples each +// spawning ~6 light samples, each of those evaluating several octaves of noise. That is affordable once +// per pixel on a primary ray. It is not affordable on every diffuse bounce's miss, which is why the caller +// runs it only for rays that may see the celestial discs — the primary ray and specular/dielectric +// continuations. Diffuse bounces see the unclouded sky, which loses the deck's contribution to bounce +// lighting; that is a deliberate trade, not an oversight. + +import world_common; +import sky; +import bindings; + +public static const int CLOUD_VIEW_STEPS = 64; +public static const int CLOUD_LIGHT_STEPS = 6; +// Marching past this is wasted work: at the deck's grazing angles the transmittance cutoff below always +// trips first, and the noise domain loses fp32 precision long before this. +public static const float CLOUD_MAX_MARCH = 60000.0; +// Front-to-back early out. 0.01 is ~6.6 stops down, far under the ACES 2.0 output transform's ability to +// show a difference. +public static const float CLOUD_MIN_TRANSMITTANCE = 0.01; + +public static const float CLOUD_HG_FORWARD = 0.80; +public static const float CLOUD_HG_BACKWARD = -0.25; +public static const float CLOUD_HG_MIX = 0.60; + +public struct CloudParams { + public float coverage; // 0 clear .. 1 overcast. 0 disables the whole module. + public float density; // extinction per block inside fully dense cloud + public float bottomY; // deck base, rebased world Y + public float thickness; // deck depth in blocks + public float2 wind; // domain offset in blocks, advanced on the CPU so it is frame-rate independent + public float detail; // 0..1 erosion strength + public float ambient; // fraction of zenith sky scattered in as multiple-scattering stand-in +}; + +public CloudParams makeCloudParams(WorldPush push) { + CloudParams c; + c.coverage = clamp(push.cloud0.x, 0.0, 1.0); + c.density = max(push.cloud0.y, 0.0); + c.bottomY = push.cloud0.z; + c.thickness = max(push.cloud0.w, 1.0); + c.wind = push.cloud1.xy; + c.detail = clamp(push.cloud1.z, 0.0, 1.0); + c.ambient = max(push.cloud1.w, 0.0); + return c; +} + +public bool cloudsActive(CloudParams c) { + return c.coverage > 0.0 && c.density > 0.0; +} + +// ---- Noise ------------------------------------------------------------------------------------------- +// Value noise on a hashed integer lattice. Chosen over gradient noise because clouds want the blobby, +// isotropic character value noise already has, and it is roughly half the ALU. + +float cloudHash(float3 cell) { + float3 p = frac(cell * float3(0.1031, 0.1030, 0.0973)); + p += dot(p, p.yxz + 33.33); + return frac((p.x + p.y) * p.z); +} + +float cloudValueNoise(float3 p) { + float3 i = floor(p); + float3 f = frac(p); + // Quintic smoothstep: C2 continuous, so fBm sums do not show lattice creases where octaves align. + float3 u = f * f * f * (f * (f * 6.0 - 15.0) + 10.0); + float n000 = cloudHash(i + float3(0.0, 0.0, 0.0)); + float n100 = cloudHash(i + float3(1.0, 0.0, 0.0)); + float n010 = cloudHash(i + float3(0.0, 1.0, 0.0)); + float n110 = cloudHash(i + float3(1.0, 1.0, 0.0)); + float n001 = cloudHash(i + float3(0.0, 0.0, 1.0)); + float n101 = cloudHash(i + float3(1.0, 0.0, 1.0)); + float n011 = cloudHash(i + float3(0.0, 1.0, 1.0)); + float n111 = cloudHash(i + float3(1.0, 1.0, 1.0)); + return lerp(lerp(lerp(n000, n100, u.x), lerp(n010, n110, u.x), u.y), + lerp(lerp(n001, n101, u.x), lerp(n011, n111, u.x), u.y), u.z); +} + +// Lacunarity 2.02 rather than 2.0: an exact doubling makes octaves share lattice planes and produces +// faint axis-aligned grid structure in the result. +float cloudFbm(float3 p, int octaves) { + float sum = 0.0; + float amplitude = 0.5; + float normalization = 0.0; + for (int i = 0; i < octaves; ++i) { + sum += amplitude * cloudValueNoise(p); + normalization += amplitude; + p *= 2.02; + amplitude *= 0.5; + } + return sum / max(normalization, 1.0e-6); +} + +// ---- Density ----------------------------------------------------------------------------------------- + +// Vertical profile: a soft rounded base and a wider billowing top, both zero at the deck boundaries so the +// march never terminates against a hard slab face. +float cloudHeightProfile(float relativeHeight) { + float h = clamp(relativeHeight, 0.0, 1.0); + float base = smoothstep(0.0, 0.22, h); + float top = 1.0 - smoothstep(0.55, 1.0, h); + return base * top; +} + +public float cloudDensity(CloudParams c, float3 position) { + float relativeHeight = (position.y - c.bottomY) / c.thickness; + if (relativeHeight <= 0.0 || relativeHeight >= 1.0) { + return 0.0; + } + float profile = cloudHeightProfile(relativeHeight); + if (profile <= 0.0) { + return 0.0; + } + + // Base shape. The horizontal scale is deliberately far coarser than the vertical one: cumulus fields + // are wide and shallow, and isotropic noise at this scale reads as fog banks rather than as clouds. + float3 domain = float3(position.x + c.wind.x, position.y, position.z + c.wind.y); + float3 baseCoord = float3(domain.x * 0.0012, domain.y * 0.0035, domain.z * 0.0012); + float shape = cloudFbm(baseCoord, 4); + + // Coverage as a threshold remap, not a multiply. Multiplying would raise a flat haze everywhere as + // coverage rises; subtracting a threshold and renormalizing grows the clouds that exist outward from + // their cores, which is what an advancing front actually looks like. + float threshold = 1.0 - c.coverage; + float shaped = saturate((shape - threshold) / max(1.0 - threshold, 1.0e-3)); + shaped *= profile; + if (shaped <= 0.0) { + return 0.0; + } + + // Erosion, applied as an inward carve whose strength falls off with density. Eroding the core as hard + // as the edge would punch holes through the middle of every cloud. + if (c.detail > 0.0) { + float3 detailCoord = float3(domain.x * 0.012, domain.y * 0.020, domain.z * 0.012); + float erosion = 1.0 - cloudFbm(detailCoord, 3); + float strength = c.detail * (1.0 - shaped); + shaped = saturate(shaped - erosion * erosion * strength); + } + + return shaped * c.density; +} + +// ---- Ground shadowing --------------------------------------------------------------------------------- +// +// The deck is marched only on celestial-visible rays, so without this the world underneath is lit as if +// the sky were clear: an overcast noon stays as bright as a clear one, which is the single most obviously +// wrong thing about a cloud layer that only exists in the sky. +// +// This is a separate, deliberately coarse march along the shadow ray. Two departures from the view march, +// both intentional: +// +// * two octaves, no erosion. A cloud shadow reaching the ground has been diffused through hundreds of +// blocks of forward scattering; the deck's fine edge structure is simply not present in it. Marching +// the detail octaves here would cost more and produce a crisper shadow than physics allows. +// * a transmittance floor. Beer's law through a dense deck goes to near zero, but real overcast ground +// is not black — it is lit by light that scattered through the deck and arrives diffusely. That +// multiple-scattering path is not modelled, so the floor stands in for it. Without it, storms +// produce a world lit only by block light, which looks broken rather than dark. + +public static const int CLOUD_SHADOW_STEPS = 8; + +float cloudDensityCoarse(CloudParams c, float3 position) { + float relativeHeight = (position.y - c.bottomY) / c.thickness; + if (relativeHeight <= 0.0 || relativeHeight >= 1.0) { + return 0.0; + } + float3 domain = float3(position.x + c.wind.x, position.y, position.z + c.wind.y); + float shape = cloudFbm(float3(domain.x * 0.0012, domain.y * 0.0035, domain.z * 0.0012), 2); + float threshold = 1.0 - c.coverage; + return saturate((shape - threshold) / max(1.0 - threshold, 1.0e-3)) + * cloudHeightProfile(relativeHeight) * c.density; +} + +// Fraction of celestial light reaching `position` through the deck. `strength` scales the optical depth; +// `floorValue` is the multiple-scattering floor described above. +public float cloudShadowTransmittance(CloudParams c, float3 position, float3 lightDir, + float strength, float floorValue) { + if (!cloudsActive(c) || strength <= 0.0) { + return 1.0; + } + // A receiver above the deck is not shadowed by it, and a light below the horizon contributes nothing + // worth marching for. + if (position.y >= c.bottomY + c.thickness || lightDir.y <= 0.01) { + return 1.0; + } + float tNear; + float tFar; + if (!cloudSlabRange(c, position, lightDir, tNear, tFar)) { + return 1.0; + } + // Cap the slant path: at low sun the geometric distance through the deck grows without bound, and an + // unclamped march makes the world snap to the shadow floor for the last few minutes before sunset. + float span = min(tFar - tNear, c.thickness * 4.0); + float step = span / float(CLOUD_SHADOW_STEPS); + float opticalDepth = 0.0; + float t = tNear + step * 0.5; + for (int i = 0; i < CLOUD_SHADOW_STEPS; ++i) { + opticalDepth += cloudDensityCoarse(c, position + lightDir * t) * step; + t += step; + } + return lerp(clamp(floorValue, 0.0, 1.0), 1.0, exp(-opticalDepth * strength)); +} + +// ---- Rain wetness ------------------------------------------------------------------------------------- +// +// A wet surface is not just a darker surface. Two things happen physically, and doing only the first is +// the usual mistake: +// +// 1. A water film fills the surface's microscopic pores. Light entering the film is trapped by total +// internal reflection at the film's top and bounces inside until it is absorbed, so less of it comes +// back out — the surface darkens. Porous materials (dirt, wool, sand) darken far more than sealed +// ones (glass, metal), which is why the effect scales with roughness here: in the absence of a +// porosity channel, authored roughness is the best available proxy for it. +// +// 2. The film's own top surface is smooth, so the material gains a sharp specular lobe it did not have +// dry. This is what actually reads as "wet" — the darkening alone just looks like a texture swap. +// +// Applied only to upward-facing surfaces: rain lands on horizontal faces, runs off vertical ones, and +// never reaches undersides. + +public static const float WETNESS_DARKENING = 0.45; // strongest albedo loss, for a fully porous surface +public static const float WETNESS_SMOOTHNESS = 0.15; // roughness a fully wet surface tends toward + +// `skyExposure` is the caller's upward visibility test — rain does not reach a surface under a roof. +public void applyWetness(float wetness, float skyExposure, float3 normal, + inout float3 albedo, inout float rough) { + float wet = clamp(wetness, 0.0, 1.0) * clamp(skyExposure, 0.0, 1.0); + // Fade over the upper hemisphere rather than a hard n.y > 0 test, so a sloped face does not show a + // seam against the flat one next to it. + wet *= smoothstep(0.0, 0.35, normal.y); + if (wet <= 0.0) { + return; + } + // Roughness stands in for porosity: a rough surface has pores to fill, a polished one does not. + float porosity = rough; + albedo *= 1.0 - WETNESS_DARKENING * porosity * wet; + // Toward, not to: even a wet gravel path keeps some of its own scatter, and driving roughness to the + // film value outright turns every wet surface into a mirror. + rough = lerp(rough, max(WETNESS_SMOOTHNESS, rough * 0.25), wet); +} + +// ---- Phase and light march --------------------------------------------------------------------------- + +float cloudHenyeyGreenstein(float cosTheta, float g) { + float gg = g * g; + float denom = 1.0 + gg - 2.0 * g * cosTheta; + return (1.0 - gg) / (4.0 * SKY_PI * max(denom * sqrt(max(denom, 1.0e-6)), 1.0e-6)); +} + +float cloudPhase(float cosTheta) { + return lerp(cloudHenyeyGreenstein(cosTheta, CLOUD_HG_BACKWARD), + cloudHenyeyGreenstein(cosTheta, CLOUD_HG_FORWARD), CLOUD_HG_MIX); +} + +// Optical depth from a point toward the light. Steps grow geometrically: near samples decide the visible +// shading gradient, far ones only need to establish that the light is or is not deeply buried. +float cloudLightOpticalDepth(CloudParams c, float3 position, float3 lightDir) { + float opticalDepth = 0.0; + float step = max(c.thickness * 0.08, 1.0); + float travelled = 0.0; + for (int i = 0; i < CLOUD_LIGHT_STEPS; ++i) { + travelled += step; + opticalDepth += cloudDensity(c, position + lightDir * travelled) * step; + step *= 1.5; + } + return opticalDepth; +} + +// Beer's law with the powder correction. Pure Beer's law makes a cloud brightest exactly where it is +// densest on the lit side, which is backwards: light entering a dense boundary scatters back out of the +// surface it entered through, leaving a characteristic dark rim. The (1 - e^-2d) factor restores it. +float cloudBeerPowder(float opticalDepth) { + float beer = exp(-opticalDepth); + float powder = 1.0 - exp(-opticalDepth * 2.0); + return beer * lerp(1.0, powder * 2.0, 0.5); +} + +// ---- Slab intersection ------------------------------------------------------------------------------- + +// Returns false when the ray never meets the deck: below it looking down, above it looking up, or level +// enough to never cross either plane. +bool cloudSlabRange(CloudParams c, float3 origin, float3 direction, out float tNear, out float tFar) { + tNear = 0.0; + tFar = 0.0; + float bottom = c.bottomY; + float top = c.bottomY + c.thickness; + if (abs(direction.y) < 1.0e-5) { + if (origin.y <= bottom || origin.y >= top) { + return false; + } + tNear = 0.0; + tFar = CLOUD_MAX_MARCH; + return true; + } + float t0 = (bottom - origin.y) / direction.y; + float t1 = (top - origin.y) / direction.y; + tNear = max(min(t0, t1), 0.0); + tFar = min(max(t0, t1), CLOUD_MAX_MARCH); + return tFar > tNear; +} + +// ---- March ------------------------------------------------------------------------------------------- + +public struct CloudResult { + public float3 scattering; // linear BT.709 radiance scattered toward the viewer + public float transmittance; // what fraction of the sky behind the deck survives +}; + +public CloudResult marchClouds(CloudParams c, SkyState state, float3 origin, float3 direction) { + CloudResult result; + result.scattering = float3(0.0, 0.0, 0.0); + result.transmittance = 1.0; + if (!cloudsActive(c)) { + return result; + } + float tNear; + float tFar; + if (!cloudSlabRange(c, origin, direction, tNear, tFar)) { + return result; + } + + // Whichever body is up drives the deck. Blending the two would double-light the deck through dawn and + // dusk, when both are near the horizon and both transmittances are near zero anyway. + bool sunUp = state.sunDir.y >= state.moonDir.y; + float3 lightDir = sunUp ? state.sunDir : state.moonDir; + float3 lightIrradiance = (sunUp ? state.sunIlluminance : state.moonIlluminance) + * transmittanceToSpace(transmittanceLut, state.viewerRadiusKm, lightDir, + sunUp ? state.sunAngularRadius : state.moonAngularRadius); + + // Multiple scattering inside the deck is not marched. Standing in for it: the sky's own radiance from + // straight up, which is where a cloud's shadowed underside actually gets most of its light. + float2 zenithUv = skyViewLutUv(state.viewerRadiusKm, 1.0, + lightViewCosine(float3(0.0, 1.0, 0.0), lightDir), sunUp ? SKY_VIEW_BODY_SUN : SKY_VIEW_BODY_MOON); + float3 ambient = skyViewLut.SampleLevel(zenithUv, 0.0).rgb * c.ambient; + + float phase = cloudPhase(dot(direction, lightDir)); + float stepSize = (tFar - tNear) / float(CLOUD_VIEW_STEPS); + float t = tNear + stepSize * 0.5; + + for (int i = 0; i < CLOUD_VIEW_STEPS; ++i) { + float3 position = origin + direction * t; + float density = cloudDensity(c, position); + if (density > 0.0) { + float lightDepth = cloudLightOpticalDepth(c, position, lightDir); + float3 inScatter = lightIrradiance * phase * cloudBeerPowder(lightDepth) + ambient; + + // Energy-conserving integration of the segment rather than a rectangle rule on radiance: + // integrate(0..dt) L * sigma * e^(-sigma*s) ds = L * (1 - e^(-sigma*dt)). This stays correct as + // step size changes, so raising CLOUD_VIEW_STEPS refines the silhouette without also changing + // how bright the deck is. + float segmentTransmittance = exp(-density * stepSize); + result.scattering += result.transmittance * inScatter * (1.0 - segmentTransmittance); + result.transmittance *= segmentTransmittance; + if (result.transmittance < CLOUD_MIN_TRANSMITTANCE) { + result.transmittance = 0.0; + break; + } + } + t += stepSize; + } + return result; +} diff --git a/shaders/pipelines/world/fog.slang b/shaders/pipelines/world/fog.slang new file mode 100644 index 000000000..df0c026fe --- /dev/null +++ b/shaders/pipelines/world/fog.slang @@ -0,0 +1,123 @@ +// Exponential height fog, integrated analytically per path segment. Depends on sky and bindings. +// +// This is aerial perspective for the block-scale world, not the planet-scale atmosphere: sky.slang's LUTs +// already carry Rayleigh/Mie/ozone over 100 km, but their density at the 0-320 block range the player +// actually looks through is far too low to read as fog. This module adds a second, thin, tunable medium +// that lives entirely inside the render distance. +// +// It is applied as an AFFINE operation on radiance, not as a throughput multiply. A throughput-only +// exp(-sigma*t) — which is all the existing water/glass path does — is pure absorption, and pure +// absorption sends the horizon to black rather than to sky colour. Fog needs the in-scatter term too: +// +// L' = L * T + Lin * (1 - T) +// +// so every call site has to hand over both the accumulated radiance and the throughput. That is why this +// is a helper taking two inout parameters rather than something foldable into MediumStack: the medium +// stack is deliberately a pure-extinction abstraction and this would have quietly broken that invariant +// for water and glass as well. +// +// The in-scatter radiance is the SKY VIEW LUT sampled in the ray's own direction, not a configured +// colour. That is the whole reason this reads as atmosphere rather than as a grey wash: fog at sunset is +// orange toward the sun and blue away from it, fog at night falls to the airglow floor, and fog under an +// overcast look package tracks whatever the LUT bake produced — all for free, and all guaranteed to match +// the sky the miss shader draws, because it is literally the same texture. +// +// Transmittance is deliberately scalar rather than per-channel. Real fog is Mie-dominated and close to +// spectrally flat at these distances, and a scalar T lets the whole thing cost one exp and one LUT pair. + +import world_common; +import sky; +import medium; +import bindings; + +// The trace tmax. Integrating a miss out to this distance is correct rather than arbitrary: an upward ray +// converges (the exponential integral is finite as t goes to infinity), and a horizontal ray at the +// reference height saturates to full fog, which is exactly what a fogged horizon should do. +public static const float FOG_MAX_DISTANCE = 10000.0; + +// Keeps exp() finite for a viewer far under the reference plane or a steep downward ray in a thin fog. +// e^60 is already past anything that survives the 1 - T below, so clamping here costs nothing visible. +static const float FOG_EXP_CLAMP = 60.0; + +public struct FogParams { + public float sigma; // extinction per block at referenceY. 0 disables the whole module. + public float falloff; // 1 / scale height, per block + public float referenceY; // rebased world Y at which density is sigma + public float albedo; // single-scattering albedo; 1 is a perfectly scattering (non-absorbing) fog +}; + +public FogParams makeFogParams(WorldPush push) { + FogParams f; + f.sigma = max(push.fog.x, 0.0); + f.falloff = max(push.fog.y, 0.0); + f.referenceY = push.fog.z; + f.albedo = clamp(push.fog.w, 0.0, 1.0); + return f; +} + +public bool fogActive(FogParams f) { + return f.sigma > 0.0; +} + +// Fog exists in air only. Inside water or glass that medium's own Beer-Lambert extinction is already the +// correct and complete answer, and layering a second medium on top would double-count the attenuation. +public bool fogAppliesTo(Medium m) { + return !m.water && all(m.extinction <= 0.0); +} + +// Optical depth of an exponential-density slab along ro + rd*s for s in [0, t]. +// +// n(y) = exp(-(y - referenceY) * falloff) +// tau = sigma * integral of n(ro.y + rd.y*s) ds +// = sigma * a * (1 - exp(-b*t)) / b, a = n(ro.y), b = rd.y * falloff +// +// The b -> 0 limit (a level ray, which is the common case when looking at the horizon) is the removable +// singularity sigma*a*t, taken by an explicit branch rather than by an epsilon in the denominator. +public float fogOpticalDepth(FogParams f, float3 ro, float3 rd, float t) { + float travel = clamp(t, 0.0, FOG_MAX_DISTANCE); + if (travel <= 0.0) { + return 0.0; + } + float density = exp(-clamp((ro.y - f.referenceY) * f.falloff, -FOG_EXP_CLAMP, FOG_EXP_CLAMP)); + float b = rd.y * f.falloff; + float integral; + if (abs(b) < 1.0e-5) { + integral = density * travel; + } else { + integral = density * (1.0 - exp(-clamp(b * travel, -FOG_EXP_CLAMP, FOG_EXP_CLAMP))) / b; + } + return f.sigma * max(integral, 0.0); +} + +// Radiance scattered into the ray by the fog. Two LUT fetches, matching the miss shader's skyDome: the +// sun slice plus the moon slice, then the isotropic airglow floor so night fog settles at the same +// luminance the night sky does instead of going black. sky.slang works in linear BT.709; the path +// integral is ACEScg, so this crosses the same seam the miss shader does, in the same place. +public float3 fogInscatter(FogParams f, float3 rd, SkyState state) { + float2 sunUv = skyViewLutUv(state.viewerRadiusKm, rd.y, + lightViewCosine(rd, state.sunDir), SKY_VIEW_BODY_SUN); + float2 moonUv = skyViewLutUv(state.viewerRadiusKm, rd.y, + lightViewCosine(rd, state.moonDir), SKY_VIEW_BODY_MOON); + float3 sky709 = skyViewLut.SampleLevel(sunUv, 0.0).rgb + + skyViewLut.SampleLevel(moonUv, 0.0).rgb + + state.airglowLuminance; + return bt709ToAcesCg(max(sky709, float3(0.0))) * f.albedo; +} + +// Fold one travelled segment into the path. Call once per segment, BEFORE the segment's endpoint +// contributes anything to L, so that the in-scatter enters at this segment's throughput and everything +// beyond it is attenuated by this segment's transmittance. +public void applyFogSegment(FogParams f, SkyState state, Medium medium, + float3 ro, float3 rd, float t, + inout float3 L, inout float3 throughput) { + if (!fogActive(f) || !fogAppliesTo(medium)) { + return; + } + float tau = fogOpticalDepth(f, ro, rd, t); + if (tau <= 0.0) { + return; + } + float transmittance = exp(-tau); + L += throughput * fogInscatter(f, rd, state) * (1.0 - transmittance); + throughput *= transmittance; +} diff --git a/shaders/pipelines/world/indirect.rgen.slang b/shaders/pipelines/world/indirect.rgen.slang index 2df3dc6ab..374c82089 100644 --- a/shaders/pipelines/world/indirect.rgen.slang +++ b/shaders/pipelines/world/indirect.rgen.slang @@ -31,6 +31,8 @@ import trace_ser; import lighting; import sky; import bindings; +import fog; +import clouds; // Atmospheric transmittance LUT (RtSkyLut), also bound to world.rmiss at the same binding: raygen reads it // to colour the NEE sun/moonlight, the miss shader reads it to tint the visible discs and stars. @@ -61,6 +63,14 @@ public float3 tracePath(PathSegment seg, uint2 pix, uint sampleIndex) { // (so the first ray already carries the right relative index and absorption); for a segment split off // a dielectric it is whatever the parent was travelling through. MediumStack medium = seg.medium; + FogParams fog = makeFogParams(worldPush); + SkyState fogSky = skyState(worldPush); + // Cloud shadowing runs on shadow rays, which every bounce casts, so unlike the view march it is + // affordable here — a coarse 8-step march of a 2-octave field, and only when a deck exists at all. + CloudParams shadowClouds = makeCloudParams(worldPush); + float cloudShadowStrength = worldPush.cloud2.x; + float cloudShadowFloor = worldPush.cloud2.y; + float wetness = worldPush.cloud2.z; bool waterWaves = (worldPush.flags & 16u) != 0u; // animated wave-normal perturbation // Sky-disc gate (see world.rmiss): the sun/moon disc is shown to the primary ray and to rays spawned // by a specular/dielectric bounce (mirror reflections + refractions of the sun/moon), but hidden from @@ -73,6 +83,20 @@ public float3 tracePath(PathSegment seg, uint2 pix, uint sampleIndex) { // remains active with its full configured candidate count at every hit. Pass A's primary/interface // prefix is outside this SSS quality budget. int indirectDepth = 0; + // Pass A consumed the camera -> first-dielectric prefix, so Pass B never walks it and would leave the + // fog off anything seen through water or glass. Re-integrate that prefix here as a straight segment + // from the eye to this record's origin. Refraction bent the real path, but fog is a smooth function + // of position over tens of blocks and the bend is sub-block, so the straight-line approximation is + // below the noise floor. Both Fresnel branches get it, each weighted by its own throughput, and those + // two throughputs sum to one — so the in-scatter is added once, not twice. + if (seg.bounce > 0 && fogActive(fog)) { + float3 fromEye = ro - worldPush.camOffset; + float prefix = length(fromEye); + if (prefix > 1.0e-3) { + applyFogSegment(fog, fogSky, airMedium(), worldPush.camOffset, fromEye / prefix, prefix, + L, throughput); + } + } for (int bounce = seg.bounce; bounce <= maxBounces; bounce++) { // Radiance SBT records run any-hit only for true alpha cutout. Translucent/water go straight to // closest-hit for dielectric handling. Geometry is double-sided; the chit flips the normal. @@ -100,6 +124,11 @@ public float3 tracePath(PathSegment seg, uint2 pix, uint sampleIndex) { // world.rmiss writes sky radiance (gradient + sun/moon disc + stars) into the payload's // surface words as a full float3, so this is absolute scene units with nothing to undo. The // packed show-celestial flag decides whether this path segment may see the bright disc. + // Fog first: the escaping ray still crossed the whole fogged column, so the sky it reveals is + // attenuated by that column and the column's own in-scatter is added in front of it. At the + // horizon the two converge on the same sky-view texel, which is why a fogged horizon fades + // INTO the sky instead of forming a visible band against it. + applyFogSegment(fog, fogSky, medium.current, ro, rd, FOG_MAX_DISTANCE, L, throughput); float3 sky = payloadSky(); L += throughput * sky; // escaped to sky break; @@ -112,6 +141,9 @@ public float3 tracePath(PathSegment seg, uint2 pix, uint sampleIndex) { if (any(medium.current.extinction > 0.0)) { throughput *= exp(-medium.current.extinction * payload.hitT); } + // Air only — applyFogSegment gates on the medium itself, so a segment inside water or glass is a + // no-op here and its own extinction above remains the complete answer. + applyFogSegment(fog, fogSky, medium.current, ro, rd, payload.hitT, L, throughput); float3 n = payloadNormal(); // oriented toward the incoming ray by the closest-hit float3 hitPos = ro + rd * payload.hitT; @@ -212,6 +244,8 @@ public float3 tracePath(PathSegment seg, uint2 pix, uint sampleIndex) { if (ndl > 0.0) { float3 shadowOrigin = hitPos + (signedNdl >= 0.0 ? n : -n) * SURF_BIAS; float3 vis = visibility(shadowOrigin, lightDir, 10000.0).transmittance; + vis *= cloudShadowTransmittance(shadowClouds, hitPos, lightDir, + cloudShadowStrength, cloudShadowFloor); if (max(vis.r, max(vis.g, vis.b)) > 0.0) { L += throughput * albedo * INV_PI * celestialLight.illuminance * ndl * vis; } @@ -253,6 +287,15 @@ public float3 tracePath(PathSegment seg, uint2 pix, uint sampleIndex) { // reflection sharp instead of accumulating it as a glossy lobe. bool exactSpecular = isDeltaAlpha(rough); rough = exactSpecular ? 0.0 : rough; + // Rain wetness. The upward visibility test is an extra ray per shaded vertex, so it is gated on + // there being rain at all: in clear weather this costs one comparison. The ray is short — 320 + // blocks clears any plausible build without paying for a full-height trace — and only its + // luminance is used, so a surface under stained glass is treated as partly exposed, which is + // closer to right than a binary test. + if (wetness > 0.0 && n.y > 0.0) { + float skyExposure = luminance(visibility(p, float3(0.0, 1.0, 0.0), 320.0).transmittance); + applyWetness(wetness, skyExposure, n, albedo, rough); + } float3 diffAlb = albedo * (1.0 - metal); float3 F0 = payload.f0; @@ -287,7 +330,12 @@ public float3 tracePath(PathSegment seg, uint2 pix, uint sampleIndex) { float ndl = max(0.0, dot(n, lightDir)); if (ndl > 0.0) { VisibilityResult shadow = visibility(p, lightDir, 10000.0); - float3 vis = shadow.transmittance; + // The deck attenuates the light before it ever reaches the geometry, so it multiplies the + // shadow ray's visibility rather than the illuminance: same term, and it stays correct when + // the caustic factor below scales the whole NEE contribution. + float3 vis = shadow.transmittance + * cloudShadowTransmittance(shadowClouds, p, lightDir, + cloudShadowStrength, cloudShadowFloor); // Underwater receiver whose shadow ray crossed a water surface: scale the direct light by // the wave-refraction caustic at the exit point. Focusing scales the incident irradiance, // so it applies to the whole NEE term (diffuse + specular). @@ -337,6 +385,8 @@ public float3 tracePath(PathSegment seg, uint2 pix, uint sampleIndex) { visB *= waterCaustic(hitPos + lightDir * shadowBack.waterHitT, lightDir, shadowBack.waterHitT); } + visB *= cloudShadowTransmittance(shadowClouds, hitPos, lightDir, + cloudShadowStrength, cloudShadowFloor); if (max(visB.r, max(visB.g, visB.b)) > 0.0) { float cosT = dot(lightDir, rd); L += throughput * diffAlb * sss * SSS_STRENGTH * hg(cosT, SSS_G) * backNdl * celestialLight.illuminance * visB; diff --git a/shaders/pipelines/world/sky.rmiss.slang b/shaders/pipelines/world/sky.rmiss.slang index 112bda7a4..d255907a3 100644 --- a/shaders/pipelines/world/sky.rmiss.slang +++ b/shaders/pipelines/world/sky.rmiss.slang @@ -14,6 +14,7 @@ import world_common; import sky; import bindings; +import clouds; // Vanilla celestials atlas (sun + moon-phase sprites), bound by RtComposite. Sampled with an explicit LOD // (a miss shader has no derivatives). Keeping the real sprites means a resource pack's sun and moon still @@ -151,6 +152,22 @@ void main(inout Payload payload) { // zero below the horizon, matching the NEE visibility test. } + // Cloud deck, composited over everything above. It sits at a few hundred blocks while the sky LUT + // models 100 km, so the deck is treated as a thin layer in front of the whole atmosphere: attenuate + // what is behind it, add what it scatters. Stars and the sun/moon discs are correctly occluded by + // this because they were accumulated into `color` above. + // + // Gated on showCelestial, which is exactly the set of rays that already pay for disc sprites: the + // primary ray and specular/dielectric continuations. A diffuse bounce's miss skips the march + // entirely and sees clear sky — see the cost note in clouds.slang. + if (showCelestial) { + CloudParams cloudParams = makeCloudParams(worldPush); + if (cloudsActive(cloudParams)) { + CloudResult deck = marchClouds(cloudParams, state, WorldRayOrigin(), dir); + color = color * deck.transmittance + deck.scattering; + } + } + // The sky goes out in absolute scene units at full fp32 — packSky writes the payload's three surface // words as raw floats rather than halves, which is why the sun disc's ~1e5 cd/m² needs neither a // pre-exposure scale nor a clamp to stay representable. The fp16 ceiling reappears only at world.rgen's diff --git a/shaders/pipelines/world/world_common.slang b/shaders/pipelines/world/world_common.slang index bc297ab81..3f4968ed9 100644 --- a/shaders/pipelines/world/world_common.slang +++ b/shaders/pipelines/world/world_common.slang @@ -88,6 +88,21 @@ public struct WorldPush { // near mid-grey at any scene brightness; the display pass divides it back out, so the two cancel // exactly and this cannot change the image. 1.0 disables it. public float preExposure; + // ---- Height fog. x extinction per block at the reference height (0 disables), y 1/scale-height, + // z reference world Y in REBASED coordinates (Java subtracts the terrain origin, so this stays a + // small number as the player moves), w single-scattering albedo. Integrated analytically in + // fog.slang; the in-scatter colour comes from the sky view LUT, so nothing about the fog's colour + // lives here. + public float4 fog; + // ---- Cloud deck. cloud0: x coverage 0..1 (0 disables), y extinction per block at full density, + // z deck base as REBASED world Y, w deck thickness in blocks. cloud1: xy wind domain offset in + // blocks (advanced on the CPU so it is frame-rate independent and world-stable across a rebase), + // z detail erosion 0..1, w ambient multiple-scattering fraction. + public float4 cloud0; + public float4 cloud1; + // cloud2: x ground-shadow strength (0 disables shadowing without disabling the deck), y the + // multiple-scattering floor the shadow cannot darken past, z rain wetness 0..1, w unused. + public float4 cloud2; }; // 32-byte hot area-light record. Linear ACEScg radiance uses packed R11G11B10; the diff --git a/src/main/java/dev/comfyfluffy/caustica/CausticaConfig.java b/src/main/java/dev/comfyfluffy/caustica/CausticaConfig.java index 0088a319d..d8015e300 100644 --- a/src/main/java/dev/comfyfluffy/caustica/CausticaConfig.java +++ b/src/main/java/dev/comfyfluffy/caustica/CausticaConfig.java @@ -58,7 +58,7 @@ public static void ensureRegistered() { Object[] touch = { Rt.ENABLED, Rt.Composite.SPP, Rt.Composite.MAX_BOUNCES, Rt.Terrain.ASYNC_DISPATCH_PER_PASS, Rt.Omm.ENABLED, Rt.Entities.ENABLED, Rt.Entities.GLOW_ENABLED, Rt.EntityTextures.MAX_TEXTURES, Rt.DlssRr.ENABLED, Rt.Fg.ENABLED, - Rt.Reflex.ENABLED, Rt.Exposure.MODE, Rt.Tonemap.GAMMA, Rt.FrameStats.ENABLED, + Rt.Reflex.ENABLED, Rt.Fog.DENSITY, Rt.Clouds.COVERAGE, Rt.Grade.ENABLED, Rt.Tonemap.VIEW_TRANSFORM, Rt.Exposure.MODE, Rt.Tonemap.GAMMA, Rt.FrameStats.ENABLED, Rt.Screenshots.EXR_ENABLED, Rt.Hdr.ENABLED, Ngx.PATH, }; } @@ -92,6 +92,13 @@ private static void writeComments() { FILE.setComment("reflex", " NVIDIA Reflex. Requires supported NVIDIA hardware and drivers.\n" + " minimum-interval-us controls frame limiting; 0 disables the limit."); + FILE.setComment("fog", + " Exponential height fog. density is extinction per block at height (0 disables it);\n" + + " scale-height is how fast it thins going up. Fog colour is taken from the sky, not set here."); + FILE.setComment("clouds", + " Volumetric cloud deck. coverage 0 disables it entirely (and costs nothing).\n" + + " altitude is the deck base in world Y; thickness is its depth in blocks.\n" + + " Clouds are lit from the sun/moon through the same atmosphere as the sky, so they have no colour setting."); FILE.setComment("lights", " Controls direct lighting from glowing blocks such as torches, glowstone, and lava.\n" + " Set ris-candidates to 0 to disable it. stats, dump, and dump-radius are debugging options."); @@ -683,6 +690,143 @@ private Fg() { * The renderer configures the swapchain latency mode, paces frames with {@code vkLatencySleepNV}, * and emits simulation, render-submit, and present latency markers. */ + /** + * Exponential height fog. Off by default: {@code density} is the extinction per block at + * {@code height}, so 0 leaves the renderer bit-identical to a build without this feature. + * Colour is not configurable on purpose — the fog is lit from the sky-view LUT, so it tracks + * time of day and sun direction on its own. + */ + public static final class Fog { + /** Extinction per block at the reference height. ~0.004 is a light haze, ~0.03 is thick. */ + public static final FloatSetting DENSITY = + clampedFloat("caustica.rt.fog.density", "fog.density", 0.0f, 0.0f, 1.0f); + /** Blocks over which density falls by 1/e going up. Large values approach uniform distance fog. */ + public static final FloatSetting SCALE_HEIGHT = + clampedFloat("caustica.rt.fog.scaleHeight", "fog.scale-height", 24.0f, 1.0f, 1024.0f); + /** World Y at which density equals DENSITY. Sea level by default. */ + public static final FloatSetting HEIGHT = + clampedFloat("caustica.rt.fog.height", "fog.height", 62.0f, -512.0f, 1024.0f); + /** + * How strongly rain thickens the fog, as a multiple of density at full rain. Rain haze is + * the single biggest visual cue that it is raining at distance, so this defaults high. + */ + public static final FloatSetting WEATHER_RESPONSE = + clampedFloat("caustica.rt.fog.weatherResponse", "fog.weather-response", 3.0f, 0.0f, 32.0f); + /** + * How strongly biome climate modulates fog. Cold and wet biomes get more haze, hot and dry + * biomes less. 0 makes fog uniform everywhere. + */ + public static final FloatSetting BIOME_RESPONSE = + clampedFloat("caustica.rt.fog.biomeResponse", "fog.biome-response", 0.6f, 0.0f, 1.0f); + /** Single-scattering albedo. 1 scatters everything; lower values also absorb, darkening distance. */ + public static final FloatSetting ALBEDO = + clampedFloat("caustica.rt.fog.albedo", "fog.albedo", 0.92f, 0.0f, 1.0f); + + private Fog() { + } + } + + /** + * Volumetric cloud deck. Off by default: {@code coverage} 0 skips the march entirely, so a + * default build pays nothing. The deck is marched only on rays that may see the sun and moon + * discs (primary and specular), so it does not contribute to bounce lighting. + */ + public static final class Clouds { + /** 0 clear, 1 overcast. Raising it grows existing clouds outward rather than fading in haze. */ + public static final FloatSetting COVERAGE = + clampedFloat("caustica.rt.clouds.coverage", "clouds.coverage", 0.0f, 0.0f, 1.0f); + /** Extinction per block inside fully dense cloud. Higher reads as darker, more solid cumulus. */ + public static final FloatSetting DENSITY = + clampedFloat("caustica.rt.clouds.density", "clouds.density", 0.045f, 0.0f, 1.0f); + /** Deck base, world Y. Vanilla's cloud plane is 192. */ + public static final FloatSetting ALTITUDE = + clampedFloat("caustica.rt.clouds.altitude", "clouds.altitude", 192.0f, -512.0f, 4096.0f); + /** Deck depth in blocks. Thin decks read as stratus, thick ones as cumulus. */ + public static final FloatSetting THICKNESS = + clampedFloat("caustica.rt.clouds.thickness", "clouds.thickness", 90.0f, 1.0f, 2048.0f); + /** Domain drift in blocks per second. 0 freezes the deck. */ + public static final FloatSetting WIND_SPEED = + clampedFloat("caustica.rt.clouds.windSpeed", "clouds.wind-speed", 1.5f, 0.0f, 256.0f); + /** High-frequency edge erosion. 0 gives smooth blobs, 1 gives wispy, broken silhouettes. */ + public static final FloatSetting DETAIL = + clampedFloat("caustica.rt.clouds.detail", "clouds.detail", 0.45f, 0.0f, 1.0f); + /** + * How strongly vanilla weather drives the deck. 1 takes coverage to overcast and thickens + * and darkens the deck as rain and thunder ramp; 0 ignores weather entirely. + */ + public static final FloatSetting WEATHER_RESPONSE = + clampedFloat("caustica.rt.clouds.weatherResponse", "clouds.weather-response", 1.0f, 0.0f, 1.0f); + /** + * How strongly the deck shadows the world. 0 leaves the ground lit as if the sky were clear + * and skips the shadow march entirely; 1 is full Beer's law through the coarse deck. + */ + public static final FloatSetting SHADOW_STRENGTH = + clampedFloat("caustica.rt.clouds.shadowStrength", "clouds.shadow-strength", 1.0f, 0.0f, 4.0f); + /** + * Floor the cloud shadow cannot darken past, standing in for light that scatters through the + * deck and arrives diffusely. 0 gives physically-too-dark overcast; real overcast sits around + * 0.1-0.2 of clear-sky direct. + */ + public static final FloatSetting SHADOW_FLOOR = + clampedFloat("caustica.rt.clouds.shadowFloor", "clouds.shadow-floor", 0.15f, 0.0f, 1.0f); + /** + * How wet rain makes sky-exposed surfaces: darker and glossier while it rains. 0 disables the + * effect and its upward visibility ray. Snowy biomes are excluded automatically — snow does + * not wet a surface. + */ + public static final FloatSetting WETNESS = + clampedFloat("caustica.rt.clouds.wetness", "clouds.wetness", 1.0f, 0.0f, 1.0f); + /** Stand-in for in-cloud multiple scattering, as a fraction of zenith sky radiance. */ + public static final FloatSetting AMBIENT = + clampedFloat("caustica.rt.clouds.ambient", "clouds.ambient", 0.35f, 0.0f, 4.0f); + + private Clouds() { + } + } + + /** + * Scene-referred colour grading and output sharpening, both applied in the display pass. + * + *

The grade defaults reproduce the "Ultra Realism Tonemapper for UE5" post-process volume. + * They transfer exactly rather than approximately because UE's default working colour space is + * AP1, the same space this renderer paths in. Note the guide tuned those numbers against AgX + * Punchy; with the ACES 2.0 view transform they will land somewhere different, which is a + * reason to set {@code view-transform} to match, not a reason to change the numbers. + */ + public static final class Grade { + /** Master switch. Off leaves the display pass bit-identical to an ungraded build. */ + public static final BooleanSetting ENABLED = + bool("caustica.rt.grade.enabled", "grade.enabled", false); + public static final FloatSetting SATURATION = + clampedFloat("caustica.rt.grade.saturation", "grade.saturation", 0.75f, 0.0f, 4.0f); + public static final FloatSetting CONTRAST = + clampedFloat("caustica.rt.grade.contrast", "grade.contrast", 1.05f, 0.1f, 4.0f); + public static final FloatSetting GAIN = + clampedFloat("caustica.rt.grade.gain", "grade.gain", 1.30f, 0.0f, 8.0f); + /** Multiplies the global saturation inside the highlight region, as UE composes them. */ + public static final FloatSetting HIGHLIGHT_SATURATION = + clampedFloat("caustica.rt.grade.highlightSaturation", "grade.highlight-saturation", + 0.95f, 0.0f, 4.0f); + /** Multiplies the global gain inside the highlight region. */ + public static final FloatSetting HIGHLIGHT_GAIN = + clampedFloat("caustica.rt.grade.highlightGain", "grade.highlight-gain", + 1.60f, 0.0f, 8.0f); + /** Luma at which the highlight region starts blending in (UE's ColorCorrectionHighlightsMin). */ + public static final FloatSetting HIGHLIGHTS_MIN = + clampedFloat("caustica.rt.grade.highlightsMin", "grade.highlights-min", + 0.28f, 0.0f, 1.0f); + /** + * RCAS strength, 0 disables it and its four extra taps. Applied after the output transform + * on display code values — PQ code values on the HDR path — so a highlight receives the + * same apparent enhancement as a midtone rather than hundreds of times more overshoot. + */ + public static final FloatSetting SHARPNESS = + clampedFloat("caustica.rt.grade.sharpness", "grade.sharpness", 0.0f, 0.0f, 1.0f); + + private Grade() { + } + } + public static final class Reflex { public static final BooleanSetting ENABLED = bool("caustica.rt.reflex", "reflex.enabled", false); public static final BooleanSetting LOW_LATENCY_BOOST = @@ -813,6 +957,41 @@ private static String sanitizeMode(String value) { public static final class Tonemap { public static final FloatSetting GAMMA = clampedFloat("caustica.rt.tonemap.gamma", "tonemap.gamma", 1.0f, 0.1f, 5.0f); + /** + * SDR view transform: {@code aces2} (default), {@code agx-punchy}, or {@code agx-base}. + * The AgX options are baked from sobotka/AgX — the same config the "Ultra Realism + * Tonemapper for UE5" guide installs into Unreal — so this renderer and that Unreal setup + * resolve to the same image transform. + * + *

SDR ONLY. AgX has no HDR output transform; every view in that config terminates in a + * ~100 nit display encoding. When HDR output is enabled the PQ path stays ACES 2.0 whatever + * this is set to, so on an HDR display this setting changes nothing that reaches the screen. + */ + public static final StringSetting VIEW_TRANSFORM = + string("caustica.rt.tonemap.viewTransform", "tonemap.view-transform", + "aces2", Tonemap::sanitizeViewTransform); + + private static String sanitizeViewTransform(String value) { + if ("agx-punchy".equalsIgnoreCase(value)) { + return "agx-punchy"; + } + if ("agx-base".equalsIgnoreCase(value)) { + return "agx-base"; + } + return "aces2"; + } + + /** Resource name under {@code /caustica/color/luts/} for the selected SDR view transform. */ + public static String sdrLutResource() { + switch (VIEW_TRANSFORM.get()) { + case "agx-punchy": + return "sdr_agx_punchy_rec709.bin"; + case "agx-base": + return "sdr_agx_base_rec709.bin"; + default: + return "sdr_aces2_rec709.bin"; + } + } private Tonemap() { } diff --git a/src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java b/src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java index d65090f8c..e7f3f1b4b 100644 --- a/src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java +++ b/src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java @@ -604,7 +604,10 @@ public boolean composite(GpuTexture nativeColor, int width, int height) { debugPresentPipeline = RtDebugPresentPipeline.create(ctx); } if (sdrToneLut == null) { - sdrToneLut = RtToneLut.load(ctx, "sdr_aces2_rec709.bin"); + // SDR view transform is selectable: ACES 2.0 (the renderer's default) or either AgX + // appearance baked from sobotka/AgX. Only the SDR path branches — AgX has no HDR output + // transform, so the PQ path below stays ACES 2.0 regardless of this setting. + sdrToneLut = RtToneLut.load(ctx, CausticaConfig.Rt.Tonemap.sdrLutResource()); } // The mastering target is live, so track it each frame. int wantedHdrNits = CausticaConfig.Rt.Hdr.PEAK_NITS.value(); @@ -1121,6 +1124,85 @@ private void recordFrame(RtContext ctx, RtPipeline active, GpuTexture nativeColo // resolved slot rides along with the uploadPending() call right below. BreakEntry[] breaking = breakingEntries(terrain); SkyPush sky = skyPush(); + // Height fog. The reference plane is authored in world Y but the shader works in rebased + // coordinates, so the terrain origin is subtracted here rather than pushing the origin into + // the shader: it keeps the value small enough for fp32 no matter how far the player walks. + // falloff is 1/scale-height; the clamp only guards a hand-edited config, since the setting + // itself is already bounded away from zero. + // Weather and biome climate. Both are read once per frame from the camera's position: fog and + // a cloud deck are whole-sky properties, so sampling them per-pixel would buy nothing but a + // seam where two biomes meet. + // + // Vanilla interpolates rain and thunder over ~½ second, and getRainLevel already returns the + // smoothed value, so weather ramps in and out without any easing of ours. Thunder is layered + // on top of rain rather than replacing it — vanilla raises both during a storm. + float rainLevel = 0f; + float thunderLevel = 0f; + // Biome climate stands in for the per-biome sky colours that 26.2 no longer carries: + // BiomeSpecialEffects was reduced to water and foliage tints, so temperature and whether the + // biome has precipitation are the only atmosphere-relevant signals vanilla still exposes. + // Cold and wet reads as hazy, hot and dry as clear — the mapping a desert-vs-taiga eye test + // would produce anyway. + float biomeHaze = 1f; + float wetness = 0f; + if (level != null) { + rainLevel = Mth.clamp(level.getRainLevel(1.0f), 0f, 1f); + thunderLevel = Mth.clamp(level.getThunderLevel(1.0f), 0f, 1f); + var biome = level.getBiome(cameraBlockPos).value(); + // getBaseTemperature is roughly 0 (snowy) to 2 (desert/nether) in vanilla data. + float temperature = Mth.clamp(biome.getBaseTemperature(), 0f, 2f); + float climate = (1f - temperature * 0.5f) * (biome.hasPrecipitation() ? 1f : 0.35f); + float biomeResponse = CausticaConfig.Rt.Fog.BIOME_RESPONSE.value(); + biomeHaze = Mth.lerp(biomeResponse, 1f, 0.4f + climate * 1.2f); + // Wetness needs actual liquid water falling. A biome with no precipitation (desert) gets + // nothing, and one cold enough for snow gets nothing either — snow accumulates, it does + // not soak in, and a glossy snowfield would be plainly wrong. The 0.15 cutoff is where + // vanilla's own precipitation type flips. + boolean rainsHere = biome.hasPrecipitation() && biome.getBaseTemperature() > 0.15f; + wetness = rainsHere ? rainLevel * CausticaConfig.Rt.Clouds.WETNESS.value() : 0f; + } + // Rain multiplies fog density rather than adding to it, so a configured density of 0 stays + // 0 in a downpour. Weather driving a feature the user switched off would be a surprise. + float fogWeather = 1f + rainLevel * CausticaConfig.Rt.Fog.WEATHER_RESPONSE.value(); + float fogScaleHeight = Math.max(CausticaConfig.Rt.Fog.SCALE_HEIGHT.value(), 1.0e-2f); + Float4 fog = new Float4( + CausticaConfig.Rt.Fog.DENSITY.value() * fogWeather * biomeHaze, + 1.0f / fogScaleHeight, + CausticaConfig.Rt.Fog.HEIGHT.value() - terrain.blockY, + CausticaConfig.Rt.Fog.ALBEDO.value()); + + // Cloud deck. The wind offset is accumulated on the CPU from wall time rather than derived + // in the shader from frameIndex, so the deck drifts at a fixed blocks-per-second regardless + // of frame rate. Folding the terrain origin (mod 4096, same trick as the water wave anchor) + // into the offset keeps the noise domain pinned to the world across a terrain rebase — without + // it the whole sky would visibly slide sideways every time the player crossed a rebase + // boundary. The mask keeps the value small enough that fp32 still resolves the detail octave. + float cloudWind = CausticaConfig.Rt.Clouds.WIND_SPEED.value() * waterWaveTime; + // Storm response. Coverage closes the remaining gap toward overcast rather than adding a + // fixed amount, so a sky that is already at 0.8 does not overshoot past 1 and clip flat. + // Density rises and ambient falls together: that pairing — thicker and less sky bouncing + // around inside — is what makes a storm deck read as heavy rather than merely large. + float cloudWeather = CausticaConfig.Rt.Clouds.WEATHER_RESPONSE.value() + * Math.min(rainLevel + thunderLevel * 0.5f, 1f); + float cloudCoverage = CausticaConfig.Rt.Clouds.COVERAGE.value(); + cloudCoverage += (1f - cloudCoverage) * cloudWeather * 0.85f; + Float4 cloud0 = new Float4( + cloudCoverage, + CausticaConfig.Rt.Clouds.DENSITY.value() * (1f + cloudWeather * 1.5f), + CausticaConfig.Rt.Clouds.ALTITUDE.value() - terrain.blockY, + CausticaConfig.Rt.Clouds.THICKNESS.value()); + Float4 cloud1 = new Float4( + (terrain.blockX & WATER_ANCHOR_MASK) + cloudWind * 0.8f, + (terrain.blockZ & WATER_ANCHOR_MASK) + cloudWind * 0.6f, + CausticaConfig.Rt.Clouds.DETAIL.value(), + CausticaConfig.Rt.Clouds.AMBIENT.value() * (1f - cloudWeather * 0.55f)); + // Ground shadowing. The floor is lowered as the storm builds: a heavier deck really does pass + // less diffuse light, and holding the clear-sky floor through a thunderstorm is what makes an + // overcast world read as merely dimmed rather than actually overcast. + Float4 cloud2 = new Float4( + CausticaConfig.Rt.Clouds.SHADOW_STRENGTH.value(), + CausticaConfig.Rt.Clouds.SHADOW_FLOOR.value() * (1f - cloudWeather * 0.5f), + wetness, 0f); new WorldPushData( frameInvViewProj, new Float3((float) (camX - terrain.blockX), (float) (camY - terrain.blockY), @@ -1156,7 +1238,11 @@ private void recordFrame(RtContext ctx, RtPipeline active, GpuTexture nativeColo CausticaConfig.Rt.Lights.RIS_CANDIDATES.value(), // Must be the SAME value the exposure resolve divides out this frame (it reads it // from the same RtExposure accessor), or the two stop cancelling. - exposure.preExposure() + exposure.preExposure(), + fog, + cloud0, + cloud1, + cloud2 ).write(push); pushBuf.flush(0L, WORLD_PUSH_SIZE); // Upload any entity textures registered this frame into the bindless set before the trace. @@ -1262,7 +1348,15 @@ private void recordFrame(RtContext ctx, RtPipeline active, GpuTexture nativeColo RtFrameStats.Scope ignoredStats = RtFrameStats.FRAME.stage("frame.displayMap")) { displayPipeline.dispatch(cmd, displayW, displayH, CausticaConfig.Rt.Hdr.enabled(), sdrToneLut.size, CausticaConfig.Rt.Tonemap.GAMMA.value(), loadedHdrLutNits, - true, lookLut.size, LOOK.bloom().strength() / bloomLevels.length); + true, lookLut.size, LOOK.bloom().strength() / bloomLevels.length, + CausticaConfig.Rt.Grade.ENABLED.value(), + CausticaConfig.Rt.Grade.SATURATION.value(), + CausticaConfig.Rt.Grade.CONTRAST.value(), + CausticaConfig.Rt.Grade.GAIN.value(), + CausticaConfig.Rt.Grade.HIGHLIGHT_SATURATION.value(), + CausticaConfig.Rt.Grade.HIGHLIGHT_GAIN.value(), + CausticaConfig.Rt.Grade.HIGHLIGHTS_MIN.value(), + CausticaConfig.Rt.Grade.SHARPNESS.value()); } hdrWrittenThisFrame = CausticaConfig.Rt.Hdr.enabled(); VulkanCommandEncoder.memoryBarrier(cmd, stack); // display output visible to debug composite diff --git a/src/main/java/dev/comfyfluffy/caustica/rt/pipeline/RtDisplayPipeline.java b/src/main/java/dev/comfyfluffy/caustica/rt/pipeline/RtDisplayPipeline.java index 76ea79643..93b3ec2e7 100644 --- a/src/main/java/dev/comfyfluffy/caustica/rt/pipeline/RtDisplayPipeline.java +++ b/src/main/java/dev/comfyfluffy/caustica/rt/pipeline/RtDisplayPipeline.java @@ -204,13 +204,17 @@ public void setImages(long outputImageView, long rtImageView, long exposureImage */ public void dispatch(VkCommandBuffer cmd, int width, int height, boolean hdrEnabled, int lutSize, float gamma, float hdrPeakNits, boolean lookEnabled, int lookLutSize, - float bloomStrength) { + float bloomStrength, boolean gradeEnabled, float saturation, float contrast, + float gain, float highlightSaturation, float highlightGain, + float highlightsMin, float sharpness) { try (MemoryStack stack = MemoryStack.stackPush(); RtDebugLabels.Scope ignored = RtDebugLabels.scope(ctx, cmd, "display compute")) { VK10.vkCmdBindPipeline(cmd, VK10.VK_PIPELINE_BIND_POINT_COMPUTE, pipeline); VK10.vkCmdBindDescriptorSets(cmd, VK10.VK_PIPELINE_BIND_POINT_COMPUTE, pipelineLayout, 0, stack.longs(descriptorSet), null); ByteBuffer push = stack.malloc(DisplayPushData.BYTE_SIZE); new DisplayPushData(hdrEnabled ? 1 : 0, (float) lutSize, gamma, hdrPeakNits, - lookEnabled ? 1 : 0, (float) lookLutSize, bloomStrength).write(push); + lookEnabled ? 1 : 0, (float) lookLutSize, bloomStrength, + gradeEnabled ? 1 : 0, saturation, contrast, gain, + highlightSaturation, highlightGain, highlightsMin, sharpness).write(push); VK10.vkCmdPushConstants(cmd, pipelineLayout, VK10.VK_SHADER_STAGE_COMPUTE_BIT, 0, push); VK10.vkCmdDispatch(cmd, (width + 15) / 16, (height + 15) / 16, 1); } diff --git a/src/main/resources/caustica/color/luts/sdr_agx_base_rec709.bin b/src/main/resources/caustica/color/luts/sdr_agx_base_rec709.bin new file mode 100644 index 0000000000000000000000000000000000000000..c8e383135e9b94a4c8e53504306a421816ac5df5 GIT binary patch literal 2197020 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

Yd%wl+5O7GKrwWJew1YLdo@&?Zyu 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�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 zU;qOczyJm?fB_6(00S7n00uCC0SsUO0~o*n1~7mD3}65Q7{CAqFn|FJU;qOczyJm? zfB_6(00S7n00uCC0SsUO0~o*n1~7mD3}65Q7{CAqFn|FJU;qOczyJm?fB_6(00S7n z00uCC0SsUO0~o*n1~7mD3}65Q7{CAqFn|FJU;qOczyJm?fB_6(00S7n00uCC0SsUO z0~o*n1~7mD3}65Q7{CAqFn|FJU;qOczyJm?fB_6(00S7n00uCC0SsUO0~o*n1~7mD z3}65Q7{CAqFn|FJU;qOczyJm?fB_6(00S7n00uCC0SsUO0~o*n1~7mD3}65Q7{CAq zFn|FJU;qOczyJm?fB_6(00S7n00uCC0SsUO0~o*n1~7mD3}65Q7{CAqFn|FJU;qOc zzyJm?fB_6(00S7n00uCC0SsUO0~o*n1~7mD3}65Q7{CAqFn|FJU;qOczyJm?fB_6( z00S7n00uCC0SsUO0~o*n1~7mD3}65Q7{CAqFn|FJU;qOczyJm?fB_6(00S7n00uCC z0SsUO0~o*n1~7mD3}65Q7{CAqFn|FJU;qOczyJm?fB_6(00S7n00uCC0SsUO0~o*n z1~7mD3}65Q7{CAqFn|FJU;qOczyJm?fB_6(00S7n00uCC0SsUO0~o*n1~7mD3}65Q z7{CAqFn|FJU;qOczyJm?fB_6(00S7n00uCC0SsUO0~o*n1~7mD3}65Q7{CAqFn|FJ zU;qOczyJm?fB_6(00S7n00uCC0SsUO0~o*n1~7mD3}65Q7{CAqFn|FJU;qOczyJm? zfB_6(00S7n00uCC0SsUO0~o*n1~7mD3}65Q7{CAqFn|FJU;qOczyJm?fB_6(00S7n z00uCC0SsUO0~o*n1~7mD3}65Q7{CAqFn|FJU;qOczyJm?fB_6(00S7n00uCC0SsUO z0~o*n1~7mD3}65Q7{CAqFn|FJU;qOczyJm?fB_6(00S7n00uCC0SsUO0~o*n1~7mD z3}65Q7{CAqFn|FJU;qOczyJm?fB_6(00S7n00uCC0SsUO0~o*n1~7mD3}65Q7{CAq zFn|FJU;qOczyJm?fB_6(00S7n00uCC0SsUO0~o*n1~7mD3}65Q7{CAqFn|FJU;qOc zzyJm?fB_6(00S7n00uCC0SsUO0~o*n1~7mD3}65Q7{CAqFn|FJU;qOczyJm?fB_6( z00S7n00uCC0SsUO0~o*n1~7mD3}65Q7{CAqFn|FJU;qOczyJm?fB_6(00S7n00uCC z0SsUO0~o*n1~7mD3}65Q7{CAqFn|FJU;qOczyJm?fB_6(00S7n00uCC0SsUO0~o*n z1~7mD3}65Q7{CAqFn|FJU;qOczyJm?fB_6(00S7n00uCC0SsUO0~o*n1~7mD3}65Q z7{CAqFn|FJU;qOczyJm?fB_6(00S7n00uCC0SsUO0~o*n1~7mD3}65Q7{CAqFn|FJ zU;qOczyJm?fB_6(00S7n00uCC0SsUO0~o*n1~7mD3}65Q7{CAqFn|FJU;qOczyJm? zfB_6(00S7n00uCC0SsUO0~o*n1~7mD3}65Q7{CAqFn|FJU;qOczyJm?fB_6(00S7n z00uCC0SsUO0~o*n1~7mD3}65Q7{CAqFn|FJU;qOczyJm?fB_6(00S7n00uCC0SsUO z0~o*n1~7mD3}65Q7{CAqFn|FJU;qOczyJm?fB_6(00S7n00uCC0SsUO0~o*n1~7mD z3}65Q7{CAqFn|FJU;qOczyJm?fB_6(00S7n00uCC0SsUO0~o*n1~7mD3}65Q7{CAq zFn|FJU;qOczyJm?fB_6(00S7n00uCC0SsUO0~o*n1~7mD3}65Q7{CAqFn|FJU;qOc zzyJm?fB_6(00S7n00uCC0SsUO0~o*n1~7mD3}65Q7{CAqFn|FJU;qOczyJm?fB_6( z00S7n00uCC0SsUO0~o*n1~7mD3}65Q7{CAqFn|FJU;qOczyJm?fB_6(00S7n00uCC z0SsUO0~o*n1~7mD3}65Q7{CAqFn|FJU;qOczyJm?fB_6(00S7n00uCC0SsUO0~o*n z1~7mD3}65Q7{CAqFn|FJU;qOczyJm?fB_6(00S7n00uCC0SsUO0~o*n1~7mD3}65Q z7{CAqFn|FJU;qOczyJm?fB_6(00S7n00uCC0SsUO0~o*n1~7mD3}65Q7{CAqFn|FJ zU;qOczyJm?fB_6(00S7n00uCC0SsUO0~o*n1~7mD3}65Q7{CAqFn|FJU;qOczyJm? zfB_6(00S7n00uCC0SsUO0~o*n1~7mD3}65Q7{CAqFn|FJU;qOczyJm?fB_6(00S7n z00uCC0SsUO0~o*n1~7mD3}65Q7{CAqFn|FJU;qOczyJm?fB_6(00S7n00uCC0SsUO z0~o*n1~7mD3}65Q7{CAqFn|FJU;qOczyJm?fB_6(00S7n00uCC0SsUO0~o*n1~7mD r3}65Q7{CAqFn|FJU;qOczyJm?fB_6(00S7n00uCC0SsVZ;0^qLjt+AO literal 0 HcmV?d00001 diff --git a/src/main/resources/caustica/color/luts/sdr_agx_punchy_rec709.bin b/src/main/resources/caustica/color/luts/sdr_agx_punchy_rec709.bin new file mode 100644 index 0000000000000000000000000000000000000000..2b6ed056a0d83cbd3bd539e61d5f9367077a8eab GIT binary patch literal 2197020 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�b8 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

A2Az$YCp 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 wp@wSX` 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 z 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­HKuyTFSTr_8n6=Rtz#KX`* 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�r&q{v5I|Ml;D0JBgU}% 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

mpRm)n-u=tCcba%wJDzu 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 zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ MfB*pk=U(9d0Q?6-b^rhX literal 0 HcmV?d00001 diff --git a/tools/bake_display_lut.py b/tools/bake_display_lut.py index a06c055e1..98e4e3a36 100644 --- a/tools/bake_display_lut.py +++ b/tools/bake_display_lut.py @@ -50,6 +50,39 @@ # ACES 2.0's built-in BT.2020 transforms use these fixed HDR mastering targets. HDR_REC2020_NITS = [500, 1000, 2000, 4000] +# sobotka/AgX, the config the "Ultra Realism Tonemapper for UE5" guide installs into Unreal via OCIO. +# Baked here as an alternative SDR view transform so the same look is available without a second +# runtime dependency: the guide's Unreal setup and this LUT resolve to the same image transform. +# +# SDR ONLY, and not an oversight. Every view in this config terminates in a display encoding for a +# ~100 nit SDR device (sRGB, BT.1886, Display P3); AgX has no HDR output transform, so there is +# nothing to bake for the PQ path. The HDR LUTs stay ACES 2.0 whatever this is set to. +AGX_CONFIG_URL = "https://github.com/sobotka/AgX" # clone and pass --agx-config /config.ocio + +# ACEScg (AP1/D60) -> linear BT.709 (D65). This is the exact inverse of BT709_TO_ACESCG_* in +# world_common.slang rather than a matrix from a table: the renderer converts sRGB assets INTO ACEScg +# with that matrix, and the AgX config's input space is Linear BT.709, so inverting the renderer's own +# matrix makes the round trip exact instead of leaving a small residual tint on neutrals. +ACESCG_TO_BT709 = [ + [1.70505091, -0.62179208, -0.08325886], + [-0.13025641, 1.14080473, -0.01054832], + [-0.02400335, -0.12896898, 1.15297234], +] + +AGX_LUTS = [ + dict( + name="sdr_agx_punchy_rec709", + agx_space="Appearance Punchy sRGB", + note="SDR output, AgX Punchy appearance, sRGB-encoded BT.709. The guide's default choice; " + "less aggressive desaturation than AgX Base.", + ), + dict( + name="sdr_agx_base_rec709", + agx_space="AgX Base", + note="SDR output, AgX Base, sRGB-encoded BT.709. Stronger highlight desaturation than Punchy.", + ), +] + LUTS = [ dict( name="sdr_aces2_rec709", @@ -83,7 +116,22 @@ def shaper_axis(size: int) -> np.ndarray: return np.exp2(stops) +def make_agx_processor(agx_cfg: "OCIO.Config", spec: dict): + """ACEScg -> linear BT.709 -> the requested AgX appearance, as one processor.""" + matrix = [0.0] * 16 + for row in range(3): + for col in range(3): + matrix[row * 4 + col] = ACESCG_TO_BT709[row][col] + matrix[15] = 1.0 + grp = OCIO.GroupTransform() + grp.appendTransform(OCIO.MatrixTransform(matrix)) + grp.appendTransform(OCIO.ColorSpaceTransform(src="Linear BT.709", dst=spec["agx_space"])) + return agx_cfg.getProcessor(grp).getDefaultCPUProcessor() + + def make_processor(cfg: "OCIO.Config", spec: dict): + if "agx_space" in spec: + return make_agx_processor(cfg, spec) if "display_view" in spec: display, view = spec["display_view"] return cfg.getProcessor(SOURCE_SPACE, display, view, OCIO.TRANSFORM_DIR_FORWARD).getDefaultCPUProcessor() @@ -199,8 +247,25 @@ def main() -> None: metavar="PATH", help="replace the default look package's LMT from a normalized log-shaper .cube, then exit", ) + parser.add_argument( + "--agx-config", + type=Path, + metavar="PATH", + help=f"bake the AgX SDR view transforms from a sobotka/AgX config.ocio ({AGX_CONFIG_URL}), " + "then exit. The ACES 2.0 LUTs are left untouched.", + ) args = parser.parse_args() + if args.agx_config is not None: + agx_cfg = OCIO.Config.CreateFromFile(str(args.agx_config)) + digest = hashlib.sha256(Path(args.agx_config).read_bytes()).hexdigest() + print(f"baking AgX view transforms from {args.agx_config}; config SHA-256={digest}") + for spec in AGX_LUTS: + print(f"baking {spec['name']}: {spec['note']}") + rgb = bake_one(agx_cfg, spec, LUT_SIZE) + write_lut(OUT_DIR / f"{spec['name']}.bin", LUT_SIZE, rgb) + return + if args.import_lmt is not None: source_path = args.import_lmt size, rgb, title = read_shaper_cube(source_path) From 5ac44aefd8b94c325d72ef69b3844dd14385d0df Mon Sep 17 00:00:00 2001 From: KthanidKisure <161649271+KthanidKisure@users.noreply.github.com> Date: Thu, 27 Aug 2026 16:03:44 +0100 Subject: [PATCH 02/25] Add files via upload --- .../pipelines/world/closest_hit.rchit.slang | 128 ++++++++++++++++++ shaders/pipelines/world/clouds.slang | 17 ++- shaders/pipelines/world/fog.slang | 21 ++- shaders/pipelines/world/indirect.rgen.slang | 6 +- shaders/pipelines/world/sky.rmiss.slang | 27 +++- shaders/pipelines/world/world_common.slang | 16 +++ .../comfyfluffy/caustica/CausticaConfig.java | 41 +++++- .../comfyfluffy/caustica/rt/RtComposite.java | 78 ++++++++++- 8 files changed, 323 insertions(+), 11 deletions(-) diff --git a/shaders/pipelines/world/closest_hit.rchit.slang b/shaders/pipelines/world/closest_hit.rchit.slang index bf21f8859..e91fa98ee 100644 --- a/shaders/pipelines/world/closest_hit.rchit.slang +++ b/shaders/pipelines/world/closest_hit.rchit.slang @@ -101,6 +101,129 @@ float3 perturbNormal(float3 n, float3 p0, float3 p1, float3 p2, float2 t0, float return nm; } +// ---- Parallax occlusion mapping ------------------------------------------------------------------- +// +// Packs such as Patrix author most of their apparent depth into the LabPBR height channel (_n alpha) +// rather than into geometry. Caustica already ingests that channel -- RtBlockMaterials writes it to +// normalAo.a and RtMaterialTextureData carries it correctly down the mip chain -- but nothing has ever +// read it. This does. +// +// WHAT THIS IS AND IS NOT. This shifts the texture coordinate along the view ray through the height +// field, so surfaces gain real depth parallax: mortar lines sink, stones stand proud, and the whole +// thing shifts correctly as you move. It does NOT displace geometry, so SILHOUETTES STAY FLAT -- a +// block edge viewed side-on is still a straight line. Actual displacement in a path tracer needs the +// height field to exist as geometry the rays can hit, either tessellated into the BLAS or handled by a +// custom intersection shader, which is a different and much larger feature. Every real-time POM +// implementation makes this same trade. +// +// The offset is applied ONCE, before the albedo fetch, so albedo, roughness, F0 and the normal map all +// land on the same shifted coordinate. Offsetting only the material channels would slide them out of +// register with the colour and look worse than no POM at all. +// +// LabPBR height: 1.0 is the surface, 0.0 the deepest point, so depth = 1 - height. + +static const int POM_MAX_STEPS = 64; +static const int POM_REFINE_STEPS = 5; + +// Tangent frame for the hit triangle. Duplicated from perturbNormal rather than shared, because that +// function consumes it immediately and threading it out would change a signature every shading path +// depends on. Same maths; if one changes, change both. +bool hitTangentFrame(float3 n, float3 p0, float3 p1, float3 p2, float2 t0, float2 t1, float2 t2, + out float3 T, out float3 B) { + T = float3(1.0, 0.0, 0.0); + B = float3(0.0, 1.0, 0.0); + float2 g1 = t1 - t0; + float2 g2 = t2 - t0; + float det = g1.x * g2.y - g1.y * g2.x; + if (abs(det) <= 1.0e-12) { + return false; + } + float r = 1.0 / det; + float3 traw = ((p1 - p0) * g2.y - (p2 - p0) * g1.y) * r; + T = normalize(traw - n * dot(n, traw)); + B = cross(n, T) * (det < 0.0 ? -1.0 : 1.0); + return true; +} + +float pomHeightAt(MaterialHeader header, float2 localUv, float lod) { + float2 pageUv = header.materialUv.xy + clamp(localUv, float2(0.0), float2(1.0)) * header.materialUv.zw; + return samplePageNormalAo(header.texturePage, pageUv, lod).a; +} + +// Returns the parallax-shifted ATLAS uv. `pomParams`: x depth in sprite-widths (0 disables), y step +// count scale, z LOD at which POM has faded out entirely. +float2 parallaxOffsetUv(MaterialHeader header, float2 atlasUv, float lod, float3 n, + float3 p0, float3 p1, float3 p2, float2 t0, float2 t1, float2 t2, + float3 vdir, float3 pomParams) { + float depthScale = pomParams.x; + if (depthScale <= 0.0 || (header.features & MATERIAL_FEATURE_NORMAL) == 0u) { + return atlasUv; + } + // Distance fade. POM's cost is per-hit and its benefit vanishes once a sprite covers a few pixels, + // so it is faded out by ray-cone LOD rather than switched off at a hard distance -- a hard cutoff + // would pop a visible seam across the ground as you walk. + float fade = 1.0 - smoothstep(pomParams.z - 1.0, pomParams.z, lod); + if (fade <= 0.0) { + return atlasUv; + } + float3 T; + float3 B; + if (!hitTangentFrame(n, p0, p1, p2, t0, t1, t2, T, B)) { + return atlasUv; + } + // View direction in tangent space. At grazing angles vz goes to zero and the offset would explode, + // so it is floored -- the classic POM stretching artifact is worse than the lost parallax. + float3 viewT = float3(dot(vdir, T), dot(vdir, B), dot(vdir, n)); + float vz = max(abs(viewT.z), 0.35); + + float2 localUv = clamp((atlasUv - header.albedoUv.xy) * header.albedoUv.zw, + float2(0.0), float2(1.0)); + // Total UV travel for a ray descending the full height range. + float2 maxOffset = (viewT.xy / vz) * depthScale * fade; + + // Steps scale with view angle: a steep view crosses little of the height field and needs few + // samples, a grazing one crosses a lot and needs many. + int steps = int(clamp(lerp(float(POM_MAX_STEPS), 8.0, abs(viewT.z)) * max(pomParams.y, 0.1), + 4.0, float(POM_MAX_STEPS))); + float stepDepth = 1.0 / float(steps); + float2 stepOffset = maxOffset * stepDepth; + + // Linear search for the first step where the ray has sunk below the height field. + float rayDepth = 0.0; + float2 current = localUv; + float height = pomHeightAt(header, current, lod); + float surfaceDepth = 1.0 - height; + for (int i = 0; i < steps; ++i) { + if (rayDepth >= surfaceDepth) { + break; + } + current -= stepOffset; + rayDepth += stepDepth; + surfaceDepth = 1.0 - pomHeightAt(header, current, lod); + } + + // Binary refinement of the crossing. Cheaper and more stable than the usual linear interpolation + // between the last two samples when the height field has hard steps, which block textures are + // almost entirely made of. + float2 lo = current; + float2 hi = current + stepOffset; + for (int i = 0; i < POM_REFINE_STEPS; ++i) { + float2 mid = (lo + hi) * 0.5; + float midRayDepth = rayDepth - stepDepth * 0.5; + if (1.0 - pomHeightAt(header, mid, lod) > midRayDepth) { + hi = mid; + } else { + lo = mid; + rayDepth = midRayDepth; + } + stepDepth *= 0.5; + } + float2 shifted = clamp((lo + hi) * 0.5, float2(0.0), float2(1.0)); + // Back to atlas space. Clamping happened in local space, so this can never bleed into a + // neighbouring sprite -- the single most common way POM goes wrong on an atlas. + return header.albedoUv.xy + shifted / max(header.albedoUv.zw, float2(1.0e-8)); +} + struct Surface { float3 normal; float3 f0; @@ -401,6 +524,11 @@ void main(inout Payload payload, in BuiltInTriangleIntersectionAttributes attr) // shades the surface as a clear dielectric and only needs the tint to derive the per-channel // Beer–Lambert absorption. Opaque terrain uses textured albedo. float3 tint709 = srgbToLinear(tint); + // Parallax BEFORE the albedo fetch, so every channel sampled below shares one shifted coordinate. + // One indirect load for the POM parameters, taken only on the terrain path that uses them rather + // than at shader entry, matching how the entity path above reaches WorldPush. + uv = parallaxOffsetUv(materialHeader, uv, blockLod, n, tp0, tp1, tp2, uv0, uv1, uv2, vdir, + ConstPtr(pc.worldPushAddr)[0].pom.xyz); float3 albedo709 = srgbToLinear(blockAlbedoAtlas.SampleLevel(uv, blockLod).rgb) * tint709; packAlbedo(payload, bt709ToAcesCg( materialHeader.model == MATERIAL_WATER ? tint709 : albedo709)); diff --git a/shaders/pipelines/world/clouds.slang b/shaders/pipelines/world/clouds.slang index 10cd9866a..aad3a2f09 100644 --- a/shaders/pipelines/world/clouds.slang +++ b/shaders/pipelines/world/clouds.slang @@ -328,7 +328,21 @@ public struct CloudResult { public float transmittance; // what fraction of the sky behind the deck survives }; -public CloudResult marchClouds(CloudParams c, SkyState state, float3 origin, float3 direction) { +// Vanilla's CLOUD_COLOR for the camera's position, applied hue-only. Same reasoning as the fog tint: +// preserving the deck's own luminance means a dark authored cloud colour cannot black out a sunlit +// deck, and the time-of-day response computed from the atmosphere survives the tint. +float3 tintCloud(float3 scattering, float3 tint709, float strength) { + float clamped = clamp(strength, 0.0, 1.0); + if (clamped <= 0.0) { + return scattering; + } + float3 tint = bt709ToAcesCg(max(tint709, float3(0.0))); + float tintLuma = max(dot(tint, ACESCG_LUMA), 1.0e-4); + return lerp(scattering, scattering * (tint / tintLuma), clamped); +} + +public CloudResult marchClouds(CloudParams c, SkyState state, float3 origin, float3 direction, + float3 tint709, float tintStrength) { CloudResult result; result.scattering = float3(0.0, 0.0, 0.0); result.transmittance = 1.0; @@ -380,5 +394,6 @@ public CloudResult marchClouds(CloudParams c, SkyState state, float3 origin, flo } t += stepSize; } + result.scattering = tintCloud(result.scattering, tint709, tintStrength); return result; } diff --git a/shaders/pipelines/world/fog.slang b/shaders/pipelines/world/fog.slang index df0c026fe..9aecfaf46 100644 --- a/shaders/pipelines/world/fog.slang +++ b/shaders/pipelines/world/fog.slang @@ -93,6 +93,23 @@ public float fogOpticalDepth(FogParams f, float3 ro, float3 rd, float t) { // sun slice plus the moon slice, then the isotropic airglow floor so night fog settles at the same // luminance the night sky does instead of going black. sky.slang works in linear BT.709; the path // integral is ACEScg, so this crosses the same seam the miss shader does, in the same place. +// Vanilla's FOG_COLOR for wherever the camera is, and how hard to pull scattering toward it. In the +// Overworld this is a light tint over the physically computed sky, so a swamp reads green-grey without +// losing the atmosphere's time-of-day behaviour. In the Nether and the End there is no atmosphere worth +// sampling, so the caller sends full strength and this becomes the entire fog colour. +public float3 fogTint(FogParams f, float3 inscatter, WorldPush push) { + float strength = clamp(push.dimFog.w, 0.0, 1.0); + if (strength <= 0.0) { + return inscatter; + } + // Tint by hue, not by replacement: preserve the scattering's own luminance so a dark fog colour + // cannot black out a bright sunlit haze, and a bright one cannot light up a night scene. + float3 tint = bt709ToAcesCg(max(push.dimFog.rgb, float3(0.0))); + float tintLuma = max(dot(tint, ACESCG_LUMA), 1.0e-4); + float3 normalizedTint = tint / tintLuma; + return lerp(inscatter, inscatter * normalizedTint, strength); +} + public float3 fogInscatter(FogParams f, float3 rd, SkyState state) { float2 sunUv = skyViewLutUv(state.viewerRadiusKm, rd.y, lightViewCosine(rd, state.sunDir), SKY_VIEW_BODY_SUN); @@ -107,7 +124,7 @@ public float3 fogInscatter(FogParams f, float3 rd, SkyState state) { // Fold one travelled segment into the path. Call once per segment, BEFORE the segment's endpoint // contributes anything to L, so that the in-scatter enters at this segment's throughput and everything // beyond it is attenuated by this segment's transmittance. -public void applyFogSegment(FogParams f, SkyState state, Medium medium, +public void applyFogSegment(FogParams f, SkyState state, Medium medium, WorldPush push, float3 ro, float3 rd, float t, inout float3 L, inout float3 throughput) { if (!fogActive(f) || !fogAppliesTo(medium)) { @@ -118,6 +135,6 @@ public void applyFogSegment(FogParams f, SkyState state, Medium medium, return; } float transmittance = exp(-tau); - L += throughput * fogInscatter(f, rd, state) * (1.0 - transmittance); + L += throughput * fogTint(f, fogInscatter(f, rd, state), push) * (1.0 - transmittance); throughput *= transmittance; } diff --git a/shaders/pipelines/world/indirect.rgen.slang b/shaders/pipelines/world/indirect.rgen.slang index 374c82089..d3a9ba8bf 100644 --- a/shaders/pipelines/world/indirect.rgen.slang +++ b/shaders/pipelines/world/indirect.rgen.slang @@ -93,7 +93,7 @@ public float3 tracePath(PathSegment seg, uint2 pix, uint sampleIndex) { float3 fromEye = ro - worldPush.camOffset; float prefix = length(fromEye); if (prefix > 1.0e-3) { - applyFogSegment(fog, fogSky, airMedium(), worldPush.camOffset, fromEye / prefix, prefix, + applyFogSegment(fog, fogSky, airMedium(), worldPush, worldPush.camOffset, fromEye / prefix, prefix, L, throughput); } } @@ -128,7 +128,7 @@ public float3 tracePath(PathSegment seg, uint2 pix, uint sampleIndex) { // attenuated by that column and the column's own in-scatter is added in front of it. At the // horizon the two converge on the same sky-view texel, which is why a fogged horizon fades // INTO the sky instead of forming a visible band against it. - applyFogSegment(fog, fogSky, medium.current, ro, rd, FOG_MAX_DISTANCE, L, throughput); + applyFogSegment(fog, fogSky, medium.current, worldPush, ro, rd, FOG_MAX_DISTANCE, L, throughput); float3 sky = payloadSky(); L += throughput * sky; // escaped to sky break; @@ -143,7 +143,7 @@ public float3 tracePath(PathSegment seg, uint2 pix, uint sampleIndex) { } // Air only — applyFogSegment gates on the medium itself, so a segment inside water or glass is a // no-op here and its own extinction above remains the complete answer. - applyFogSegment(fog, fogSky, medium.current, ro, rd, payload.hitT, L, throughput); + applyFogSegment(fog, fogSky, medium.current, worldPush, ro, rd, payload.hitT, L, throughput); float3 n = payloadNormal(); // oriented toward the incoming ray by the closest-hit float3 hitPos = ro + rd * payload.hitT; diff --git a/shaders/pipelines/world/sky.rmiss.slang b/shaders/pipelines/world/sky.rmiss.slang index d255907a3..a888f416c 100644 --- a/shaders/pipelines/world/sky.rmiss.slang +++ b/shaders/pipelines/world/sky.rmiss.slang @@ -39,6 +39,10 @@ float hash13(float3 p3) { return frac((p3.x + p3.y) * p3.z); } +// How much of the Overworld starfield the End keeps. Dimmer than a clear night: the End's own sky +// colour already lifts the black floor, and full-strength stars over it read as an Overworld night. +static const float END_STAR_STRENGTH = 0.35; + // Rotate v about a unit axis by angle (Rodrigues). Used to wheel the starfield about the celestial pole. float3 rotateAxis(float3 v, float3 axis, float ang) { float c = cos(ang), s = sin(ang); @@ -152,6 +156,26 @@ void main(inout Payload payload) { // zero below the horizon, matching the NEE visibility test. } + // Non-Overworld dimensions. The atmosphere LUTs model an Earth sky: Rayleigh, Mie, ozone, a planet + // radius, a sun. None of that exists in the Nether or the End, and running it there produces a blue + // daytime sky in a place that should have neither. Vanilla classifies this itself via + // DimensionType.skybox(), which is what the mode here mirrors — so custom dimensions declaring one of + // those skyboxes get the right treatment too, without a hardcoded dimension-name list. + uint skyboxMode = uint(worldPush.dimSky.w + 0.5); + if (skyboxMode != SKYBOX_OVERWORLD) { + // Both non-Overworld skies are flat-lit from vanilla's own SKY_COLOR for the camera's position, + // so a crimson forest and a soul sand valley differ here exactly as they do in vanilla. + float3 flat709 = max(worldPush.dimSky.rgb, float3(0.0)); + float3 flatSky = bt709ToAcesCg(flat709); + if (skyboxMode == SKYBOX_END) { + // The End keeps a starfield — it is the one thing that reads as "sky" rather than "ceiling" + // there — but no sun, no moon, no horizon gradient. + flatSky += bt709ToAcesCg(stars(dir, state, float3(1.0))) * END_STAR_STRENGTH; + } + packSky(payload, flatSky); + return; + } + // Cloud deck, composited over everything above. It sits at a few hundred blocks while the sky LUT // models 100 km, so the deck is treated as a thin layer in front of the whole atmosphere: attenuate // what is behind it, add what it scatters. Stars and the sun/moon discs are correctly occluded by @@ -163,7 +187,8 @@ void main(inout Payload payload) { if (showCelestial) { CloudParams cloudParams = makeCloudParams(worldPush); if (cloudsActive(cloudParams)) { - CloudResult deck = marchClouds(cloudParams, state, WorldRayOrigin(), dir); + CloudResult deck = marchClouds(cloudParams, state, WorldRayOrigin(), dir, + worldPush.dimCloud.rgb, worldPush.dimCloud.w); color = color * deck.transmittance + deck.scattering; } } diff --git a/shaders/pipelines/world/world_common.slang b/shaders/pipelines/world/world_common.slang index 3f4968ed9..9e0693c5e 100644 --- a/shaders/pipelines/world/world_common.slang +++ b/shaders/pipelines/world/world_common.slang @@ -103,8 +103,24 @@ public struct WorldPush { // cloud2: x ground-shadow strength (0 disables shadowing without disabling the deck), y the // multiple-scattering floor the shadow cannot darken past, z rain wetness 0..1, w unused. public float4 cloud2; + // ---- Parallax occlusion mapping. x depth in sprite-widths (0 disables it entirely), y step-count + // scale, z ray-cone LOD at which it has faded out, w unused. + public float4 pom; + // ---- Dimension / biome environment colours, read from 26.2's EnvironmentAttributes system. + // dimSky: rgb = SKY_COLOR (linear BT.709), w = skybox mode (0 overworld, 1 end, 2 none/nether). + // dimFog: rgb = FOG_COLOR (linear BT.709), w = how strongly it tints scattering, 0 = not at all. + public float4 dimSky; + public float4 dimFog; + // dimCloud: rgb = vanilla CLOUD_COLOR (linear BT.709), w = tint strength (0 = leave the deck lit + // purely by the atmosphere). + public float4 dimCloud; }; +// Skybox modes, mirroring vanilla's DimensionType.Skybox enum. +public static const uint SKYBOX_OVERWORLD = 0u; +public static const uint SKYBOX_END = 1u; +public static const uint SKYBOX_NONE = 2u; + // 32-byte hot area-light record. Linear ACEScg radiance uses packed R11G11B10; the // grid-relative owner section uses three unsigned 10-bit coordinates; the geometric normal is // reconstructed from the half axes. diff --git a/src/main/java/dev/comfyfluffy/caustica/CausticaConfig.java b/src/main/java/dev/comfyfluffy/caustica/CausticaConfig.java index d8015e300..98945266b 100644 --- a/src/main/java/dev/comfyfluffy/caustica/CausticaConfig.java +++ b/src/main/java/dev/comfyfluffy/caustica/CausticaConfig.java @@ -58,7 +58,7 @@ public static void ensureRegistered() { Object[] touch = { Rt.ENABLED, Rt.Composite.SPP, Rt.Composite.MAX_BOUNCES, Rt.Terrain.ASYNC_DISPATCH_PER_PASS, Rt.Omm.ENABLED, Rt.Entities.ENABLED, Rt.Entities.GLOW_ENABLED, Rt.EntityTextures.MAX_TEXTURES, Rt.DlssRr.ENABLED, Rt.Fg.ENABLED, - Rt.Reflex.ENABLED, Rt.Fog.DENSITY, Rt.Clouds.COVERAGE, Rt.Grade.ENABLED, Rt.Tonemap.VIEW_TRANSFORM, Rt.Exposure.MODE, Rt.Tonemap.GAMMA, Rt.FrameStats.ENABLED, + Rt.Reflex.ENABLED, Rt.Fog.DENSITY, Rt.Clouds.COVERAGE, Rt.Grade.ENABLED, Rt.Tonemap.VIEW_TRANSFORM, Rt.Pom.DEPTH, Rt.Exposure.MODE, Rt.Tonemap.GAMMA, Rt.FrameStats.ENABLED, Rt.Screenshots.EXR_ENABLED, Rt.Hdr.ENABLED, Ngx.PATH, }; } @@ -738,7 +738,20 @@ public static final class Clouds { /** Extinction per block inside fully dense cloud. Higher reads as darker, more solid cumulus. */ public static final FloatSetting DENSITY = clampedFloat("caustica.rt.clouds.density", "clouds.density", 0.045f, 0.0f, 1.0f); - /** Deck base, world Y. Vanilla's cloud plane is 192. */ + /** + * Follow vanilla's CLOUD_HEIGHT environment attribute instead of {@link #ALTITUDE}. On by + * default so a dimension or datapack that moves its cloud layer moves this deck with it. + */ + public static final BooleanSetting VANILLA_HEIGHT = + bool("caustica.rt.clouds.vanillaHeight", "clouds.vanilla-height", true); + /** + * How strongly vanilla's CLOUD_COLOR tints the deck. Applied hue-only, so it recolours + * without overriding the atmosphere's own time-of-day response. 0 leaves the deck lit + * purely by the sun and sky. + */ + public static final FloatSetting VANILLA_TINT = + clampedFloat("caustica.rt.clouds.vanillaTint", "clouds.vanilla-tint", 0.5f, 0.0f, 1.0f); + /** Deck base, world Y. Used when vanilla-height is off, or when vanilla reports none. */ public static final FloatSetting ALTITUDE = clampedFloat("caustica.rt.clouds.altitude", "clouds.altitude", 192.0f, -512.0f, 4096.0f); /** Deck depth in blocks. Thin decks read as stratus, thick ones as cumulus. */ @@ -827,6 +840,30 @@ private Grade() { } } + /** + * Parallax occlusion mapping from the LabPBR height channel (_n alpha). Gives packs that author + * depth into the height map — Patrix and similar — real surface parallax instead of flat + * normal shading. Silhouettes stay flat: this shifts texture coordinates, it does not displace + * geometry. + */ + public static final class Pom { + /** + * Depth in sprite-widths. 0 disables it and its march entirely. 0.05 is subtle and safe; + * past ~0.12 the flat silhouettes start giving the illusion away at grazing angles. + */ + public static final FloatSetting DEPTH = + clampedFloat("caustica.rt.pom.depth", "pom.depth", 0.0f, 0.0f, 0.5f); + /** Scales the march's step count. Below 1 is faster and steppier on tall height fields. */ + public static final FloatSetting QUALITY = + clampedFloat("caustica.rt.pom.quality", "pom.quality", 1.0f, 0.1f, 2.0f); + /** Ray-cone LOD at which POM has faded out. Lower means it stops sooner with distance. */ + public static final FloatSetting FADE_LOD = + clampedFloat("caustica.rt.pom.fadeLod", "pom.fade-lod", 4.0f, 0.0f, 12.0f); + + private Pom() { + } + } + public static final class Reflex { public static final BooleanSetting ENABLED = bool("caustica.rt.reflex", "reflex.enabled", false); public static final BooleanSetting LOW_LATENCY_BOOST = diff --git a/src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java b/src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java index e7f3f1b4b..74989afd3 100644 --- a/src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java +++ b/src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java @@ -20,6 +20,7 @@ import dev.comfyfluffy.caustica.rt.gen.WorldPushData.Int4; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.BiomeColors; +import net.minecraft.world.attribute.EnvironmentAttributes; import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.resources.model.ModelBakery; @@ -1184,12 +1185,33 @@ private void recordFrame(RtContext ctx, RtPipeline active, GpuTexture nativeColo // around inside — is what makes a storm deck read as heavy rather than merely large. float cloudWeather = CausticaConfig.Rt.Clouds.WEATHER_RESPONSE.value() * Math.min(rainLevel + thunderLevel * 0.5f, 1f); + // Cloud colour and height come from the same attribute system. CLOUD_HEIGHT is a world Y, + // so it is rebased alongside everything else below. + float cloudR = 1f, cloudG = 1f, cloudB = 1f; + float vanillaCloudHeight = Float.NaN; + if (level != null) { + var reader = level.environmentAttributes(); + int cloudColor = reader.getValue(EnvironmentAttributes.CLOUD_COLOR, cameraBlockPos); + cloudR = srgbToLinear(((cloudColor >> 16) & 0xFF) / 255f); + cloudG = srgbToLinear(((cloudColor >> 8) & 0xFF) / 255f); + cloudB = srgbToLinear((cloudColor & 0xFF) / 255f); + vanillaCloudHeight = reader.getValue(EnvironmentAttributes.CLOUD_HEIGHT, cameraBlockPos); + } + Float4 dimCloud = new Float4(cloudR, cloudG, cloudB, + CausticaConfig.Rt.Clouds.VANILLA_TINT.value()); + // Vanilla's cloud height wins when enabled and actually reported — a dimension with no cloud + // layer leaves the attribute absent, in which case the configured altitude is the only + // sensible answer rather than dropping the deck to zero. + float cloudDeckBase = CausticaConfig.Rt.Clouds.VANILLA_HEIGHT.value() + && !Float.isNaN(vanillaCloudHeight) + ? vanillaCloudHeight + : CausticaConfig.Rt.Clouds.ALTITUDE.value(); float cloudCoverage = CausticaConfig.Rt.Clouds.COVERAGE.value(); cloudCoverage += (1f - cloudCoverage) * cloudWeather * 0.85f; Float4 cloud0 = new Float4( cloudCoverage, CausticaConfig.Rt.Clouds.DENSITY.value() * (1f + cloudWeather * 1.5f), - CausticaConfig.Rt.Clouds.ALTITUDE.value() - terrain.blockY, + cloudDeckBase - terrain.blockY, CausticaConfig.Rt.Clouds.THICKNESS.value()); Float4 cloud1 = new Float4( (terrain.blockX & WATER_ANCHOR_MASK) + cloudWind * 0.8f, @@ -1203,6 +1225,46 @@ private void recordFrame(RtContext ctx, RtPipeline active, GpuTexture nativeColo CausticaConfig.Rt.Clouds.SHADOW_STRENGTH.value(), CausticaConfig.Rt.Clouds.SHADOW_FLOOR.value() * (1f - cloudWeather * 0.5f), wetness, 0f); + // Vanilla environment colours. 26.2 moved per-biome and per-dimension colour out of + // BiomeSpecialEffects into the EnvironmentAttributes system, which samples and interpolates + // across biome boundaries itself — so this is vanilla's own blended value at the camera, + // not a nearest-biome lookup that would pop at a border. + // + // Sampled once per frame at the camera. Sky and fog colour are whole-view properties; a + // per-pixel lookup would buy nothing and cost a chunk-lookup per ray. + int skyboxMode = 0; + float skyR = 0f, skyG = 0f, skyB = 0f; + float fogR = 0f, fogG = 0f, fogB = 0f; + float fogTintStrength = 0f; + if (level != null) { + var reader = level.environmentAttributes(); + int skyColor = reader.getValue(EnvironmentAttributes.SKY_COLOR, cameraBlockPos); + int fogColor = reader.getValue(EnvironmentAttributes.FOG_COLOR, cameraBlockPos); + skyR = srgbToLinear(((skyColor >> 16) & 0xFF) / 255f); + skyG = srgbToLinear(((skyColor >> 8) & 0xFF) / 255f); + skyB = srgbToLinear((skyColor & 0xFF) / 255f); + fogR = srgbToLinear(((fogColor >> 16) & 0xFF) / 255f); + fogG = srgbToLinear(((fogColor >> 8) & 0xFF) / 255f); + fogB = srgbToLinear((fogColor & 0xFF) / 255f); + skyboxMode = switch (level.dimensionType().skybox()) { + case OVERWORLD -> 0; + case END -> 1; + case NONE -> 2; + }; + // In the Overworld the physical atmosphere is the truth and vanilla's fog colour is a + // light artistic tint on top of it. Elsewhere there is no atmosphere to defer to, so + // vanilla's colour becomes the whole answer. + fogTintStrength = skyboxMode == 0 + ? CausticaConfig.Rt.Fog.BIOME_RESPONSE.value() * 0.5f + : 1.0f; + } + Float4 dimSky = new Float4(skyR, skyG, skyB, skyboxMode); + Float4 dimFog = new Float4(fogR, fogG, fogB, fogTintStrength); + Float4 pom = new Float4( + CausticaConfig.Rt.Pom.DEPTH.value(), + CausticaConfig.Rt.Pom.QUALITY.value(), + CausticaConfig.Rt.Pom.FADE_LOD.value(), + 0f); new WorldPushData( frameInvViewProj, new Float3((float) (camX - terrain.blockX), (float) (camY - terrain.blockY), @@ -1242,7 +1304,11 @@ private void recordFrame(RtContext ctx, RtPipeline active, GpuTexture nativeColo fog, cloud0, cloud1, - cloud2 + cloud2, + pom, + dimSky, + dimFog, + dimCloud ).write(push); pushBuf.flush(0L, WORLD_PUSH_SIZE); // Upload any entity textures registered this frame into the bindless set before the trace. @@ -1535,6 +1601,14 @@ private void refreshCelestialUvCache(int moonPhase) { celestialUvMoonPhase = moonPhase; } + /** + * sRGB EOTF for a single 0..1 channel. The environment-attribute colours arrive as packed sRGB + * bytes; the shader tints in linear, so they cross the transfer function exactly once, here. + */ + private static float srgbToLinear(float code) { + return code <= 0.04045f ? code / 12.92f : (float) Math.pow((code + 0.055f) / 1.055f, 2.4); + } + private static Float4 linearAcesCgFromSrgb(double r, double g, double b, float w) { return linearAcesCgFromBt709( srgbToLinear(r), srgbToLinear(g), srgbToLinear(b), w); From d8d0c825fa6215d9aeccce6e17d56137109af91a Mon Sep 17 00:00:00 2001 From: KthanidKisure <161649271+KthanidKisure@users.noreply.github.com> Date: Thu, 27 Aug 2026 16:35:22 +0100 Subject: [PATCH 03/25] Add files via upload --- .../caustica/build/GenerateRtBindings.groovy | 9 +- shaders/pipelines/world/bindings.slang | 9 + shaders/pipelines/world/indirect.rgen.slang | 37 ++- shaders/pipelines/world/restir.slang | 227 ++++++++++++++++++ shaders/pipelines/world/world_common.slang | 4 + .../comfyfluffy/caustica/CausticaConfig.java | 20 +- .../comfyfluffy/caustica/rt/RtComposite.java | 57 ++++- .../caustica/rt/pipeline/RtPipeline.java | 32 +++ 8 files changed, 391 insertions(+), 4 deletions(-) create mode 100644 shaders/pipelines/world/restir.slang diff --git a/buildSrc/src/main/groovy/dev/comfyfluffy/caustica/build/GenerateRtBindings.groovy b/buildSrc/src/main/groovy/dev/comfyfluffy/caustica/build/GenerateRtBindings.groovy index e609d0483..735f6fe5b 100644 --- a/buildSrc/src/main/groovy/dev/comfyfluffy/caustica/build/GenerateRtBindings.groovy +++ b/buildSrc/src/main/groovy/dev/comfyfluffy/caustica/build/GenerateRtBindings.groovy @@ -31,6 +31,7 @@ abstract class GenerateRtBindings extends DefaultTask { TLAS: "topLevelAS", OUTPUT: "outImage", BLOCK_ALBEDO: "blockAlbedoAtlas", G_NORMAL: "gNormal", G_ALBEDO: "gAlbedo", G_DEPTH: "gDepth", G_MOTION: "gMotion", G_SPEC_ALBEDO: "gSpecAlbedo", G_SPEC_MOTION: "gSpecMotion", + RESERVOIR_A: "reservoirA", RESERVOIR_B: "reservoirB", CELESTIALS: "celestialsAtlas", SKY_VIEW: "skyViewLut", TRANSMITTANCE: "transmittanceLut", ENTITY_ALBEDO: "entityAlbedoTex", MATERIAL_SURFACE0: "materialSurface0Tex", MATERIAL_NORMAL_AO: "materialNormalAoTex", MATERIAL_SURFACE1: "materialSurface1Tex"]], @@ -120,9 +121,15 @@ abstract class GenerateRtBindings extends DefaultTask { constants.WORLD_SET = ordinary.values().first().set ordinary.each { suffix, location -> constants["WORLD_${suffix}"] = location.index } def guides = ordinary.findAll { suffix, ignored -> (suffix as String).startsWith("G_") } - def storageImages = guides + ordinary.findAll { suffix, ignored -> suffix == "OUTPUT" } + // RESERVOIR_* are storage images like the guides, but deliberately not counted as guides: + // WORLD_GUIDE_COUNT bounds setExtraStorageImage's slot range, which addresses bindings + // contiguously from WORLD_G_NORMAL. Folding the reservoirs in there would let a guide + // slot index walk into them. + def reservoirs = ordinary.findAll { suffix, ignored -> (suffix as String).startsWith("RESERVOIR_") } + def storageImages = guides + reservoirs + ordinary.findAll { suffix, ignored -> suffix == "OUTPUT" } def samplers = ordinary.findAll { suffix, ignored -> suffix != "TLAS" && !storageImages.containsKey(suffix) } constants.WORLD_GUIDE_COUNT = guides.size() + constants.WORLD_RESERVOIR_COUNT = reservoirs.size() constants.WORLD_SET_BINDING_COUNT = ordinary.values()*.index.max() + 1 constants.WORLD_SET_STORAGE_IMAGE_COUNT = storageImages.size() constants.WORLD_SET_SAMPLER_COUNT = samplers.size() diff --git a/shaders/pipelines/world/bindings.slang b/shaders/pipelines/world/bindings.slang index 7a9ca0620..5c33b7d4a 100644 --- a/shaders/pipelines/world/bindings.slang +++ b/shaders/pipelines/world/bindings.slang @@ -15,6 +15,15 @@ import world_common; [[vk::binding(7, 0)]] [format("rgba16f")] public RWTexture2D gSpecAlbedo; [[vk::binding(8, 0)]] [format("rg16f")] public RWTexture2D gSpecMotion; +// ReSTIR temporal reservoirs. Both are bound permanently and swap roles each frame via +// worldPush.restir.y, rather than the descriptors themselves being rewritten: descriptor sets are +// ring-buffered across frames in flight, so a per-frame rewrite would mutate a set an earlier frame is +// still reading. A push constant costs nothing and cannot race. +// Double-width — two texels per pixel, see restir.slang. rgba32f because the emitter position needs +// full float precision. +[[vk::binding(12, 0)]] [format("rgba32f")] public RWTexture2D reservoirA; +[[vk::binding(13, 0)]] [format("rgba32f")] public RWTexture2D reservoirB; + [[vk::binding(2, 0)]] public Sampler2D blockAlbedoAtlas; [[vk::binding(9, 0)]] public Sampler2D celestialsAtlas; [[vk::binding(10, 0)]] public Sampler2D skyViewLut; diff --git a/shaders/pipelines/world/indirect.rgen.slang b/shaders/pipelines/world/indirect.rgen.slang index d3a9ba8bf..0a5e46de4 100644 --- a/shaders/pipelines/world/indirect.rgen.slang +++ b/shaders/pipelines/world/indirect.rgen.slang @@ -33,6 +33,7 @@ import sky; import bindings; import fog; import clouds; +import restir; // Atmospheric transmittance LUT (RtSkyLut), also bound to world.rmiss at the same binding: raygen reads it // to colour the NEE sun/moonlight, the miss shader reads it to tint the visible discs and stars. @@ -356,15 +357,49 @@ public float3 tracePath(PathSegment seg, uint2 pix, uint sampleIndex) { } } - // RIS direct lighting from block emitters (single-frame only, no temporal reservoir reuse). + // RIS direct lighting from block emitters, with optional ReSTIR temporal reuse at the primary + // hit (restir.slang). // Front lobe + SSS backlighting are resampled together and share ONE shadow ray — a light can // only be in front of n or behind it, never both, so combining them into one target function is // exact, not an approximation. The SSS term is gated off past MAX_SSS_INDIRECT_DEPTH by passing // sss=0 there (falls back to plain front-only RIS). if (risOn) { float activeSss = hitDepth <= MAX_SSS_INDIRECT_DEPTH ? sss : 0.0; + // ReSTIR temporal reuse, primary hit only. A secondary bounce has no stable screen-space + // identity to reproject through, so reusing history there would combine unrelated surfaces. Reservoir r = risInitial(hitPos, n, v, rd, diffAlb, F0, rough, false, activeSss, seed, proposalSeed); + // Primary hit only, and only for the camera's own path: bounce > 0 and the queued + // dielectric leaves have no stable screen-space identity to reproject through, so reusing + // history there would be combining unrelated surfaces into one pixel's reservoir. + float restirStrength = worldPush.restir.x; + bool restirPixel = restirStrength > 0.0 && bounce == 0 && seg.bounce == 0; + if (restirPixel) { + uint parity = uint(worldPush.restir.y + 0.5); + // Reprojection through the surface motion vector the guides already produce for DLSS, + // so history follows a moving surface rather than a fixed screen position. + float2 motion = gMotion[int2(pix)]; + int2 prevPix = int2(floor(float2(pix) + 0.5 - motion)); + uint reservoirW; + uint reservoirH; + reservoirA.GetDimensions(reservoirW, reservoirH); + // The images are double-width, so the addressable pixel count is half the texel width. + int renderWidth = int(reservoirW) / 2; + if (all(prevPix >= int2(0, 0)) && prevPix.x < renderWidth + && prevPix.y < int(reservoirH)) { + PackedReservoir history = loadReservoir(prevPix, parity); + // Geometric rejection: same depth and normal, or the sample belonged to another + // surface that merely happened to land on this pixel last frame. + float currentDepth = payload.hitT; + float historyDepth = gDepth[prevPix]; + float3 historyNormal = gNormal[prevPix].xyz; + if (temporalSurfaceMatches(currentDepth, historyDepth, n, historyNormal)) { + r = temporalCombine(r, history, hitPos, n, v, rd, diffAlb, F0, rough, + false, activeSss, seed); + } + } + storeReservoir(int2(pix), parity, toPacked(r)); + } L += throughput * shadeReservoir(r, hitPos, n, v, rd, diffAlb, F0, rough, false, activeSss); } diff --git a/shaders/pipelines/world/restir.slang b/shaders/pipelines/world/restir.slang new file mode 100644 index 000000000..2eb54fa5a --- /dev/null +++ b/shaders/pipelines/world/restir.slang @@ -0,0 +1,227 @@ +// ReSTIR temporal reuse for the block-emitter reservoirs. Depends on lighting and bindings. +// +// lighting.slang's risInitial already does the RIS half of ReSTIR: it draws candidate emitters from the +// light grid and keeps one survivor weighted by its target function. What it does not do is remember +// anything. Every pixel, every frame, starts from an empty reservoir, so the effective sample count is +// whatever the candidate budget allows in one frame — which is why caves and night scenes stay noisy no +// matter how good the denoiser is. +// +// This adds the missing half: last frame's survivor, reprojected through the motion vector, is combined +// into this frame's reservoir. Over a stationary second a pixel accumulates hundreds of effective +// candidates for the cost of one, and the emitter that actually matters wins consistently instead of +// flickering between whichever few were sampled that frame. +// +// FOUR CORRECTNESS REQUIREMENTS, each of which produces a specific artifact when skipped: +// +// * M-capping. Unbounded history makes a pixel infinitely confident in a stale sample and the image +// stops responding to change — a torch you place lights nothing for several seconds. The cap trades +// a little variance for a bounded reaction time. +// * p-hat re-evaluation. The stored sample's target function must be recomputed against THIS frame's +// surface, not reused from last frame's. A reservoir carried onto a rotated or moved surface has a +// different BRDF and geometry term, and reusing the old weight is the classic ReSTIR bias. +// * Geometric rejection. The reprojected pixel is only the same surface if depth and normal agree. +// Without the test, history bleeds across silhouettes and leaves a smear trailing every moving edge. +// * Reset on discontinuity. First frame, resize, dimension change, world reload — the buffer holds +// positions in a rebased space that no longer exists, so it must be treated as empty. +// +// PING-PONG WITHOUT DESCRIPTOR REWRITES. Both images stay bound; a frame-parity push constant decides +// which is history. Rewriting descriptors per frame would touch ring-buffered sets that frames still in +// flight are reading — a use-after-write that validation layers catch only sometimes and that shows up +// as intermittent corruption otherwise. +// +// STORAGE. Two ping-ponged rgba32f images at RENDER resolution (binding 12 read, 13 write). Four +// channels is not enough for a Reservoir's fourteen floats, so what is stored is the minimum needed to +// replay the sample: the emitter point, its normal, its radiance, area, M and W. Everything else — +// wSum, phat — is recomputed on load, which is required anyway by the p-hat rule above. +// +// xyz : emitter sample point, rebased world space (needs full fp32; a half here quantises the light +// position into visible banding across a large room) +// w : packed, see below +// +// Only the primary hit is reused. A secondary bounce has no stable screen-space identity to reproject +// through, so temporal reuse there would be combining unrelated surfaces. + +import world_common; +import lighting; +import math; +import bindings; + +// Effective-sample ceiling. 20x the per-frame candidate budget is the usual starting point: enough +// history to kill the noise, short enough that a light change resolves in a few frames. +public static const float RESTIR_M_CAP = 20.0; +// Depth agreement, as a fraction of the reprojected depth. Proportional rather than absolute because a +// fixed epsilon that works at 5 blocks rejects everything at 200. +public static const float RESTIR_DEPTH_TOLERANCE = 0.05; +// Normal agreement in cosine. 0.9 is about 25 degrees — loose enough to survive normal-mapped detail, +// tight enough to reject a perpendicular wall behind a silhouette. +public static const float RESTIR_NORMAL_TOLERANCE = 0.9; + +public struct PackedReservoir { + public float3 pos; + public float3 lnrm; + public float3 le; + public float area; + public float M; + public float W; +}; + +public PackedReservoir packedEmpty() { + PackedReservoir p; + p.pos = float3(0.0); + p.lnrm = float3(0.0); + p.le = float3(0.0); + p.area = 0.0; + p.M = 0.0; + p.W = 0.0; + return p; +} + +public bool packedValid(PackedReservoir p) { + return p.M > 0.0 && p.W > 0.0; +} + +// ---- Octahedral normal encoding, 16 bits per component into one float -------------------------------- +// The emitter normal only feeds a cosine term, so a couple of degrees of quantisation is invisible. +// Octahedral beats spherical coordinates here for having no pole singularity. + +float2 octEncode(float3 n) { + n /= max(abs(n.x) + abs(n.y) + abs(n.z), 1.0e-8); + float2 oct = n.xy; + if (n.z < 0.0) { + oct = (1.0 - abs(float2(n.y, n.x))) * float2(n.x >= 0.0 ? 1.0 : -1.0, n.y >= 0.0 ? 1.0 : -1.0); + } + return oct * 0.5 + 0.5; +} + +float3 octDecode(float2 oct) { + float2 f = oct * 2.0 - 1.0; + float3 n = float3(f.x, f.y, 1.0 - abs(f.x) - abs(f.y)); + float t = max(-n.z, 0.0); + n.x += n.x >= 0.0 ? -t : t; + n.y += n.y >= 0.0 ? -t : t; + return normalize(n); +} + +// ---- Reservoir <-> image texels ---------------------------------------------------------------------- +// +// Two texels per pixel, side by side in a double-width image: texel 2x holds position + packed normal, +// texel 2x+1 holds radiance + area + M + W. A double-width image rather than two images keeps this to +// one binding pair and one allocation, and the two texels are adjacent so a load touches one cache line. + +// Slang has no built-in half packers here, and the three-value pack needs a custom split anyway: +// area and M are small and bounded, W needs range but not precision, so W keeps a full half and the +// other two share the remaining 16 bits as 8-bit fixed point. area is normalised against a generous +// emitter-face bound; a block face is at most 1 square block. +static const float RESTIR_AREA_SCALE = 4.0; + +uint packHalf2(float2 v) { + return (f32tof16(v.x) & 0xFFFFu) | ((f32tof16(v.y) & 0xFFFFu) << 16); +} + +float2 unpackHalf2(uint v) { + return float2(f16tof32(v & 0xFFFFu), f16tof32((v >> 16) & 0xFFFFu)); +} + +uint packAreaMW(float area, float M, float W) { + uint areaBits = uint(clamp(area / RESTIR_AREA_SCALE, 0.0, 1.0) * 255.0 + 0.5); + uint mBits = uint(clamp(M / RESTIR_M_CAP, 0.0, 1.0) * 255.0 + 0.5); + return areaBits | (mBits << 8) | ((f32tof16(W) & 0xFFFFu) << 16); +} + +void unpackAreaMW(uint bits, out float area, out float M, out float W) { + area = float(bits & 0xFFu) / 255.0 * RESTIR_AREA_SCALE; + M = float((bits >> 8) & 0xFFu) / 255.0 * RESTIR_M_CAP; + W = f16tof32((bits >> 16) & 0xFFFFu); +} + +// parity 0 => A is history and B is written; parity 1 => the reverse. +public PackedReservoir loadReservoir(int2 pix, uint parity) { + int2 lo = int2(pix.x * 2, pix.y); + int2 hi = int2(pix.x * 2 + 1, pix.y); + float4 a = parity == 0u ? reservoirA[lo] : reservoirB[lo]; + float4 b = parity == 0u ? reservoirA[hi] : reservoirB[hi]; + PackedReservoir p; + p.pos = a.xyz; + p.lnrm = octDecode(unpackHalf2(asuint(a.w))); + p.le = b.xyz; + // area, M and W share the last channel via a half3-style pack: area and M are small and bounded, + // W needs range but not precision. Splitting them out would have cost a third texel. + unpackAreaMW(asuint(b.w), p.area, p.M, p.W); + return p; +} + +public void storeReservoir(int2 pix, uint parity, PackedReservoir p) { + float4 lo = float4(p.pos, asfloat(packHalf2(octEncode(p.lnrm)))); + float4 hi = float4(p.le, asfloat(packAreaMW(p.area, p.M, p.W))); + if (parity == 0u) { + reservoirB[int2(pix.x * 2, pix.y)] = lo; + reservoirB[int2(pix.x * 2 + 1, pix.y)] = hi; + } else { + reservoirA[int2(pix.x * 2, pix.y)] = lo; + reservoirA[int2(pix.x * 2 + 1, pix.y)] = hi; + } +} + +public PackedReservoir toPacked(Reservoir r) { + PackedReservoir p; + p.pos = r.pos; + p.lnrm = r.lnrm; + p.le = r.le; + p.area = r.area; + p.M = r.M; + p.W = r.W; + return p; +} + +// ---- Temporal combine -------------------------------------------------------------------------------- + +// Was the reprojected pixel the same surface? Both tests are needed: depth alone accepts a wall seen +// edge-on behind a silhouette, normals alone accept a parallel surface further away. +public bool temporalSurfaceMatches(float currentDepth, float historyDepth, + float3 currentNormal, float3 historyNormal) { + if (historyDepth <= 0.0 || currentDepth <= 0.0) { + return false; + } + if (abs(currentDepth - historyDepth) > currentDepth * RESTIR_DEPTH_TOLERANCE) { + return false; + } + return dot(currentNormal, historyNormal) >= RESTIR_NORMAL_TOLERANCE; +} + +// Merge a history reservoir into this frame's. `history.W` is the unbiased contribution weight from the +// frame it was built in; multiplying by the freshly evaluated p-hat and M converts it back into the +// resampling weight this reservoir's stream expects. +public Reservoir temporalCombine(Reservoir current, PackedReservoir history, + float3 hitPos, float3 n, float3 v, float3 rd, + float3 diffAlb, float3 F0, float rough, + bool twoSided, float sss, inout uint seed) { + if (!packedValid(history)) { + return current; + } + // Re-evaluate the stored sample against the CURRENT surface. This is the step that keeps reuse + // unbiased; the stored p-hat belongs to a surface that may no longer exist. + float phat; + evalSampleContrib(history.pos, history.lnrm, history.le, history.area, + hitPos, n, v, rd, diffAlb, F0, rough, twoSided, sss, phat); + if (phat <= 0.0) { + // The remembered emitter contributes nothing here — behind the surface now, or facing away. + // Its M is still evidence about how much was sampled, but the sample itself cannot survive. + current.M += min(history.M, RESTIR_M_CAP); + return current; + } + float historyM = min(history.M, RESTIR_M_CAP); + float weight = phat * history.W * historyM; + current.wSum += weight; + current.M += historyM; + if (rndf(seed) * current.wSum <= weight) { + current.pos = history.pos; + current.lnrm = history.lnrm; + current.le = history.le; + current.area = history.area; + current.phat = phat; + } + // Rebuild the contribution weight from the merged stream. Guarding on phat keeps a survivor whose + // target function collapsed from producing an infinite W and a white fireflies pixel. + current.W = current.phat > 0.0 ? current.wSum / (current.M * current.phat) : 0.0; + return current; +} diff --git a/shaders/pipelines/world/world_common.slang b/shaders/pipelines/world/world_common.slang index 9e0693c5e..91cec6726 100644 --- a/shaders/pipelines/world/world_common.slang +++ b/shaders/pipelines/world/world_common.slang @@ -114,6 +114,10 @@ public struct WorldPush { // dimCloud: rgb = vanilla CLOUD_COLOR (linear BT.709), w = tint strength (0 = leave the deck lit // purely by the atmosphere). public float4 dimCloud; + // ---- ReSTIR. x temporal reuse strength (0 disables it and both image accesses), y frame parity + // selecting which reservoir image is history this frame, z render-resolution width in pixels + // (the reservoir images are addressed in render pixels, not display pixels), w unused. + public float4 restir; }; // Skybox modes, mirroring vanilla's DimensionType.Skybox enum. diff --git a/src/main/java/dev/comfyfluffy/caustica/CausticaConfig.java b/src/main/java/dev/comfyfluffy/caustica/CausticaConfig.java index 98945266b..6f3561162 100644 --- a/src/main/java/dev/comfyfluffy/caustica/CausticaConfig.java +++ b/src/main/java/dev/comfyfluffy/caustica/CausticaConfig.java @@ -58,7 +58,7 @@ public static void ensureRegistered() { Object[] touch = { Rt.ENABLED, Rt.Composite.SPP, Rt.Composite.MAX_BOUNCES, Rt.Terrain.ASYNC_DISPATCH_PER_PASS, Rt.Omm.ENABLED, Rt.Entities.ENABLED, Rt.Entities.GLOW_ENABLED, Rt.EntityTextures.MAX_TEXTURES, Rt.DlssRr.ENABLED, Rt.Fg.ENABLED, - Rt.Reflex.ENABLED, Rt.Fog.DENSITY, Rt.Clouds.COVERAGE, Rt.Grade.ENABLED, Rt.Tonemap.VIEW_TRANSFORM, Rt.Pom.DEPTH, Rt.Exposure.MODE, Rt.Tonemap.GAMMA, Rt.FrameStats.ENABLED, + Rt.Reflex.ENABLED, Rt.Fog.DENSITY, Rt.Clouds.COVERAGE, Rt.Grade.ENABLED, Rt.Tonemap.VIEW_TRANSFORM, Rt.Pom.DEPTH, Rt.Restir.TEMPORAL, Rt.Exposure.MODE, Rt.Tonemap.GAMMA, Rt.FrameStats.ENABLED, Rt.Screenshots.EXR_ENABLED, Rt.Hdr.ENABLED, Ngx.PATH, }; } @@ -864,6 +864,24 @@ private Pom() { } } + /** + * ReSTIR temporal reuse for the block-emitter reservoirs. Off by default. Reuses last frame's + * chosen emitter where the surface is unchanged, so a pixel accumulates far more effective + * candidates than one frame's budget allows — the difference shows up in caves and at night, + * where the light sampling is the noise floor. + */ + public static final class Restir { + /** + * Strength of temporal reuse, 0 disables it and both reservoir image accesses. 1 is full + * reuse up to the shader's M cap; lower values shorten the effective history. + */ + public static final FloatSetting TEMPORAL = + clampedFloat("caustica.rt.restir.temporal", "restir.temporal", 0.0f, 0.0f, 1.0f); + + private Restir() { + } + } + public static final class Reflex { public static final BooleanSetting ENABLED = bool("caustica.rt.reflex", "reflex.enabled", false); public static final BooleanSetting LOW_LATENCY_BOOST = diff --git a/src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java b/src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java index 74989afd3..4aa72e92a 100644 --- a/src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java +++ b/src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java @@ -245,6 +245,18 @@ private static final class PushSlot { private RtImage gMotion; private RtImage gSpecAlbedo; private RtImage gSpecMotion; + /** + * ReSTIR temporal reservoirs. Two images, both bound for the pipeline's lifetime, swapping the + * roles of history and destination each frame via a push constant rather than by rewriting + * descriptors — see {@link RtPipeline#setReservoirImages}. Double-width: two texels per pixel. + */ + private RtImage reservoirA; + private RtImage reservoirB; + /** Flips each frame; 0 means A is history. */ + private int reservoirParity; + /** Set whenever history becomes meaningless — first frame, resize, dimension change. */ + private boolean reservoirHistoryValid; + private Object reservoirDimension; // Display-res RT image the display mapper reads: DLSS-RR writes it (render -> display denoise+upscale), or a // linear blit of `output` fills it when RR is off/unavailable (the no-RR reference / fallback). private RtImage rrOutput; @@ -861,6 +873,7 @@ private void bindGuideImages() { worldPipeline.setExtraStorageImage(3, gMotion.view); worldPipeline.setExtraStorageImage(4, gSpecAlbedo.view); worldPipeline.setExtraStorageImage(5, gSpecMotion.view); + worldPipeline.setReservoirImages(reservoirA.view, reservoirB.view); } private void destroyGuideImages() { @@ -888,6 +901,14 @@ private void destroyGuideImages() { gSpecMotion.destroy(); gSpecMotion = null; } + if (reservoirA != null) { + reservoirA.destroy(); + reservoirA = null; + } + if (reservoirB != null) { + reservoirB.destroy(); + reservoirB = null; + } if (rrOutput != null) { rrOutput.destroy(); rrOutput = null; @@ -972,6 +993,16 @@ private void ensureOutput(RtContext ctx, int width, int height) { gMotion = ctx.createStorageImage(renderW, renderH, VK10.VK_FORMAT_R16G16_SFLOAT, "guide motion " + renderW + "x" + renderH); gSpecAlbedo = ctx.createStorageImage(renderW, renderH, VK10.VK_FORMAT_R16G16B16A16_SFLOAT, "guide specular albedo " + renderW + "x" + renderH); gSpecMotion = ctx.createStorageImage(renderW, renderH, VK10.VK_FORMAT_R16G16_SFLOAT, "guide specular motion " + renderW + "x" + renderH); + // ReSTIR reservoirs, at RENDER resolution and double width (two texels per pixel). rgba32f + // because the stored emitter position is a rebased world coordinate: a half there quantises + // light positions into visible banding across a large room. Recreated with the guides, so a + // resolution or DLSS-quality change reallocates them and invalidates history along with it. + reservoirA = ctx.createStorageImage(renderW * 2, renderH, VK10.VK_FORMAT_R32G32B32A32_SFLOAT, + "ReSTIR reservoir A " + renderW + "x" + renderH); + reservoirB = ctx.createStorageImage(renderW * 2, renderH, VK10.VK_FORMAT_R32G32B32A32_SFLOAT, + "ReSTIR reservoir B " + renderW + "x" + renderH); + reservoirHistoryValid = false; + reservoirParity = 0; // Display-res RT image the display mapper reads. Always present (DLSS-RR target, or blit-upscale fallback). rrOutput = ctx.createStorageImage(width, height, VK10.VK_FORMAT_R16G16B16A16_SFLOAT, "DLSS-RR output " + width + "x" + height); exposure.ensureResources(ctx); @@ -1260,6 +1291,29 @@ private void recordFrame(RtContext ctx, RtPipeline active, GpuTexture nativeColo } Float4 dimSky = new Float4(skyR, skyG, skyB, skyboxMode); Float4 dimFog = new Float4(fogR, fogG, fogB, fogTintStrength); + // ReSTIR temporal reuse. History is only meaningful if it describes this world in this + // rebased space: a dimension change reuses the same images with positions from a different + // world entirely, which would light the Nether with the Overworld's torches until the + // reservoirs churned over. A resize already clears the flag when the images are recreated. + Object currentDimension = level == null ? null : level.dimension(); + if (!java.util.Objects.equals(currentDimension, reservoirDimension)) { + reservoirDimension = currentDimension; + reservoirHistoryValid = false; + } + reservoirParity ^= 1; + float restirStrength = CausticaConfig.Rt.Restir.TEMPORAL.value(); + Float4 restir = new Float4( + reservoirHistoryValid ? restirStrength : 0f, + reservoirParity, + renderW, + 0f); + // Valid from the frame after the first one that wrote anything: the destination image this + // frame becomes history next frame. + if (restirStrength > 0f) { + reservoirHistoryValid = true; + } else { + reservoirHistoryValid = false; + } Float4 pom = new Float4( CausticaConfig.Rt.Pom.DEPTH.value(), CausticaConfig.Rt.Pom.QUALITY.value(), @@ -1308,7 +1362,8 @@ private void recordFrame(RtContext ctx, RtPipeline active, GpuTexture nativeColo pom, dimSky, dimFog, - dimCloud + dimCloud, + restir ).write(push); pushBuf.flush(0L, WORLD_PUSH_SIZE); // Upload any entity textures registered this frame into the bindless set before the trace. diff --git a/src/main/java/dev/comfyfluffy/caustica/rt/pipeline/RtPipeline.java b/src/main/java/dev/comfyfluffy/caustica/rt/pipeline/RtPipeline.java index 9694ffe64..1a1d0ab4c 100644 --- a/src/main/java/dev/comfyfluffy/caustica/rt/pipeline/RtPipeline.java +++ b/src/main/java/dev/comfyfluffy/caustica/rt/pipeline/RtPipeline.java @@ -158,6 +158,13 @@ public static RtPipeline create(RtContext ctx, String[] rgen, String[] rmiss, St binds.get(binding).binding(binding).descriptorType(VK10.VK_DESCRIPTOR_TYPE_STORAGE_IMAGE) .descriptorCount(1).stageFlags(VK_SHADER_STAGE_RAYGEN_BIT_KHR); } + // ReSTIR reservoirs. Raygen only — the reservoirs are built and consumed there; no hit or + // miss stage touches them, and narrowing the stage flags keeps the driver from having to + // make them visible to shader stages that never read them. + for (int binding = WORLD_RESERVOIR_A; binding <= WORLD_RESERVOIR_B; binding++) { + binds.get(binding).binding(binding).descriptorType(VK10.VK_DESCRIPTOR_TYPE_STORAGE_IMAGE) + .descriptorCount(1).stageFlags(VK_SHADER_STAGE_RAYGEN_BIT_KHR); + } binds.get(WORLD_CELESTIALS).binding(WORLD_CELESTIALS) .descriptorType(VK10.VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER) .descriptorCount(1).stageFlags(VK_SHADER_STAGE_MISS_BIT_KHR); @@ -407,6 +414,31 @@ public void setStorageImage(long imageView) { } /** Write one DLSS-RR guide image into its canonical world binding across every ring slot. */ + /** + * Binds the two ReSTIR reservoir images. Written once at creation and again on resize, never + * per-frame: the descriptor sets are ring-buffered across frames in flight, so rewriting them each + * frame would mutate a set an earlier frame is still reading. The two images swap roles through a + * push constant instead — see {@code worldPush.restir.y}. + */ + public void setReservoirImages(long viewA, long viewB) { + try (MemoryStack stack = MemoryStack.stackPush()) { + VkDescriptorImageInfo.Buffer infoA = VkDescriptorImageInfo.calloc(1, stack); + infoA.get(0).imageView(viewA).imageLayout(VK10.VK_IMAGE_LAYOUT_GENERAL); + VkDescriptorImageInfo.Buffer infoB = VkDescriptorImageInfo.calloc(1, stack); + infoB.get(0).imageView(viewB).imageLayout(VK10.VK_IMAGE_LAYOUT_GENERAL); + VkWriteDescriptorSet.Buffer write = VkWriteDescriptorSet.calloc(RING * 2, stack); + for (int i = 0; i < RING; i++) { + write.get(i * 2).sType$Default().dstSet(descriptorSets[i]).dstBinding(WORLD_RESERVOIR_A) + .descriptorCount(1).descriptorType(VK10.VK_DESCRIPTOR_TYPE_STORAGE_IMAGE) + .pImageInfo(infoA); + write.get(i * 2 + 1).sType$Default().dstSet(descriptorSets[i]).dstBinding(WORLD_RESERVOIR_B) + .descriptorCount(1).descriptorType(VK10.VK_DESCRIPTOR_TYPE_STORAGE_IMAGE) + .pImageInfo(infoB); + } + VK10.vkUpdateDescriptorSets(ctx.vk(), write, null); + } + } + public void setExtraStorageImage(int slot, long imageView) { if (slot < 0 || slot >= WORLD_GUIDE_COUNT) { throw new IllegalArgumentException("Guide slot out of range: " + slot); From abeec9e0b70a8a33d9ec2c1f8598748ce2c9de67 Mon Sep 17 00:00:00 2001 From: KthanidKisure <161649271+KthanidKisure@users.noreply.github.com> Date: Thu, 27 Aug 2026 16:51:25 +0100 Subject: [PATCH 04/25] Add files via upload --- .../pipelines/world/closest_hit.rchit.slang | 48 +++++++++++++------ .../comfyfluffy/caustica/rt/RtComposite.java | 17 +++++++ 2 files changed, 51 insertions(+), 14 deletions(-) diff --git a/shaders/pipelines/world/closest_hit.rchit.slang b/shaders/pipelines/world/closest_hit.rchit.slang index e91fa98ee..4df8f1513 100644 --- a/shaders/pipelines/world/closest_hit.rchit.slang +++ b/shaders/pipelines/world/closest_hit.rchit.slang @@ -150,34 +150,35 @@ float pomHeightAt(MaterialHeader header, float2 localUv, float lod) { return samplePageNormalAo(header.texturePage, pageUv, lod).a; } -// Returns the parallax-shifted ATLAS uv. `pomParams`: x depth in sprite-widths (0 disables), y step -// count scale, z LOD at which POM has faded out entirely. -float2 parallaxOffsetUv(MaterialHeader header, float2 atlasUv, float lod, float3 n, - float3 p0, float3 p1, float3 p2, float2 t0, float2 t1, float2 t2, - float3 vdir, float3 pomParams) { +// The march itself, in the sprite's own [0,1] space. Terrain reaches this through an atlas-rect +// conversion; entities pass their UV straight in, because an entity texture is its own bindless image +// rather than a region of a shared atlas — there is no rect to map through, and running terrain's +// conversion on an identity rect would be a no-op at best and a silent scale error at worst. +float2 parallaxLocalUv(MaterialHeader header, float2 localUv, float lod, float3 n, + float3 p0, float3 p1, float3 p2, float2 t0, float2 t1, float2 t2, + float3 vdir, float3 pomParams) { float depthScale = pomParams.x; if (depthScale <= 0.0 || (header.features & MATERIAL_FEATURE_NORMAL) == 0u) { - return atlasUv; + return localUv; } // Distance fade. POM's cost is per-hit and its benefit vanishes once a sprite covers a few pixels, // so it is faded out by ray-cone LOD rather than switched off at a hard distance -- a hard cutoff // would pop a visible seam across the ground as you walk. float fade = 1.0 - smoothstep(pomParams.z - 1.0, pomParams.z, lod); if (fade <= 0.0) { - return atlasUv; + return localUv; } float3 T; float3 B; if (!hitTangentFrame(n, p0, p1, p2, t0, t1, t2, T, B)) { - return atlasUv; + return localUv; } // View direction in tangent space. At grazing angles vz goes to zero and the offset would explode, // so it is floored -- the classic POM stretching artifact is worse than the lost parallax. float3 viewT = float3(dot(vdir, T), dot(vdir, B), dot(vdir, n)); float vz = max(abs(viewT.z), 0.35); - float2 localUv = clamp((atlasUv - header.albedoUv.xy) * header.albedoUv.zw, - float2(0.0), float2(1.0)); + localUv = clamp(localUv, float2(0.0), float2(1.0)); // Total UV travel for a ray descending the full height range. float2 maxOffset = (viewT.xy / vz) * depthScale * fade; @@ -218,9 +219,20 @@ float2 parallaxOffsetUv(MaterialHeader header, float2 atlasUv, float lod, float3 } stepDepth *= 0.5; } - float2 shifted = clamp((lo + hi) * 0.5, float2(0.0), float2(1.0)); - // Back to atlas space. Clamping happened in local space, so this can never bleed into a - // neighbouring sprite -- the single most common way POM goes wrong on an atlas. + return clamp((lo + hi) * 0.5, float2(0.0), float2(1.0)); +} + +// Terrain: convert into the sprite's local space, march, convert back. Clamping happens inside the +// march, in local space, so the result can never bleed into a neighbouring sprite -- the single most +// common way POM goes wrong on a texture atlas. +float2 parallaxOffsetUv(MaterialHeader header, float2 atlasUv, float lod, float3 n, + float3 p0, float3 p1, float3 p2, float2 t0, float2 t1, float2 t2, + float3 vdir, float3 pomParams) { + if (pomParams.x <= 0.0 || (header.features & MATERIAL_FEATURE_NORMAL) == 0u) { + return atlasUv; + } + float2 localUv = (atlasUv - header.albedoUv.xy) * header.albedoUv.zw; + float2 shifted = parallaxLocalUv(header, localUv, lod, n, p0, p1, p2, t0, t1, t2, vdir, pomParams); return header.albedoUv.xy + shifted / max(header.albedoUv.zw, float2(1.0e-8)); } @@ -415,8 +427,16 @@ void main(inout Payload payload, in BuiltInTriangleIntersectionAttributes attr) float3 ep2 = mul(entityO2w, HitTriangleVertexPosition(2)); float entityLod = rayConeTextureLod(rayCone, texSizePx(entityAlbedoTex[NonUniformResourceIndex(texSlot)]), ep0, ep1, ep2, euv[e0], euv[e1], euv[e2]); - float4 entityTexel = entityAlbedoTex[NonUniformResourceIndex(texSlot)].SampleLevel(euvCoord, entityLod); MaterialHeader header = ConstPtr(pc.materialTableAddr)[pr.materialId]; + // Parallax on entity geometry, before the albedo fetch so colour and material channels stay in + // register — same rule as terrain. Entity UVs are already in the texture's own space, so the + // march runs directly rather than through an atlas rect. Mob armour, shulker shells and chest + // trim carry LabPBR height in packs like Patrix, and without this they stay flat while the + // blocks around them do not. + euvCoord = parallaxLocalUv(header, euvCoord, entityLod, n, ep0, ep1, ep2, + euv[e0], euv[e1], euv[e2], vdir, + ConstPtr(pc.worldPushAddr)[0].pom.xyz); + float4 entityTexel = entityAlbedoTex[NonUniformResourceIndex(texSlot)].SampleLevel(euvCoord, entityLod); uint material = header.model; float3 baseAlbedo709 = srgbToLinear(entityTexel.rgb) * srgbToLinear(pr.tint.rgb); float3 opticalColor709 = material == MATERIAL_DIELECTRIC diff --git a/src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java b/src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java index 4aa72e92a..5ca142a64 100644 --- a/src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java +++ b/src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java @@ -38,6 +38,8 @@ import org.lwjgl.system.MemoryUtil; import org.lwjgl.vulkan.KHRSynchronization2; import org.lwjgl.vulkan.VK10; +import org.lwjgl.vulkan.VkClearColorValue; +import org.lwjgl.vulkan.VkImageSubresourceRange; import org.lwjgl.vulkan.VkBufferImageCopy; import org.lwjgl.vulkan.VkCommandBuffer; import org.lwjgl.vulkan.VkDependencyInfo; @@ -1003,6 +1005,21 @@ private void ensureOutput(RtContext ctx, int width, int height) { "ReSTIR reservoir B " + renderW + "x" + renderH); reservoirHistoryValid = false; reservoirParity = 0; + // Zero both images at creation. The history-valid flag guards the frame AFTER a reallocation, + // but it is a whole-frame switch and reservoir writes are per-pixel: a pixel the raygen never + // reaches — sky, or any pixel whose primary ray found no emitter-lit surface — is never written, + // so once the flag flips on, that pixel's neighbours read whatever the allocator left in memory. + // packedValid() rejects M<=0, and zeroed memory gives exactly that; undefined memory does not. + ctx.submitSync(cmd -> { + try (MemoryStack clearStack = MemoryStack.stackPush()) { + VkClearColorValue zero = VkClearColorValue.calloc(clearStack); + VkImageSubresourceRange.Buffer range = VkImageSubresourceRange.calloc(1, clearStack); + range.get(0).aspectMask(VK10.VK_IMAGE_ASPECT_COLOR_BIT) + .baseMipLevel(0).levelCount(1).baseArrayLayer(0).layerCount(1); + VK10.vkCmdClearColorImage(cmd, reservoirA.image, VK10.VK_IMAGE_LAYOUT_GENERAL, zero, range); + VK10.vkCmdClearColorImage(cmd, reservoirB.image, VK10.VK_IMAGE_LAYOUT_GENERAL, zero, range); + } + }); // Display-res RT image the display mapper reads. Always present (DLSS-RR target, or blit-upscale fallback). rrOutput = ctx.createStorageImage(width, height, VK10.VK_FORMAT_R16G16B16A16_SFLOAT, "DLSS-RR output " + width + "x" + height); exposure.ensureResources(ctx); From 01a5434f413521ded9a66c615144ab947fd621a4 Mon Sep 17 00:00:00 2001 From: KthanidKisure <161649271+KthanidKisure@users.noreply.github.com> Date: Thu, 27 Aug 2026 17:45:51 +0100 Subject: [PATCH 05/25] Add files via upload --- shaders/pipelines/world/indirect.rgen.slang | 25 +++++++++++++-- shaders/pipelines/world/restir.slang | 31 +++++++++++++++++++ shaders/pipelines/world/world_common.slang | 4 +-- .../comfyfluffy/caustica/CausticaConfig.java | 12 +++++++ .../comfyfluffy/caustica/rt/RtComposite.java | 4 +-- 5 files changed, 70 insertions(+), 6 deletions(-) diff --git a/shaders/pipelines/world/indirect.rgen.slang b/shaders/pipelines/world/indirect.rgen.slang index 0a5e46de4..c6fe95c71 100644 --- a/shaders/pipelines/world/indirect.rgen.slang +++ b/shaders/pipelines/world/indirect.rgen.slang @@ -385,8 +385,12 @@ public float3 tracePath(PathSegment seg, uint2 pix, uint sampleIndex) { reservoirA.GetDimensions(reservoirW, reservoirH); // The images are double-width, so the addressable pixel count is half the texel width. int renderWidth = int(reservoirW) / 2; - if (all(prevPix >= int2(0, 0)) && prevPix.x < renderWidth - && prevPix.y < int(reservoirH)) { + // Clamped rather than skipped: a pixel whose reprojection left the screen still has + // usable neighbours, and anchoring the spatial taps at the edge is better than + // dropping reuse entirely for everything moving off-frame. + prevPix = int2(clamp(prevPix.x, 0, renderWidth - 1), + clamp(prevPix.y, 0, int(reservoirH) - 1)); + { PackedReservoir history = loadReservoir(prevPix, parity); // Geometric rejection: same depth and normal, or the sample belonged to another // surface that merely happened to land on this pixel last frame. @@ -398,6 +402,23 @@ public float3 tracePath(PathSegment seg, uint2 pix, uint sampleIndex) { false, activeSss, seed); } } + // Spatial reuse. Taps read the same history image, for the reason given in + // restir.slang: sampling this frame's output would race the concurrent writes of the + // very dispatch doing the sampling. + int spatialTaps = min(int(worldPush.restir.z), RESTIR_MAX_SPATIAL_TAPS); + float spatialRadius = worldPush.restir.w; + for (int tap = 0; tap < spatialTaps; ++tap) { + int2 tapPix = prevPix + spatialTapOffset(spatialRadius, seed); + if (any(tapPix < int2(0, 0)) || tapPix.x >= renderWidth + || tapPix.y >= int(reservoirH)) { + continue; + } + if (!temporalSurfaceMatches(payload.hitT, gDepth[tapPix], n, gNormal[tapPix].xyz)) { + continue; + } + r = temporalCombine(r, loadReservoir(tapPix, parity), hitPos, n, v, rd, + diffAlb, F0, rough, false, activeSss, seed); + } storeReservoir(int2(pix), parity, toPacked(r)); } L += throughput * shadeReservoir(r, hitPos, n, v, rd, diffAlb, F0, rough, false, diff --git a/shaders/pipelines/world/restir.slang b/shaders/pipelines/world/restir.slang index 2eb54fa5a..f2b34fa7d 100644 --- a/shaders/pipelines/world/restir.slang +++ b/shaders/pipelines/world/restir.slang @@ -173,6 +173,37 @@ public PackedReservoir toPacked(Reservoir r) { return p; } +// ---- Spatial reuse ----------------------------------------------------------------------------------- +// +// Temporal reuse alone cannot help a pixel that has no usable history: the frame after a camera cut, a +// disoccluded edge, a surface that just came round a corner. Those are exactly the pixels a player is +// looking at, and they stay at single-frame noise while everything around them has converged. Spatial +// reuse borrows from screen-space neighbours, which have no such gap. +// +// Neighbours are read from the HISTORY image, not from this frame's output. Reading what the current +// dispatch is concurrently writing would be a race — reservoir writes are unordered across a dispatch, +// so a neighbour might be last frame's value, this frame's, or a torn mix, varying run to run. Sampling +// last frame's completed buffer makes this spatiotemporal reuse with a one-frame lag, which is both +// well-defined and what the lag already is for the temporal path. +// +// HONESTY ABOUT BIAS. This is the practical variant, not the unbiased one. Correct spatial ReSTIR needs +// per-neighbour MIS weights that account for each neighbour's own sampling domain; that costs a +// visibility ray per tap and roughly doubles the maths. What this does instead — re-evaluating p-hat at +// the receiving surface, rejecting geometric mismatches, and capping M — bounds the error to a slight +// over-smoothing near contact shadows rather than a visible energy shift. It is the trade almost every +// shipping ReSTIR implementation makes, but it IS a trade. + +public static const int RESTIR_MAX_SPATIAL_TAPS = 8; +static const float RESTIR_TWO_PI = 6.28318530718; + +// A disc sample around the pixel. Uniform in area rather than in radius, so taps do not bunch at the +// centre where they duplicate information the pixel already has. +public int2 spatialTapOffset(float radius, inout uint seed) { + float angle = rndf(seed) * RESTIR_TWO_PI; + float r = radius * sqrt(rndf(seed)); + return int2(int(round(cos(angle) * r)), int(round(sin(angle) * r))); +} + // ---- Temporal combine -------------------------------------------------------------------------------- // Was the reprojected pixel the same surface? Both tests are needed: depth alone accepts a wall seen diff --git a/shaders/pipelines/world/world_common.slang b/shaders/pipelines/world/world_common.slang index 91cec6726..1b4c22645 100644 --- a/shaders/pipelines/world/world_common.slang +++ b/shaders/pipelines/world/world_common.slang @@ -115,8 +115,8 @@ public struct WorldPush { // purely by the atmosphere). public float4 dimCloud; // ---- ReSTIR. x temporal reuse strength (0 disables it and both image accesses), y frame parity - // selecting which reservoir image is history this frame, z render-resolution width in pixels - // (the reservoir images are addressed in render pixels, not display pixels), w unused. + // selecting which reservoir image is history this frame, z spatial neighbour taps per pixel + // (0 = temporal only), w spatial tap radius in render pixels. public float4 restir; }; diff --git a/src/main/java/dev/comfyfluffy/caustica/CausticaConfig.java b/src/main/java/dev/comfyfluffy/caustica/CausticaConfig.java index 6f3561162..ae46a199b 100644 --- a/src/main/java/dev/comfyfluffy/caustica/CausticaConfig.java +++ b/src/main/java/dev/comfyfluffy/caustica/CausticaConfig.java @@ -878,6 +878,18 @@ public static final class Restir { public static final FloatSetting TEMPORAL = clampedFloat("caustica.rt.restir.temporal", "restir.temporal", 0.0f, 0.0f, 1.0f); + /** + * Screen-space neighbour taps per pixel, 0 for temporal-only. Helps exactly where temporal + * reuse cannot: disoccluded edges and the frame after a camera cut, which is where the eye + * is. Capped at 8 in the shader. + */ + public static final IntSetting SPATIAL_TAPS = + intAtLeast("caustica.rt.restir.spatialTaps", "restir.spatial-taps", 3, 0); + /** Spatial tap radius in render pixels. Wider borrows more but mismatches more often. */ + public static final FloatSetting SPATIAL_RADIUS = + clampedFloat("caustica.rt.restir.spatialRadius", "restir.spatial-radius", + 8.0f, 1.0f, 64.0f); + private Restir() { } } diff --git a/src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java b/src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java index 5ca142a64..b9982608e 100644 --- a/src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java +++ b/src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java @@ -1322,8 +1322,8 @@ private void recordFrame(RtContext ctx, RtPipeline active, GpuTexture nativeColo Float4 restir = new Float4( reservoirHistoryValid ? restirStrength : 0f, reservoirParity, - renderW, - 0f); + CausticaConfig.Rt.Restir.SPATIAL_TAPS.value(), + CausticaConfig.Rt.Restir.SPATIAL_RADIUS.value()); // Valid from the frame after the first one that wrote anything: the destination image this // frame becomes history next frame. if (restirStrength > 0f) { From e07c1676c72dcf3041d8e0bc8252314396555a07 Mon Sep 17 00:00:00 2001 From: KthanidKisure <161649271+KthanidKisure@users.noreply.github.com> Date: Thu, 27 Aug 2026 18:59:56 +0100 Subject: [PATCH 06/25] Add files via upload --- .../caustica/rt/terrain/RtDhLodSource.java | 280 ++++++++++++++++++ 1 file changed, 280 insertions(+) create mode 100644 src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtDhLodSource.java diff --git a/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtDhLodSource.java b/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtDhLodSource.java new file mode 100644 index 000000000..c6284a0c0 --- /dev/null +++ b/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtDhLodSource.java @@ -0,0 +1,280 @@ +package dev.comfyfluffy.caustica.rt.terrain; + +import java.lang.reflect.Array; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.List; + +import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.world.level.block.state.BlockState; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Reads Distant Horizons' persistent terrain database and turns it into axis-aligned boxes that can be + * meshed and put in the ray-tracing acceleration structure. + * + *

Why this exists

+ * Caustica builds every section from {@code level.getChunk(...)}, the client chunk cache. Beyond the + * server's view distance there is no block data in the process at all — so a Caustica-native LOD can + * reduce detail on loaded terrain, but it can never show terrain that was never sent. DH already solves + * that problem: it maintains a durable, generated, streamed world database far past the chunk cache. + * + *

What this deliberately does NOT do

+ * It does not touch DH's renderer, intercept its draw calls, or read its GPU buffers. DH's rendering + * should be switched OFF when this is used. DH is a data source here and Caustica does all drawing, as + * rays. That avoids the whole class of problems that come from two world renderers coexisting, and it + * means this survives DH changing its rendering backend — which it has done twice recently. + * + *

Why reflection

+ * DH is optional. A hard compile-time dependency would make Caustica refuse to load without it, and + * would pin a DH version. Everything here resolves lazily and degrades to "no LOD" if DH is absent, is + * a version whose API moved, or has not finished loading a world. The API surface used is small and + * documented — {@code DhApi.Delayed.terrainRepo}, {@code DhApi.Delayed.worldProxy}, and + * {@code IDhApiTerrainDataRepo.getAllTerrainDataAtDetailLevelAndPos} — and it is a versioned public + * API rather than internals, so it is a reasonable thing to bind to loosely. + * + *

Data shape

+ * DH returns {@code DhApiTerrainDataPoint[][][]} indexed [x][z][column entry]. Each entry is already a + * vertical RUN — a {@code bottomYBlockPos}..{@code topYBlockPos} span of one block state, with baked + * block and sky light. That is run-length encoding done for us: a 200-block stone column is one entry, + * not 200. Emitting one box per entry is therefore already a large win before any greedy merging, and + * it is why this does not need a general voxel mesher. + * + *

Crucially the entry carries a {@code blockStateWrapper} whose {@code getWrappedMcObject()} is a real + * Minecraft {@link BlockState}. That means distant terrain can resolve to the SAME material table entries + * as near terrain — roughness, metalness, emission, LabPBR maps — rather than the baked vertex colour a + * renderer-interception approach would give you. Distant lava glowing correctly is downstream of this + * one method call. + */ +public final class RtDhLodSource { + private static final Logger LOGGER = LoggerFactory.getLogger("Caustica/DhLod"); + private static final String DH_MOD_ID = "distanthorizons"; + + /** Resolution states. Resolved once; a failure is remembered so a broken API is not retried per frame. */ + private enum State { UNRESOLVED, READY, UNAVAILABLE } + + private static State state = State.UNRESOLVED; + private static Object terrainRepo; + private static Object worldProxy; + private static Method getAllTerrainDataAtDetailLevelAndPos; + private static Method getSinglePlayerLevel; + private static Field resultPayload; + private static Field resultSuccess; + private static Field resultMessage; + private static Field pointBottomY; + private static Field pointTopY; + private static Field pointBlockLight; + private static Field pointSkyLight; + private static Field pointBlockState; + private static Method wrapperGetMcObject; + + private RtDhLodSource() { + } + + /** + * One vertical run of a single block state, in world coordinates. {@code topY} is exclusive, matching + * DH's convention, so an empty run is representable and callers do not need an off-by-one guard. + */ + public record LodBox(int blockX, int bottomY, int topY, int blockZ, int sizeXZ, + BlockState blockState, int blockLight, int skyLight) { + public int heightBlocks() { + return topY - bottomY; + } + } + + public static synchronized boolean available() { + resolve(); + return state == State.READY; + } + + private static void resolve() { + if (state != State.UNRESOLVED) { + return; + } + if (!FabricLoader.getInstance().isModLoaded(DH_MOD_ID)) { + state = State.UNAVAILABLE; + return; + } + try { + Class dhApi = Class.forName("com.seibel.distanthorizons.api.DhApi"); + Class delayed = Class.forName("com.seibel.distanthorizons.api.DhApi$Delayed"); + terrainRepo = delayed.getField("terrainRepo").get(null); + worldProxy = delayed.getField("worldProxy").get(null); + if (terrainRepo == null || worldProxy == null) { + // DH is present but has not finished initialising. Stay UNRESOLVED so this retries: + // the fields are populated after world load, not at mod init. + terrainRepo = null; + worldProxy = null; + return; + } + + Class repoInterface = Class.forName( + "com.seibel.distanthorizons.api.interfaces.data.IDhApiTerrainDataRepo"); + Class levelWrapper = Class.forName( + "com.seibel.distanthorizons.api.interfaces.world.IDhApiLevelWrapper"); + Class cacheInterface = Class.forName( + "com.seibel.distanthorizons.api.interfaces.data.IDhApiTerrainDataCache"); + getAllTerrainDataAtDetailLevelAndPos = repoInterface.getMethod( + "getAllTerrainDataAtDetailLevelAndPos", + levelWrapper, byte.class, int.class, int.class, cacheInterface); + + // getSinglePlayerLevel, not a "current level" accessor: DH has no notion of one. On a + // multiplayer server this throws IllegalStateException and distant terrain is simply + // absent — correct behaviour, since picking an arbitrary entry from + // getAllLoadedLevelWrappers() would happily hand back the Nether's terrain while you + // stand in the Overworld. + Class worldProxyInterface = Class.forName( + "com.seibel.distanthorizons.api.interfaces.world.IDhApiWorldProxy"); + getSinglePlayerLevel = worldProxyInterface.getMethod("getSinglePlayerLevel"); + + // DhApiResult exposes success/message/payload as public FIELDS, not getters. + Class resultClass = Class.forName("com.seibel.distanthorizons.api.objects.DhApiResult"); + resultSuccess = resultClass.getField("success"); + resultMessage = resultClass.getField("message"); + resultPayload = resultClass.getField("payload"); + + Class pointClass = Class.forName( + "com.seibel.distanthorizons.api.objects.data.DhApiTerrainDataPoint"); + pointBottomY = pointClass.getField("bottomYBlockPos"); + pointTopY = pointClass.getField("topYBlockPos"); + pointBlockLight = pointClass.getField("blockLightLevel"); + pointSkyLight = pointClass.getField("skyLightLevel"); + pointBlockState = pointClass.getField("blockStateWrapper"); + + Class unsafeWrapper = Class.forName( + "com.seibel.distanthorizons.api.interfaces.IDhApiUnsafeWrapper"); + wrapperGetMcObject = unsafeWrapper.getMethod("getWrappedMcObject"); + + state = State.READY; + LOGGER.info("Distant Horizons LOD source resolved ({})", dhApi.getName()); + } catch (ReflectiveOperationException | RuntimeException e) { + // A moved API is expected across DH majors and is not an error worth spamming: log once and + // run without distant terrain, exactly as if DH were not installed. + state = State.UNAVAILABLE; + terrainRepo = null; + worldProxy = null; + LOGGER.warn("Distant Horizons is installed but its API did not resolve; " + + "distant LOD terrain disabled. {}", e.toString()); + } + } + + /** + * Fetches one DH region at {@code detailLevel} and flattens it into boxes. + * + *

{@code detailLevel} is DH's own exponent: 0 is one data point per block, 1 is one per 2x2 + * column, and so on. The horizontal footprint of each returned box is {@code 1 << detailLevel} + * blocks square, which is why {@link LodBox#sizeXZ} is carried rather than assumed — a caller + * meshing these must scale the quad, not emit a unit cube. + * + *

Call this off the render thread. DH may hit disk. It is a database query, not a + * memory read. + * + * @return the boxes, or an empty list if DH is unavailable or has nothing at this position. + */ + public static List fetchRegion(byte detailLevel, int posX, int posZ) { + synchronized (RtDhLodSource.class) { + resolve(); + if (state != State.READY) { + return List.of(); + } + } + try { + Object levelWrapper = getSinglePlayerLevel.invoke(worldProxy); + if (levelWrapper == null) { + return List.of(); // between worlds + } + Object result = getAllTerrainDataAtDetailLevelAndPos.invoke( + terrainRepo, levelWrapper, detailLevel, posX, posZ, null); + if (result == null || !resultSuccess.getBoolean(result)) { + // A failed query is routine — the region may simply not be generated yet — so this is + // debug, not a warning, and the message is DH's own explanation. + LOGGER.debug("DH region {} {} unavailable at detail {}: {}", posX, posZ, detailLevel, + result == null ? "null result" : resultMessage.get(result)); + return List.of(); + } + Object grid = resultPayload.get(result); + if (grid == null) { + return List.of(); + } + return flatten(grid, detailLevel, posX, posZ); + } catch (ReflectiveOperationException | RuntimeException e) { + LOGGER.debug("DH region fetch failed at detail {} ({}, {}): {}", + detailLevel, posX, posZ, e.toString()); + return List.of(); + } + } + + /** + * Walks the [x][z][column] array. Reflection on the array rather than a cast because the element + * type lives in DH's classloader-visible API and casting it here would reintroduce the hard + * dependency this class exists to avoid. + */ + private static List flatten(Object grid, byte detailLevel, int posX, int posZ) + throws ReflectiveOperationException { + int sizeXZ = 1 << detailLevel; + // DH positions are in detail-level units; the world origin of this region is the position + // scaled by the level's block footprint. + int originX = posX * sizeXZ; + int originZ = posZ * sizeXZ; + + List boxes = new ArrayList<>(); + int lenX = Array.getLength(grid); + for (int ix = 0; ix < lenX; ix++) { + Object column = Array.get(grid, ix); + if (column == null) { + continue; + } + int lenZ = Array.getLength(column); + for (int iz = 0; iz < lenZ; iz++) { + Object entries = Array.get(column, iz); + if (entries == null) { + continue; + } + int lenY = Array.getLength(entries); + for (int iy = 0; iy < lenY; iy++) { + Object point = Array.get(entries, iy); + if (point == null) { + continue; + } + int bottomY = pointBottomY.getInt(point); + int topY = pointTopY.getInt(point); + if (topY <= bottomY) { + continue; + } + Object wrapper = pointBlockState.get(point); + if (wrapper == null) { + continue; + } + Object mcObject = wrapperGetMcObject.invoke(wrapper); + if (!(mcObject instanceof BlockState blockState) || blockState.isAir()) { + // Air runs are the majority of every column and carry no geometry. Skipping + // them here rather than in the mesher keeps the returned list proportional to + // the terrain rather than to the world height. + continue; + } + boxes.add(new LodBox( + originX + ix * sizeXZ, + bottomY, + topY, + originZ + iz * sizeXZ, + sizeXZ, + blockState, + pointBlockLight.getInt(point), + pointSkyLight.getInt(point))); + } + } + } + return boxes; + } + + /** Forgets the resolved API. Call on world unload so a DH reload is picked up. */ + public static synchronized void invalidate() { + if (state == State.READY) { + state = State.UNRESOLVED; + terrainRepo = null; + worldProxy = null; + } + } +} From ec6e9160aecdd8102b4fe7b4d835efb6ef9602d5 Mon Sep 17 00:00:00 2001 From: KthanidKisure <161649271+KthanidKisure@users.noreply.github.com> Date: Thu, 27 Aug 2026 19:33:35 +0100 Subject: [PATCH 07/25] Add files via upload --- .../caustica/rt/terrain/RtDhLodRegion.java | 225 ++++++++++++++++++ 1 file changed, 225 insertions(+) create mode 100644 src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtDhLodRegion.java diff --git a/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtDhLodRegion.java b/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtDhLodRegion.java new file mode 100644 index 000000000..66f11cbba --- /dev/null +++ b/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtDhLodRegion.java @@ -0,0 +1,225 @@ +package dev.comfyfluffy.caustica.rt.terrain; + +import java.util.List; + +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.renderer.block.BlockAndTintGetter; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Holder; +import net.minecraft.world.level.CardinalLighting; +import net.minecraft.world.level.ColorResolver; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.lighting.LevelLightEngine; +import net.minecraft.world.level.material.FluidState; + +/** + * Presents Distant Horizons LOD data to Caustica's existing terrain mesher as if it were an ordinary + * 16x16x16 section. + * + *

The idea

+ * Rather than writing a second mesher for LOD geometry, this makes LOD data look like the input the + * tested one already takes. {@link RtTerrainMesher#buildCpuSection} walks a 16-cubed grid calling + * {@code getBlockState}; back that with DH data and you get full model tessellation, correct sprites, + * correct material IDs, biome tints, fluid handling and the coplanar-quad resolution — all from the + * path that already works for near terrain. No new sprite lookup, no new material resolution, no second + * ABI to keep in sync with {@code PackedSection}. + * + *

How it stays cheap: the section is a SCALE, not a downsample

+ * A virtual block here represents {@code 1 << detailLevel} world blocks on a side. The mesher emits + * section-local coordinates in 0..16 exactly as it always does, and the TLAS instance carries a + * {@code 2^detailLevel} scale alongside its translation. So one LOD section covers a + * {@code (16 * 2^detail)} block cube while costing the triangle budget of one ordinary section — at + * detail 3 that is a 128-block cube for the price of a 16-block one. + * + *

This is the whole reason the approach is viable. Meshing DH data at 1:1 and relying on distance to + * hide it would produce the triangle count of full-detail terrain out to the horizon, which is the + * problem LOD exists to avoid. + * + *

Known approximations, stated rather than hidden

+ *
    + *
  • Light engine and biome lookups fall through to the level. Out past the chunk cache those + * return defaults, so distant terrain gets default sky light and default biome tint. For a path + * tracer this matters less than it would for a rasterizer — the actual lighting is traced, and + * baked light mostly feeds ambient occlusion and emission. But grass and foliage colour at + * distance will be the fallback tint, not the biome's. DH's own {@code biomeWrapper} could fix + * this and is the obvious follow-up.
  • + *
  • One block state per virtual block. DH's run-length column is sampled at the virtual + * block's centre. A single-block ore vein inside an 8-block cube disappears. That is what LOD + * means.
  • + *
  • Block entities return null, as in the near-terrain region, because the mesher never asks.
  • + *
+ */ +final class RtDhLodRegion implements BlockAndTintGetter { + /** Section edge in virtual blocks — the same 16 the mesher walks. */ + static final int SECTION_BLOCKS = 16; + private static final BlockState AIR = Blocks.AIR.defaultBlockState(); + + private final ClientLevel level; + private final CardinalLighting cardinalLighting; + private final LevelLightEngine lightEngine; + /** Dense virtual-block grid, x-major then y then z, so the mesher's inner z loop walks contiguously. */ + private final BlockState[] states = new BlockState[SECTION_BLOCKS * SECTION_BLOCKS * SECTION_BLOCKS]; + private final int detailLevel; + private final int scale; + /** World-space origin of the section, in real blocks. */ + private final int originBlockX; + private final int originBlockY; + private final int originBlockZ; + private boolean empty = true; + + RtDhLodRegion(ClientLevel level, int detailLevel, int originBlockX, int originBlockY, int originBlockZ) { + this.level = level; + this.cardinalLighting = level.cardinalLighting(); + this.lightEngine = level.getLightEngine(); + this.detailLevel = detailLevel; + this.scale = 1 << detailLevel; + this.originBlockX = originBlockX; + this.originBlockY = originBlockY; + this.originBlockZ = originBlockZ; + java.util.Arrays.fill(states, AIR); + } + + int detailLevel() { + return detailLevel; + } + + int scale() { + return scale; + } + + int originBlockX() { + return originBlockX; + } + + int originBlockY() { + return originBlockY; + } + + int originBlockZ() { + return originBlockZ; + } + + /** True when nothing was written — the caller should skip meshing entirely rather than build an empty BLAS. */ + boolean isEmpty() { + return empty; + } + + /** + * Rasterises DH boxes into the virtual grid. + * + *

Boxes are vertical runs of one block state, so this fills a span of virtual Y per box rather + * than looping blocks. A box whose horizontal footprint is larger than one virtual block (which + * happens when DH's detail level is coarser than ours) fills the cells it covers; a box smaller + * than one virtual block writes a single cell, and the last writer wins. Last-writer-wins is + * deliberate and not a coin flip: {@link RtDhLodSource} returns boxes in column order, so the + * winner is the topmost run touching that cell, which is the surface you can actually see. + */ + void fill(List boxes) { + for (RtDhLodSource.LodBox box : boxes) { + int localX0 = Math.floorDiv(box.blockX() - originBlockX, scale); + int localZ0 = Math.floorDiv(box.blockZ() - originBlockZ, scale); + int spanCells = Math.max(1, box.sizeXZ() / scale); + int localY0 = Math.floorDiv(box.bottomY() - originBlockY, scale); + int localY1 = Math.floorDiv(box.topY() - 1 - originBlockY, scale); + if (localY1 < 0 || localY0 >= SECTION_BLOCKS) { + continue; + } + int yStart = Math.max(localY0, 0); + int yEnd = Math.min(localY1, SECTION_BLOCKS - 1); + for (int dx = 0; dx < spanCells; dx++) { + int lx = localX0 + dx; + if (lx < 0 || lx >= SECTION_BLOCKS) { + continue; + } + for (int dz = 0; dz < spanCells; dz++) { + int lz = localZ0 + dz; + if (lz < 0 || lz >= SECTION_BLOCKS) { + continue; + } + for (int ly = yStart; ly <= yEnd; ly++) { + states[index(lx, ly, lz)] = box.blockState(); + empty = false; + } + } + } + } + } + + private static int index(int x, int y, int z) { + return (x * SECTION_BLOCKS + y) * SECTION_BLOCKS + z; + } + + // ---- BlockAndTintGetter ---------------------------------------------------------------------- + // + // The mesher addresses this in VIRTUAL block coordinates: it is told the section is at + // (0,0,0)..(16,16,16) and emits section-local vertices in that space. The instance transform scales + // those back up. So positions arriving here are already local and need no world conversion — which + // also means this never touches the real world's chunk cache for geometry, only for the tint and + // light fallbacks below. + + @Override + public BlockState getBlockState(BlockPos pos) { + int x = pos.getX(); + int y = pos.getY(); + int z = pos.getZ(); + if (x < 0 || y < 0 || z < 0 || x >= SECTION_BLOCKS || y >= SECTION_BLOCKS || z >= SECTION_BLOCKS) { + // Out-of-section neighbour queries drive face culling. Returning AIR means boundary faces + // are always emitted, which costs some triangles but guarantees no hole between adjacent LOD + // sections. A hole in a path tracer is not a seam — primary rays fall through to the sky and + // shadow rays fall through, putting a bar of light on the ground. + return AIR; + } + return states[index(x, y, z)]; + } + + @Override + public FluidState getFluidState(BlockPos pos) { + return getBlockState(pos).getFluidState(); + } + + @Override + public CardinalLighting cardinalLighting() { + return cardinalLighting; + } + + @Override + public LevelLightEngine getLightEngine() { + return lightEngine; + } + + @Override + public BlockEntity getBlockEntity(BlockPos pos) { + return null; // never queried by the RT mesher, as in RtSectionSnapshots.Region + } + + @Override + public int getBlockTint(BlockPos pos, ColorResolver resolver) { + // Sampled at the section's world origin rather than the virtual position: the virtual position + // is meaningless in world space, and one tint for the whole LOD section is both cheaper and + // more stable than a per-cell lookup that would flicker as sections stream. + return level.getBlockTint(new BlockPos(originBlockX, originBlockY, originBlockZ), resolver); + } + + @Override + public boolean hasBiomes() { + return level.hasBiomes(); + } + + @Override + public Holder getBiomeFabric(BlockPos pos) { + return level.getBiomeFabric(new BlockPos(originBlockX, originBlockY, originBlockZ)); + } + + @Override + public int getMinY() { + return level.getMinY(); + } + + @Override + public int getHeight() { + return level.getHeight(); + } +} From b250341016f63c4454318b2d3f590277ecd112fc Mon Sep 17 00:00:00 2001 From: KthanidKisure <161649271+KthanidKisure@users.noreply.github.com> Date: Fri, 28 Aug 2026 03:58:14 +0100 Subject: [PATCH 08/25] Add files via upload --- shaders/pipelines/world/clouds.slang | 23 ++++- shaders/pipelines/world/world_common.slang | 3 +- .../comfyfluffy/caustica/CausticaConfig.java | 61 ++++++++++++- .../comfyfluffy/caustica/rt/RtComposite.java | 20 ++++- .../caustica/rt/terrain/RtDhLodSource.java | 50 +++++++++-- .../color/luts/hdr_agx_punchy_rec2020.bin | Bin 0 -> 2197020 bytes tools/bake_display_lut.py | 84 ++++++++++++++++++ 7 files changed, 224 insertions(+), 17 deletions(-) create mode 100644 src/main/resources/caustica/color/luts/hdr_agx_punchy_rec2020.bin diff --git a/shaders/pipelines/world/clouds.slang b/shaders/pipelines/world/clouds.slang index aad3a2f09..33d2cd4cf 100644 --- a/shaders/pipelines/world/clouds.slang +++ b/shaders/pipelines/world/clouds.slang @@ -52,6 +52,7 @@ public struct CloudParams { public float thickness; // deck depth in blocks public float2 wind; // domain offset in blocks, advanced on the CPU so it is frame-rate independent public float detail; // 0..1 erosion strength + public float featureSize; // blocks per noise period; smaller means more, tighter cloud masses public float ambient; // fraction of zenith sky scattered in as multiple-scattering stand-in }; @@ -64,6 +65,7 @@ public CloudParams makeCloudParams(WorldPush push) { c.wind = push.cloud1.xy; c.detail = clamp(push.cloud1.z, 0.0, 1.0); c.ambient = max(push.cloud1.w, 0.0); + c.featureSize = max(push.cloud2.w, 1.0); return c; } @@ -134,10 +136,18 @@ public float cloudDensity(CloudParams c, float3 position) { return 0.0; } - // Base shape. The horizontal scale is deliberately far coarser than the vertical one: cumulus fields - // are wide and shallow, and isotropic noise at this scale reads as fog banks rather than as clouds. + // Base shape. Horizontal scale is coarser than vertical: cumulus fields are wide and shallow, and + // isotropic noise reads as fog banks rather than clouds. + // + // FEATURE SIZE IS CONFIGURABLE, and the original hardcoded 0.0012 was badly wrong: one noise period + // spanned ~830 blocks, so an entire render distance held two or three cloud masses, and wind at + // 1.5 blocks/second moved the field 0.2% of a feature width per second — visually frozen. "Almost + // no clouds" and "clouds do not move" were one mistake, not two. + float baseFrequency = 1.0 / max(c.featureSize, 1.0); float3 domain = float3(position.x + c.wind.x, position.y, position.z + c.wind.y); - float3 baseCoord = float3(domain.x * 0.0012, domain.y * 0.0035, domain.z * 0.0012); + float3 baseCoord = float3(domain.x * baseFrequency, + domain.y * baseFrequency * 2.9, + domain.z * baseFrequency); float shape = cloudFbm(baseCoord, 4); // Coverage as a threshold remap, not a multiply. Multiplying would raise a flat haze everywhere as @@ -153,7 +163,12 @@ public float cloudDensity(CloudParams c, float3 position) { // Erosion, applied as an inward carve whose strength falls off with density. Eroding the core as hard // as the edge would punch holes through the middle of every cloud. if (c.detail > 0.0) { - float3 detailCoord = float3(domain.x * 0.012, domain.y * 0.020, domain.z * 0.012); + // Detail rides at 10x the base frequency so it scales with feature size rather than staying + // fixed while the base changes underneath it. + float detailFrequency = baseFrequency * 10.0; + float3 detailCoord = float3(domain.x * detailFrequency, + domain.y * detailFrequency * 1.7, + domain.z * detailFrequency); float erosion = 1.0 - cloudFbm(detailCoord, 3); float strength = c.detail * (1.0 - shaped); shaped = saturate(shaped - erosion * erosion * strength); diff --git a/shaders/pipelines/world/world_common.slang b/shaders/pipelines/world/world_common.slang index 1b4c22645..454639600 100644 --- a/shaders/pipelines/world/world_common.slang +++ b/shaders/pipelines/world/world_common.slang @@ -101,7 +101,8 @@ public struct WorldPush { public float4 cloud0; public float4 cloud1; // cloud2: x ground-shadow strength (0 disables shadowing without disabling the deck), y the - // multiple-scattering floor the shadow cannot darken past, z rain wetness 0..1, w unused. + // multiple-scattering floor the shadow cannot darken past, z rain wetness 0..1, + // w cloud feature size in blocks (one noise period). public float4 cloud2; // ---- Parallax occlusion mapping. x depth in sprite-widths (0 disables it entirely), y step-count // scale, z ray-cone LOD at which it has faded out, w unused. diff --git a/src/main/java/dev/comfyfluffy/caustica/CausticaConfig.java b/src/main/java/dev/comfyfluffy/caustica/CausticaConfig.java index ae46a199b..f9b38e9dd 100644 --- a/src/main/java/dev/comfyfluffy/caustica/CausticaConfig.java +++ b/src/main/java/dev/comfyfluffy/caustica/CausticaConfig.java @@ -58,7 +58,8 @@ public static void ensureRegistered() { Object[] touch = { Rt.ENABLED, Rt.Composite.SPP, Rt.Composite.MAX_BOUNCES, Rt.Terrain.ASYNC_DISPATCH_PER_PASS, Rt.Omm.ENABLED, Rt.Entities.ENABLED, Rt.Entities.GLOW_ENABLED, Rt.EntityTextures.MAX_TEXTURES, Rt.DlssRr.ENABLED, Rt.Fg.ENABLED, - Rt.Reflex.ENABLED, Rt.Fog.DENSITY, Rt.Clouds.COVERAGE, Rt.Grade.ENABLED, Rt.Tonemap.VIEW_TRANSFORM, Rt.Pom.DEPTH, Rt.Restir.TEMPORAL, Rt.Exposure.MODE, Rt.Tonemap.GAMMA, Rt.FrameStats.ENABLED, + Rt.Reflex.ENABLED, Rt.Fog.DENSITY, Rt.Clouds.COVERAGE, Rt.Grade.ENABLED, Rt.Tonemap.VIEW_TRANSFORM, Rt.Pom.DEPTH, Rt.Restir.TEMPORAL, + Rt.Weather.RAIN_OVERRIDE, Rt.Exposure.MODE, Rt.Tonemap.GAMMA, Rt.FrameStats.ENABLED, Rt.Screenshots.EXR_ENABLED, Rt.Hdr.ENABLED, Ngx.PATH, }; } @@ -757,9 +758,20 @@ public static final class Clouds { /** Deck depth in blocks. Thin decks read as stratus, thick ones as cumulus. */ public static final FloatSetting THICKNESS = clampedFloat("caustica.rt.clouds.thickness", "clouds.thickness", 90.0f, 1.0f, 2048.0f); - /** Domain drift in blocks per second. 0 freezes the deck. */ + /** + * Blocks per noise period — roughly the width of one cloud mass. Smaller gives more, tighter + * clouds. 220 puts several masses inside a normal render distance; the original hardcoded + * value behaved like ~830, which is why the sky looked almost empty. + */ + public static final FloatSetting FEATURE_SIZE = + clampedFloat("caustica.rt.clouds.featureSize", "clouds.feature-size", + 160.0f, 16.0f, 4096.0f); + /** + * Domain drift in blocks per second. 0 freezes the deck. Judge this against feature-size: + * drift only reads as motion when it covers a noticeable fraction of a cloud per second. + */ public static final FloatSetting WIND_SPEED = - clampedFloat("caustica.rt.clouds.windSpeed", "clouds.wind-speed", 1.5f, 0.0f, 256.0f); + clampedFloat("caustica.rt.clouds.windSpeed", "clouds.wind-speed", 12.0f, 0.0f, 256.0f); /** High-frequency edge erosion. 0 gives smooth blobs, 1 gives wispy, broken silhouettes. */ public static final FloatSetting DETAIL = clampedFloat("caustica.rt.clouds.detail", "clouds.detail", 0.45f, 0.0f, 1.0f); @@ -870,6 +882,32 @@ private Pom() { * candidates than one frame's budget allows — the difference shows up in caves and at night, * where the light sampling is the noise floor. */ + /** + * Manual weather override for the renderer's fog, cloud and wetness response. + * + *

This exists because servers frequently never send rain packets — Wynncraft being the + * case in point — so {@code level.getRainLevel()} sits at zero forever and none of the storm + * visuals can be seen or tuned. Client-side weather mods solve this properly by driving + * vanilla's own rain state; this is the fallback for when no such mod is available for your + * Minecraft version. + * + *

It overrides only what the RENDERER reads. It does not make it rain: no particles, no + * sound, no gameplay effect. Vanilla's own weather is untouched. + */ + public static final class Weather { + /** Rain level 0..1, or -1 to use whatever the world reports. */ + public static final FloatSetting RAIN_OVERRIDE = + clampedFloat("caustica.rt.weather.rainOverride", "weather.rain-override", + -1.0f, -1.0f, 1.0f); + /** Thunder level 0..1, or -1 to use the world's. Layers on top of rain, as vanilla does. */ + public static final FloatSetting THUNDER_OVERRIDE = + clampedFloat("caustica.rt.weather.thunderOverride", "weather.thunder-override", + -1.0f, -1.0f, 1.0f); + + private Weather() { + } + } + public static final class Restir { /** * Strength of temporal reuse, 0 disables it and both reservoir image accesses. 1 is full @@ -1048,6 +1086,23 @@ private static String sanitizeViewTransform(String value) { return "aces2"; } + /** + * HDR view transform resource. {@code agx-punchy} maps to the AgX HDR bake; everything + * else, including {@code agx-base}, stays on ACES 2.0 at the requested peak. + * + *

The AgX HDR bake is a construction, not an upstream transform: AgX has no HDR output + * transform, so this is AgX's tone curve and look presented through PQ with diffuse white + * at BT.2408's 203 nits. You get the AgX image on an HDR display. You do NOT get AgX with + * HDR highlight range — its sigmoid still rolls off to its own white point. Pick ACES 2.0 + * if highlight range is what you are after. + */ + public static String hdrLutResource(int peakNits) { + if ("agx-punchy".equals(VIEW_TRANSFORM.get())) { + return "hdr_agx_punchy_rec2020.bin"; + } + return "hdr_aces2_rec2020_" + peakNits + "nit.bin"; + } + /** Resource name under {@code /caustica/color/luts/} for the selected SDR view transform. */ public static String sdrLutResource() { switch (VIEW_TRANSFORM.get()) { diff --git a/src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java b/src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java index b9982608e..047675a93 100644 --- a/src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java +++ b/src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java @@ -627,7 +627,12 @@ public boolean composite(GpuTexture nativeColor, int width, int height) { // The mastering target is live, so track it each frame. int wantedHdrNits = CausticaConfig.Rt.Hdr.PEAK_NITS.value(); if (hdrToneLut == null || loadedHdrLutNits != wantedHdrNits) { - RtToneLut newHdrLut = RtToneLut.load(ctx, "hdr_aces2_rec2020_" + wantedHdrNits + "nit.bin"); + // The AgX HDR LUT has no per-peak variants: its tone curve rolls off to its own white + // point rather than to the display's, so a 4000 nit bake would be identical to a 500 + // nit one. That is the honest consequence of AgX having no HDR output transform — this + // is the AgX look in a PQ container, not AgX extended to HDR range. + String hdrLutName = CausticaConfig.Rt.Tonemap.hdrLutResource(wantedHdrNits); + RtToneLut newHdrLut = RtToneLut.load(ctx, hdrLutName); if (newHdrLut.size != sdrToneLut.size) { // display.comp's lutSize push constant is shared by both LUT samples (see // lutTexCoord()); bake_display_lut.py currently always sizes both the same, but @@ -1197,6 +1202,16 @@ private void recordFrame(RtContext ctx, RtPipeline active, GpuTexture nativeColo if (level != null) { rainLevel = Mth.clamp(level.getRainLevel(1.0f), 0f, 1f); thunderLevel = Mth.clamp(level.getThunderLevel(1.0f), 0f, 1f); + // A negative override means "use the world". Applied after reading rather than instead + // of it, so turning the override off returns to live weather without a reload. + float rainOverride = CausticaConfig.Rt.Weather.RAIN_OVERRIDE.value(); + if (rainOverride >= 0f) { + rainLevel = rainOverride; + } + float thunderOverride = CausticaConfig.Rt.Weather.THUNDER_OVERRIDE.value(); + if (thunderOverride >= 0f) { + thunderLevel = thunderOverride; + } var biome = level.getBiome(cameraBlockPos).value(); // getBaseTemperature is roughly 0 (snowy) to 2 (desert/nether) in vanilla data. float temperature = Mth.clamp(biome.getBaseTemperature(), 0f, 2f); @@ -1272,7 +1287,8 @@ private void recordFrame(RtContext ctx, RtPipeline active, GpuTexture nativeColo Float4 cloud2 = new Float4( CausticaConfig.Rt.Clouds.SHADOW_STRENGTH.value(), CausticaConfig.Rt.Clouds.SHADOW_FLOOR.value() * (1f - cloudWeather * 0.5f), - wetness, 0f); + wetness, + CausticaConfig.Rt.Clouds.FEATURE_SIZE.value()); // Vanilla environment colours. 26.2 moved per-biome and per-dimension colour out of // BiomeSpecialEffects into the EnvironmentAttributes system, which samples and interpolates // across biome boundaries itself — so this is vanilla's own blended value at the camera, diff --git a/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtDhLodSource.java b/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtDhLodSource.java index c6284a0c0..3bbd95d77 100644 --- a/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtDhLodSource.java +++ b/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtDhLodSource.java @@ -60,6 +60,7 @@ private enum State { UNRESOLVED, READY, UNAVAILABLE } private static Object worldProxy; private static Method getAllTerrainDataAtDetailLevelAndPos; private static Method getSinglePlayerLevel; + private static Method getAllLoadedLevelWrappers; private static Field resultPayload; private static Field resultSuccess; private static Field resultMessage; @@ -120,14 +121,14 @@ private static void resolve() { "getAllTerrainDataAtDetailLevelAndPos", levelWrapper, byte.class, int.class, int.class, cacheInterface); - // getSinglePlayerLevel, not a "current level" accessor: DH has no notion of one. On a - // multiplayer server this throws IllegalStateException and distant terrain is simply - // absent — correct behaviour, since picking an arbitrary entry from - // getAllLoadedLevelWrappers() would happily hand back the Nether's terrain while you - // stand in the Overworld. + // Two accessors, because they cover different worlds. getSinglePlayerLevel throws on a + // multiplayer server, which would have ruled out exactly the case that matters here: + // Wynncraft with WynnLODGrabber, where DH's database is populated for a SERVER world. + // getAllLoadedLevelWrappers covers that, at the cost of having to pick — see levelWrapper(). Class worldProxyInterface = Class.forName( "com.seibel.distanthorizons.api.interfaces.world.IDhApiWorldProxy"); getSinglePlayerLevel = worldProxyInterface.getMethod("getSinglePlayerLevel"); + getAllLoadedLevelWrappers = worldProxyInterface.getMethod("getAllLoadedLevelWrappers"); // DhApiResult exposes success/message/payload as public FIELDS, not getters. Class resultClass = Class.forName("com.seibel.distanthorizons.api.objects.DhApiResult"); @@ -181,9 +182,9 @@ public static List fetchRegion(byte detailLevel, int posX, int posZ) { } } try { - Object levelWrapper = getSinglePlayerLevel.invoke(worldProxy); + Object levelWrapper = levelWrapper(); if (levelWrapper == null) { - return List.of(); // between worlds + return List.of(); // between worlds, or nothing loaded yet } Object result = getAllTerrainDataAtDetailLevelAndPos.invoke( terrainRepo, levelWrapper, detailLevel, posX, posZ, null); @@ -269,6 +270,41 @@ private static List flatten(Object grid, byte detailLevel, int posX, int return boxes; } + /** + * The level to query. Single-player has exactly one and DH says so directly. On a server — + * Wynncraft being the case this exists for — that call throws, so this falls back to the loaded + * set. + * + *

Taking the first loaded wrapper is a real limitation, not a tidy default: with more than one + * level loaded it can return the wrong dimension's terrain. It is acceptable here because the + * situation this serves is a server world where DH has one level populated by WynnLODGrabber. If + * distant terrain ever appears from the wrong dimension, this is the line to fix, by matching the + * wrapper's dimension against the client's. + */ + private static Object levelWrapper() throws ReflectiveOperationException { + try { + Object single = getSinglePlayerLevel.invoke(worldProxy); + if (single != null) { + return single; + } + } catch (java.lang.reflect.InvocationTargetException e) { + // IllegalStateException on a server. Expected; fall through. + } + // Iterable, NOT Collection. Verified against DistantHorizons-3.2.0-b-26.2: the signature is + // getAllLoadedLevelWrappers()Ljava/lang/Iterable;. A Collection check here compiles and runs + // fine, silently matches nothing, and disables distant terrain on every server — which is + // exactly the case this fallback exists for. + Object loaded = getAllLoadedLevelWrappers.invoke(worldProxy); + if (loaded instanceof Iterable iterable) { + for (Object wrapper : iterable) { + if (wrapper != null) { + return wrapper; + } + } + } + return null; + } + /** Forgets the resolved API. Call on world unload so a DH reload is picked up. */ public static synchronized void invalidate() { if (state == State.READY) { diff --git a/src/main/resources/caustica/color/luts/hdr_agx_punchy_rec2020.bin b/src/main/resources/caustica/color/luts/hdr_agx_punchy_rec2020.bin new file mode 100644 index 0000000000000000000000000000000000000000..93d7e827ea20dc58abebfd05b3cbe7f572304212 GIT binary patch literal 2197020 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

e4n22AW{c2QO@_?b5aMjY$?ez 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 np.ndarray: return np.exp2(stops) +# BT.709 (D65) -> BT.2020 (D65). Both are D65 so this is a pure primaries change, no chromatic +# adaptation, which is why it can be a plain 3x3 with no CAT term. +BT709_TO_BT2020 = [ + [0.62740390, 0.32928304, 0.04331307], + [0.06909729, 0.91954040, 0.01136232], + [0.01639144, 0.08801331, 0.89559525], +] + +# SMPTE ST 2084 (PQ) constants. +PQ_M1 = 2610.0 / 16384.0 +PQ_M2 = 128.0 * 2523.0 / 4096.0 +PQ_C1 = 3424.0 / 4096.0 +PQ_C2 = 32.0 * 2413.0 / 4096.0 +PQ_C3 = 32.0 * 2392.0 / 4096.0 +PQ_PEAK_NITS = 10000.0 + +# HDR AgX. READ THIS BEFORE TRUSTING THE NAME. +# +# sobotka's config has no HDR view transform -- every view in it terminates in a ~100 nit SDR display +# encoding. So this is NOT a port of an upstream AgX HDR view, because no such thing exists. It is a +# construction: +# +# ACEScg -> AgX Punchy (display code values) -> inverse sRGB EOTF -> display-linear 0..1 +# -> scale so display white lands at DIFFUSE_WHITE_NITS -> BT.2020 -> PQ encode +# +# What that gives you is AgX's tone curve and its characteristic highlight desaturation, presented +# through the PQ pipe, with diffuse white placed at a sane HDR level instead of being crushed to the +# SDR 100 nit assumption. What it does NOT give you is extra highlight range: AgX's sigmoid still +# rolls off to its own white point, so specular highlights do not extend to your display's peak the +# way ACES 2.0's HDR output transforms do. Extending the sigmoid's shoulder to reach 1000+ nits would +# mean redesigning AgX's tone curve, which is a different thing from baking it. +# +# Use this if you want the AgX look on an HDR display. Use ACES 2.0 if you want HDR highlight range. +DIFFUSE_WHITE_NITS = 203.0 # ITU-R BT.2408 reference diffuse white + +AGX_HDR_LUTS = [ + dict( + name="hdr_agx_punchy_rec2020", + agx_space="Appearance Punchy sRGB", + note="AgX Punchy tone curve and look, BT.2020 primaries, PQ encoded, diffuse white at " + "203 nits. See the caveat above: AgX look, not AgX-with-HDR-range.", + ), +] + + +def srgb_eotf_inverse(code): + """Display code values -> display-linear 0..1.""" + code = np.clip(code, 0.0, 1.0) + return np.where(code <= 0.04045, code / 12.92, ((code + 0.055) / 1.055) ** 2.4) + + +def pq_encode(nits): + """Absolute nits -> PQ code values.""" + y = np.clip(nits, 0.0, PQ_PEAK_NITS) / PQ_PEAK_NITS + num = PQ_C1 + PQ_C2 * (y ** PQ_M1) + den = 1.0 + PQ_C3 * (y ** PQ_M1) + return (num / den) ** PQ_M2 + + +def make_agx_hdr_processor(agx_cfg: "OCIO.Config", spec: dict): + """Wraps the SDR AgX processor, then does the display-linear -> PQ stage in numpy.""" + inner = make_agx_processor(agx_cfg, spec) + + class _AgxHdr: + def applyRGB(self, rgb): + inner.applyRGB(rgb) + arr = np.asarray(rgb, dtype=np.float32).reshape(-1, 3) + display_linear = srgb_eotf_inverse(arr) + nits = display_linear * DIFFUSE_WHITE_NITS + rec2020 = nits @ np.array(BT709_TO_BT2020, dtype=np.float64).T + encoded = pq_encode(np.clip(rec2020, 0.0, None)).astype(np.float32) + arr[:] = encoded + np.asarray(rgb, dtype=np.float32).reshape(-1, 3)[:] = arr + + return _AgxHdr() + + def make_agx_processor(agx_cfg: "OCIO.Config", spec: dict): """ACEScg -> linear BT.709 -> the requested AgX appearance, as one processor.""" matrix = [0.0] * 16 @@ -130,6 +207,8 @@ def make_agx_processor(agx_cfg: "OCIO.Config", spec: dict): def make_processor(cfg: "OCIO.Config", spec: dict): + if spec.get("agx_hdr"): + return make_agx_hdr_processor(cfg, spec) if "agx_space" in spec: return make_agx_processor(cfg, spec) if "display_view" in spec: @@ -264,6 +343,11 @@ def main() -> None: print(f"baking {spec['name']}: {spec['note']}") rgb = bake_one(agx_cfg, spec, LUT_SIZE) write_lut(OUT_DIR / f"{spec['name']}.bin", LUT_SIZE, rgb) + for spec in AGX_HDR_LUTS: + print(f"baking {spec['name']}: {spec['note']}") + spec = dict(spec, agx_hdr=True) + rgb = bake_one(agx_cfg, spec, LUT_SIZE) + write_lut(OUT_DIR / f"{spec['name']}.bin", LUT_SIZE, rgb) return if args.import_lmt is not None: From 8142e7296b5a11995eb7399ad211d35482f5dddd Mon Sep 17 00:00:00 2001 From: KthanidKisure <161649271+KthanidKisure@users.noreply.github.com> Date: Fri, 28 Aug 2026 17:23:45 +0100 Subject: [PATCH 09/25] Add files via upload --- .../comfyfluffy/caustica/CausticaConfig.java | 44 +++- .../caustica/rt/terrain/RtSectionTable.java | 17 +- .../caustica/rt/terrain/RtTerrain.java | 224 +++++++++++++++++- 3 files changed, 281 insertions(+), 4 deletions(-) diff --git a/src/main/java/dev/comfyfluffy/caustica/CausticaConfig.java b/src/main/java/dev/comfyfluffy/caustica/CausticaConfig.java index f9b38e9dd..14e2c48ba 100644 --- a/src/main/java/dev/comfyfluffy/caustica/CausticaConfig.java +++ b/src/main/java/dev/comfyfluffy/caustica/CausticaConfig.java @@ -59,7 +59,7 @@ public static void ensureRegistered() { Rt.ENABLED, Rt.Composite.SPP, Rt.Composite.MAX_BOUNCES, Rt.Terrain.ASYNC_DISPATCH_PER_PASS, Rt.Omm.ENABLED, Rt.Entities.ENABLED, Rt.Entities.GLOW_ENABLED, Rt.EntityTextures.MAX_TEXTURES, Rt.DlssRr.ENABLED, Rt.Fg.ENABLED, Rt.Reflex.ENABLED, Rt.Fog.DENSITY, Rt.Clouds.COVERAGE, Rt.Grade.ENABLED, Rt.Tonemap.VIEW_TRANSFORM, Rt.Pom.DEPTH, Rt.Restir.TEMPORAL, - Rt.Weather.RAIN_OVERRIDE, Rt.Exposure.MODE, Rt.Tonemap.GAMMA, Rt.FrameStats.ENABLED, + Rt.Weather.RAIN_OVERRIDE, Rt.Lod.ENABLED, Rt.Exposure.MODE, Rt.Tonemap.GAMMA, Rt.FrameStats.ENABLED, Rt.Screenshots.EXR_ENABLED, Rt.Hdr.ENABLED, Ngx.PATH, }; } @@ -908,6 +908,48 @@ private Weather() { } } + /** + * Distant terrain from Distant Horizons' database. Off by default. + * + *

DH is used as a WORLD DATABASE only — its own rendering should be disabled. Caustica reads + * LOD terrain through DH's public API, meshes it, and puts it in the acceleration structure, so + * distant terrain is traced like everything else: it casts shadows, appears in reflections and + * contributes to global illumination, which a rasterised LOD renderer cannot do. + * + *

Requires Distant Horizons installed with data for the current world. On a server that means + * something has populated its database — on Wynncraft, the WynnLODGrabber download. + */ + public static final class Lod { + /** Master switch. Off skips every DH query, mesh and BLAS build. */ + public static final BooleanSetting ENABLED = + bool("caustica.rt.lod.enabled", "lod.enabled", false); + /** + * DH detail level. Each virtual block covers 2^detail world blocks, and one LOD section + * therefore spans 16*2^detail blocks for the triangle cost of one ordinary section: + * 3 gives 128-block sections, 4 gives 256. Lower is sharper and far more expensive. + */ + public static final IntSetting DETAIL = + clampedInt("caustica.rt.lod.detail", "lod.detail", 3, 1, 6); + /** Radius in LOD sections around the player. 8 at detail 3 is roughly 1024 blocks. */ + public static final IntSetting RADIUS = + clampedInt("caustica.rt.lod.radius", "lod.radius", 8, 1, 64); + /** + * Vertical span in LOD sections, centred on sea level. Distant terrain rarely needs the + * full world height, and every extra layer is a full ring of sections. + */ + public static final IntSetting HEIGHT_SECTIONS = + clampedInt("caustica.rt.lod.heightSections", "lod.height-sections", 2, 1, 16); + /** + * LOD sections started per frame. This is the streaming throttle: each one is a DH database + * query plus a mesh plus a BLAS build, so a high value stutters while the world loads. + */ + public static final IntSetting SECTIONS_PER_FRAME = + clampedInt("caustica.rt.lod.sectionsPerFrame", "lod.sections-per-frame", 2, 1, 32); + + private Lod() { + } + } + public static final class Restir { /** * Strength of temporal reuse, 0 disables it and both reservoir image accesses. 1 is full diff --git a/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtSectionTable.java b/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtSectionTable.java index cd08d2e25..713d44d45 100644 --- a/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtSectionTable.java +++ b/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtSectionTable.java @@ -188,8 +188,13 @@ private void markDirty(long offset, long length) { } RtAccel.Instance instanceFor(SectionGeom geom, int rbx, int rby, int rbz) { - float[] xform = {1, 0, 0, geom.sx - rbx, 0, 1, 0, geom.sy - rby, - 0, 0, 1, geom.sz - rbz}; + // Uniform scale on the diagonal for LOD sections (1 for ordinary terrain, so this stays the + // identity rotation it always was). The translation is the section's world origin rebased, and + // is NOT scaled: the origin is already in world blocks, only the section-local geometry needs + // expanding. + float s = geom.lodScale; + float[] xform = {s, 0, 0, geom.sx - rbx, 0, s, 0, geom.sy - rby, + 0, 0, s, geom.sz - rbz}; return new RtAccel.Instance(xform, geom.blas.deviceAddress, geom.slot); } @@ -207,6 +212,14 @@ static final class SectionGeom { final float[] lights; int slot = -1; int instanceIndex = -1; + /** + * Blocks per virtual block. 1 for ordinary terrain. A distant-LOD section is meshed from a + * 16-cubed virtual grid whose blocks stand for 2^detail world blocks, so the same triangle + * budget covers a much larger volume; the instance transform scales it back up rather than the + * mesher emitting larger vertices, which keeps section-local positions in the same fp32 range + * for every section regardless of detail. + */ + int lodScale = 1; SectionGeom(long key, RtBuffer uvs, RtBuffer material, RtAccel blas, int[] triBase, int sx, int sy, int sz, float[] lights) { diff --git a/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtTerrain.java b/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtTerrain.java index 2b91fb0d1..98acefde4 100644 --- a/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtTerrain.java +++ b/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtTerrain.java @@ -155,6 +155,21 @@ private static int rebaseDistanceBlocks() { // frames, so evicted geometry waits here until the next publish pass retires it. private final List removed = new ArrayList<>(); private final List prepared = new ArrayList<>(); + // ---- Distant LOD --------------------------------------------------------------------------- + // Held OUTSIDE `resident` on purpose. Residency's window sync evicts anything not in `desired`, + // and `desired` is derived from the vanilla chunk cache — so a LOD section, which by definition + // lives past that window, would be evicted the tick after it published. Keeping a separate map + // means the two grids never fight, at the cost of the small publish block below. + private final Long2ObjectOpenHashMap lodResident = new Long2ObjectOpenHashMap<>(); + private final LongOpenHashSet lodInFlight = new LongOpenHashSet(); + private final List lodPrepared = + java.util.Collections.synchronizedList(new ArrayList<>()); + /** + * Keeps LOD keys clear of real section keys. The key packs scy into 12 signed bits, and legal + * Minecraft section Y is roughly -4..20, so offsetting by 512 per detail level cannot collide with + * a real section or with another detail level. + */ + private static final int LOD_KEY_Y_OFFSET = 512; // Worker/build bookkeeping. `inFlight` maps a dispatched section key to a monotonic token; a completed // task whose token no longer matches is discarded. The active-task barrier spans worker + GPU lifetime. private final Long2LongOpenHashMap inFlight = new Long2LongOpenHashMap(); @@ -458,7 +473,9 @@ private void stream(RtContext ctx) { && completedBuilds.isEmpty() && !lightGrid.hasCompletions() && !lightHierarchyDirty - && removed.isEmpty() && prepared.isEmpty()) { + && removed.isEmpty() && prepared.isEmpty() + && lodPrepared.isEmpty() && !CausticaConfig.Rt.Lod.ENABLED.value() + && lodResident.isEmpty()) { return; } int pbx = mc.player.getBlockX(); @@ -481,6 +498,8 @@ private void stream(RtContext ctx) { } } + streamLod(ctx, level, pbx, pby, pbz); + // Publish only a fully uploaded hierarchy. Newer section changes supersede stale worker/upload // results, while the previous complete generation remains active until this atomic swap. if (lightGrid.hasCompletions()) { @@ -1412,6 +1431,209 @@ private void destroyPreparedSection(PreparedSection ps) { } /** Per-tick render-thread snapshot dependencies shared by reextract + missing dispatch. */ + + // ---- Distant LOD from Distant Horizons ------------------------------------------------------- + // + // A second, much coarser section grid living entirely past the vanilla chunk cache. It rides the + // same mesh -> upload -> BLAS -> table pipeline as ordinary terrain, but is tracked separately + // because residency's window sync would evict it instantly (see lodResident). + // + // LOD sections are never individually evicted. They are cheap to hold (a few hundred at most), the + // player leaving a region is not a reason to rebuild it, and never destroying a published BLAS + // mid-session removes the entire use-after-free class of bug from this path. They are released + // wholesale on world change or when the feature is switched off. + + private static long lodKey(int lx, int ly, int lz, int detail) { + return sectionKey(lx, ly + LOD_KEY_Y_OFFSET * detail, lz); + } + + private void streamLod(RtContext ctx, ClientLevel level, int pbx, int pby, int pbz) { + if (!CausticaConfig.Rt.Lod.ENABLED.value() || !RtDhLodSource.available()) { + releaseLod(ctx); + return; + } + publishLodPrepared(ctx, pbx, pby, pbz); + + int detail = CausticaConfig.Rt.Lod.DETAIL.value(); + int scale = 1 << detail; + int sectionBlocks = RtDhLodRegion.SECTION_BLOCKS * scale; + int radius = CausticaConfig.Rt.Lod.RADIUS.value(); + int heightSections = CausticaConfig.Rt.Lod.HEIGHT_SECTIONS.value(); + int budget = CausticaConfig.Rt.Lod.SECTIONS_PER_FRAME.value(); + + int centreX = Math.floorDiv(pbx, sectionBlocks); + int centreZ = Math.floorDiv(pbz, sectionBlocks); + int centreY = Math.floorDiv(62, sectionBlocks); + + // Nearest-first, so the ring the player is looking at fills before the far edge. + outer: + for (int ring = 0; ring <= radius; ring++) { + for (int dx = -ring; dx <= ring; dx++) { + for (int dz = -ring; dz <= ring; dz++) { + if (Math.max(Math.abs(dx), Math.abs(dz)) != ring) { + continue; // only this ring's perimeter; inner rings were done already + } + for (int dy = 0; dy < heightSections; dy++) { + if (budget <= 0) { + break outer; + } + int lx = centreX + dx; + int lz = centreZ + dz; + int ly = centreY + dy; + long key = lodKey(lx, ly, lz, detail); + if (lodResident.containsKey(key) || lodInFlight.contains(key)) { + continue; + } + dispatchLodSection(ctx, level, key, lx, ly, lz, detail, scale, sectionBlocks); + budget--; + } + } + } + } + } + + private void dispatchLodSection(RtContext ctx, ClientLevel level, long key, + int lx, int ly, int lz, int detail, int scale, int sectionBlocks) { + DispatchContext dispatch = dispatchContext(ctx, level); + RtMaterialRegistry.Snapshot materialSnapshot = RtMaterialRegistry.INSTANCE.requireSnapshot(); + int originX = lx * sectionBlocks; + int originY = ly * sectionBlocks; + int originZ = lz * sectionBlocks; + lodInFlight.add(key); + beginActiveTask(); + try { + RtWorkerPool.INSTANCE.submit(() -> { + try { + // DH covers one LOD section with (scale)^2 of its own detail-level columns; one query + // per section keeps the database hit count proportional to sections, not blocks. + RtDhLodRegion region = new RtDhLodRegion(level, detail, originX, originY, originZ); + region.fill(RtDhLodSource.fetchRegion((byte) detail, + Math.floorDiv(originX, scale), Math.floorDiv(originZ, scale))); + if (region.isEmpty()) { + finishLodTask(key, null); + return; + } + WorkerTessState ws = WORKER_TESS.get(); + ws.reset(dispatch.blockColors(), dispatch.blockSpriteFinder()); + FluidRenderer fluidRenderer = new FluidRenderer(dispatch.fluidModelSet()); + // Section coords passed as 0,0,0: the region presents a virtual section at the + // origin, and the world placement is carried by the instance transform instead. + CpuSection cpu = buildCpuSection(region, dispatch.modelSet(), ws.blockEmitter, + ws.blockRandom, ws.capture, fluidRenderer, ws.fluidCapture, ws.mesh, ws.pos, + materialSnapshot, 0, 0, 0); + PackedSection packed = cpu.packed(); + if (packed == null) { + finishLodTask(key, null); + return; + } + PreparedSection ps = RtSectionBuilder.prepare(dispatch.ctx(), packed, + cpu.opacityMicromap(), CausticaConfig.Rt.Terrain.BLAS_COMPACTION.value(), + key, originX, originY, originZ); + submitLodBuild(dispatch.ctx(), key, ps, scale); + } catch (Throwable t) { + finishLodTask(key, null); + } + }); + } catch (Throwable t) { + lodInFlight.remove(key); + finishActiveTask(); + throw t; + } + } + + private void submitLodBuild(RtContext ctx, long key, PreparedSection prepared, int scale) { + ctx.gpuExecutor().submit( + () -> false, + cmd -> { + RtSectionBuilder.recordUpload(cmd, prepared); + RtAccel.recordBlasBuilds(ctx, cmd, List.of(prepared.blas())); + }, + () -> { + RtAccel.freeBlasScratch(List.of(prepared.blas())); + prepared.releaseUpload(); + }, + (build, failure) -> { + if (failure != null) { + destroyPreparedSection(prepared); + finishLodTask(key, null); + return; + } + prepared.releaseBuildInputs(); + finishLodTask(key, prepared); + }); + } + + private void finishLodTask(long key, PreparedSection prepared) { + if (prepared != null) { + lodPrepared.add(prepared); + } else { + lodInFlight.remove(key); + } + finishActiveTask(); + } + + /** Publishes finished LOD sections into the shared section table. */ + private void publishLodPrepared(RtContext ctx, int pbx, int pby, int pbz) { + if (lodPrepared.isEmpty()) { + return; + } + List batch; + synchronized (lodPrepared) { + batch = new ArrayList<>(lodPrepared); + lodPrepared.clear(); + } + int scale = 1 << CausticaConfig.Rt.Lod.DETAIL.value(); + for (PreparedSection ps : batch) { + lodInFlight.remove(ps.key()); + if (lodResident.containsKey(ps.key())) { + // Raced with another dispatch of the same key; keep the published one. + ctx.gpuExecutor().retireUnpublished(() -> destroyPreparedSection(ps)); + continue; + } + SectionGeom g = new SectionGeom(ps.key(), ps.uvs(), ps.material(), + ps.blas().accel, ps.triBase(), ps.sx(), ps.sy(), ps.sz(), ps.lights()); + g.lodScale = scale; + g.slot = table.allocateSlot(); + g.instanceIndex = table.instanceList.size(); + table.slots.set(g.slot, g); + table.write(g); + table.instanceList.add(table.instanceFor(g, blockX, blockY, blockZ)); + lodResident.put(ps.key(), g); + } + table.flushWrites(); + table.instances = table.instanceList; + } + + /** + * Drops every LOD section. Used when the feature is switched off and on world teardown. The + * instance list is rebuilt from scratch rather than patched: instanceIndex values are positions in + * that list, so removing entries in place would invalidate every later section's index. + */ + private void releaseLod(RtContext ctx) { + if (lodResident.isEmpty()) { + return; + } + List doomed = new ArrayList<>(lodResident.values()); + lodResident.clear(); + for (SectionGeom g : doomed) { + if (g.slot >= 0 && g.slot < table.slots.size()) { + table.slots.set(g.slot, null); + } + g.slot = -1; + g.instanceIndex = -1; + } + table.instanceList.clear(); + for (int i = 0; i < table.slots.size(); i++) { + SectionGeom g = table.slots.get(i); + if (g != null) { + g.instanceIndex = table.instanceList.size(); + table.instanceList.add(table.instanceFor(g, blockX, blockY, blockZ)); + } + } + table.instances = table.instanceList; + retire(ctx, ctx.gpuExecutor().latestGraphicsUse(), doomed); + } + private record DispatchContext(RtContext ctx, ClientLevel level, BlockStateModelSet modelSet, FluidStateModelSet fluidModelSet, BlockColors blockColors, SpriteFinder blockSpriteFinder) { From 4fc19aa6dc4ac54a105dc62ba6bfd63071965b4e Mon Sep 17 00:00:00 2001 From: KthanidKisure <161649271+KthanidKisure@users.noreply.github.com> Date: Fri, 28 Aug 2026 17:45:08 +0100 Subject: [PATCH 10/25] Add files via upload --- .../caustica/rt/terrain/RtTerrain.java | 40 +++++++++++++++++-- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtTerrain.java b/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtTerrain.java index 98acefde4..80d04d86c 100644 --- a/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtTerrain.java +++ b/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtTerrain.java @@ -161,9 +161,18 @@ private static int rebaseDistanceBlocks() { // lives past that window, would be evicted the tick after it published. Keeping a separate map // means the two grids never fight, at the cost of the small publish block below. private final Long2ObjectOpenHashMap lodResident = new Long2ObjectOpenHashMap<>(); + /** + * Keys with a dispatch in progress. RENDER THREAD ONLY — fastutil hash sets are not thread-safe, + * and a worker removing a key while the render thread inserts one corrupts the table (it surfaces + * as an ArrayIndexOutOfBounds inside rehash, not as anything that looks like a race). Workers + * report completion through the two synchronized lists below; this set is only ever mutated in + * dispatchLodSection and publishLodPrepared, both of which run on the render thread. + */ private final LongOpenHashSet lodInFlight = new LongOpenHashSet(); private final List lodPrepared = java.util.Collections.synchronizedList(new ArrayList<>()); + /** Keys whose dispatch ended without geometry (empty region, DH miss, or a build failure). */ + private final List lodFailed = java.util.Collections.synchronizedList(new ArrayList<>()); /** * Keeps LOD keys clear of real section keys. The key packs scy into 12 signed bits, and legal * Minecraft section Y is roughly -4..20, so offsetting by 512 per detail level cannot collide with @@ -1535,6 +1544,8 @@ private void dispatchLodSection(RtContext ctx, ClientLevel level, long key, } }); } catch (Throwable t) { + // Submit itself failed, so no worker will ever report: clear the key here. Still the + // render thread at this point, so touching the set directly is safe. lodInFlight.remove(key); finishActiveTask(); throw t; @@ -1563,17 +1574,33 @@ private void submitLodBuild(RtContext ctx, long key, PreparedSection prepared, i }); } + /** + * Worker/GPU-callback side of a dispatch. Only ever appends to a synchronized list; the in-flight + * set is cleared later, on the render thread, in publishLodPrepared. + */ private void finishLodTask(long key, PreparedSection prepared) { if (prepared != null) { lodPrepared.add(prepared); } else { - lodInFlight.remove(key); + lodFailed.add(key); } finishActiveTask(); } /** Publishes finished LOD sections into the shared section table. */ private void publishLodPrepared(RtContext ctx, int pbx, int pby, int pbz) { + // Retire failed keys first so they become eligible for redispatch. Done here, on the render + // thread, because lodInFlight is not thread-safe. + if (!lodFailed.isEmpty()) { + List failed; + synchronized (lodFailed) { + failed = new ArrayList<>(lodFailed); + lodFailed.clear(); + } + for (Long key : failed) { + lodInFlight.remove(key.longValue()); + } + } if (lodPrepared.isEmpty()) { return; } @@ -1585,8 +1612,9 @@ private void publishLodPrepared(RtContext ctx, int pbx, int pby, int pbz) { int scale = 1 << CausticaConfig.Rt.Lod.DETAIL.value(); for (PreparedSection ps : batch) { lodInFlight.remove(ps.key()); - if (lodResident.containsKey(ps.key())) { - // Raced with another dispatch of the same key; keep the published one. + if (lodResident.containsKey(ps.key()) || !CausticaConfig.Rt.Lod.ENABLED.value()) { + // Either a duplicate dispatch of the same key, or LOD was switched off while this was + // in flight. Retire it rather than publishing geometry nothing will ever release. ctx.gpuExecutor().retireUnpublished(() -> destroyPreparedSection(ps)); continue; } @@ -1615,6 +1643,12 @@ private void releaseLod(RtContext ctx) { } List doomed = new ArrayList<>(lodResident.values()); lodResident.clear(); + lodInFlight.clear(); + synchronized (lodFailed) { + lodFailed.clear(); + } + // Anything still in flight will land in lodPrepared after this; publishLodPrepared drops + // prepared sections whose key is no longer wanted, so they are retired rather than leaked. for (SectionGeom g : doomed) { if (g.slot >= 0 && g.slot < table.slots.size()) { table.slots.set(g.slot, null); From e528be27e9335030126ca401109e1f0a61d58468 Mon Sep 17 00:00:00 2001 From: KthanidKisure <161649271+KthanidKisure@users.noreply.github.com> Date: Fri, 28 Aug 2026 18:03:01 +0100 Subject: [PATCH 11/25] Add files via upload --- shaders/pipelines/world/clouds.slang | 7 ++++++- shaders/pipelines/world/fog.slang | 9 ++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/shaders/pipelines/world/clouds.slang b/shaders/pipelines/world/clouds.slang index 33d2cd4cf..83fa05405 100644 --- a/shaders/pipelines/world/clouds.slang +++ b/shaders/pipelines/world/clouds.slang @@ -352,7 +352,12 @@ float3 tintCloud(float3 scattering, float3 tint709, float strength) { return scattering; } float3 tint = bt709ToAcesCg(max(tint709, float3(0.0))); - float tintLuma = max(dot(tint, ACESCG_LUMA), 1.0e-4); + float tintLuma = dot(tint, ACESCG_LUMA); + // Same trap as the fog tint: a black CLOUD_COLOR is missing data, not an instruction to render + // black clouds. Leave the deck lit by the atmosphere when there is no usable tint. + if (tintLuma <= 1.0e-3) { + return scattering; + } return lerp(scattering, scattering * (tint / tintLuma), clamped); } diff --git a/shaders/pipelines/world/fog.slang b/shaders/pipelines/world/fog.slang index 9aecfaf46..378e0e045 100644 --- a/shaders/pipelines/world/fog.slang +++ b/shaders/pipelines/world/fog.slang @@ -105,7 +105,14 @@ public float3 fogTint(FogParams f, float3 inscatter, WorldPush push) { // Tint by hue, not by replacement: preserve the scattering's own luminance so a dark fog colour // cannot black out a bright sunlit haze, and a bright one cannot light up a night scene. float3 tint = bt709ToAcesCg(max(push.dimFog.rgb, float3(0.0))); - float tintLuma = max(dot(tint, ACESCG_LUMA), 1.0e-4); + float tintLuma = dot(tint, ACESCG_LUMA); + // A BLACK tint means "no colour information", not "no light". Clamping the divisor was not enough: + // dividing a black tint by a tiny epsilon still yields zero, so the multiply below wiped the fog + // out and every distant surface went to black. A server or dimension that reports no FOG_COLOR is + // exactly this case, and the correct response is to leave the atmosphere's own colour alone. + if (tintLuma <= 1.0e-3) { + return inscatter; + } float3 normalizedTint = tint / tintLuma; return lerp(inscatter, inscatter * normalizedTint, strength); } From b0c340a162ffae5bba46b19d33f2a3667b06760c Mon Sep 17 00:00:00 2001 From: KthanidKisure <161649271+KthanidKisure@users.noreply.github.com> Date: Fri, 28 Aug 2026 18:13:39 +0100 Subject: [PATCH 12/25] Add files via upload --- shaders/pipelines/world/clouds.slang | 14 +++++++--- shaders/pipelines/world/indirect.rgen.slang | 27 ++++++++++++++----- shaders/pipelines/world/world_common.slang | 2 ++ .../comfyfluffy/caustica/CausticaConfig.java | 8 ++++++ .../comfyfluffy/caustica/rt/RtComposite.java | 2 ++ 5 files changed, 43 insertions(+), 10 deletions(-) diff --git a/shaders/pipelines/world/clouds.slang b/shaders/pipelines/world/clouds.slang index 83fa05405..37d4a251c 100644 --- a/shaders/pipelines/world/clouds.slang +++ b/shaders/pipelines/world/clouds.slang @@ -32,6 +32,10 @@ import world_common; import sky; import bindings; +// Base step counts, scaled at runtime by the quality setting. 64/6 is the reference quality; halving +// the view steps is close to free visually on a moving camera because the deck is smooth and the +// denoiser sees it as low-frequency, while halving the light steps costs more than it saves — the +// light march is what produces the shading gradient across a cloud. public static const int CLOUD_VIEW_STEPS = 64; public static const int CLOUD_LIGHT_STEPS = 6; // Marching past this is wasted work: at the deck's grazing angles the transmittance cutoff below always @@ -54,6 +58,7 @@ public struct CloudParams { public float detail; // 0..1 erosion strength public float featureSize; // blocks per noise period; smaller means more, tighter cloud masses public float ambient; // fraction of zenith sky scattered in as multiple-scattering stand-in + public float quality; // scales the march step counts; 1 is reference, 0.5 is half the samples }; public CloudParams makeCloudParams(WorldPush push) { @@ -66,6 +71,7 @@ public CloudParams makeCloudParams(WorldPush push) { c.detail = clamp(push.cloud1.z, 0.0, 1.0); c.ambient = max(push.cloud1.w, 0.0); c.featureSize = max(push.cloud2.w, 1.0); + c.quality = clamp(push.cloud3.x, 0.1, 1.0); return c; } @@ -295,7 +301,8 @@ float cloudLightOpticalDepth(CloudParams c, float3 position, float3 lightDir) { float opticalDepth = 0.0; float step = max(c.thickness * 0.08, 1.0); float travelled = 0.0; - for (int i = 0; i < CLOUD_LIGHT_STEPS; ++i) { + int lightSteps = int(max(float(CLOUD_LIGHT_STEPS) * c.quality, 3.0)); + for (int i = 0; i < lightSteps; ++i) { travelled += step; opticalDepth += cloudDensity(c, position + lightDir * travelled) * step; step *= 1.5; @@ -390,10 +397,11 @@ public CloudResult marchClouds(CloudParams c, SkyState state, float3 origin, flo float3 ambient = skyViewLut.SampleLevel(zenithUv, 0.0).rgb * c.ambient; float phase = cloudPhase(dot(direction, lightDir)); - float stepSize = (tFar - tNear) / float(CLOUD_VIEW_STEPS); + int viewSteps = int(max(float(CLOUD_VIEW_STEPS) * c.quality, 8.0)); + float stepSize = (tFar - tNear) / float(viewSteps); float t = tNear + stepSize * 0.5; - for (int i = 0; i < CLOUD_VIEW_STEPS; ++i) { + for (int i = 0; i < viewSteps; ++i) { float3 position = origin + direction * t; float density = cloudDensity(c, position); if (density > 0.0) { diff --git a/shaders/pipelines/world/indirect.rgen.slang b/shaders/pipelines/world/indirect.rgen.slang index c6fe95c71..65a9e1683 100644 --- a/shaders/pipelines/world/indirect.rgen.slang +++ b/shaders/pipelines/world/indirect.rgen.slang @@ -245,8 +245,12 @@ public float3 tracePath(PathSegment seg, uint2 pix, uint sampleIndex) { if (ndl > 0.0) { float3 shadowOrigin = hitPos + (signedNdl >= 0.0 ? n : -n) * SURF_BIAS; float3 vis = visibility(shadowOrigin, lightDir, 10000.0).transmittance; - vis *= cloudShadowTransmittance(shadowClouds, hitPos, lightDir, - cloudShadowStrength, cloudShadowFloor); + // Particles get their own evaluation: this branch returns before the terrain shading + // vertex below, so there is no shared value to hoist here. Same bounce cap. + if (bounce <= 1) { + vis *= cloudShadowTransmittance(shadowClouds, hitPos, lightDir, + cloudShadowStrength, cloudShadowFloor); + } if (max(vis.r, max(vis.g, vis.b)) > 0.0) { L += throughput * albedo * INV_PI * celestialLight.illuminance * ndl * vis; } @@ -328,15 +332,25 @@ public float3 tracePath(PathSegment seg, uint2 pix, uint sampleIndex) { if (lightHalfAngle > 0.0) { lightDir = sampleSquare(lightDir, lightHalfAngle, seed); } + // Cloud shadow, computed ONCE per shading vertex. It was previously evaluated at each of the + // three NEE sites below, all of which use the same shading point and the same light direction — + // so two thirds of the work was recomputing an identical number. Each evaluation is an 8-step + // march of a 2-octave field, so this is the single cheapest large saving available here. + // + // Also capped by bounce: the deck's shadow on a second-order bounce is a small correction to an + // already-dim contribution, and skipping it there costs nothing visible while removing the + // march from the majority of rays in a deep path. + float cloudShadow = bounce <= 1 + ? cloudShadowTransmittance(shadowClouds, hitPos, lightDir, + cloudShadowStrength, cloudShadowFloor) + : 1.0; float ndl = max(0.0, dot(n, lightDir)); if (ndl > 0.0) { VisibilityResult shadow = visibility(p, lightDir, 10000.0); // The deck attenuates the light before it ever reaches the geometry, so it multiplies the // shadow ray's visibility rather than the illuminance: same term, and it stays correct when // the caustic factor below scales the whole NEE contribution. - float3 vis = shadow.transmittance - * cloudShadowTransmittance(shadowClouds, p, lightDir, - cloudShadowStrength, cloudShadowFloor); + float3 vis = shadow.transmittance * cloudShadow; // Underwater receiver whose shadow ray crossed a water surface: scale the direct light by // the wave-refraction caustic at the exit point. Focusing scales the incident irradiance, // so it applies to the whole NEE term (diffuse + specular). @@ -441,8 +455,7 @@ public float3 tracePath(PathSegment seg, uint2 pix, uint sampleIndex) { visB *= waterCaustic(hitPos + lightDir * shadowBack.waterHitT, lightDir, shadowBack.waterHitT); } - visB *= cloudShadowTransmittance(shadowClouds, hitPos, lightDir, - cloudShadowStrength, cloudShadowFloor); + visB *= cloudShadow; if (max(visB.r, max(visB.g, visB.b)) > 0.0) { float cosT = dot(lightDir, rd); L += throughput * diffAlb * sss * SSS_STRENGTH * hg(cosT, SSS_G) * backNdl * celestialLight.illuminance * visB; diff --git a/shaders/pipelines/world/world_common.slang b/shaders/pipelines/world/world_common.slang index 454639600..c0b588dcd 100644 --- a/shaders/pipelines/world/world_common.slang +++ b/shaders/pipelines/world/world_common.slang @@ -115,6 +115,8 @@ public struct WorldPush { // dimCloud: rgb = vanilla CLOUD_COLOR (linear BT.709), w = tint strength (0 = leave the deck lit // purely by the atmosphere). public float4 dimCloud; + // cloud3: x cloud march quality scale (1 = reference step counts), yzw unused. + public float4 cloud3; // ---- ReSTIR. x temporal reuse strength (0 disables it and both image accesses), y frame parity // selecting which reservoir image is history this frame, z spatial neighbour taps per pixel // (0 = temporal only), w spatial tap radius in render pixels. diff --git a/src/main/java/dev/comfyfluffy/caustica/CausticaConfig.java b/src/main/java/dev/comfyfluffy/caustica/CausticaConfig.java index 14e2c48ba..fbd6bcca0 100644 --- a/src/main/java/dev/comfyfluffy/caustica/CausticaConfig.java +++ b/src/main/java/dev/comfyfluffy/caustica/CausticaConfig.java @@ -801,6 +801,14 @@ public static final class Clouds { */ public static final FloatSetting WETNESS = clampedFloat("caustica.rt.clouds.wetness", "clouds.wetness", 1.0f, 0.0f, 1.0f); + /** + * Scales the cloud march's step counts. 1.0 is reference quality; 0.5 halves the samples + * and is close to invisible on a moving camera, because the deck is smooth and Ray + * Reconstruction treats it as low-frequency detail. This is the main FPS dial for clouds — + * reach for it before dropping coverage, which changes how the sky looks. + */ + public static final FloatSetting QUALITY = + clampedFloat("caustica.rt.clouds.quality", "clouds.quality", 1.0f, 0.1f, 1.0f); /** Stand-in for in-cloud multiple scattering, as a fraction of zenith sky radiance. */ public static final FloatSetting AMBIENT = clampedFloat("caustica.rt.clouds.ambient", "clouds.ambient", 0.35f, 0.0f, 4.0f); diff --git a/src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java b/src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java index 047675a93..e8a19d00e 100644 --- a/src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java +++ b/src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java @@ -1262,6 +1262,7 @@ private void recordFrame(RtContext ctx, RtPipeline active, GpuTexture nativeColo } Float4 dimCloud = new Float4(cloudR, cloudG, cloudB, CausticaConfig.Rt.Clouds.VANILLA_TINT.value()); + Float4 cloud3 = new Float4(CausticaConfig.Rt.Clouds.QUALITY.value(), 0f, 0f, 0f); // Vanilla's cloud height wins when enabled and actually reported — a dimension with no cloud // layer leaves the attribute absent, in which case the configured altitude is the only // sensible answer rather than dropping the deck to zero. @@ -1396,6 +1397,7 @@ private void recordFrame(RtContext ctx, RtPipeline active, GpuTexture nativeColo dimSky, dimFog, dimCloud, + cloud3, restir ).write(push); pushBuf.flush(0L, WORLD_PUSH_SIZE); From 62aefcd47179b690f1518399d82daf67df2160cf Mon Sep 17 00:00:00 2001 From: KthanidKisure <161649271+KthanidKisure@users.noreply.github.com> Date: Fri, 28 Aug 2026 22:53:05 +0100 Subject: [PATCH 13/25] Add files via upload --- shaders/pipelines/world/fog.slang | 18 ++++++++- .../caustica/rt/terrain/RtTerrain.java | 37 ++++++++++++++++++- 2 files changed, 52 insertions(+), 3 deletions(-) diff --git a/shaders/pipelines/world/fog.slang b/shaders/pipelines/world/fog.slang index 378e0e045..621716bf9 100644 --- a/shaders/pipelines/world/fog.slang +++ b/shaders/pipelines/world/fog.slang @@ -118,9 +118,23 @@ public float3 fogTint(FogParams f, float3 inscatter, WorldPush push) { } public float3 fogInscatter(FogParams f, float3 rd, SkyState state) { - float2 sunUv = skyViewLutUv(state.viewerRadiusKm, rd.y, + // THE SKY-VIEW LUT HAS NO DATA BELOW THE HORIZON, and this is where that bites. + // + // sky.rmiss only ever samples it for rays that escaped to space, which are above the horizon by + // construction. Fog is different: most fogged rays point slightly DOWN, at distant terrain. Sampling + // the LUT there returns black, so every long ray toward the ground accumulated black in-scatter and + // the horizon went to pitch black — worse the denser the fog, because denser fog means more of that + // black and less of the surface behind it. + // + // Physically the fix is not a clamp for its own sake: light scattered into a downward ray comes from + // the sky above the scattering point, and near the horizon that is the horizon sky. So the lookup + // direction is folded up to just above the horizon while the LIGHT-relative angle keeps the true + // direction, which is what preserves the orange-toward-the-sun behaviour. + float horizonCos = horizonZenithCos(state.viewerRadiusKm); + float lookupZenithCos = max(rd.y, horizonCos + 1.0e-3); + float2 sunUv = skyViewLutUv(state.viewerRadiusKm, lookupZenithCos, lightViewCosine(rd, state.sunDir), SKY_VIEW_BODY_SUN); - float2 moonUv = skyViewLutUv(state.viewerRadiusKm, rd.y, + float2 moonUv = skyViewLutUv(state.viewerRadiusKm, lookupZenithCos, lightViewCosine(rd, state.moonDir), SKY_VIEW_BODY_MOON); float3 sky709 = skyViewLut.SampleLevel(sunUv, 0.0).rgb + skyViewLut.SampleLevel(moonUv, 0.0).rgb diff --git a/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtTerrain.java b/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtTerrain.java index 80d04d86c..cb7ec5a33 100644 --- a/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtTerrain.java +++ b/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtTerrain.java @@ -179,6 +179,9 @@ private static int rebaseDistanceBlocks() { * a real section or with another detail level. */ private static final int LOD_KEY_Y_OFFSET = 512; + /** Regions DH had no geometry for. If this climbs while published stays 0, the database is the problem. */ + private final java.util.concurrent.atomic.AtomicInteger lodEmptyRegions = + new java.util.concurrent.atomic.AtomicInteger(); // Worker/build bookkeeping. `inFlight` maps a dispatched section key to a monotonic token; a completed // task whose token no longer matches is discarded. The active-task barrier spans worker + GPU lifetime. private final Long2LongOpenHashMap inFlight = new Long2LongOpenHashMap(); @@ -1456,11 +1459,32 @@ private static long lodKey(int lx, int ly, int lz, int detail) { return sectionKey(lx, ly + LOD_KEY_Y_OFFSET * detail, lz); } + /** One-shot diagnostics so a silent LOD failure is distinguishable from a working one. */ + private boolean lodLoggedState; + private int lodLoggedPublished = -1; + private void streamLod(RtContext ctx, ClientLevel level, int pbx, int pby, int pbz) { - if (!CausticaConfig.Rt.Lod.ENABLED.value() || !RtDhLodSource.available()) { + boolean enabled = CausticaConfig.Rt.Lod.ENABLED.value(); + if (!enabled || !RtDhLodSource.available()) { + if (enabled && !lodLoggedState) { + // The single most useful line: says plainly whether DH's API resolved at all, which + // separates "Caustica is not asking" from "DH has no data". + lodLoggedState = true; + CausticaMod.LOGGER.info("LOD enabled but the Distant Horizons API is unavailable; no distant terrain"); + } releaseLod(ctx); return; } + int empties = lodEmptyRegions.get(); + if (empties >= 64 && empties % 64 == 0 && lodResident.isEmpty()) { + CausticaMod.LOGGER.info("LOD: {} regions queried, all empty — DH has no data at detail {} here", + empties, CausticaConfig.Rt.Lod.DETAIL.value()); + } + if (!lodLoggedState) { + lodLoggedState = true; + CausticaMod.LOGGER.info("LOD active: detail={}, radius={}, DH source available", + CausticaConfig.Rt.Lod.DETAIL.value(), CausticaConfig.Rt.Lod.RADIUS.value()); + } publishLodPrepared(ctx, pbx, pby, pbz); int detail = CausticaConfig.Rt.Lod.DETAIL.value(); @@ -1519,6 +1543,10 @@ private void dispatchLodSection(RtContext ctx, ClientLevel level, long key, region.fill(RtDhLodSource.fetchRegion((byte) detail, Math.floorDiv(originX, scale), Math.floorDiv(originZ, scale))); if (region.isEmpty()) { + // Empty means DH returned no solid blocks here — either the region is not in + // its database, or the detail level has not been generated. Counted rather + // than logged per section, which would be thousands of lines. + lodEmptyRegions.incrementAndGet(); finishLodTask(key, null); return; } @@ -1628,6 +1656,13 @@ private void publishLodPrepared(RtContext ctx, int pbx, int pby, int pbz) { table.instanceList.add(table.instanceFor(g, blockX, blockY, blockZ)); lodResident.put(ps.key(), g); } + // Logged at a few thresholds rather than per section: enough to tell "nothing is publishing" + // from "sections are arriving", without a line per frame while the ring fills. + int count = lodResident.size(); + if (count != lodLoggedPublished && (count == 1 || count == 8 || count == 32 || count == 128)) { + lodLoggedPublished = count; + CausticaMod.LOGGER.info("LOD sections published: {}", count); + } table.flushWrites(); table.instances = table.instanceList; } From af2ead4bb8f4de5fb06debb48d05399d033bd420 Mon Sep 17 00:00:00 2001 From: KthanidKisure <161649271+KthanidKisure@users.noreply.github.com> Date: Fri, 28 Aug 2026 23:03:28 +0100 Subject: [PATCH 14/25] Add files via upload --- .../caustica/rt/terrain/RtDhLodSource.java | 52 +++++++++++++------ .../caustica/rt/terrain/RtTerrain.java | 20 ++++--- 2 files changed, 49 insertions(+), 23 deletions(-) diff --git a/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtDhLodSource.java b/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtDhLodSource.java index 3bbd95d77..d42dd57c3 100644 --- a/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtDhLodSource.java +++ b/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtDhLodSource.java @@ -162,19 +162,37 @@ private static void resolve() { } /** - * Fetches one DH region at {@code detailLevel} and flattens it into boxes. + * Fetches one square area of terrain and flattens it into boxes. * - *

{@code detailLevel} is DH's own exponent: 0 is one data point per block, 1 is one per 2x2 - * column, and so on. The horizontal footprint of each returned box is {@code 1 << detailLevel} - * blocks square, which is why {@link LodBox#sizeXZ} is carried rather than assumed — a caller - * meshing these must scale the quad, not emit a unit cube. + *

DH's detailLevel is the size of the QUERIED AREA, not the resolution of the data. This + * is the single most misreadable thing in the API and getting it wrong produces silence rather + * than an error. From DH's own javadoc: 0 = block, 2 = 4x4 blocks, 4 = chunk, 9 = region. So + * {@code detailLevel} 4 asks for one chunk's worth of columns at position (posX, posZ) measured in + * chunks — it does NOT ask for chunk-resolution data. * - *

Call this off the render thread. DH may hit disk. It is a database query, not a - * memory read. + *

Because of that, the caller passes the FOOTPRINT it wants covered and this derives everything + * else. The returned grid's own dimensions then tell us the resolution DH actually had, which is + * read from the array rather than assumed: DH may return a coarser grid than the footprint implies + * if that is all its database holds, and silently treating a 4x4 grid as 16x16 would scatter + * terrain across the section with holes between. * - * @return the boxes, or an empty list if DH is unavailable or has nothing at this position. + *

Call this off the render thread. DH may hit disk. It is a database query, not a memory + * read. + * + * @param footprintBlocks width of the square area to cover, in blocks; must be a power of two + * @param originBlockX world X of the area's corner, a multiple of footprintBlocks + * @param originBlockZ world Z of the area's corner + * @return the boxes, or an empty list if DH is unavailable or has nothing here */ - public static List fetchRegion(byte detailLevel, int posX, int posZ) { + public static List fetchArea(int footprintBlocks, int originBlockX, int originBlockZ) { + byte detailLevel = (byte) Integer.numberOfTrailingZeros(Math.max(footprintBlocks, 1)); + int posX = Math.floorDiv(originBlockX, Math.max(footprintBlocks, 1)); + int posZ = Math.floorDiv(originBlockZ, Math.max(footprintBlocks, 1)); + return fetchRegion(detailLevel, posX, posZ, footprintBlocks, originBlockX, originBlockZ); + } + + private static List fetchRegion(byte detailLevel, int posX, int posZ, + int footprintBlocks, int originBlockX, int originBlockZ) { synchronized (RtDhLodSource.class) { resolve(); if (state != State.READY) { @@ -199,7 +217,7 @@ public static List fetchRegion(byte detailLevel, int posX, int posZ) { if (grid == null) { return List.of(); } - return flatten(grid, detailLevel, posX, posZ); + return flatten(grid, footprintBlocks, originBlockX, originBlockZ); } catch (ReflectiveOperationException | RuntimeException e) { LOGGER.debug("DH region fetch failed at detail {} ({}, {}): {}", detailLevel, posX, posZ, e.toString()); @@ -212,16 +230,16 @@ public static List fetchRegion(byte detailLevel, int posX, int posZ) { * type lives in DH's classloader-visible API and casting it here would reintroduce the hard * dependency this class exists to avoid. */ - private static List flatten(Object grid, byte detailLevel, int posX, int posZ) + private static List flatten(Object grid, int footprintBlocks, int originX, int originZ) throws ReflectiveOperationException { - int sizeXZ = 1 << detailLevel; - // DH positions are in detail-level units; the world origin of this region is the position - // scaled by the level's block footprint. - int originX = posX * sizeXZ; - int originZ = posZ * sizeXZ; - List boxes = new ArrayList<>(); int lenX = Array.getLength(grid); + if (lenX <= 0) { + return boxes; + } + // Resolution derived from what DH actually returned, not from what was asked for. A 128-block + // footprint answered with a 16x16 grid means each cell stands for 8 blocks. + int sizeXZ = Math.max(footprintBlocks / lenX, 1); for (int ix = 0; ix < lenX; ix++) { Object column = Array.get(grid, ix); if (column == null) { diff --git a/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtTerrain.java b/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtTerrain.java index cb7ec5a33..8bda2c393 100644 --- a/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtTerrain.java +++ b/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtTerrain.java @@ -182,6 +182,9 @@ private static int rebaseDistanceBlocks() { /** Regions DH had no geometry for. If this climbs while published stays 0, the database is the problem. */ private final java.util.concurrent.atomic.AtomicInteger lodEmptyRegions = new java.util.concurrent.atomic.AtomicInteger(); + /** Total boxes DH handed back. Non-zero with zero published means meshing is the problem, not DH. */ + private final java.util.concurrent.atomic.AtomicInteger lodBoxesSeen = + new java.util.concurrent.atomic.AtomicInteger(); // Worker/build bookkeeping. `inFlight` maps a dispatched section key to a monotonic token; a completed // task whose token no longer matches is discarded. The active-task barrier spans worker + GPU lifetime. private final Long2LongOpenHashMap inFlight = new Long2LongOpenHashMap(); @@ -1477,8 +1480,9 @@ private void streamLod(RtContext ctx, ClientLevel level, int pbx, int pby, int p } int empties = lodEmptyRegions.get(); if (empties >= 64 && empties % 64 == 0 && lodResident.isEmpty()) { - CausticaMod.LOGGER.info("LOD: {} regions queried, all empty — DH has no data at detail {} here", - empties, CausticaConfig.Rt.Lod.DETAIL.value()); + CausticaMod.LOGGER.info( + "LOD: {} regions queried, {} boxes returned by DH, none published (detail {})", + empties, lodBoxesSeen.get(), CausticaConfig.Rt.Lod.DETAIL.value()); } if (!lodLoggedState) { lodLoggedState = true; @@ -1537,11 +1541,15 @@ private void dispatchLodSection(RtContext ctx, ClientLevel level, long key, try { RtWorkerPool.INSTANCE.submit(() -> { try { - // DH covers one LOD section with (scale)^2 of its own detail-level columns; one query - // per section keeps the database hit count proportional to sections, not blocks. + // One query covering the section's whole footprint. DH's detailLevel is the size of + // the queried AREA, not the data resolution, so the footprint is what it needs — + // asking for "detail 3" got an 8x8-block area per 128-block section, which is why + // sections came back empty. RtDhLodRegion region = new RtDhLodRegion(level, detail, originX, originY, originZ); - region.fill(RtDhLodSource.fetchRegion((byte) detail, - Math.floorDiv(originX, scale), Math.floorDiv(originZ, scale))); + java.util.List boxes = + RtDhLodSource.fetchArea(sectionBlocks, originX, originZ); + region.fill(boxes); + lodBoxesSeen.addAndGet(boxes.size()); if (region.isEmpty()) { // Empty means DH returned no solid blocks here — either the region is not in // its database, or the detail level has not been generated. Counted rather From 775fb91a6de55eb77922b20570cd5fe3979c6a7e Mon Sep 17 00:00:00 2001 From: KthanidKisure <161649271+KthanidKisure@users.noreply.github.com> Date: Fri, 28 Aug 2026 23:15:23 +0100 Subject: [PATCH 15/25] Add files via upload --- src/main/java/dev/comfyfluffy/caustica/rt/RtFrameStats.java | 5 +++++ .../java/dev/comfyfluffy/caustica/rt/terrain/RtTerrain.java | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/dev/comfyfluffy/caustica/rt/RtFrameStats.java b/src/main/java/dev/comfyfluffy/caustica/rt/RtFrameStats.java index 7722b8fd8..8f2996bb3 100644 --- a/src/main/java/dev/comfyfluffy/caustica/rt/RtFrameStats.java +++ b/src/main/java/dev/comfyfluffy/caustica/rt/RtFrameStats.java @@ -38,6 +38,11 @@ public final class RtFrameStats { "terrain.drainCompletion", "terrain.snapshotDispatch", "terrain.publish", + // Used at RtTerrain:521 but never registered here, so enabling frame stats crashed + // the client on the first tick that published a light grid. Upstream bug, not a + // LOD one — the stage name table and the call sites had drifted apart. + "terrain.lightGridPublish", + "terrain.lodDispatch", "entity.capture", "entity.capture.extract", "entity.capture.submit", diff --git a/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtTerrain.java b/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtTerrain.java index 8bda2c393..211a2835c 100644 --- a/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtTerrain.java +++ b/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtTerrain.java @@ -513,7 +513,9 @@ private void stream(RtContext ctx) { } } - streamLod(ctx, level, pbx, pby, pbz); + try (RtFrameStats.Scope ignored = RtFrameStats.FRAME.stage("terrain.lodDispatch")) { + streamLod(ctx, level, pbx, pby, pbz); + } // Publish only a fully uploaded hierarchy. Newer section changes supersede stale worker/upload // results, while the previous complete generation remains active until this atomic swap. From cd3392b4254784c6416fd95393c39d534b66eb21 Mon Sep 17 00:00:00 2001 From: KthanidKisure <161649271+KthanidKisure@users.noreply.github.com> Date: Fri, 28 Aug 2026 23:15:34 +0100 Subject: [PATCH 16/25] Add files via upload From ac7f2e9a704c74f8e6528463e39408dcea8ed905 Mon Sep 17 00:00:00 2001 From: KthanidKisure <161649271+KthanidKisure@users.noreply.github.com> Date: Sat, 29 Aug 2026 01:31:02 +0100 Subject: [PATCH 17/25] Add files via upload --- shaders/pipelines/world/fog.slang | 17 +++++++ shaders/pipelines/world/world_common.slang | 2 + .../comfyfluffy/caustica/CausticaConfig.java | 7 +++ .../comfyfluffy/caustica/rt/RtComposite.java | 47 +++++++++++++++++++ .../caustica/rt/terrain/RtDhLodSource.java | 30 ++++++++++-- 5 files changed, 98 insertions(+), 5 deletions(-) diff --git a/shaders/pipelines/world/fog.slang b/shaders/pipelines/world/fog.slang index 621716bf9..5d965a6ec 100644 --- a/shaders/pipelines/world/fog.slang +++ b/shaders/pipelines/world/fog.slang @@ -145,9 +145,26 @@ public float3 fogInscatter(FogParams f, float3 rd, SkyState state) { // Fold one travelled segment into the path. Call once per segment, BEFORE the segment's endpoint // contributes anything to L, so that the in-scatter enters at this segment's throughput and everything // beyond it is attenuated by this segment's transmittance. +// Debug: replace the path's radiance with the raw fog in-scatter colour, so the value can be SEEN +// rather than inferred. Three fog fixes have now been attempted from reasoning alone and all three +// were wrong about the cause; this is the cheapest way to find out whether the in-scatter is black +// (a lookup problem) or bright (a composition problem), which need opposite fixes. +public bool fogDebugInscatter(FogParams f, WorldPush push, float3 rd, SkyState state, + inout float3 L, inout float3 throughput) { + if (push.fog2.x < 0.5) { + return false; + } + L = fogTint(f, fogInscatter(f, rd, state), push); + throughput = float3(0.0); + return true; +} + public void applyFogSegment(FogParams f, SkyState state, Medium medium, WorldPush push, float3 ro, float3 rd, float t, inout float3 L, inout float3 throughput) { + if (fogDebugInscatter(f, push, rd, state, L, throughput)) { + return; + } if (!fogActive(f) || !fogAppliesTo(medium)) { return; } diff --git a/shaders/pipelines/world/world_common.slang b/shaders/pipelines/world/world_common.slang index c0b588dcd..59e597135 100644 --- a/shaders/pipelines/world/world_common.slang +++ b/shaders/pipelines/world/world_common.slang @@ -117,6 +117,8 @@ public struct WorldPush { public float4 dimCloud; // cloud3: x cloud march quality scale (1 = reference step counts), yzw unused. public float4 cloud3; + // fog2: x = debug mode (1 = show raw fog in-scatter as the final colour), yzw unused. + public float4 fog2; // ---- ReSTIR. x temporal reuse strength (0 disables it and both image accesses), y frame parity // selecting which reservoir image is history this frame, z spatial neighbour taps per pixel // (0 = temporal only), w spatial tap radius in render pixels. diff --git a/src/main/java/dev/comfyfluffy/caustica/CausticaConfig.java b/src/main/java/dev/comfyfluffy/caustica/CausticaConfig.java index fbd6bcca0..bdaec4422 100644 --- a/src/main/java/dev/comfyfluffy/caustica/CausticaConfig.java +++ b/src/main/java/dev/comfyfluffy/caustica/CausticaConfig.java @@ -719,6 +719,13 @@ public static final class Fog { */ public static final FloatSetting BIOME_RESPONSE = clampedFloat("caustica.rt.fog.biomeResponse", "fog.biome-response", 0.6f, 0.0f, 1.0f); + /** + * Diagnostic. 1 replaces the whole image with the fog's in-scatter colour, so you can see + * directly whether that colour is black. Black screen means the sky lookup is failing; + * a coloured screen means the lookup is fine and the composition is at fault. 0 = off. + */ + public static final IntSetting DEBUG = + clampedInt("caustica.rt.fog.debug", "fog.debug", 0, 0, 1); /** Single-scattering albedo. 1 scatters everything; lower values also absorb, darkening distance. */ public static final FloatSetting ALBEDO = clampedFloat("caustica.rt.fog.albedo", "fog.albedo", 0.92f, 0.0f, 1.0f); diff --git a/src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java b/src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java index e8a19d00e..789c81f55 100644 --- a/src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java +++ b/src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java @@ -72,6 +72,7 @@ import dev.comfyfluffy.caustica.rt.pipeline.RtExposure; import dev.comfyfluffy.caustica.rt.pipeline.RtPipeline; import dev.comfyfluffy.caustica.rt.pipeline.RtToneLut; +import dev.comfyfluffy.caustica.rt.terrain.RtCloudNoise; import dev.comfyfluffy.caustica.rt.terrain.RtTerrain; import java.nio.ByteBuffer; @@ -252,6 +253,12 @@ private static final class PushSlot { * roles of history and destination each frame via a push constant rather than by rewriting * descriptors — see {@link RtPipeline#setReservoirImages}. Double-width: two texels per pixel. */ + /** + * Precomputed cloud shape field. Created once and never rewritten — the wind offset moves the + * sampling domain rather than the data, so nothing here changes after upload. + */ + private RtImage cloudNoise; + private long cloudNoiseSampler; private RtImage reservoirA; private RtImage reservoirB; /** Flips each frame; 0 means A is history. */ @@ -1010,6 +1017,9 @@ private void ensureOutput(RtContext ctx, int width, int height) { "ReSTIR reservoir B " + renderW + "x" + renderH); reservoirHistoryValid = false; reservoirParity = 0; + // Created alongside the other RT resources because this is where ctx is in scope; the method + // itself is idempotent, so a resize re-binds the existing texture rather than regenerating it. + ensureCloudNoise(ctx); // Zero both images at creation. The history-valid flag guards the frame AFTER a reallocation, // but it is a whole-frame switch and reservoir writes are per-pixel: a pixel the raygen never // reaches — sky, or any pixel whose primary ray found no emitter-lit surface — is never written, @@ -1263,6 +1273,7 @@ private void recordFrame(RtContext ctx, RtPipeline active, GpuTexture nativeColo Float4 dimCloud = new Float4(cloudR, cloudG, cloudB, CausticaConfig.Rt.Clouds.VANILLA_TINT.value()); Float4 cloud3 = new Float4(CausticaConfig.Rt.Clouds.QUALITY.value(), 0f, 0f, 0f); + Float4 fog2 = new Float4(CausticaConfig.Rt.Fog.DEBUG.value(), 0f, 0f, 0f); // Vanilla's cloud height wins when enabled and actually reported — a dimension with no cloud // layer leaves the attribute absent, in which case the configured altitude is the only // sensible answer rather than dropping the deck to zero. @@ -1398,6 +1409,7 @@ private void recordFrame(RtContext ctx, RtPipeline active, GpuTexture nativeColo dimFog, dimCloud, cloud3, + fog2, restir ).write(push); pushBuf.flush(0L, WORLD_PUSH_SIZE); @@ -1835,6 +1847,41 @@ public void destroy() { } } + /** + * Creates and binds the cloud shape texture, once. LINEAR filtering with REPEAT addressing in all + * three axes: the field is generated to tile, so the hardware's wrap does the domain folding and + * the shader needs no fract() on its coordinate. + */ + private void ensureCloudNoise(RtContext ctx) { + if (cloudNoise != null) { + worldPipeline.setCloudNoise(cloudNoise.view, cloudNoiseSampler); + return; + } + java.nio.ByteBuffer data = RtCloudNoise.generate(); + try { + cloudNoise = ctx.createSampled3dImage(RtCloudNoise.SIZE, RtCloudNoise.SIZE, RtCloudNoise.SIZE, + VK10.VK_FORMAT_R8G8_UNORM, RtCloudNoise.BYTES_PER_TEXEL, data, "cloud noise 128^3"); + } finally { + org.lwjgl.system.MemoryUtil.memFree(data); + } + try (MemoryStack stack = MemoryStack.stackPush()) { + VkSamplerCreateInfo sci = VkSamplerCreateInfo.calloc(stack).sType$Default() + .magFilter(VK10.VK_FILTER_LINEAR).minFilter(VK10.VK_FILTER_LINEAR) + .mipmapMode(VK10.VK_SAMPLER_MIPMAP_MODE_NEAREST) + .addressModeU(VK10.VK_SAMPLER_ADDRESS_MODE_REPEAT) + .addressModeV(VK10.VK_SAMPLER_ADDRESS_MODE_REPEAT) + .addressModeW(VK10.VK_SAMPLER_ADDRESS_MODE_REPEAT) + .minLod(0f).maxLod(0f); + LongBuffer p = stack.mallocLong(1); + if (VK10.vkCreateSampler(ctx.vk(), sci, null, p) != VK10.VK_SUCCESS) { + throw new IllegalStateException("vkCreateSampler(cloud noise) failed"); + } + cloudNoiseSampler = p.get(0); + RtDebugLabels.name(ctx, VK10.VK_OBJECT_TYPE_SAMPLER, cloudNoiseSampler, "cloud noise sampler"); + } + worldPipeline.setCloudNoise(cloudNoise.view, cloudNoiseSampler); + } + private long atlasSampler(RtContext ctx) { if (atlasSampler == 0L) { try (MemoryStack stack = MemoryStack.stackPush()) { diff --git a/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtDhLodSource.java b/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtDhLodSource.java index d42dd57c3..56b4a7755 100644 --- a/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtDhLodSource.java +++ b/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtDhLodSource.java @@ -70,6 +70,12 @@ private enum State { UNRESOLVED, READY, UNAVAILABLE } private static Field pointSkyLight; private static Field pointBlockState; private static Method wrapperGetMcObject; + private static final java.util.concurrent.atomic.AtomicBoolean loggedQueryFailure = + new java.util.concurrent.atomic.AtomicBoolean(); + private static final java.util.concurrent.atomic.AtomicBoolean loggedQuerySuccess = + new java.util.concurrent.atomic.AtomicBoolean(); + private static final java.util.concurrent.atomic.AtomicBoolean loggedNoLevel = + new java.util.concurrent.atomic.AtomicBoolean(); private RtDhLodSource() { } @@ -202,17 +208,31 @@ private static List fetchRegion(byte detailLevel, int posX, int posZ, try { Object levelWrapper = levelWrapper(); if (levelWrapper == null) { - return List.of(); // between worlds, or nothing loaded yet + // The most likely single cause of "DH returns nothing": DH has no level loaded at all, + // which is not the same as a level with no terrain in it. + if (loggedNoLevel.compareAndSet(false, true)) { + LOGGER.info("DH has no loaded level — it may be disabled for this world, or its " + + "level lifecycle may require its renderer to be enabled"); + } + return List.of(); } Object result = getAllTerrainDataAtDetailLevelAndPos.invoke( terrainRepo, levelWrapper, detailLevel, posX, posZ, null); if (result == null || !resultSuccess.getBoolean(result)) { - // A failed query is routine — the region may simply not be generated yet — so this is - // debug, not a warning, and the message is DH's own explanation. - LOGGER.debug("DH region {} {} unavailable at detail {}: {}", posX, posZ, detailLevel, - result == null ? "null result" : resultMessage.get(result)); + // DH's own explanation, surfaced ONCE at info. It was debug-only, which meant that when + // every query failed the log showed a count of zeroes and no reason — the one piece of + // information that would have identified the cause was being swallowed. Once, because + // a failing setup fails on every query and would otherwise flood the log. + if (loggedQueryFailure.compareAndSet(false, true)) { + LOGGER.info("DH query failed at detail {} pos {},{}: {}", detailLevel, posX, posZ, + result == null ? "null result" : resultMessage.get(result)); + } return List.of(); } + // A successful but empty answer is a different diagnosis from a failed one, so say so. + if (loggedQuerySuccess.compareAndSet(false, true)) { + LOGGER.info("DH query succeeded at detail {} pos {},{}", detailLevel, posX, posZ); + } Object grid = resultPayload.get(result); if (grid == null) { return List.of(); From 10fbf36d83e0a301424d3ae10d42b8e8b727e025 Mon Sep 17 00:00:00 2001 From: KthanidKisure <161649271+KthanidKisure@users.noreply.github.com> Date: Sat, 29 Aug 2026 01:39:40 +0100 Subject: [PATCH 18/25] Add files via upload --- .../caustica/build/GenerateRtBindings.groovy | 1 + shaders/pipelines/world/bindings.slang | 4 + shaders/pipelines/world/clouds.slang | 54 ++----- .../comfyfluffy/caustica/rt/RtContext.java | 93 ++++++++++++ .../caustica/rt/pipeline/RtPipeline.java | 14 ++ .../caustica/rt/terrain/RtCloudNoise.java | 134 ++++++++++++++++++ 6 files changed, 259 insertions(+), 41 deletions(-) create mode 100644 src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtCloudNoise.java diff --git a/buildSrc/src/main/groovy/dev/comfyfluffy/caustica/build/GenerateRtBindings.groovy b/buildSrc/src/main/groovy/dev/comfyfluffy/caustica/build/GenerateRtBindings.groovy index 735f6fe5b..2287bb030 100644 --- a/buildSrc/src/main/groovy/dev/comfyfluffy/caustica/build/GenerateRtBindings.groovy +++ b/buildSrc/src/main/groovy/dev/comfyfluffy/caustica/build/GenerateRtBindings.groovy @@ -32,6 +32,7 @@ abstract class GenerateRtBindings extends DefaultTask { G_NORMAL: "gNormal", G_ALBEDO: "gAlbedo", G_DEPTH: "gDepth", G_MOTION: "gMotion", G_SPEC_ALBEDO: "gSpecAlbedo", G_SPEC_MOTION: "gSpecMotion", RESERVOIR_A: "reservoirA", RESERVOIR_B: "reservoirB", + CLOUD_NOISE: "cloudNoiseTex", CELESTIALS: "celestialsAtlas", SKY_VIEW: "skyViewLut", TRANSMITTANCE: "transmittanceLut", ENTITY_ALBEDO: "entityAlbedoTex", MATERIAL_SURFACE0: "materialSurface0Tex", MATERIAL_NORMAL_AO: "materialNormalAoTex", MATERIAL_SURFACE1: "materialSurface1Tex"]], diff --git a/shaders/pipelines/world/bindings.slang b/shaders/pipelines/world/bindings.slang index 5c33b7d4a..fb448c338 100644 --- a/shaders/pipelines/world/bindings.slang +++ b/shaders/pipelines/world/bindings.slang @@ -24,6 +24,10 @@ import world_common; [[vk::binding(12, 0)]] [format("rgba32f")] public RWTexture2D reservoirA; [[vk::binding(13, 0)]] [format("rgba32f")] public RWTexture2D reservoirB; +// Precomputed cloud shape field. R = 4-octave base, G = 3-octave erosion detail, tiling in all three +// axes. Replaces hundreds of ALU ops per density sample with one filtered fetch — see RtCloudNoise. +[[vk::binding(14, 0)]] public Sampler3D cloudNoiseTex; + [[vk::binding(2, 0)]] public Sampler2D blockAlbedoAtlas; [[vk::binding(9, 0)]] public Sampler2D celestialsAtlas; [[vk::binding(10, 0)]] public Sampler2D skyViewLut; diff --git a/shaders/pipelines/world/clouds.slang b/shaders/pipelines/world/clouds.slang index 37d4a251c..535cf7936 100644 --- a/shaders/pipelines/world/clouds.slang +++ b/shaders/pipelines/world/clouds.slang @@ -83,43 +83,8 @@ public bool cloudsActive(CloudParams c) { // Value noise on a hashed integer lattice. Chosen over gradient noise because clouds want the blobby, // isotropic character value noise already has, and it is roughly half the ALU. -float cloudHash(float3 cell) { - float3 p = frac(cell * float3(0.1031, 0.1030, 0.0973)); - p += dot(p, p.yxz + 33.33); - return frac((p.x + p.y) * p.z); -} - -float cloudValueNoise(float3 p) { - float3 i = floor(p); - float3 f = frac(p); - // Quintic smoothstep: C2 continuous, so fBm sums do not show lattice creases where octaves align. - float3 u = f * f * f * (f * (f * 6.0 - 15.0) + 10.0); - float n000 = cloudHash(i + float3(0.0, 0.0, 0.0)); - float n100 = cloudHash(i + float3(1.0, 0.0, 0.0)); - float n010 = cloudHash(i + float3(0.0, 1.0, 0.0)); - float n110 = cloudHash(i + float3(1.0, 1.0, 0.0)); - float n001 = cloudHash(i + float3(0.0, 0.0, 1.0)); - float n101 = cloudHash(i + float3(1.0, 0.0, 1.0)); - float n011 = cloudHash(i + float3(0.0, 1.0, 1.0)); - float n111 = cloudHash(i + float3(1.0, 1.0, 1.0)); - return lerp(lerp(lerp(n000, n100, u.x), lerp(n010, n110, u.x), u.y), - lerp(lerp(n001, n101, u.x), lerp(n011, n111, u.x), u.y), u.z); -} - -// Lacunarity 2.02 rather than 2.0: an exact doubling makes octaves share lattice planes and produces -// faint axis-aligned grid structure in the result. -float cloudFbm(float3 p, int octaves) { - float sum = 0.0; - float amplitude = 0.5; - float normalization = 0.0; - for (int i = 0; i < octaves; ++i) { - sum += amplitude * cloudValueNoise(p); - normalization += amplitude; - p *= 2.02; - amplitude *= 0.5; - } - return sum / max(normalization, 1.0e-6); -} +// Value-noise helpers removed: the base and detail fields are now baked into cloudNoiseTex +// (RtCloudNoise), so nothing evaluates them at runtime any more. // ---- Density ----------------------------------------------------------------------------------------- @@ -154,7 +119,10 @@ public float cloudDensity(CloudParams c, float3 position) { float3 baseCoord = float3(domain.x * baseFrequency, domain.y * baseFrequency * 2.9, domain.z * baseFrequency); - float shape = cloudFbm(baseCoord, 4); + // One filtered fetch instead of four octaves of hashed value noise. The texture tiles, so the + // repeat address mode does the domain wrapping for free and the coordinate needs no fract(). + float4 noise = cloudNoiseTex.SampleLevel(baseCoord, 0.0); + float shape = noise.x; // Coverage as a threshold remap, not a multiply. Multiplying would raise a flat haze everywhere as // coverage rises; subtracting a threshold and renormalizing grows the clouds that exist outward from @@ -170,12 +138,13 @@ public float cloudDensity(CloudParams c, float3 position) { // as the edge would punch holes through the middle of every cloud. if (c.detail > 0.0) { // Detail rides at 10x the base frequency so it scales with feature size rather than staying - // fixed while the base changes underneath it. + // fixed while the base changes underneath it. Second fetch rather than reusing the first + // texel's G: the two fields are sampled at different frequencies, which is the point. float detailFrequency = baseFrequency * 10.0; float3 detailCoord = float3(domain.x * detailFrequency, domain.y * detailFrequency * 1.7, domain.z * detailFrequency); - float erosion = 1.0 - cloudFbm(detailCoord, 3); + float erosion = 1.0 - cloudNoiseTex.SampleLevel(detailCoord, 0.0).y; float strength = c.detail * (1.0 - shaped); shaped = saturate(shaped - erosion * erosion * strength); } @@ -208,7 +177,10 @@ float cloudDensityCoarse(CloudParams c, float3 position) { return 0.0; } float3 domain = float3(position.x + c.wind.x, position.y, position.z + c.wind.y); - float shape = cloudFbm(float3(domain.x * 0.0012, domain.y * 0.0035, domain.z * 0.0012), 2); + float baseFrequency = 1.0 / max(c.featureSize, 1.0); + float shape = cloudNoiseTex.SampleLevel(float3(domain.x * baseFrequency, + domain.y * baseFrequency * 2.9, + domain.z * baseFrequency), 0.0).x; float threshold = 1.0 - c.coverage; return saturate((shape - threshold) / max(1.0 - threshold, 1.0e-3)) * cloudHeightProfile(relativeHeight) * c.density; diff --git a/src/main/java/dev/comfyfluffy/caustica/rt/RtContext.java b/src/main/java/dev/comfyfluffy/caustica/rt/RtContext.java index 079f92240..cf8f427f5 100644 --- a/src/main/java/dev/comfyfluffy/caustica/rt/RtContext.java +++ b/src/main/java/dev/comfyfluffy/caustica/rt/RtContext.java @@ -24,6 +24,9 @@ import org.lwjgl.vulkan.VkDevice; import org.lwjgl.vulkan.VkFenceCreateInfo; import org.lwjgl.vulkan.VkFormatProperties; +import java.nio.ByteBuffer; +import org.lwjgl.system.MemoryUtil; +import org.lwjgl.vulkan.VkBufferImageCopy; import org.lwjgl.vulkan.VkImageCreateInfo; import org.lwjgl.vulkan.VkImageFormatProperties; import org.lwjgl.vulkan.VkImageMemoryBarrier; @@ -393,6 +396,96 @@ public RtImage createStorageImage(int width, int height, int format, String labe return new RtImage(vma, vk, image, allocation, view, width, height); } + /** + * Creates a tiling 3D texture from host data and leaves it in SHADER_READ_ONLY_OPTIMAL. + * + *

Written once at creation and never again, which is why it takes the simple synchronous path: + * no ping-pong, no per-frame descriptor churn, nothing for a frame in flight to race against. That + * is the whole reason this is a much smaller risk than a storage image the shaders write to. + * + * @param data tightly packed texels, depth-major, sized width*height*depth*bytesPerTexel + */ + public RtImage createSampled3dImage(int width, int height, int depth, int format, + int bytesPerTexel, ByteBuffer data, String label) { + long imageBytes = (long) width * height * depth * bytesPerTexel; + int usage = VK10.VK_IMAGE_USAGE_SAMPLED_BIT | VK10.VK_IMAGE_USAGE_TRANSFER_DST_BIT; + long image; + long allocation; + long view; + try (MemoryStack stack = MemoryStack.stackPush()) { + VkImageCreateInfo ici = VkImageCreateInfo.calloc(stack).sType$Default() + .imageType(VK10.VK_IMAGE_TYPE_3D).format(format) + .mipLevels(1).arrayLayers(1).samples(VK10.VK_SAMPLE_COUNT_1_BIT) + .tiling(VK10.VK_IMAGE_TILING_OPTIMAL).usage(usage) + .sharingMode(VK10.VK_SHARING_MODE_EXCLUSIVE) + .initialLayout(VK10.VK_IMAGE_LAYOUT_UNDEFINED); + ici.extent().set(width, height, depth); + VmaAllocationCreateInfo iaci = VmaAllocationCreateInfo.calloc(stack) + .usage(Vma.VMA_MEMORY_USAGE_AUTO); + LongBuffer pImage = stack.mallocLong(1); + PointerBuffer pAlloc = stack.mallocPointer(1); + check(Vma.vmaCreateImage(vma, ici, iaci, pImage, pAlloc, null), "vmaCreateImage(3D)"); + image = pImage.get(0); + allocation = pAlloc.get(0); + RtDebugLabels.nameImage(this, image, label); + + VkImageViewCreateInfo vci = VkImageViewCreateInfo.calloc(stack).sType$Default() + .image(image).viewType(VK10.VK_IMAGE_VIEW_TYPE_3D).format(format); + vci.subresourceRange().aspectMask(VK10.VK_IMAGE_ASPECT_COLOR_BIT).levelCount(1).layerCount(1); + LongBuffer pView = stack.mallocLong(1); + check(VK10.vkCreateImageView(vk, vci, null, pView), "vkCreateImageView(3D)"); + view = pView.get(0); + RtDebugLabels.nameImageView(this, view, label + " view"); + } + + RtBuffer staging = createUploadBuffer(imageBytes, label + " upload"); + MemoryUtil.memCopy(MemoryUtil.memAddress(data), staging.mapped, imageBytes); + staging.flush(); + long imageFinal = image; + submitSync(cmd -> { + try (MemoryStack stack = MemoryStack.stackPush(); + RtDebugLabels.Scope ignored = RtDebugLabels.scope(this, cmd, "upload " + label)) { + VkImageMemoryBarrier.Buffer toDst = VkImageMemoryBarrier.calloc(1, stack); + toDst.get(0).sType$Default() + .oldLayout(VK10.VK_IMAGE_LAYOUT_UNDEFINED) + .newLayout(VK10.VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL) + .srcAccessMask(0).dstAccessMask(VK10.VK_ACCESS_TRANSFER_WRITE_BIT) + .srcQueueFamilyIndex(VK10.VK_QUEUE_FAMILY_IGNORED) + .dstQueueFamilyIndex(VK10.VK_QUEUE_FAMILY_IGNORED) + .image(imageFinal); + toDst.get(0).subresourceRange().aspectMask(VK10.VK_IMAGE_ASPECT_COLOR_BIT) + .levelCount(1).layerCount(1); + VK10.vkCmdPipelineBarrier(cmd, VK10.VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, + VK10.VK_PIPELINE_STAGE_TRANSFER_BIT, 0, null, null, toDst); + + VkBufferImageCopy.Buffer region = VkBufferImageCopy.calloc(1, stack); + region.get(0).bufferOffset(0).bufferRowLength(0).bufferImageHeight(0); + region.get(0).imageSubresource().aspectMask(VK10.VK_IMAGE_ASPECT_COLOR_BIT) + .mipLevel(0).baseArrayLayer(0).layerCount(1); + region.get(0).imageOffset().set(0, 0, 0); + region.get(0).imageExtent().set(width, height, depth); + VK10.vkCmdCopyBufferToImage(cmd, staging.handle, imageFinal, + VK10.VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, region); + + VkImageMemoryBarrier.Buffer toRead = VkImageMemoryBarrier.calloc(1, stack); + toRead.get(0).sType$Default() + .oldLayout(VK10.VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL) + .newLayout(VK10.VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL) + .srcAccessMask(VK10.VK_ACCESS_TRANSFER_WRITE_BIT) + .dstAccessMask(VK10.VK_ACCESS_SHADER_READ_BIT) + .srcQueueFamilyIndex(VK10.VK_QUEUE_FAMILY_IGNORED) + .dstQueueFamilyIndex(VK10.VK_QUEUE_FAMILY_IGNORED) + .image(imageFinal); + toRead.get(0).subresourceRange().aspectMask(VK10.VK_IMAGE_ASPECT_COLOR_BIT) + .levelCount(1).layerCount(1); + VK10.vkCmdPipelineBarrier(cmd, VK10.VK_PIPELINE_STAGE_TRANSFER_BIT, + VK10.VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, 0, null, null, toRead); + } + }); + staging.destroy(); + return new RtImage(vma, vk, image, allocation, view, width, height); + } + private void requireStorageImageSupport(int width, int height, int format, int usage, String label) { try (MemoryStack stack = MemoryStack.stackPush()) { VkFormatProperties formatProperties = VkFormatProperties.calloc(stack); diff --git a/src/main/java/dev/comfyfluffy/caustica/rt/pipeline/RtPipeline.java b/src/main/java/dev/comfyfluffy/caustica/rt/pipeline/RtPipeline.java index 1a1d0ab4c..f73571e1f 100644 --- a/src/main/java/dev/comfyfluffy/caustica/rt/pipeline/RtPipeline.java +++ b/src/main/java/dev/comfyfluffy/caustica/rt/pipeline/RtPipeline.java @@ -165,6 +165,12 @@ public static RtPipeline create(RtContext ctx, String[] rgen, String[] rmiss, St binds.get(binding).binding(binding).descriptorType(VK10.VK_DESCRIPTOR_TYPE_STORAGE_IMAGE) .descriptorCount(1).stageFlags(VK_SHADER_STAGE_RAYGEN_BIT_KHR); } + // Cloud noise: a sampled 3D texture, read by the miss shader (view march) and the raygen + // (shadow march), so both stages need visibility. + binds.get(WORLD_CLOUD_NOISE).binding(WORLD_CLOUD_NOISE) + .descriptorType(VK10.VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER) + .descriptorCount(1) + .stageFlags(VK_SHADER_STAGE_RAYGEN_BIT_KHR | VK_SHADER_STAGE_MISS_BIT_KHR); binds.get(WORLD_CELESTIALS).binding(WORLD_CELESTIALS) .descriptorType(VK10.VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER) .descriptorCount(1).stageFlags(VK_SHADER_STAGE_MISS_BIT_KHR); @@ -474,6 +480,14 @@ public void setSkyAtlas(long imageView, long sampler) { writeAtlasBinding(WORLD_CELESTIALS, imageView, sampler); } + /** + * Bind the precomputed cloud shape field. Written once when the texture is created; it is + * immutable for the session, so there is no per-frame descriptor traffic here. + */ + public void setCloudNoise(long imageView, long sampler) { + writeAtlasBinding(WORLD_CLOUD_NOISE, imageView, sampler); + } + public boolean hasSkyAtlas() { return true; } diff --git a/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtCloudNoise.java b/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtCloudNoise.java new file mode 100644 index 000000000..e2e9392d6 --- /dev/null +++ b/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtCloudNoise.java @@ -0,0 +1,134 @@ +package dev.comfyfluffy.caustica.rt.terrain; + +import java.nio.ByteBuffer; + +import org.lwjgl.system.MemoryUtil; + +/** + * Bakes the cloud shape field into a tiling 3D texture. + * + *

Why

+ * {@code clouds.slang} evaluated its density function roughly 64 view samples x 6 light samples per + * pixel, and every evaluation ran three or four octaves of hashed value noise — eight lattice hashes, + * a quintic fade and seven lerps per octave. That is hundreds of ALU operations per sample for a field + * that never changes. Precomputing it turns the whole thing into one hardware-filtered fetch. + * + *

The noise must tile, and that constrains the generator

+ * The shader samples this with a repeating address mode over a domain scaled by cloud feature size, so + * the field has to be seamless across every face. That rules out hashing world coordinates directly: + * the lattice has to wrap modulo the texture size at every octave. {@link #hash} therefore takes + * already-wrapped integer coordinates, and each octave wraps at its own frequency. + * + *

The consequence is that the sky repeats every {@code feature-size} blocks. At the default 140 + * that is a 140-block period, which is invisible from the ground because the deck is only ~90 blocks + * thick and the horizon cuts it off long before a repeat becomes legible. It would be visible from + * far above the deck looking down, which is not a view Minecraft offers. + * + *

Channel layout

+ * R holds the 4-octave base shape, G the 3-octave erosion detail — the same two fields the analytic + * version computed, at the same relative frequencies, so the shader's coverage remap and erosion maths + * are unchanged. Two 8-bit channels: the field feeds a smoothstep remap that quantisation cannot + * survive being visible through, and 8 bits keeps the whole thing at 4 MB. + */ +public final class RtCloudNoise { + /** 128^3 x RG8 = 4 MB. Doubling to 256 costs 32 MB for detail the coverage remap discards. */ + public static final int SIZE = 128; + public static final int BYTES_PER_TEXEL = 2; + + private RtCloudNoise() { + } + + /** + * @return a direct buffer the caller must free with {@link MemoryUtil#memFree}, holding + * SIZE^3 RG8 texels in depth-major order + */ + public static ByteBuffer generate() { + ByteBuffer out = MemoryUtil.memAlloc(SIZE * SIZE * SIZE * BYTES_PER_TEXEL); + for (int z = 0; z < SIZE; z++) { + for (int y = 0; y < SIZE; y++) { + for (int x = 0; x < SIZE; x++) { + float u = (float) x / SIZE; + float v = (float) y / SIZE; + float w = (float) z / SIZE; + // Base starts at 4 periods across the texture rather than 1: a single period per + // axis gives one blob per tile, which reads as a repeating pattern the moment two + // tiles are visible at once. + float base = fbm(u, v, w, 4, 4); + float detail = fbm(u, v, w, 16, 3); + int index = ((z * SIZE + y) * SIZE + x) * BYTES_PER_TEXEL; + out.put(index, (byte) Math.round(clamp01(base) * 255.0f)); + out.put(index + 1, (byte) Math.round(clamp01(detail) * 255.0f)); + } + } + } + return out; + } + + /** Octave sum. Lacunarity 2 is required here — a non-integer ratio would break tiling. */ + private static float fbm(float u, float v, float w, int baseFrequency, int octaves) { + float sum = 0f; + float amplitude = 0.5f; + float normalization = 0f; + int frequency = baseFrequency; + for (int i = 0; i < octaves; i++) { + sum += amplitude * periodicValueNoise(u, v, w, frequency); + normalization += amplitude; + frequency *= 2; + amplitude *= 0.5f; + } + return sum / Math.max(normalization, 1e-6f); + } + + /** Value noise on a lattice that wraps at {@code frequency}, so the result is seamless. */ + private static float periodicValueNoise(float u, float v, float w, int frequency) { + float x = u * frequency; + float y = v * frequency; + float z = w * frequency; + int xi = (int) Math.floor(x); + int yi = (int) Math.floor(y); + int zi = (int) Math.floor(z); + float xf = x - xi; + float yf = y - yi; + float zf = z - zi; + // Quintic fade: C2 continuous, so summed octaves show no lattice creases where they align. + float fx = fade(xf); + float fy = fade(yf); + float fz = fade(zf); + int x0 = Math.floorMod(xi, frequency); + int y0 = Math.floorMod(yi, frequency); + int z0 = Math.floorMod(zi, frequency); + int x1 = Math.floorMod(xi + 1, frequency); + int y1 = Math.floorMod(yi + 1, frequency); + int z1 = Math.floorMod(zi + 1, frequency); + float n000 = hash(x0, y0, z0); + float n100 = hash(x1, y0, z0); + float n010 = hash(x0, y1, z0); + float n110 = hash(x1, y1, z0); + float n001 = hash(x0, y0, z1); + float n101 = hash(x1, y0, z1); + float n011 = hash(x0, y1, z1); + float n111 = hash(x1, y1, z1); + return lerp(lerp(lerp(n000, n100, fx), lerp(n010, n110, fx), fy), + lerp(lerp(n001, n101, fx), lerp(n011, n111, fx), fy), fz); + } + + private static float fade(float t) { + return t * t * t * (t * (t * 6f - 15f) + 10f); + } + + private static float lerp(float a, float b, float t) { + return a + (b - a) * t; + } + + private static float clamp01(float value) { + return value < 0f ? 0f : (value > 1f ? 1f : value); + } + + /** Integer hash to [0,1). Wang-style mix; only needs to decorrelate a lattice, not pass SmallCrush. */ + private static float hash(int x, int y, int z) { + int h = x * 374761393 + y * 668265263 + z * 1274126177; + h = (h ^ (h >>> 13)) * 1274126177; + h ^= h >>> 16; + return (h >>> 8) * (1.0f / 16777216.0f); + } +} From a983f1e586d1a1c07359f48afd7802f4a296030b Mon Sep 17 00:00:00 2001 From: KthanidKisure <161649271+KthanidKisure@users.noreply.github.com> Date: Sun, 30 Aug 2026 01:33:08 +0100 Subject: [PATCH 19/25] Add files via upload --- .../caustica/rt/terrain/RtDhLodSource.java | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtDhLodSource.java b/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtDhLodSource.java index 56b4a7755..b4f4ea332 100644 --- a/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtDhLodSource.java +++ b/src/main/java/dev/comfyfluffy/caustica/rt/terrain/RtDhLodSource.java @@ -59,8 +59,16 @@ private enum State { UNRESOLVED, READY, UNAVAILABLE } private static Object terrainRepo; private static Object worldProxy; private static Method getAllTerrainDataAtDetailLevelAndPos; + private static Method createSoftCache; private static Method getSinglePlayerLevel; private static Method getAllLoadedLevelWrappers; + /** + * A soft cache DH's own API creates and owns. Passing null for this parameter is not "no cache" — + * DH treats it as a hard failure and every query returns unsuccessful with the message "Missing + * [IDhApiTerrainDataCache]". That single null was the actual cause of every LOD query failing; + * the footprint-vs-area fix and the diagnostics were correct but never got to matter. + */ + private static Object softCache; private static Field resultPayload; private static Field resultSuccess; private static Field resultMessage; @@ -126,6 +134,7 @@ private static void resolve() { getAllTerrainDataAtDetailLevelAndPos = repoInterface.getMethod( "getAllTerrainDataAtDetailLevelAndPos", levelWrapper, byte.class, int.class, int.class, cacheInterface); + createSoftCache = repoInterface.getMethod("createSoftCache"); // Two accessors, because they cover different worlds. getSinglePlayerLevel throws on a // multiplayer server, which would have ruled out exactly the case that matters here: @@ -154,6 +163,7 @@ private static void resolve() { "com.seibel.distanthorizons.api.interfaces.IDhApiUnsafeWrapper"); wrapperGetMcObject = unsafeWrapper.getMethod("getWrappedMcObject"); + softCache = createSoftCache.invoke(terrainRepo); state = State.READY; LOGGER.info("Distant Horizons LOD source resolved ({})", dhApi.getName()); } catch (ReflectiveOperationException | RuntimeException e) { @@ -217,7 +227,7 @@ private static List fetchRegion(byte detailLevel, int posX, int posZ, return List.of(); } Object result = getAllTerrainDataAtDetailLevelAndPos.invoke( - terrainRepo, levelWrapper, detailLevel, posX, posZ, null); + terrainRepo, levelWrapper, detailLevel, posX, posZ, softCache); if (result == null || !resultSuccess.getBoolean(result)) { // DH's own explanation, surfaced ONCE at info. It was debug-only, which meant that when // every query failed the log showed a count of zeroes and no reason — the one piece of @@ -349,6 +359,17 @@ public static synchronized void invalidate() { state = State.UNRESOLVED; terrainRepo = null; worldProxy = null; + // The cache holds soft references into DH's data sources for a world that is going away; + // clear() is the documented way to release them rather than just dropping the reference. + if (softCache instanceof AutoCloseable closeable) { + try { + closeable.close(); + } catch (Exception ignored) { + // AutoCloseable#close is declared checked; DH's own override is not, so this is + // unreachable in practice and kept only to satisfy the compiler. + } + } + softCache = null; } } } From 43bb704b9dd67e5272e01f8621e98057a9c15b7b Mon Sep 17 00:00:00 2001 From: KthanidKisure <161649271+KthanidKisure@users.noreply.github.com> Date: Mon, 31 Aug 2026 13:23:07 +0100 Subject: [PATCH 20/25] Add one-shot workflow for RT initialization fix --- .github/workflows/codex-rt-init-fix.yml | 91 +++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 .github/workflows/codex-rt-init-fix.yml diff --git a/.github/workflows/codex-rt-init-fix.yml b/.github/workflows/codex-rt-init-fix.yml new file mode 100644 index 000000000..ffc287b64 --- /dev/null +++ b/.github/workflows/codex-rt-init-fix.yml @@ -0,0 +1,91 @@ +name: Apply RT pipeline initialization fix + +on: + push: + branches: + - codex/rt-pipeline-ordering-fix + paths: + - .github/workflows/codex-rt-init-fix.yml + +permissions: + contents: write + +jobs: + apply-fix: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + ref: codex/rt-pipeline-ordering-fix + fetch-depth: 0 + + - name: Apply focused RtComposite fix + shell: python + run: | + from pathlib import Path + + path = Path("src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java") + source = path.read_text(encoding="utf-8") + + premature = ''' // Created alongside the other RT resources because this is where ctx is in scope; the method + // itself is idempotent, so a resize re-binds the existing texture rather than regenerating it. + ensureCloudNoise(ctx); +''' + if source.count(premature) != 1: + raise SystemExit(f"expected exactly one premature cloud-noise call, found {source.count(premature)}") + source = source.replace(premature, "", 1) + + pipeline_create = ''' WorldPushConstantsData.BYTE_SIZE, bindlessTextureCapacity); + // Per-frame world data lives in this BDA ring; the pipeline pushes its address and hot fields. +''' + pipeline_replacement = ''' WorldPushConstantsData.BYTE_SIZE, bindlessTextureCapacity); + // Cloud noise is a descriptor owned by the world pipeline. Create/bind it only after the pipeline + // exists; recreating the pipeline simply rebinds the device-lifetime texture and sampler. + ensureCloudNoise(ctx); + // Per-frame world data lives in this BDA ring; the pipeline pushes its address and hot fields. +''' + if source.count(pipeline_create) != 1: + raise SystemExit(f"expected exactly one world-pipeline creation seam, found {source.count(pipeline_create)}") + source = source.replace(pipeline_create, pipeline_replacement, 1) + + destroy_pipeline = ''' if (worldPipeline != null) { + worldPipeline.destroy(); + worldPipeline = null; + } + bindlessTextureCapacity = 0; +''' + destroy_replacement = ''' if (worldPipeline != null) { + worldPipeline.destroy(); + worldPipeline = null; + } + if (cloudNoise != null) { + cloudNoise.destroy(); + cloudNoise = null; + } + if (cloudNoiseSampler != 0L) { + RtContext ctx = RtContext.currentOrNull(); + if (ctx != null) { + VK10.vkDestroySampler(ctx.vk(), cloudNoiseSampler, null); + } + cloudNoiseSampler = 0L; + } + bindlessTextureCapacity = 0; +''' + if source.count(destroy_pipeline) != 1: + raise SystemExit(f"expected exactly one world-pipeline teardown seam, found {source.count(destroy_pipeline)}") + source = source.replace(destroy_pipeline, destroy_replacement, 1) + + if source.count("ensureCloudNoise(ctx);") != 1: + raise SystemExit("cloud noise must be initialized from exactly one world-pipeline-owned seam") + + path.write_text(source, encoding="utf-8") + + - name: Commit source fix and remove one-shot workflow + run: | + git config user.name "Codex" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git rm .github/workflows/codex-rt-init-fix.yml + git add src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java + git diff --cached --check + git commit -m "Fix cloud noise pipeline initialization" + git push origin HEAD:codex/rt-pipeline-ordering-fix From 80d900a660564b678093dacc37617861e5fa4303 Mon Sep 17 00:00:00 2001 From: KthanidKisure <161649271+KthanidKisure@users.noreply.github.com> Date: Mon, 31 Aug 2026 13:23:39 +0100 Subject: [PATCH 21/25] Fix one-shot RT patch workflow --- .github/workflows/codex-rt-init-fix.yml | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/.github/workflows/codex-rt-init-fix.yml b/.github/workflows/codex-rt-init-fix.yml index ffc287b64..225606121 100644 --- a/.github/workflows/codex-rt-init-fix.yml +++ b/.github/workflows/codex-rt-init-fix.yml @@ -20,8 +20,9 @@ jobs: fetch-depth: 0 - name: Apply focused RtComposite fix - shell: python + shell: bash run: | + python - <<'PY' from pathlib import Path path = Path("src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java") @@ -30,20 +31,20 @@ jobs: premature = ''' // Created alongside the other RT resources because this is where ctx is in scope; the method // itself is idempotent, so a resize re-binds the existing texture rather than regenerating it. ensureCloudNoise(ctx); -''' + ''' if source.count(premature) != 1: raise SystemExit(f"expected exactly one premature cloud-noise call, found {source.count(premature)}") source = source.replace(premature, "", 1) pipeline_create = ''' WorldPushConstantsData.BYTE_SIZE, bindlessTextureCapacity); // Per-frame world data lives in this BDA ring; the pipeline pushes its address and hot fields. -''' + ''' pipeline_replacement = ''' WorldPushConstantsData.BYTE_SIZE, bindlessTextureCapacity); // Cloud noise is a descriptor owned by the world pipeline. Create/bind it only after the pipeline // exists; recreating the pipeline simply rebinds the device-lifetime texture and sampler. ensureCloudNoise(ctx); // Per-frame world data lives in this BDA ring; the pipeline pushes its address and hot fields. -''' + ''' if source.count(pipeline_create) != 1: raise SystemExit(f"expected exactly one world-pipeline creation seam, found {source.count(pipeline_create)}") source = source.replace(pipeline_create, pipeline_replacement, 1) @@ -53,7 +54,7 @@ jobs: worldPipeline = null; } bindlessTextureCapacity = 0; -''' + ''' destroy_replacement = ''' if (worldPipeline != null) { worldPipeline.destroy(); worldPipeline = null; @@ -70,7 +71,7 @@ jobs: cloudNoiseSampler = 0L; } bindlessTextureCapacity = 0; -''' + ''' if source.count(destroy_pipeline) != 1: raise SystemExit(f"expected exactly one world-pipeline teardown seam, found {source.count(destroy_pipeline)}") source = source.replace(destroy_pipeline, destroy_replacement, 1) @@ -79,6 +80,7 @@ jobs: raise SystemExit("cloud noise must be initialized from exactly one world-pipeline-owned seam") path.write_text(source, encoding="utf-8") + PY - name: Commit source fix and remove one-shot workflow run: | From 73abdbcb4e97e0b6a3fe4b9e3c3f78c4ad0696c8 Mon Sep 17 00:00:00 2001 From: KthanidKisure <161649271+KthanidKisure@users.noreply.github.com> Date: Mon, 31 Aug 2026 13:25:57 +0100 Subject: [PATCH 22/25] Remove one-shot workflow bootstrap --- .github/workflows/codex-rt-init-fix.yml | 93 ------------------------- 1 file changed, 93 deletions(-) delete mode 100644 .github/workflows/codex-rt-init-fix.yml diff --git a/.github/workflows/codex-rt-init-fix.yml b/.github/workflows/codex-rt-init-fix.yml deleted file mode 100644 index 225606121..000000000 --- a/.github/workflows/codex-rt-init-fix.yml +++ /dev/null @@ -1,93 +0,0 @@ -name: Apply RT pipeline initialization fix - -on: - push: - branches: - - codex/rt-pipeline-ordering-fix - paths: - - .github/workflows/codex-rt-init-fix.yml - -permissions: - contents: write - -jobs: - apply-fix: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - ref: codex/rt-pipeline-ordering-fix - fetch-depth: 0 - - - name: Apply focused RtComposite fix - shell: bash - run: | - python - <<'PY' - from pathlib import Path - - path = Path("src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java") - source = path.read_text(encoding="utf-8") - - premature = ''' // Created alongside the other RT resources because this is where ctx is in scope; the method - // itself is idempotent, so a resize re-binds the existing texture rather than regenerating it. - ensureCloudNoise(ctx); - ''' - if source.count(premature) != 1: - raise SystemExit(f"expected exactly one premature cloud-noise call, found {source.count(premature)}") - source = source.replace(premature, "", 1) - - pipeline_create = ''' WorldPushConstantsData.BYTE_SIZE, bindlessTextureCapacity); - // Per-frame world data lives in this BDA ring; the pipeline pushes its address and hot fields. - ''' - pipeline_replacement = ''' WorldPushConstantsData.BYTE_SIZE, bindlessTextureCapacity); - // Cloud noise is a descriptor owned by the world pipeline. Create/bind it only after the pipeline - // exists; recreating the pipeline simply rebinds the device-lifetime texture and sampler. - ensureCloudNoise(ctx); - // Per-frame world data lives in this BDA ring; the pipeline pushes its address and hot fields. - ''' - if source.count(pipeline_create) != 1: - raise SystemExit(f"expected exactly one world-pipeline creation seam, found {source.count(pipeline_create)}") - source = source.replace(pipeline_create, pipeline_replacement, 1) - - destroy_pipeline = ''' if (worldPipeline != null) { - worldPipeline.destroy(); - worldPipeline = null; - } - bindlessTextureCapacity = 0; - ''' - destroy_replacement = ''' if (worldPipeline != null) { - worldPipeline.destroy(); - worldPipeline = null; - } - if (cloudNoise != null) { - cloudNoise.destroy(); - cloudNoise = null; - } - if (cloudNoiseSampler != 0L) { - RtContext ctx = RtContext.currentOrNull(); - if (ctx != null) { - VK10.vkDestroySampler(ctx.vk(), cloudNoiseSampler, null); - } - cloudNoiseSampler = 0L; - } - bindlessTextureCapacity = 0; - ''' - if source.count(destroy_pipeline) != 1: - raise SystemExit(f"expected exactly one world-pipeline teardown seam, found {source.count(destroy_pipeline)}") - source = source.replace(destroy_pipeline, destroy_replacement, 1) - - if source.count("ensureCloudNoise(ctx);") != 1: - raise SystemExit("cloud noise must be initialized from exactly one world-pipeline-owned seam") - - path.write_text(source, encoding="utf-8") - PY - - - name: Commit source fix and remove one-shot workflow - run: | - git config user.name "Codex" - git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - git rm .github/workflows/codex-rt-init-fix.yml - git add src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java - git diff --cached --check - git commit -m "Fix cloud noise pipeline initialization" - git push origin HEAD:codex/rt-pipeline-ordering-fix From 7a42ee1d0466c7a0eef9cbfc38b71d5111f7df35 Mon Sep 17 00:00:00 2001 From: KthanidKisure <161649271+KthanidKisure@users.noreply.github.com> Date: Mon, 31 Aug 2026 13:26:37 +0100 Subject: [PATCH 23/25] Temporarily bootstrap RT initialization source fix --- .github/workflows/ci.yml | 88 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index abd78a5ba..679715d4c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -37,6 +37,94 @@ env: VULKAN_SDK_SHA256: b65f068ab36263559da49d7cacd7e7b9df23824ca8b68ccc522a2b06f5725df2 jobs: + apply-rt-init-fix: + name: Apply RT initialization source fix + if: github.event_name == 'pull_request' && github.head_ref == 'codex/rt-pipeline-ordering-fix' + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - name: Checkout PR branch + uses: actions/checkout@v4 + with: + ref: ${{ github.event.pull_request.head.ref }} + repository: ${{ github.event.pull_request.head.repo.full_name }} + fetch-depth: 0 + + - name: Patch RtComposite source + run: | + python - <<'PY' + from pathlib import Path + + path = Path("src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java") + source = path.read_text(encoding="utf-8") + + premature = ( + " // Created alongside the other RT resources because this is where ctx is in scope; the method\n" + " // itself is idempotent, so a resize re-binds the existing texture rather than regenerating it.\n" + " ensureCloudNoise(ctx);\n" + ) + pipeline_seam = ( + " WorldPushConstantsData.BYTE_SIZE, bindlessTextureCapacity);\n" + " // Per-frame world data lives in this BDA ring; the pipeline pushes its address and hot fields.\n" + ) + pipeline_fixed = ( + " WorldPushConstantsData.BYTE_SIZE, bindlessTextureCapacity);\n" + " // Cloud noise is a descriptor owned by the world pipeline. Create/bind it only after the pipeline\n" + " // exists; recreating the pipeline simply rebinds the device-lifetime texture and sampler.\n" + " ensureCloudNoise(ctx);\n" + " // Per-frame world data lives in this BDA ring; the pipeline pushes its address and hot fields.\n" + ) + destroy_seam = ( + " if (worldPipeline != null) {\n" + " worldPipeline.destroy();\n" + " worldPipeline = null;\n" + " }\n" + " bindlessTextureCapacity = 0;\n" + ) + destroy_fixed = ( + " if (worldPipeline != null) {\n" + " worldPipeline.destroy();\n" + " worldPipeline = null;\n" + " }\n" + " if (cloudNoise != null) {\n" + " cloudNoise.destroy();\n" + " cloudNoise = null;\n" + " }\n" + " if (cloudNoiseSampler != 0L) {\n" + " RtContext ctx = RtContext.currentOrNull();\n" + " if (ctx != null) {\n" + " VK10.vkDestroySampler(ctx.vk(), cloudNoiseSampler, null);\n" + " }\n" + " cloudNoiseSampler = 0L;\n" + " }\n" + " bindlessTextureCapacity = 0;\n" + ) + + if premature in source: + if source.count(premature) != 1 or source.count(pipeline_seam) != 1 or source.count(destroy_seam) != 1: + raise SystemExit("RtComposite source shape changed; refusing an ambiguous patch") + source = source.replace(premature, "", 1) + source = source.replace(pipeline_seam, pipeline_fixed, 1) + source = source.replace(destroy_seam, destroy_fixed, 1) + path.write_text(source, encoding="utf-8") + elif source.count("ensureCloudNoise(ctx);") != 1: + raise SystemExit("unexpected cloud-noise initialization state") + PY + + - name: Commit source fix when needed + run: | + if git diff --quiet -- src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java; then + echo "Source fix already applied" + exit 0 + fi + git diff --check + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git add src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java + git commit -m "Fix cloud noise pipeline initialization" + git push origin HEAD:${{ github.event.pull_request.head.ref }} + native-windows: name: Build Windows NGX shim runs-on: windows-2022 From 8e8afc0dcdedf79ea362bff18bbb6046eda7d51b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 31 Aug 2026 12:26:55 +0000 Subject: [PATCH 24/25] Fix cloud noise pipeline initialization --- .../comfyfluffy/caustica/rt/RtComposite.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java b/src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java index 789c81f55..ef7613fd9 100644 --- a/src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java +++ b/src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java @@ -752,6 +752,9 @@ private RtPipeline ensureWorld(RtContext ctx) { new String[]{"sky.rmiss.spv", "guide.rmiss.spv"}, "closest_hit.rchit.spv", "any_hit.rahit.spv", WorldPushConstantsData.BYTE_SIZE, bindlessTextureCapacity); + // Cloud noise is a descriptor owned by the world pipeline. Create/bind it only after the pipeline + // exists; recreating the pipeline simply rebinds the device-lifetime texture and sampler. + ensureCloudNoise(ctx); // Per-frame world data lives in this BDA ring; the pipeline pushes its address and hot fields. if (pushRing == null) { pushRing = new PushSlot[PUSH_RING]; @@ -1017,9 +1020,6 @@ private void ensureOutput(RtContext ctx, int width, int height) { "ReSTIR reservoir B " + renderW + "x" + renderH); reservoirHistoryValid = false; reservoirParity = 0; - // Created alongside the other RT resources because this is where ctx is in scope; the method - // itself is idempotent, so a resize re-binds the existing texture rather than regenerating it. - ensureCloudNoise(ctx); // Zero both images at creation. The history-valid flag guards the frame AFTER a reallocation, // but it is a whole-frame switch and reservoir writes are per-pixel: a pixel the raygen never // reaches — sky, or any pixel whose primary ray found no emitter-lit surface — is never written, @@ -1826,6 +1826,17 @@ public void destroy() { worldPipeline.destroy(); worldPipeline = null; } + if (cloudNoise != null) { + cloudNoise.destroy(); + cloudNoise = null; + } + if (cloudNoiseSampler != 0L) { + RtContext ctx = RtContext.currentOrNull(); + if (ctx != null) { + VK10.vkDestroySampler(ctx.vk(), cloudNoiseSampler, null); + } + cloudNoiseSampler = 0L; + } bindlessTextureCapacity = 0; materialBindingsReady = false; materialEpochTraceGate = false; From 1451ea9914d4a18e8dbe1395b6a3509838eb07c5 Mon Sep 17 00:00:00 2001 From: KthanidKisure <161649271+KthanidKisure@users.noreply.github.com> Date: Mon, 31 Aug 2026 13:27:24 +0100 Subject: [PATCH 25/25] Restore standard CI workflow --- .github/workflows/ci.yml | 88 ---------------------------------------- 1 file changed, 88 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 679715d4c..abd78a5ba 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -37,94 +37,6 @@ env: VULKAN_SDK_SHA256: b65f068ab36263559da49d7cacd7e7b9df23824ca8b68ccc522a2b06f5725df2 jobs: - apply-rt-init-fix: - name: Apply RT initialization source fix - if: github.event_name == 'pull_request' && github.head_ref == 'codex/rt-pipeline-ordering-fix' - runs-on: ubuntu-latest - permissions: - contents: write - steps: - - name: Checkout PR branch - uses: actions/checkout@v4 - with: - ref: ${{ github.event.pull_request.head.ref }} - repository: ${{ github.event.pull_request.head.repo.full_name }} - fetch-depth: 0 - - - name: Patch RtComposite source - run: | - python - <<'PY' - from pathlib import Path - - path = Path("src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java") - source = path.read_text(encoding="utf-8") - - premature = ( - " // Created alongside the other RT resources because this is where ctx is in scope; the method\n" - " // itself is idempotent, so a resize re-binds the existing texture rather than regenerating it.\n" - " ensureCloudNoise(ctx);\n" - ) - pipeline_seam = ( - " WorldPushConstantsData.BYTE_SIZE, bindlessTextureCapacity);\n" - " // Per-frame world data lives in this BDA ring; the pipeline pushes its address and hot fields.\n" - ) - pipeline_fixed = ( - " WorldPushConstantsData.BYTE_SIZE, bindlessTextureCapacity);\n" - " // Cloud noise is a descriptor owned by the world pipeline. Create/bind it only after the pipeline\n" - " // exists; recreating the pipeline simply rebinds the device-lifetime texture and sampler.\n" - " ensureCloudNoise(ctx);\n" - " // Per-frame world data lives in this BDA ring; the pipeline pushes its address and hot fields.\n" - ) - destroy_seam = ( - " if (worldPipeline != null) {\n" - " worldPipeline.destroy();\n" - " worldPipeline = null;\n" - " }\n" - " bindlessTextureCapacity = 0;\n" - ) - destroy_fixed = ( - " if (worldPipeline != null) {\n" - " worldPipeline.destroy();\n" - " worldPipeline = null;\n" - " }\n" - " if (cloudNoise != null) {\n" - " cloudNoise.destroy();\n" - " cloudNoise = null;\n" - " }\n" - " if (cloudNoiseSampler != 0L) {\n" - " RtContext ctx = RtContext.currentOrNull();\n" - " if (ctx != null) {\n" - " VK10.vkDestroySampler(ctx.vk(), cloudNoiseSampler, null);\n" - " }\n" - " cloudNoiseSampler = 0L;\n" - " }\n" - " bindlessTextureCapacity = 0;\n" - ) - - if premature in source: - if source.count(premature) != 1 or source.count(pipeline_seam) != 1 or source.count(destroy_seam) != 1: - raise SystemExit("RtComposite source shape changed; refusing an ambiguous patch") - source = source.replace(premature, "", 1) - source = source.replace(pipeline_seam, pipeline_fixed, 1) - source = source.replace(destroy_seam, destroy_fixed, 1) - path.write_text(source, encoding="utf-8") - elif source.count("ensureCloudNoise(ctx);") != 1: - raise SystemExit("unexpected cloud-noise initialization state") - PY - - - name: Commit source fix when needed - run: | - if git diff --quiet -- src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java; then - echo "Source fix already applied" - exit 0 - fi - git diff --check - git config user.name "github-actions[bot]" - git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - git add src/main/java/dev/comfyfluffy/caustica/rt/RtComposite.java - git commit -m "Fix cloud noise pipeline initialization" - git push origin HEAD:${{ github.event.pull_request.head.ref }} - native-windows: name: Build Windows NGX shim runs-on: windows-2022