Merge remote-tracking branch 'RBDOOM-3-BFG/master'

This commit is contained in:
Robert Beckebans 2015-03-15 10:20:56 +01:00
commit 720f8e8cdf
9 changed files with 163 additions and 31 deletions

View file

@ -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
@ -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
_______________________________
@ -268,7 +256,7 @@ Anyway:
___________________________________________________
8) CHANGES
8) OVERALL CHANGES
__________________________________________
- Flexible build system using CMake
@ -283,6 +271,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 +281,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
@ -344,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:
_______________________________________________________________________

97
RELEASE-NOTES.txt Normal file
View file

@ -0,0 +1,97 @@
____ ____ ____ _____ ____ ______ ______
/ __ \ / __ ) / __ \ ____ ____ ____ ___ |__ / / __ ) / ____// ____/
/ /_/ // __ |/ / / // __ \ / __ \ / __ `__ \ /_ < / __ |/ /_ / / __
/ _, _// /_/ // /_/ // /_/ // /_/ // / / / / /___/ // /_/ // __/ / /_/ /
/_/ |_|/_____//_____/ \____/ \____//_/ /_/ /_//____//_____//_/ \____/
_________________________________________
RBDOOM-3-BFG Release Notes - https://github.com/RobertBeckebans/RBDOOM-3-BFG
Thank you for downloading RBDOOM-3-BFG.
_______________________________________
7 March 2015 - 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)
- Cinematic sequences can be skipped
- Localization support for other languages than English
- Improved modding support through loading of custom models and animations (see section 12 MODIFICATIONS in the README)
_______________________________________
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 <ip of friend> (manual port forwarding required)

View file

@ -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 );

View file

@ -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 );

View file

@ -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++ )

View file

@ -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 )

View file

@ -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();

View file

@ -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();
}

View file

@ -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 );