Code Monkey home page Code Monkey logo

bredauniversitygames / dxx-raytracer Goto Github PK

View Code? Open in Web Editor NEW
213.0 9.0 10.0 99.14 MB

DXX Raytracer is a fork of the DXX Retro project for Windows. DXX Raytracer uses modern raytracing techniques to update the graphics of the beloved retro game known as Descent.

License: Other

CMake 0.21% C 68.36% C++ 28.65% HLSL 0.81% Batchfile 0.02% GDB 0.01% Assembly 0.78% Python 0.02% Shell 0.05% Perl 0.05% Objective-C 0.89% HTML 0.03% M4 0.04% Makefile 0.02% Logos 0.02% Rez 0.03%

dxx-raytracer's Introduction

scrn0003

DXX Raytracer

DXX Raytracer is a fork of the DXX Retro project for Windows. DXX Raytracer uses modern raytracing techniques to update the graphics of the beloved retro game known as Descent.

Installation

Download dxx_raytracer.zip here.

Extract the zip file to a location of your choosing, and just run descent1.exe to play! This build of the game uses the shareware assets. If you have bought the original version of Descent 1995, you can replace the descent.pig and descent.hog files with your versions to play the whole game.

IMPORTANT: Versions older than 1.1.0 will crash on NVIDIA graphics cards with drivers newer than November 2023, which has been fixed in the 1.1.0 release.

Features

  • Physically-based rendering
  • Soft shadows
  • Pathtraced global illumination
  • Bloom
  • Temporal anti-aliasing
  • Motion blur
  • Post-processing (Vignette, tonemap, etc.)

Community discord

You can join the community discord to make suggestions, report bugs, or just to hang around: https://discord.gg/vaEH5ryjvc

Instructions

  • SHIFT + ALT + F1: Open debug menus, more on those below
  • SHIFT + ALT + F2: Toggle depth testing for debug lines
  • SHIFT + ALT + F: Toggle free camera option
  • F1: Menu with important keybindings from the game
  • ALT + F2: Save your game
  • ALT + F3: Load a save game

Debug Menus

  • Render Settings: All kinds of graphics settings and debug utility for rendering
  • GPU Profiler: A profiling tool to see how much time individual render passes took on the GPU
  • Material Editor: Adjust material properties from any level
  • Polymodel Viewer: Allows you to view a polymodel in the current scene.
  • Dynamic Lights: Allows for tweaking of dynamic lights, like weapons, explosions, and muzzle flashes.
  • Light Explorer: Allows for tweaking of individual lights, and adds ability to debug view lights in the level.

Texture compression - generating DDS textures

To create DDS textures: Download NVIDIA's https://developer.nvidia.com/gpu-accelerated-texture-compression to compress the textures. We have prepared a script for you to convert a batch of textures to the correct format and settings. You can run the python script in a command line python PNGToDDS.py <path> with a path to a directory that contain the PNGs to generate an nvtt file. That file can then be executed with nvtt_export --batch "DXX_Raytracer_Convert_PNG_To_DDS.nvtt". That will generate DDS files for all PNG files in that directory specified in the python script that follow our naming conventions (filename_basecolor.png, filename_normal.png, filename_metallic.png, filename_roughness.png, and filename_emissive.png) and use the correct settings for each of these types. If you do not decide to use our python script, make sure that you generate DDS files with mips already in them, and emissive textures should be pre-multiplied by their alpha.

Team

dxx-raytracer's People

Contributors

contingencyy avatar samboots avatar lehm2000 avatar wesselfr avatar danielc-playdead avatar thesandvichmaker avatar klmcdorm avatar jstanley0 avatar reemhi2122 avatar

Stargazers

Julio avatar  avatar Jorgeeerrl avatar Michael H. avatar  avatar João Marques avatar stella avatar  avatar  avatar Efreak avatar Hongming Zhu avatar Ryan Foote avatar Greg Wedow avatar Pablo Sichert avatar Felix Wittmann avatar EIBON.labs avatar pyunramura avatar Alexander Vander Woude avatar Erki Esken avatar David Ng avatar Bruno Antunes avatar Michael Heck avatar Jan Rychter avatar matthiasg avatar  avatar Markos Fragkakis avatar Torsten Klein avatar Vadim Troshchinskiy avatar Robin Lacey avatar Mtv Europe avatar Robert Dionne avatar Genius_um avatar Chii avatar  avatar Rolando Flores avatar  avatar Jon Bardin avatar  avatar  avatar Sam Chapin avatar  avatar  avatar Tristan Penman avatar Dylan Fitzgerald avatar  avatar  avatar  avatar guregu avatar Kristofer Palmvik avatar  avatar  avatar  avatar Joey avatar  avatar Wesker avatar  avatar  avatar  avatar  avatar Kai avatar  avatar Carelinus avatar Rob van der Linde avatar  avatar Mikkel Gjoel avatar  avatar twittman avatar Benjamin Kleiner avatar  avatar  avatar Neeraj Kanhere avatar Maxondeveloper avatar Alberto Herrera Alanis avatar rfht avatar Jared Lumpe avatar Petro Mozil avatar  avatar 0mega avatar Frazer Rose avatar ahpho avatar Luca Quartesan avatar  avatar  avatar  avatar Mateusz Brdoń avatar user avatar Richard Davison avatar Julien Delezenne avatar Patrick Steger avatar JRudebaugh avatar ✔ hoaxlayer avatar Rob Pilkington avatar  avatar Agustin Arce Martinez avatar  avatar Yanko avatar tsukasa avatar DSN avatar  avatar  avatar

Watchers

Benjamin Kleiner avatar Bert Heesakkers avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dxx-raytracer's Issues

DXX-Raytracer 1.1.0 Checklist

  • NVIDIA crash fix on latest drivers (~December 2023)
  • DXR Inline Raytracing
  • AMD FSR 2.2 integration & quality modes
  • Increased 200 FPS hard lock in player config to 999 FPS
  • Tangents for texture overlays fix (community)
  • Level geometry sometimes wrongly rotated fix (community)
  • Texture compression with DDS files (adapt community implementation)
  • Test DDS texture compression (especially super transparency, emissive, overlays)
  • Overhaul options menu to be clearer to use
  • Change back buffer count from 3 to 2 to reduce input lag a little bit
  • Test AMD FSR with low FPS for ghosting
  • Add output & render resolution to render debug menu
  • Add FPS and frame time to render debug menu
  • Check all materials for proper FSR2 reactive mask flags
  • Test debug, release, and ship builds (both with DispatchRays and Inline)
  • Prepare post (mention that without upscaling TAA is the better option)
  • Add guidelines for pull requests (reference images, testing, etc.)
  • Release 1.1.0
  • Post post on Discord, but probably also Reddit and YouTube since the NVIDIA issue is very consistent on all cards with latest drivers

Fix crash for loading into a level

The program crashes with DEVICE LOST (GPU device hung) inside the indirect_lighting.hlsl shader. For some reason the tracing of rays inside that shader broke, which is very odd because the shader table for the previous two shaders were valid. Will investigate further and hopefully find a fix.

The Mac OS Version/Files with high-res Textures(640x480) not working correct.

I have no sound/music and got artefacts too with the "improved" Descent Version.
Some years ago, I was able to get the Mac Version (.hog and .pig files) because the "crosshair" and the cockpit looks way better as on DOS (320x200).
The normal "shareware" stuff runs well so I think your DXX-Raytracer might not be "compatible" with the MAC files?
Maybe you can fix that.

scrn0000

AMD FSR 2.2

Already works, just pushed a commit on branch dxr-inline-raytracing.
TODO:

  • Integrate AMD FSR 2.2 into the DX12 render backend
  • Transition render targets to the correct states
  • Have upscaling and anti-aliasing options in both the raytracing and debug menus. TAA and FSR 2.2 exclude each other
  • Separate render and output resolutions, match the upscaling factors with the recommended factors from AMD
  • Add sharpen to the FSR dispatch (skipped, we have our own)
  • Add recommended mipmap bias
  • Add the correct frame time to the FSR dispatch
  • Generate reactive mask Fill reactive mask for texture animations, and add a reactive mask scale
  • Set FSR reactive mask flag for all texture animation materials

DXR Inline Raytracing

We are already using DispatchRays as if it was DXR's Inline Raytracing, so we might as well switch to it, we just never had the time to rewrite our shaders for this. I think its worth doing now especially if I can't find a solution for the indirect lighting crash.

Quality of life enhancements for 1.0.1

Just writing these down here for reference:

  • Saving/loading of light settings for global lights and weapon lights.
  • Fix behaviour in the material editor when trying to save a material with its parameters set to default.
  • Add ability to change texture paths in material editor.
  • Add options for configuring headlights.
  • Add menu option for bilinear filtering.
  • Fix NaNs that can show up in shading.
  • Fix quick save loading
  • End level cutscenes are not lit properly
  • Spaceship in end-level cutscene is not visible
  • Weapons seem to shoot at changing intervals
  • Seems to be a later fix of a source port, the OGL version from DXX-Retro does the same
  • UAV barriers for ping-pong render targets do not work correctly
  • Empty energy bar visible through UI elements

Descent 2 possibility with this?

From what I understand Descent 2 is very similar for the engine? Might that be a possibility here or is it too different to work? Is that something you might think about also supporting? It boils down to one question though.

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.