Merge branch 'GarageGames/development' into ueberengine-dev-3.10

Conflicts:
	Engine/source/app/version.h
	Engine/source/terrain/terrData.cpp
This commit is contained in:
Duion 2016-12-13 17:28:36 +01:00
commit 186604eb76
974 changed files with 121718 additions and 233088 deletions

View file

@ -1067,8 +1067,12 @@ void TerrainAdditiveFeatGLSL::processPix( Vector<ShaderComponent*> &componentLis
const MaterialFeatureData &fd )
{
Var *color = NULL;
Var *normal = NULL;
if (fd.features[MFT_DeferredTerrainDetailMap])
{
color = (Var*) LangElement::find( getOutputTargetVarName(ShaderFeature::RenderTarget1) );
normal = (Var*) LangElement::find( getOutputTargetVarName(ShaderFeature::DefaultTarget) );
}
else
color = (Var*) LangElement::find( getOutputTargetVarName(ShaderFeature::DefaultTarget) );
@ -1080,6 +1084,8 @@ void TerrainAdditiveFeatGLSL::processPix( Vector<ShaderComponent*> &componentLis
meta->addStatement( new GenOp( " clip( @ - 0.0001 );\r\n", blendTotal ) );
meta->addStatement( new GenOp( " @.a = @;\r\n", color, blendTotal ) );
if (normal)
meta->addStatement(new GenOp(" @.a = @;\r\n", normal, blendTotal));
output = meta;
}

View file

@ -1165,8 +1165,12 @@ void TerrainAdditiveFeatHLSL::processPix( Vector<ShaderComponent*> &componentLis
const MaterialFeatureData &fd )
{
Var *color = NULL;
Var *normal = NULL;
if (fd.features[MFT_DeferredTerrainDetailMap])
{
color = (Var*) LangElement::find( getOutputTargetVarName(ShaderFeature::RenderTarget1) );
normal = (Var*) LangElement::find( getOutputTargetVarName(ShaderFeature::DefaultTarget) );
}
else
color = (Var*) LangElement::find( getOutputTargetVarName(ShaderFeature::DefaultTarget) );
@ -1179,6 +1183,8 @@ void TerrainAdditiveFeatHLSL::processPix( Vector<ShaderComponent*> &componentLis
meta->addStatement( new GenOp( " clip( @ - 0.0001 );\r\n", blendTotal ) );
meta->addStatement( new GenOp( " @.a = @;\r\n", color, blendTotal ) );
if (normal)
meta->addStatement(new GenOp(" @.a = @;\r\n", normal, blendTotal));
output = meta;
}

View file

@ -49,11 +49,11 @@ const U32 TerrCell::smTriCount = TerrCell::smPBSize / 3; // 33
TerrCell::TerrCell()
: mMaterials( 0 ),
: mTriCount( 0 ),
mHasEmpty( false ),
mMaterial( NULL ),
mIsInteriorOnly( false ),
mTriCount( 0 ),
mHasEmpty( false )
mMaterials( 0 ),
mIsInteriorOnly( false )
{
dMemset( mChildren, 0, sizeof( mChildren ) );
}

View file

@ -69,8 +69,8 @@ Vector<String> _initSamplerNames()
const Vector<String> TerrainCellMaterial::mSamplerNames = _initSamplerNames();
TerrainCellMaterial::TerrainCellMaterial()
: mCurrPass( 0 ),
mTerrain( NULL ),
: mTerrain( NULL ),
mCurrPass( 0 ),
mPrePassMat( NULL ),
mReflectMat( NULL )
{
@ -152,11 +152,17 @@ void TerrainCellMaterial::_updateDefaultAnisotropy()
} // for ( U32 m=0; m < pass.materials.size(); m++ )
// Set the updated stateblock.
desc.setCullMode( GFXCullCCW );
pass.stateBlock = GFX->createStateBlock( desc );
//reflection
desc.setCullMode( GFXCullCW );
pass.reflectionStateBlock = GFX->createStateBlock(desc);
// Create the wireframe state blocks.
GFXStateBlockDesc wireframe( desc );
wireframe.fillMode = GFXFillWireframe;
wireframe.setCullMode( GFXCullCCW );
pass.wireframeStateBlock = GFX->createStateBlock( wireframe );
} // for ( U32 p=0; i < (*iter)->mPasses.size(); p++ )
@ -548,8 +554,8 @@ bool TerrainCellMaterial::_createPass( Vector<MaterialInfo*> *materials,
// MFT_TerrainAdditive feature to lerp the
// output normal with the previous pass.
//
//if ( prePassMat )
//desc.setColorWrites( true, true, false, false );
if ( prePassMat )
desc.setColorWrites( true, true, true, false );
}
// We write to the zbuffer if this is a prepass
@ -668,15 +674,17 @@ bool TerrainCellMaterial::_createPass( Vector<MaterialInfo*> *materials,
if ( prePassMat )
desc.addDesc( RenderPrePassMgr::getOpaqueStenciWriteDesc( false ) );
// Shut off culling for prepass materials (reflection support).
if ( prePassMat )
desc.setCullMode( GFXCullNone );
desc.setCullMode( GFXCullCCW );
pass->stateBlock = GFX->createStateBlock(desc);
pass->stateBlock = GFX->createStateBlock( desc );
//reflection stateblock
desc.setCullMode( GFXCullCW );
pass->reflectionStateBlock = GFX->createStateBlock(desc);
// Create the wireframe state blocks.
GFXStateBlockDesc wireframe( desc );
wireframe.fillMode = GFXFillWireframe;
wireframe.setCullMode( GFXCullCCW );
pass->wireframeStateBlock = GFX->createStateBlock( wireframe );
return true;
@ -776,6 +784,8 @@ bool TerrainCellMaterial::setupPass( const SceneRenderState *state,
if ( sceneData.wireframe )
GFX->setStateBlock( pass.wireframeStateBlock );
else if ( state->isReflectPass( ))
GFX->setStateBlock( pass.reflectionStateBlock );
else
GFX->setStateBlock( pass.stateBlock );

View file

@ -108,6 +108,7 @@ protected:
GFXStateBlockRef stateBlock;
GFXStateBlockRef wireframeStateBlock;
GFXStateBlockRef reflectionStateBlock;
GFXShaderConstHandle *modelViewProjConst;
GFXShaderConstHandle *worldViewOnly;

View file

@ -180,24 +180,24 @@ ImplementEnumType(baseTexFormat,
EndImplementEnumType;
TerrainBlock::TerrainBlock()
: mSquareSize( 1.0f ),
mCastShadows( true ),
mScreenError( 16 ),
mDetailsDirty( false ),
mLayerTexDirty( false ),
mLightMap( NULL ),
: mLightMap( NULL ),
mLightMapSize( 256 ),
mMaxDetailDistance( 0.0f ),
mCell( NULL ),
mCRC( 0 ),
mBaseTexSize( 1024 ),
mBaseTexFormat( TerrainBlock::JPG ),
mBaseMaterial( NULL ),
mDefaultMatInst( NULL ),
mMaxDetailDistance( 0.0f ),
mBaseTexScaleConst( NULL ),
mBaseTexIdConst( NULL ),
mDetailsDirty( false ),
mLayerTexDirty( false ),
mBaseTexSize( 1024 ),
mBaseTexFormat( TerrainBlock::PNG ),
mCell( NULL ),
mBaseMaterial( NULL ),
mDefaultMatInst( NULL ),
mSquareSize( 1.0f ),
mPhysicsRep( NULL ),
mZoningDirty( false ),
mScreenError( 16 ),
mCastShadows( true ),
mZoningDirty( false )
mUpdateBasetex ( true )
{
mTypeMask = TerrainObjectType | StaticObjectType | StaticShapeObjectType;

View file

@ -45,9 +45,9 @@ template<> ResourceBase::Signature Resource<TerrainFile>::signature()
TerrainFile::TerrainFile()
: mNeedsResaving( false ),
: mSize( 256 ),
mFileVersion( FILE_VERSION ),
mSize( 256 )
mNeedsResaving( false )
{
mLayerMap.setSize( mSize * mSize );
dMemset( mLayerMap.address(), 0, mLayerMap.memSize() );

View file

@ -57,11 +57,11 @@ ConsoleDocClass( TerrainMaterial,
"@ingroup enviroMisc\n");
TerrainMaterial::TerrainMaterial()
: mSideProjection( false ),
mDiffuseSize( 500.0f ),
: mDiffuseSize( 500.0f ),
mDetailSize( 5.0f ),
mDetailStrength( 1.0f ),
mDetailDistance( 50.0f ),
mSideProjection( false ),
mMacroSize( 200.0f ),
mMacroStrength( 0.7f ),
mMacroDistance( 500.0f ),

View file

@ -27,7 +27,7 @@
#include "terrain/terrData.h"
#endif
enum TerrConstants
enum TerrConstants : U32
{
MaxClipPlanes = 8, ///< left, right, top, bottom - don't need far tho...
//MaxTerrainMaterials = 256,