GithubHelp home page GithubHelp logo

simplerr / rust-renderer Goto Github PK

View Code? Open in Web Editor NEW
14.0 2.0 1.0 103.63 MB

A minimal renderer to play with Rust, Vulkan, Render graphs, Raytracing and ReSTIR

License: Apache License 2.0

GLSL 25.32% Rust 74.68%
rust vulkan ash glsl pbr rtx raytracing

rust-renderer's People

Contributors

marc0246 avatar simplerr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

lencripe

rust-renderer's Issues

v0.0.4-alpha

Features:

  • Debug geometry visualization
  • Shadertoy-like setup
  • Publish as crate
  • Proper settings
  • Increase speed with SHIFT
  • Puffin multiframe

Bugs:

  • Sky sphere hardcoded as the first model in Renderer

Refactorings:

  • Split low level graphics and render graph
  • Add utility namespace
  • Improve on long lines to access for example image desc properties
  • Proper staging buffer instead of how the pass.uniforms are handled

Direct illumination using ReSTIR

  • Basic ReSTIR algorithm usage in the path tracer to handle many analytical point lights
  • Motion vectors
  • Proper handling of M
  • Area lights
  • Denoiser
  • Separate render graph for ReSTIR

Render graph

  • Create the Pipeline in PassBuilder after all the attachments are known
  • Improve handling of "presentation" pass
  • Configurable texture formats
  • Different color blend states per texture
  • Share camera uniform buffer between all render passes
  • Add debug_utils and name every pass & resource
  • Shader hot reloading
  • Every descriptor set should not have its own pool
  • Storage buffer input
  • Uniform buffer inputs
  • Viewport width & height in View.glsl

New todos:

  • Graph::create_texture shall use a Hash to include extent and format of the texture
  • Destroy DescriptorSets that are created every frame

Support for Gaussian splats / .ply files ?

Hey @simplerr , really love your on the rust-renderer.

It's one of the main inspiration behind a simpler ( Vulkan to Webrtc ) renderer I've been working on github.com/cs50victor/kitt2

I was wondering if there's any plan to add support for Gaussian splats (.ply files), if so how could I help contribute?

UB revolving around `std::slice::from_raw_parts`

Hi! I was strolling through looking for inspiration, and you have a very nice project going on!

While doing said strolling, I noticed a couple uses of std::slice::from_raw_parts that convert a &[T] where T: Copy to a &[u8]. Referencing the safety docs of from_raw_parts: point 1, 3 and 4 are covered because the source is a reference and you're converting to bytes, but point 2 is not covered. T might have padding, in which case not all bytes will be properly initialized, leading to UB.

On an unrelated note: I also noticed some uses of std::slice::from_raw_parts to construct a one-element slice. I think you're looking for std::slice::from_ref, which does that without needing unsafe.

0.0.1 plan

  • initial vulkan base abstraction
  • shader compilation
  • shader reflection
  • loading images
  • render textured 3d cube
  • depth buffering
  • camera movement
  • scene description
  • gltf loading
  • pbr rendering
  • egui integration

v0.0.3-alpha

Features:

  • Raytracing passes in the frame graph
  • Raytraced shadows and reflections in hybrid rasterization
  • Multiple frames in flight
  • Rebuilding of top level acceleration structure
  • Frustum culling
  • Debug geometry visualization
  • Support fully disabling passes
  • Marching cubes demo
  • Shadertoy-like setup

Bugs:

  • Sky sphere hardcoded as the first model in Renderer

Refactorings:

  • Split low level graphics and render graph
  • Add utility namespace
  • Improve on long lines to access for example image desc properties
  • Proper staging buffer instead of how the pass.uniforms are handled

0.0.2

Features:

  • Atmosphere
  • Shadow mapping
  • Ambient occlusion
  • FXAA
  • Add render settings and control through egui - 50%
  • Capture atmosphere to cubemap
  • IBL shading
  • Render graph needs to be rebuilt per frame
  • Compute shader support
  • Puffin profiling
  • GPU timestamps profiling

Bugs:

  • All passes that uses the same shaders triggers recompilation

Refactorings:

  • Improve crate::PipelineDesc, no arguments for vertex attribute and depth attachment shall be needed

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.