渲染管线2026-04-10 · Paperkite R&D Lab

Luminora 2.5D: 正交投影下的双层体素光照计算与深度视差架构

ABSTRACT // 摘要

传统 2D 沙盒游戏在表现空间进深时往往受限于平面贴图遮挡,难以提供立体的体素可破坏体验;而在全 3D 体素引擎中,复杂视锥剔除与内存膨胀又对低功耗终端带来严峻挑战。本文系统阐述 Luminora 引擎采用的前景实体层 (Z=0.0) 与背景透视墙层 (Z=-0.75) 双层分治渲染管线,结合 27 方位邻接遮挡计算与动态阳光散射模型,在维持 60 FPS 的同时实现高纵深立体视觉。

#WebGL#Dual-Layer Voxel#Raymarching#Ambient Occlusion#C++17
对应在轨工程实验舱:LUMINORA

1. 双层坐标系与深度视差数学模型

我们将体素空间离散为两个并行拓扑切片:活动前景实体层 \(V_f(x, y)\) 承载物理刚体碰撞检测,背景墙体层 \(V_b(x, y)\) 承载视觉封闭与环境微光衰减。摄像机在屏幕坐标 \((x_c, y_c)\) 发生位移时,后景墙面坐标通过视差因子 \(\lambda = 0.75\) 进行动态缩放偏置:

P_b(x, y) = P_c + \lambda \cdot (P_w - P_c) + \begin{bmatrix} 0 \\ -0.75 \cdot \tan(\theta_{\text{cam}}) \end{bmatrix}

2. 27 方位邻接倒角着色器实现

为消除锯齿并呈现温润的高科技玻璃与矿物倒角,着色器实时采样当前体素周围 26 个邻近格点状态,生成三维法线向量 \(\mathbf{N}\),并参与高光项计算:

voxel_bevel.frag
// Luminora 27-Neighborhood Normal Reconstruction
vec3 computeBevelNormal(ivec2 coord, sampler2D voxelMap) {
    float left   = texelFetch(voxelMap, coord + ivec2(-1,  0), 0).r;
    float right  = texelFetch(voxelMap, coord + ivec2( 1,  0), 0).r;
    float up     = texelFetch(voxelMap, coord + ivec2( 0,  1), 0).r;
    float down   = texelFetch(voxelMap, coord + ivec2( 0, -1), 0).r;
    
    // Diagonal corner sampling for rounded chamfer curvature
    float c_lu   = texelFetch(voxelMap, coord + ivec2(-1,  1), 0).r;
    float c_ru   = texelFetch(voxelMap, coord + ivec2( 1,  1), 0).r;
    float c_ld   = texelFetch(voxelMap, coord + ivec2(-1, -1), 0).r;
    float c_rd   = texelFetch(voxelMap, coord + ivec2( 1, -1), 0).r;

    float dx = (right - left) * 0.7 + (c_ru + c_rd - c_lu - c_ld) * 0.15;
    float dy = (up - down) * 0.7 + (c_lu + c_ru - c_ld - c_rd) * 0.15;
    
    return normalize(vec3(-dx, -dy, 1.25));
}

3. 气象粒子与动态天空漫反射

在夜间流星雨与霓虹雨模式下,雨滴与流星携带局部点光源。通过在帧缓冲区建立低分辨率下采样光照图,利用 9-tap 双边高斯模糊,在极低算力开销下完成全局光影漫射与背景墙反射。

工程研讨与留言区

0
支持纯文本与 Markdown 代码块
// NO TRANSMISSIONS · 暂无评论信标

拒绝伪造虚假数据。登录 GitHub 发送第一条真实的工程探讨或反馈信标。

WARP VECTOR ENGAGED
>> JUMPING TO:
COMPUTING TRAJECTORY PACKETS