From ac5dfb8cfe16423b001ea227c6251776d10b87f9 Mon Sep 17 00:00:00 2001 From: Robert Beckebans Date: Sun, 25 Feb 2024 21:08:27 +0100 Subject: [PATCH 1/2] Removed OpenGL code from CMakeLists.txt --- neo/CMakeLists.txt | 17 ----------------- neo/renderer/NVRHI/RenderProgs_NVRHI.cpp | 4 ++-- neo/renderer/RenderBackend.cpp | 2 +- neo/renderer/RenderSystem_init.cpp | 2 +- 4 files changed, 4 insertions(+), 21 deletions(-) diff --git a/neo/CMakeLists.txt b/neo/CMakeLists.txt index 382be4f1..83e8fab7 100644 --- a/neo/CMakeLists.txt +++ b/neo/CMakeLists.txt @@ -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) diff --git a/neo/renderer/NVRHI/RenderProgs_NVRHI.cpp b/neo/renderer/NVRHI/RenderProgs_NVRHI.cpp index 97acd9df..2bf2aa15 100644 --- a/neo/renderer/NVRHI/RenderProgs_NVRHI.cpp +++ b/neo/renderer/NVRHI/RenderProgs_NVRHI.cpp @@ -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; diff --git a/neo/renderer/RenderBackend.cpp b/neo/renderer/RenderBackend.cpp index 943e5040..1124d00d 100644 --- a/neo/renderer/RenderBackend.cpp +++ b/neo/renderer/RenderBackend.cpp @@ -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"). diff --git a/neo/renderer/RenderSystem_init.cpp b/neo/renderer/RenderSystem_init.cpp index ae28ec0c..1b3cb2e4 100644 --- a/neo/renderer/RenderSystem_init.cpp +++ b/neo/renderer/RenderSystem_init.cpp @@ -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 From d328fdbc354d28726c39a9cd999e3d12d62629c8 Mon Sep 17 00:00:00 2001 From: Robert Beckebans Date: Sun, 25 Feb 2024 22:21:20 +0100 Subject: [PATCH 2/2] Updated .plan in README --- README.md | 52 ++++++++++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 1e7bce9d..1071f85e 100644 --- a/README.md +++ b/README.md @@ -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" -* 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 @@ -291,22 +289,23 @@ Left: No global illumination. Ambient is pitch black like in original Doom 3. Ri + + ## 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