#vulkan #test #projects #sdf

bin+lib sebbbi/rust_test

Rust & Vulkan test projects

1 unstable release

0.1.0 Oct 2, 2020

#560 in Graphics APIs

369 stars & 15 watchers

310KB
6.5K SLoC

Rust 5.5K SLoC // 0.0% comments GLSL 1K SLoC // 0.0% comments Batch 26 SLoC Shell 19 SLoC

Contains (DOS exe, 56KB) tools/SDFGen.exe

Rust & Vulkan test projects

Contains test projects and tools for Rust & Vulkan.

  • rendersdf
  • sdf2tilemap
  • sdftool
  • vbufferbench

rendersdf

Screenshot

SDF render test project (rendersdf) renders 1 million cubes, each containing a 950 MB (uncompressed) distance field volume. It uses an optimized cube renderer rendering only front faces of each cube.

An improved version is coming using an sparse octree storing a hierarchy of distance field volume bricks, each rasterized as a cube. This will both reduce the SDF volume memory consumption by 98% and make the runtime faster, as most rays missing the object will not be cast at at all, and the remaining rays will start very close to the surface.

The SDF renderer uses a GPU-driven culling solution similar to the one we presented at SIGGRAPH 2015 (Media Molecule Dreams and UE5 Nanite also use similar culling): https://advances.realtimerendering.com/s2015/aaltonenhaar_siggraph2015_combined_final_footer_220dpi.pdf

Various optimization techniques will be tested on top of this prototype.

Todo:

  • Conservative depth output
  • Command line tool for SDF processing (sdf.rs functionality)
  • Sparse SDF test project
  • More than one SDF volume (easy to implement for sparse SDF)

vbufferbench

A simple benchmark tool for comparing the performance of different V-buffer triangle-id rendering techniques.

Install instructions

How to use the prototypes

  • Start (cmd): cargo run --release --bin TEST_NAME
  • WASD = fly around
  • Drag mouse left button = rotate camera
  • Mouse wheel = jump backward / forward

How to import a new SDF (from .obj file)

License

This repository contents are released under the MIT license. See LICENSE.md for full text.

Dependencies

~28MB
~378K SLoC