Show spectrum field as direct SDF tubes
This commit is contained in:
parent
aba61b0da4
commit
c5506e2fa7
4 changed files with 12 additions and 4 deletions
BIN
artifacts/runtime/mimir-direct-sdf-tube-spectrum.png
Normal file
BIN
artifacts/runtime/mimir-direct-sdf-tube-spectrum.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 60 KiB |
|
|
@ -7,6 +7,7 @@ surface id=curvature op=d2Fdx2 inputs=amplitude value=0,0,0,0
|
|||
surface id=emission op=mix inputs=amplitude,derivative,curvature value=1.0,0.72,0.22,1.0
|
||||
surface id=coverage op=sdf.tube inputs=amplitude,derivative,curvature value=0.74,0.20,0.0,0.0
|
||||
|
||||
splinefield id=asioSpectrumWaterfall texture=spectrumHistory frequencyAxis=x firstColumn=0 columns=160 columnStride=1 rollingModulo=160 subdivisions=4 maxProbes=131072 density=1.0 minimumContribution=0.004 origin=-0.82,0.40,-0.18 axisStep=0.016,0.0,0.0 columnStep=0.0,-0.0055,0.0060 amplitudeScale=0.34 radius=0.052 alpha=0.94 zeroThreshold=0.68 feather=0.18 tangent=1.0 curvature=0.68 normal=0.34 derivative=0.88 emission=1.0,0.72,0.22,1.0 seed=2971668797
|
||||
splinefield id=asioSpectrumWaterfall texture=spectrumHistory frequencyAxis=x firstColumn=0 columns=160 columnStride=1 rollingModulo=160 subdivisions=4 maxProbes=131072 density=1.0 minimumContribution=0.004 origin=-0.82,0.40,-0.18 axisStep=0.016,0.0,0.0 columnStep=0.0,-0.0055,0.0060 amplitudeScale=0.34 radius=0.064 alpha=0.98 zeroThreshold=0.68 feather=0.18 tangent=1.0 curvature=0.68 normal=0.34 derivative=0.88 emission=1.0,0.72,0.22,4.0 seed=2971668797
|
||||
|
||||
reservoir splats=131072 updates=131072 candidates=2 seed=270943260
|
||||
direct
|
||||
|
|
|
|||
|
|
@ -32,8 +32,9 @@ surface id=derivative op=dFdx inputs=amplitude value=0,0,0,0
|
|||
surface id=curvature op=d2Fdx2 inputs=amplitude value=0,0,0,0
|
||||
surface id=emission op=mix inputs=amplitude,derivative,curvature value=1.0,0.72,0.22,1.0
|
||||
surface id=coverage op=sdf.tube inputs=amplitude,derivative,curvature value=0.74,0.20,0.0,0.0
|
||||
splinefield id=asioSpectrumWaterfall texture=spectrumHistory frequencyAxis=x firstColumn=0 columns=160 columnStride=1 rollingModulo=160 subdivisions=4 maxProbes=131072 density=1.0 minimumContribution=0.004 origin=-0.82,0.40,-0.18 axisStep=0.016,0.0,0.0 columnStep=0.0,-0.0055,0.0060 amplitudeScale=0.34 radius=0.052 alpha=0.94 zeroThreshold=0.68 feather=0.18 tangent=1.0 curvature=0.68 normal=0.34 derivative=0.88 emission=1.0,0.72,0.22,1.0 seed=2971668797
|
||||
splinefield id=asioSpectrumWaterfall texture=spectrumHistory frequencyAxis=x firstColumn=0 columns=160 columnStride=1 rollingModulo=160 subdivisions=4 maxProbes=131072 density=1.0 minimumContribution=0.004 origin=-0.82,0.40,-0.18 axisStep=0.016,0.0,0.0 columnStep=0.0,-0.0055,0.0060 amplitudeScale=0.34 radius=0.064 alpha=0.98 zeroThreshold=0.68 feather=0.18 tangent=1.0 curvature=0.68 normal=0.34 derivative=0.88 emission=1.0,0.72,0.22,4.0 seed=2971668797
|
||||
reservoir splats=131072 updates=131072 candidates=2 seed=270943260
|
||||
direct
|
||||
""";
|
||||
private readonly MimirSynchronizationHub synchronization;
|
||||
private readonly MimirAudioSpectrumAnalyzer spectrumAnalyzer;
|
||||
|
|
@ -132,10 +133,15 @@ reservoir splats=131072 updates=131072 candidates=2 seed=270943260
|
|||
var channelCount = Math.Max(1, lastAudioSpectra.Count);
|
||||
var cameraZ = channelCount * SpectrumChannelSeparation;
|
||||
var bufferFieldFrame = BuildSpectrumBufferFieldFrame();
|
||||
var cameraPosition = bufferFieldFrame.HasInput
|
||||
var directField = bufferFieldFrame.HasInput && !bufferFieldFrame.UseReservoirLowering;
|
||||
var cameraPosition = directField
|
||||
? new Vector3(0.0f, -1.85f, 0.68f)
|
||||
: bufferFieldFrame.HasInput
|
||||
? new Vector3(0.0f, -13.5f, 10.5f)
|
||||
: new Vector3(0.0f, 0.0f, cameraZ);
|
||||
var cameraTarget = bufferFieldFrame.HasInput
|
||||
var cameraTarget = directField
|
||||
? new Vector3(0.0f, -0.04f, 0.08f)
|
||||
: bufferFieldFrame.HasInput
|
||||
? new Vector3(0.0f, 0.0f, 12.0f)
|
||||
: new Vector3(0.0f, 0.0f, cameraZ + 12.0f);
|
||||
return new AquariumFrame(
|
||||
|
|
|
|||
|
|
@ -118,3 +118,4 @@
|
|||
{"ts": "2026-05-25T13:47:32+01:00", "type": "implementation", "status": "ok", "note": "Fensalir spline rendering now follows the XRLineRenderer-style shape: AquariumSpline3D carries Catmull-Rom subdivision plus radius/emission/alpha/zero-threshold/feather style, D3D12 expands sampled spline segments into camera-facing ribbon geometry, and D3D12SplinePS shades coverage from an SDF-like width coordinate. Mimir renders ASIO rolling mel windows through this primitive; capture artifacts/runtime/mimir-catmull-sdf-spectrum-splines.png verifies the canary-packet-trill runtime path."}
|
||||
{"ts": "2026-05-25T13:56:03+01:00", "type": "decision", "status": "ok", "note": "Fensalir spectrum visualization authority split: Mimir now emits AquariumBufferFieldFrame spline tube fields as the real buffer-domain contract, with tangent/curvature/normal/derivative appearance and probe policy for future compute SDF splat reservoir lowering. AquariumSplineFrame remains only the immediate Catmull-Rom preview witness until compute lowering owns rendering."}
|
||||
{"ts": "2026-05-25T15:55:00+01:00", "type": "decision", "status": "ok", "note": "Fensalir/Mimir spectrum visualization moved from C# spline authority to DSL-authored texture field authority. config/mimir-spectrum-field.aquafield binds a rolling spectrum texture, declares surface graph nodes, and asks for texture-dimension splinefield lowering. Fensalir now compiles Aquarium field DSL text, uploads texture samples/program packets, and ProgramMode=3 in D3D12FractalReservoirCompute emits stochastic reservoir splats from the texture field. Current canary is mechanically through the reservoir at 131072 splats with low CPU record time, but visual framing/material is still not the final beautiful spectrum surface."}
|
||||
{"ts": "2026-05-25T17:43:25+01:00", "type": "decision", "status": "ok", "note": "Fensalir direct splinefield correction: texture-derived tube trails are direct SDF envelope surfaces, not point-splat fractal dust. AquariumFieldScriptCompiler supports direct; D3D12Renderer now derives AquariumSplineFrame tube-envelope trails from BufferFieldFrame texture spline programs, the spline pipeline declares triangle topology, and D3D12SplinePS writes color, metadata/control, and reservoirGuide outputs. Mimir capture artifacts/runtime/mimir-direct-sdf-tube-spectrum.png proves the DSL-authored ASIO spectrum appears through the direct SDF tube path with ~0.64 ms record CPU in the canary."}
|
||||
|
|
|
|||
Loading…
Reference in a new issue