Skip to content

PoC: Woxel (cylindrical voxel) world; replace RenderScene #5

@hackf5

Description

@hackf5

Goal
Create a simple proof-of-concept “woxel” (wedge voxel) world and remove the current toy RenderScene. Represent the world in cylindrical coordinates (theta, r, z) and transform to Cartesian in the vertex shader (wertex shader woxel transform) for rendering.

Scope

  • Define a minimal woxel coordinate system:
    • Discrete theta sectors (wrap-around), small radial band (1–2 layers), and vertical slices.
    • Basic chunking structure (theta × z × r) with a tiny active window around the camera/player.
  • Generate a small static woxel band (e.g., a repeating pattern of ledges/blocks) sufficient to see curvature and movement.
  • Mesh path (simple):
    • Build CPU-side vertex/index data in woxel space; keep attributes compatible with existing pipeline.
    • Vertex shader converts (theta, r, z) → (x, y, z); pass radius, sector angle, and origin via uniforms/push constants.
  • Engine integration:
    • Remove RenderScene and introduce a WoxelScene that owns chunk(s) and drives upload to GraphicsBuffers.
    • Keep existing swapchain/graphics queue/semaphore model intact.
  • Basic culling: ignore chunks on the far side of the cylinder (simple angle test); full frustum cull optional.

Non-goals (for this ticket)

  • Complex gameplay, physics, LOD, streaming, or compute-based meshing.
  • Texture atlas work; a flat color/material per woxel face is fine for the PoC.

Acceptance Criteria

  • App runs and renders a narrow cylindrical band built from woxels with visible curvature.
  • Vertex shader performs the woxel-to-Cartesian transform; parameters are configurable (radius, sector count).
  • RenderScene removed; WoxelScene integrated with the current engine bootstrap.
  • No Vulkan validation errors; frame time stable on MSYS2 UCRT debug build.

Notes

  • “Woxel” = wedge voxel aligned to cylinder; future work can expand radial layers and chunk streaming.
  • Start small (e.g., ~64 theta sectors × modest vertical extent) to validate shape and flow.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions