Merge branch 'master' of github.com:RobertBeckebans/RBDOOM-3-BFG

This commit is contained in:
Robert Beckebans 2024-02-26 20:50:55 +01:00
commit d0d1f1d7b3
5 changed files with 30 additions and 47 deletions

View file

@ -55,8 +55,8 @@ I started this project in 2012 and focused on making this code being future proo
* DX12 / Vulkan support through NVRHI (NVIDIA Rendering Hardware Interface) (thanks to Stephen Pridham for major porting effort)
* Physically Based Rendering using GGX Cook-Torrence as in other modern engines (UE4, Unity) and 3D authoring tools like Blender 3.x or Adobe Substance
* Baked Global Illumination using Irradiance Volumes and Image Based Lighting that fix the pitch black areas
* Soft shadows using a fat shadow mapping atlas
All 3 light types (point, spot, parallel/sun) are supported which means parallel lights (sun) use
* Soft shadows using a fat shadow mapping atlas:
* All 3 light types (point, spot, parallel/sun) are supported which means parallel lights (sun) use
scene independent cascaded shadow mapping.
* True internal 64 bit HDR lighting with filmic ACES tone mapping and gamma-correct rendering in linear RGB space
* Temporal Antialiasing (TAA) as a cheap alternative for MSAA and that works well with HDR and also improves PBR lighting
@ -86,7 +86,6 @@ RBDOOM-3-BFG allows mod editing and has many tiny fixes so custom content can be
* invertGreen( normalmap.png ) material keyword to allow flipping the Y-Axis for tangent space normal maps
* glTF2 .glb model support for static and skinned models (thanks to Harrie van Ginneken)
* Changed dmap to support compiling maps straight from glTF2 .glb models instead of .map files using a new polygon based workflow
* Collada .DAE model support in addition to .ase and .lwo for static map models
* Wavefront OBJ model support to make it easier getting static models from Blender/Maya/3D Studio Max into TrenchBroom
* Added back dmap and aas compilers (mapping tools, thanks to Pat Raynor) and improved them to work with TrenchBroom and Blender
* Added in-engine Flash debugging tools and new console variables
@ -110,17 +109,16 @@ You can fork RBDOOM-3-BFG and create a new renamed binary that includes all requ
If you want to see what is planned or in progress in a Trello/Kanban style manner look here: [RBDOOM-3-BFG projects](https://github.com/RobertBeckebans/RBDOOM-3-BFG/projects)
Short term goals:
* Finish last remaining bugs of the DX12/Vulkan renderer backend using the [NVIDIA Rendering Hardware Interface](https://github.com/NVIDIAGameWorks/nvrhi)
* Optional RmlUI support as an alternative to Flash
* Add Raytracing for accelerating the probe baking and optionally adding realtime global illumination
* Node based Imgui particle editor
* Flash support through Adobe Animate or Blender
* Raytracing for accelerating the probe baking and optionally adding realtime global illumination
---
# May or may not ".plan" <a name="plan2"></a>
* Scrap expensive multipass forward shading with a faster forward+ solution
* Add [Volumetric Lighting](http://www.alexandre-pestana.com/volumetric-lights/)
* Explore Screen Space Global Illumination with Christoph Schieds' A-SVGF realtime denoising because A-SVGF works really well in Q2RTX
* Update texture compression based on [Basis Universal GPU Texture and Texture Video Compression Codec](https://github.com/binomialLLC/basis_universal)
* Replace collision detection and physics with PhysX 5
* Replace expensive multipass forward shading with a faster forward+ solution
* [Volumetric Lighting](http://www.alexandre-pestana.com/volumetric-lights/)
* ReSTIR or some other realtime path tracing
* Optional alternative collision detection and physics with PhysX 5 or Jolt
---
# Renderer Features Explained <a name="render"></a>
@ -291,22 +289,23 @@ Left: No global illumination. Ambient is pitch black like in original Doom 3. Ri
<img src="https://i.imgur.com/LRJBJwV.png" width="384"> <img src="https://i.imgur.com/GPD2aIr.png" width="384">
<!--
<img src="https://i.imgur.com/PVAXGui.png" width="384"> <img src="https://i.imgur.com/NleLuWY.png" width="384">
<img src="https://i.imgur.com/vxAgY2S.png" width="384"> <img src="https://i.imgur.com/8avH7DY.png" width="384">
<img src="https://i.imgur.com/KESmZld.png" width="384"> <img src="https://i.imgur.com/lHc7Pb9.png" width="384">
-->
<img src="https://i.imgur.com/qIq1xPi.png" width="384"> <img src="https://i.imgur.com/tGoceNP.png" width="384">
<img src="https://i.imgur.com/45YCeSf.png" width="384"> <img src="https://i.imgur.com/GBDbml1.png" width="384">
<!--
Some examples that show additional environment lighting on all assets.
<img src="https://i.imgur.com/xBPa2Y8.png" width="384"> <img src="https://i.imgur.com/MCjwFE7.png" width="384">
## HDR
Left: Wrong original Blinn-Phong in sRGB gamma space. Right: Gamma correct HDR rendering in linear RBG + ACES Film Tonemapping
@ -319,7 +318,8 @@ Left: Wrong original Blinn-Phong in sRGB gamma space. Right: Gamma correct HDR r
r_useSSAO 1 darkens the corners of the scene and also removes too much ambient added by the Global Illumination.
<img src="https://i.imgur.com/AP2tBVd.png" width="384"> <img src="https://i.imgur.com/dJ1dY4X.png" width="384">
"""
-->
## Filmic Post Processing
If you enable it with r_useFilmicPostProcessing 1 then you play DOOM 3 BFG the optics of a Zack Snyder movie.
@ -363,16 +363,16 @@ If the nomodels argument is not given then it will also export all needed models
A short summary of the file layout:
Directory | Description
:----------------------------- | :------------------------------------------------
RBDOOM-3-BFG/base/ | Doom 3 BFG media directory ( models, textures, sounds, maps, etc. )
RBDOOM-3-BFG/neo/ | RBDOOM-3-BFG source code ( renderer, game code for multiple games, OS layer, etc. )
RBDOOM-3-BFG/build/ | Build folder for CMake
RBDOOM-3-BFG/tools/blender/ | Blender scripts for level mapping (TBD in release packages)
RBDOOM-3-BFG/tools/trenchbroom | TrenchBroomBFG level editor customized for DOOM 3 and RBDOOM-3-BFG
RBDOOM-3-BFG/tools/darkradiant | DarkRadiant level editor with an additional config for RBDOOM-3-BFG
RBDOOM-3-BFG/tools/runtimedeps | Visual Studio C++ Redistributables if you have problems to start the engine or the tools
RBDOOM-3-BFG/tools/bfgpakexlorer| BFG Resource File Manager by George Kalampokis aka Mr.GK
Directory | Description
:--------------------------------- | :------------------------------------------------
RBDOOM-3-BFG/base/ | Doom 3 BFG media directory ( models, textures, sounds, maps, etc. )
RBDOOM-3-BFG/neo/ | RBDOOM-3-BFG source code ( renderer, game code for multiple games, OS layer, etc. )
RBDOOM-3-BFG/build/ | Build folder for CMake
RBDOOM-3-BFG/tools/runtimedeps | Visual Studio C++ Redistributables if you have problems to start the engine or the tools
RBDOOM-3-BFG/tools/trenchbroom | TrenchBroomBFG level editor customized for DOOM 3 and RBDOOM-3-BFG
RBDOOM-3-BFG/tools/darkradiant | DarkRadiant level editor with an additional config for RBDOOM-3-BFG
RBDOOM-3-BFG/tools/bfgpakexlorer | BFG Resource File Manager by George Kalampokis aka Mr.GK
RBDOOM-3-BFG/tools/optick-profiler | Optick is a super-lightweight C++ profiler for Games
The GPL release does not contain any game data, the game data is still
covered by the original EULA and must be obeyed as usual.
@ -641,8 +641,8 @@ r_exposure [0 .. 1] | Default 0.5, controls brightness and af
r_useSSAO [0 .. 1] | Use Screen Space Ambient Occlusion to darken the corners in the scene and give it more depth
r_forceAmbient | Default 0.5, controls additional brightness by Global Illumination
r_useFilmicPostFX [0, 1] | Apply several post process effects to mimic a filmic look
r_useCRTPostFX [0, 1] | CRT monitor/TV filter
r_renderMode [0 .. 5] | Default 0 = Doom 3, 1 = Commodore 64, 2 = Commodore 64 Highres, 3 = Sega Genesis, 4 = Sega Genesis Highres, 5 = Sony PSX
r_useCRTPostFX [0 .. 2] | CRT monitor/TV filter
r_renderMode [0 .. 5] | Default 0 = Doom 3, 1 = Commodore 64, 2 = Commodore 64 Highres, 3 = Amstrad CPC, 4 = Amstrad CPC Highres, 5 = Sega Genesis, 6 = Sega Genesis Highres, 7 = Sony PSX
## Modding Support
Name | Description

View file

@ -499,12 +499,6 @@ file(GLOB RENDERER_PASSES_SOURCES renderer/Passes/*.cpp)
file(GLOB RENDERER_SMAA_INCLUDES renderer/SMAA/*.h)
file(GLOB RENDERER_OPENGL_INCLUDES renderer/OpenGL/*.h)
file(GLOB RENDERER_OPENGL_SOURCES renderer/OpenGL/*.cpp)
file(GLOB RENDERER_VULKAN_INCLUDES renderer/Vulkan/*.h)
file(GLOB RENDERER_VULKAN_SOURCES renderer/Vulkan/*.cpp)
file(GLOB RENDERER_NVRHI_INCLUDES renderer/NVRHI/*.h)
file(GLOB RENDERER_NVRHI_SOURCES renderer/NVRHI/*.cpp)
@ -1100,15 +1094,9 @@ source_group("renderer\\Passes" FILES ${RENDERER_PASSES_SOURCES})
source_group("renderer\\DXT" FILES ${RENDERER_DXT_INCLUDES})
source_group("renderer\\DXT" FILES ${RENDERER_DXT_SOURCES})
source_group("renderer\\OpenGL" FILES ${RENDERER_OPENGL_INCLUDES})
source_group("renderer\\OpenGL" FILES ${RENDERER_OPENGL_SOURCES})
source_group("renderer\\NVRHI" FILES ${RENDERER_NVRHI_INCLUDES})
source_group("renderer\\NVRHI" FILES ${RENDERER_NVRHI_SOURCES})
source_group("renderer\\Vulkan" FILES ${RENDERER_VULKAN_INCLUDES})
source_group("renderer\\Vulkan" FILES ${RENDERER_VULKAN_SOURCES})
source_group("renderer\\SMAA" FILES ${RENDERER_SMAA_INCLUDES})
source_group("libs\\irrxml" FILES ${IRRXML_INCLUDES})
@ -1434,11 +1422,6 @@ if(MSVC)
if(USE_DX12)
list(APPEND RBDOOM3_INCLUDES ${RENDERER_NVRHI_INCLUDES})
list(APPEND RBDOOM3_SOURCES ${RENDERER_NVRHI_SOURCES})
# RB: TODO REMOVE
set(OpenGL_LIBRARIES
opengl32
glu32)
endif()
if(OPENAL)

View file

@ -91,7 +91,7 @@ extern DeviceManager* deviceManager;
/*
================================================================================================
createShaderPermutation
* Copyright (c) 2014-2021, NVIDIA CORPORATION. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
@ -115,7 +115,7 @@ extern DeviceManager* deviceManager;
================================================================================================
*/
nvrhi::ShaderHandle createShaderPermutation( nvrhi::IDevice* device, const nvrhi::ShaderDesc& d, const void* blob, size_t blobSize,
const ShaderMake::ShaderConstant* constants, uint32_t numConstants, bool errorIfNotFound = true )
const ShaderMake::ShaderConstant* constants, uint32_t numConstants, bool errorIfNotFound = true )
{
const void* binary = nullptr;
size_t binarySize = 0;

View file

@ -5,7 +5,7 @@ Doom 3 BFG Edition GPL Source Code
Copyright (C) 1993-2012 id Software LLC, a ZeniMax Media company.
Copyright (C) 2014 Carl Kenner
Copyright (C) 2016-2017 Dustin Land
Copyright (C) 2013-2023 Robert Beckebans
Copyright (C) 2013-2024 Robert Beckebans
Copyright (C) 2022 Stephen Pridham
This file is part of the Doom 3 BFG Edition GPL Source Code ("Doom 3 BFG Edition Source Code").

View file

@ -3,7 +3,7 @@
Doom 3 BFG Edition GPL Source Code
Copyright (C) 1993-2012 id Software LLC, a ZeniMax Media company.
Copyright (C) 2014-2021 Robert Beckebans
Copyright (C) 2014-2024 Robert Beckebans
Copyright (C) 2014-2016 Kot in Action Creative Artel
Copyright (C) 2022 Stephen Pridham