cleaned up variant of https://github.com/GarageGames/Torque3D/pull/768 alterations: opengl support, in-shader bug-reporting, direction vector fit to material slider-bar.

This commit is contained in:
Azaezel 2014-12-21 14:07:42 -06:00
parent 949251b988
commit c6cdfafe4e
42 changed files with 2680 additions and 8 deletions

View file

@ -165,6 +165,9 @@ void TSMesh::innerRender( TSMaterialList *materials, const TSRenderState &rdata,
MeshRenderInst *coreRI = renderPass->allocInst<MeshRenderInst>();
coreRI->type = RenderPassManager::RIT_Mesh;
// Pass accumulation texture along.
coreRI->accuTex = rdata.getAccuTex();
const MatrixF &objToWorld = GFX->getWorldMatrix();
// Sort by the center point or the bounds.

View file

@ -33,7 +33,8 @@ TSRenderState::TSRenderState()
mMaterialHint( NULL ),
mCuller( NULL ),
mLightQuery( NULL ),
mUseOriginSort( false )
mUseOriginSort( false ),
mAccuTex( NULL )
{
}

View file

@ -27,7 +27,9 @@
#include "math/mMatrix.h"
#endif
#ifndef _GFXDEVICE_H_
#include "gfx/gfxDevice.h"
#endif
class SceneRenderState;
class GFXCubemap;
@ -103,8 +105,14 @@ protected:
/// are forward lit and need lights.
LightQuery *mLightQuery;
// The accumulation texture provided by an accumulation
// volume. This is passed down per-object.
GFXTextureObject* mAccuTex;
public:
TSRenderState();
TSRenderState( const TSRenderState &state );
@ -147,6 +155,10 @@ public:
void setLightQuery( LightQuery *query ) { mLightQuery = query; }
LightQuery* getLightQuery() const { return mLightQuery; }
///@see mAccuTex
void setAccuTex( GFXTextureObject* query ) { mAccuTex = query; }
GFXTextureObject* getAccuTex() const { return mAccuTex; }
/// @}
};

View file

@ -39,7 +39,6 @@
#include "gfx/gfxDrawUtil.h"
#include "core/module.h"
MODULE_BEGIN( TSShapeInstance )
MODULE_INIT
@ -783,3 +782,16 @@ void TSShapeInstance::prepCollision()
}
}
// Returns true is the shape contains any materials with accumulation enabled.
bool TSShapeInstance::hasAccumulation()
{
bool result = false;
for ( U32 i = 0; i < mMaterialList->size(); ++i )
{
BaseMatInstance* mat = mMaterialList->getMaterialInst(i);
if ( mat->hasAccumulation() )
result = true;
}
return result;
}

View file

@ -671,6 +671,12 @@ protected:
void *mData; ///< available for use by app...initialized to 0
void prepCollision();
//-------------------------------------------------------------------------------------
// accumulation
//-------------------------------------------------------------------------------------
bool hasAccumulation();
};