From b59ed94c8d0ad7ff857f69c38e96bac6fe369499 Mon Sep 17 00:00:00 2001 From: Robert Beckebans Date: Wed, 25 Feb 2015 11:30:03 +0100 Subject: [PATCH 1/4] Added release notes to prepare new release --- README.txt | 8 +++-- RELEASE-NOTES.txt | 92 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 97 insertions(+), 3 deletions(-) create mode 100644 RELEASE-NOTES.txt diff --git a/README.txt b/README.txt index 204116ae..fc4b5015 100644 --- a/README.txt +++ b/README.txt @@ -35,7 +35,7 @@ This file contains the following sections: 7) INSTALLATION, GETTING THE GAMEDATA, RUNNING THE GAME - 8) CHANGES + 8) OVERALL CHANGES 9) CONSOLE VARIABLES @@ -268,7 +268,7 @@ Anyway: ___________________________________________________ -8) CHANGES +8) OVERALL CHANGES __________________________________________ - Flexible build system using CMake @@ -283,6 +283,8 @@ __________________________________________ - Bink video support through FFmpeg +- PNG image support + - Soft shadows using PCF hardware shadow mapping The implementation uses sampler2DArrayShadow and PCF which usually @@ -291,7 +293,7 @@ __________________________________________ All 3 light types are supported which means parallel lights (sun) use scene independent cascaded shadow mapping. The implementation is very fast with single taps (400 fps average per - scene on a GTX 660 ti OC) however I defaulted it to 16 taps so the shadows look + scene on a GTX 660 ti OC) however I defaulted it to 12 taps using a Poisson disc algorithm so the shadows look really good which should give you stable 100 fps on todays hardware (2014). - Changed light interaction shaders to use Half-Lambert lighting like in Half-Life 2 to diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt new file mode 100644 index 00000000..b41ff0c3 --- /dev/null +++ b/RELEASE-NOTES.txt @@ -0,0 +1,92 @@ + ____ ____ ____ _____ ____ ______ ______ + / __ \ / __ ) / __ \ ____ ____ ____ ___ |__ / / __ ) / ____// ____/ + / /_/ // __ |/ / / // __ \ / __ \ / __ `__ \ /_ < / __ |/ /_ / / __ + / _, _// /_/ // /_/ // /_/ // /_/ // / / / / /___/ // /_/ // __/ / /_/ / +/_/ |_|/_____//_____/ \____/ \____//_/ /_/ /_//____//_____//_/ \____/ +_________________________________________ + + +RBDOOM-3-BFG Release Notes - https://github.com/RobertBeckebans/RBDOOM-3-BFG + +Thank you for downloading RBDOOM-3-BFG. + + + +_______________________________________ + +TBD - RBDOOM-3-BFG 1.0.3 + +_______________________________ + +- SDL 2 is the default for Linux + +- CMake options like -DUSE_SYSTEM_LIBJPEG to aid Linux distribution package maintainers + +- SDL gamepad support and other SDL input improvements like support for more mouse buttons + +- Mac OS X support (experimental) + +- XAudio 2, Windows 8 SDK fixes + +- Better Mesa support (not including advanced shadow mapping) + +- Added back dmap and aas compilers (mapping tools) + + + +_______________________________________ + +17 May 2014 - RBDOOM-3-BFG 1.0.2 + +RBDOOM-3-BFG-1.0.2-ATI-hotfix1-win32-20140517-git-952907f.7z +_______________________________ + +This release doubles the shadow mapping performance and allows the game to be played at solid 120 fps in 1080p with a Nvidia GTX 660 Ti. +It also adds a graphics option to enable/disable shadow mapping and fixes a few problems with FFmpeg playing Bink videos. + + + +_______________________________________ + +11 May 2014 - RBDOOM-3-BFG 1.0.1 + +RBDOOM-3-BFG-win32-20140511-git-f950769.7z +_______________________________ + +This release improves the performance drastically and adds shadow mapping support for translucent surfaces like grates. + + +_______________________________________ + +10 May 2014 - RBDOOM-3-BFG 1.0 + +RBDOOM-3-BFG-win32-20140510-git-14f87fe.7z +_______________________________ + +- Added soft shadow mapping + +- Added PNG image support + +- Replaced QGL with GLEW + +- base/renderprogs/ can be baked into the executable using Premake/Lua + +- Replaced Visual Studio solution with CMake + +- Linux port using SDL/SDL2 and OpenAL + +- 64 bit support for Windows and Linux + +- Sourcecode cleanup using Artistic Style 2.03 C++ beautifier and by fixing tons of warnings using Clang compiler + +- Fast compile times using precompiled header support + +- Tons of renderer bugfixes and Cg -> GLSL converter that supports ES 2.00, ES 3.30 additional to GLSL 1.50 + +- Netcode fixes to allow multiplayer sessions to friends with +connect (manual port forwarding required) + + + + + + From 06d0434f325fd5b2a51eb6234e394cd6c79d4c04 Mon Sep 17 00:00:00 2001 From: Robert Beckebans Date: Wed, 25 Feb 2015 15:45:16 +0100 Subject: [PATCH 2/4] Improved modding support and loading of custom models/anims --- RELEASE-NOTES.txt | 4 ++++ neo/cm/CollisionModel_load.cpp | 6 +++++- neo/d3xp/anim/Anim.cpp | 5 ++++- neo/framework/FileSystem.cpp | 17 +++++++++++++---- neo/renderer/BinaryImage.cpp | 7 +++++-- neo/renderer/Model.cpp | 4 +++- neo/renderer/ModelManager.cpp | 6 +++++- neo/swf/SWF_Load.cpp | 6 ++++-- 8 files changed, 43 insertions(+), 12 deletions(-) diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index b41ff0c3..ed45f2dd 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -32,6 +32,10 @@ _______________________________ - Added back dmap and aas compilers (mapping tools) +- Cinematic sequences can be skipped + +- Localization support for other languages than English + _______________________________________ diff --git a/neo/cm/CollisionModel_load.cpp b/neo/cm/CollisionModel_load.cpp index cc15bb8d..5425eba4 100644 --- a/neo/cm/CollisionModel_load.cpp +++ b/neo/cm/CollisionModel_load.cpp @@ -3436,10 +3436,14 @@ cm_model_t* idCollisionModelManagerLocal::LoadBinaryModelFromFile( idFile* file, } ID_TIME_T storedTimeStamp = FILE_NOT_FOUND_TIMESTAMP; file->ReadBig( storedTimeStamp ); - if( !fileSystem->InProductionMode() && storedTimeStamp != sourceTimeStamp ) + + // RB: source might be from .resources, so we ignore the time stamp and assume a release build + if( !fileSystem->InProductionMode() && ( sourceTimeStamp != FILE_NOT_FOUND_TIMESTAMP ) && ( sourceTimeStamp != 0 ) && ( sourceTimeStamp != storedTimeStamp ) ) { return NULL; } + // RB end + cm_model_t* model = AllocModel(); file->ReadString( model->name ); file->ReadBig( model->bounds ); diff --git a/neo/d3xp/anim/Anim.cpp b/neo/d3xp/anim/Anim.cpp index 2b675667..43283dab 100644 --- a/neo/d3xp/anim/Anim.cpp +++ b/neo/d3xp/anim/Anim.cpp @@ -427,10 +427,13 @@ bool idMD5Anim::LoadBinary( idFile* file, ID_TIME_T sourceTimeStamp ) ID_TIME_T loadedTimeStamp; file->ReadBig( loadedTimeStamp ); - if( !fileSystem->InProductionMode() && sourceTimeStamp != loadedTimeStamp ) + + // RB: source might be from .resources, so we ignore the time stamp and assume a release build + if( !fileSystem->InProductionMode() && ( sourceTimeStamp != FILE_NOT_FOUND_TIMESTAMP ) && ( sourceTimeStamp != 0 ) && ( sourceTimeStamp != loadedTimeStamp ) ) { return false; } + // RB end file->ReadBig( numFrames ); file->ReadBig( frameRate ); diff --git a/neo/framework/FileSystem.cpp b/neo/framework/FileSystem.cpp index 13a3cfd8..e6608ce6 100644 --- a/neo/framework/FileSystem.cpp +++ b/neo/framework/FileSystem.cpp @@ -169,10 +169,10 @@ public: virtual void EnableBackgroundCache( bool enable ); virtual void BeginLevelLoad( const char* name, char* _blockBuffer, int _blockBufferSize ); virtual void EndLevelLoad(); - virtual bool InProductionMode() - { - return ( resourceFiles.Num() > 0 ) | ( com_productionMode.GetInteger() != 0 ); - } + + // RB begin + virtual bool InProductionMode(); + // RB end virtual bool UsingResourceFiles() { return resourceFiles.Num() > 0; @@ -783,6 +783,15 @@ void idFileSystemLocal::EndLevelLoad() } +// RB begin +bool idFileSystemLocal::InProductionMode() +{ + //return fs_resourceLoadPriority.GetBool() && ( resourceFiles.Num() > 0 ) || ( com_productionMode.GetInteger() != 0 ); + + return ( com_productionMode.GetInteger() != 0 ); +} +// RB end + bool FileExistsInAllManifests( const char* filename, idList< idFileManifest >& manifests ) { for( int i = 0; i < manifests.Num(); i++ ) diff --git a/neo/renderer/BinaryImage.cpp b/neo/renderer/BinaryImage.cpp index 1882429c..ed988e03 100644 --- a/neo/renderer/BinaryImage.cpp +++ b/neo/renderer/BinaryImage.cpp @@ -446,7 +446,7 @@ idBinaryImage::LoadFromGeneratedFile Load the preprocessed image from the generated folder. ========================== */ -bool idBinaryImage::LoadFromGeneratedFile( idFile* bFile, ID_TIME_T sourceFileTime ) +bool idBinaryImage::LoadFromGeneratedFile( idFile* bFile, ID_TIME_T sourceTimeStamp ) { if( bFile->Read( &fileData, sizeof( fileData ) ) <= 0 ) { @@ -466,10 +466,13 @@ bool idBinaryImage::LoadFromGeneratedFile( idFile* bFile, ID_TIME_T sourceFileTi { return false; } - if( fileData.sourceFileTime != sourceFileTime && sourceFileTime != 0 && com_productionMode.GetInteger() == 0 ) + + // RB: source might be from .resources, so we ignore the time stamp and assume a release build + if( !fileSystem->InProductionMode() && ( sourceTimeStamp != FILE_NOT_FOUND_TIMESTAMP ) && ( sourceTimeStamp != 0 ) && ( sourceTimeStamp != fileData.sourceFileTime ) ) { return false; } + // RB end int numImages = fileData.numLevels; if( fileData.textureType == TT_CUBIC ) diff --git a/neo/renderer/Model.cpp b/neo/renderer/Model.cpp index 4f09bd89..17f64f0c 100644 --- a/neo/renderer/Model.cpp +++ b/neo/renderer/Model.cpp @@ -366,10 +366,12 @@ bool idRenderModelStatic::LoadBinaryModel( idFile* file, const ID_TIME_T sourceT file->ReadBig( timeStamp ); - if( !fileSystem->InProductionMode() && sourceTimeStamp != timeStamp ) + // RB: source might be from .resources, so we ignore the time stamp and assume a release build + if( !fileSystem->InProductionMode() && ( sourceTimeStamp != FILE_NOT_FOUND_TIMESTAMP ) && ( sourceTimeStamp != 0 ) && ( sourceTimeStamp != timeStamp ) ) { return false; } + // RB end common->UpdateLevelLoadPacifier(); diff --git a/neo/renderer/ModelManager.cpp b/neo/renderer/ModelManager.cpp index f9398532..37aa10e2 100644 --- a/neo/renderer/ModelManager.cpp +++ b/neo/renderer/ModelManager.cpp @@ -301,11 +301,15 @@ idRenderModel* idRenderModelManagerLocal::GetModel( const char* _modelName, bool idStr generatedFileName = "generated/rendermodels/"; generatedFileName.AppendPath( canonical ); generatedFileName.SetFileExtension( va( "b%s", extension.c_str() ) ); + + // Get the timestamp on the original file, if it's newer than what is stored in binary model, regenerate it + ID_TIME_T sourceTimeStamp = fileSystem->GetTimestamp( canonical ); + if( model->SupportsBinaryModel() && r_binaryLoadRenderModels.GetBool() ) { idFileLocal file( fileSystem->OpenFileReadMemory( generatedFileName ) ); model->PurgeModel(); - if( !model->LoadBinaryModel( file, 0 ) ) + if( !model->LoadBinaryModel( file, sourceTimeStamp ) ) { model->LoadModel(); } diff --git a/neo/swf/SWF_Load.cpp b/neo/swf/SWF_Load.cpp index b83c7990..457b5a27 100644 --- a/neo/swf/SWF_Load.cpp +++ b/neo/swf/SWF_Load.cpp @@ -139,7 +139,7 @@ bool idSWF::LoadSWF( const char* fullpath ) idSWF::LoadBinary =================== */ -bool idSWF::LoadBinary( const char* bfilename, ID_TIME_T sourceTime ) +bool idSWF::LoadBinary( const char* bfilename, ID_TIME_T sourceTimeStamp ) { idFile* f = fileSystem->OpenFileReadMemory( bfilename ); if( f == NULL || f->Length() <= 0 ) @@ -152,11 +152,13 @@ bool idSWF::LoadBinary( const char* bfilename, ID_TIME_T sourceTime ) f->ReadBig( magic ); f->ReadBig( btimestamp ); - if( magic != BSWF_MAGIC || ( com_productionMode.GetInteger() == 0 && sourceTime != FILE_NOT_FOUND_TIMESTAMP && sourceTime != btimestamp ) ) + // RB: source might be from .resources, so we ignore the time stamp and assume a release build + if( magic != BSWF_MAGIC || ( !fileSystem->InProductionMode() && ( sourceTimeStamp != FILE_NOT_FOUND_TIMESTAMP ) && ( sourceTimeStamp != 0 ) && ( sourceTimeStamp != btimestamp ) ) ) { delete f; return false; } + // RB end f->ReadBig( frameWidth ); f->ReadBig( frameHeight ); From 64a12c1204066f49338d557e6692faa7d003b345 Mon Sep 17 00:00:00 2001 From: Robert Beckebans Date: Wed, 25 Feb 2015 15:54:54 +0100 Subject: [PATCH 3/4] Updated README --- README.txt | 38 ++++++++++++++++++++++---------------- RELEASE-NOTES.txt | 2 ++ 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/README.txt b/README.txt index fc4b5015..e6059dea 100644 --- a/README.txt +++ b/README.txt @@ -43,7 +43,9 @@ This file contains the following sections: 11) BUG REPORTS - 12) CODE LICENSE EXCEPTIONS + 12) GAME MODIFICATIONS + + 13) CODE LICENSE EXCEPTIONS @@ -102,20 +104,6 @@ The Doom 3 BFG Edition GPL Source Code release does not include functionality en of stencil shadows via the "depth fail" method, a functionality commonly known as "Carmack's Reverse". -Mods: ------ - -The Doom 3 BFG Edition GPL Source Code release allow mod editing, in order for it to accept any change in your -mod directory, you should first specify your mod directory adding the following command to the launcher: - -"+set fs_game modDirectoryName" - -as well as force the content of your mod directory over the content of the game with the following command: - -"+set fs_resourceLoadPriority 0" - -so it would end up looking like: RBDoom3BFG +set fs_resourceLoadPriority 0 +set fs_game mymod - _______________________________ @@ -346,11 +334,29 @@ If you want to report an issue with the game, you should make sure that your rep NOTE: We cannot help you with OS-specific issues like configuring OpenGL correctly, configuring ALSA or configuring the network. +___________________________________________________ + +12) GAME MODIFCATIONS +__________________________________________ +The Doom 3 BFG Edition GPL Source Code release allows mod editing, in order for it to accept any change in your +mod directory, you should first specify your mod directory adding the following command to the launcher: + +"+set fs_game modDirectoryName" + +as well as force the content of your mod directory over the content of the game with the following command: + +"+set fs_resourceLoadPriority 0" + +so it would end up looking like: RBDoom3BFG +set fs_resourceLoadPriority 0 +set fs_game modDirectoryName + + +IMPORTANT: RBDOOM-3-BFG does not support old Doom 3 modiciations that include sourcecode modifications in binary form (.dll) +You can fork RBDOOM-3-BFG and create a new renamed binary that includes all required C++ game code modifications. ____________________________________________________________________________________ -12) CODE LICENSE EXCEPTIONS - The parts that are not covered by the GPL: +13) CODE LICENSE EXCEPTIONS - The parts that are not covered by the GPL: _______________________________________________________________________ diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index ed45f2dd..3c68c4ff 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -36,6 +36,8 @@ _______________________________ - Localization support for other languages than English +- Improved modding support through loading of custom models and animations (see section 12 MODIFICATIONS in the README) + _______________________________________ From b7f67a1dd9be84076b0d2df995cc6fdee3bf0877 Mon Sep 17 00:00:00 2001 From: Robert Beckebans Date: Sat, 7 Mar 2015 14:46:38 +0100 Subject: [PATCH 4/4] Updated release notes --- RELEASE-NOTES.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index 3c68c4ff..d257235f 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -14,8 +14,7 @@ Thank you for downloading RBDOOM-3-BFG. _______________________________________ -TBD - RBDOOM-3-BFG 1.0.3 - +7 March 2015 - RBDOOM-3-BFG 1.0.3 _______________________________ - SDL 2 is the default for Linux