LayerForge Manifold

nn.Linear → 3D Weight Surface → Perspective-Dependent Computation · CCT / ODE-CCT / XYFLOW

Topology:Sphere
Texels:48
Active:24/48
Avg Facing:0.65
View:θ=0.0° φ=0.0°
Perturb:stable
Δoutput:0.000

3D Weight Manifold SURFACE

W[j][i] → texels on manifold · perspective projection modulates facing factor f(j,i,θ,φ)
Drag to rotate · Auto-rotates when released
0.008
0.10

Lens Projection — What the GPU Samples FRUSTUM

GPU textureFetch proj(sphereUV, viewDir) → foreshortened weight field

Head-on texels = full precision. Rim texels = mipmap degradation. Behind = discarded.

Active Weight Topology COLLAPSE

Flat weight matrix · brightness = facing factor (visible subset = collapsed theory)

Output Comparison — View-Dependent Computation ENTROPY

y_flat (full compute) vs y_view (perspective, energy-saving) vs y_ensemble (multi-view recovery)

CCT Perspective Trajectory — Output as Function of Viewing Angle ODE FLOW

θ ∈ [0, 4π) · y_view(θ) traces a periodic orbit in output phase space · periodicity → cycle collapse

GLSL Implementation — Perspective-Dependent Weight Fetch SHADER

// Fragment shader: weight lookups modulated by view angle uniform sampler2D u_weightSphere; // W mapped to spherical UV uniform sampler2D u_inputTex; // x mapped to equatorial UV uniform mat3 u_viewRot; // perspective rotation matrix uniform float u_facingCutoff; // collapse threshold void main() { // Lat/lon for this texel → 3D normal on sphere vec3 nrm = texelFetch(u_weightSphere, gl_FragCoord.xy, 0).rgb; // Transform by view rotation using hardware matrix multiply vec3 rotated = u_viewRot * nrm; // GPU foreshortening = automatic level-of-detail selection float facing = max(0.0, -rotated.z); // Collapse decision: skip computation for back hemisphere if (facing < u_facingCutoff) discard; // Sample the weight with perspective-dependent mipmap level float weight = texture(u_weightSphere, v_uv, clamp(1.0-facing, 0.0, 3.0)).r; // Modulate by foreshortening → perspective-dependent contribution float contribution = weight * input_val * facing; // Hardware dFdx computes the boundary flux for free float flux = dFdx(contribution); outColor = vec4(contribution, flux, facing, 1.0); }