mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-12 07:04:36 +00:00
Implement Singlepass Terrain Render
This commit is contained in:
parent
49a8c0ad36
commit
87dd7ffc4a
35 changed files with 1658 additions and 951 deletions
|
|
@ -40,6 +40,7 @@
|
|||
#endif
|
||||
|
||||
|
||||
class GFXTextureArray;
|
||||
class SceneRenderState;
|
||||
struct SceneData;
|
||||
class TerrainMaterial;
|
||||
|
|
@ -58,8 +59,7 @@ protected:
|
|||
public:
|
||||
|
||||
MaterialInfo()
|
||||
:mat(NULL), layerId(0), detailTexConst(NULL), macroTexConst(NULL), normalTexConst(NULL),
|
||||
ormTexConst(NULL), detailInfoVConst(NULL), detailInfoPConst(NULL), macroInfoVConst(NULL), macroInfoPConst(NULL)
|
||||
:mat(NULL), layerId(0)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -69,95 +69,60 @@ protected:
|
|||
|
||||
TerrainMaterial *mat;
|
||||
U32 layerId;
|
||||
|
||||
GFXShaderConstHandle *detailTexConst;
|
||||
GFXTexHandle detailTex;
|
||||
|
||||
GFXShaderConstHandle *macroTexConst;
|
||||
GFXTexHandle macroTex;
|
||||
|
||||
GFXShaderConstHandle *normalTexConst;
|
||||
GFXTexHandle normalTex;
|
||||
|
||||
GFXShaderConstHandle *ormTexConst;
|
||||
GFXTexHandle ormTex;
|
||||
|
||||
GFXShaderConstHandle *detailInfoVConst;
|
||||
GFXShaderConstHandle *detailInfoPConst;
|
||||
|
||||
GFXShaderConstHandle *macroInfoVConst;
|
||||
GFXShaderConstHandle *macroInfoPConst;
|
||||
};
|
||||
|
||||
class Pass
|
||||
{
|
||||
public:
|
||||
///
|
||||
GFXShader *mShader;
|
||||
|
||||
Pass()
|
||||
: shader( NULL ),
|
||||
modelViewProjConst(NULL), worldViewOnly(NULL), viewToObj(NULL),
|
||||
eyePosWorldConst(NULL), eyePosConst(NULL),
|
||||
objTransConst(NULL), worldToObjConst(NULL), vEyeConst(NULL),
|
||||
layerSizeConst(NULL), lightParamsConst(NULL), lightInfoBufferConst(NULL),
|
||||
baseTexMapConst(NULL), layerTexConst(NULL),
|
||||
lightMapTexConst(NULL),
|
||||
squareSize(NULL), oneOverTerrainSize(NULL),
|
||||
fogDataConst(NULL), fogColorConst(NULL)
|
||||
{
|
||||
}
|
||||
GFXShaderConstBufferRef mConsts;
|
||||
|
||||
~Pass()
|
||||
{
|
||||
for ( U32 i=0; i < materials.size(); i++ )
|
||||
delete materials[i];
|
||||
}
|
||||
GFXStateBlockRef mStateBlock;
|
||||
GFXStateBlockRef mWireframeStateBlock;
|
||||
GFXStateBlockRef mReflectionStateBlock;
|
||||
|
||||
Vector<MaterialInfo*> materials;
|
||||
GFXShaderConstHandle *mModelViewProjConst;
|
||||
GFXShaderConstHandle *mWorldViewOnlyConst;
|
||||
GFXShaderConstHandle *mViewToObjConst;
|
||||
|
||||
///
|
||||
GFXShader *shader;
|
||||
GFXShaderConstHandle *mEyePosWorldConst;
|
||||
GFXShaderConstHandle *mEyePosConst;
|
||||
|
||||
GFXShaderConstBufferRef consts;
|
||||
GFXShaderConstHandle *mObjTransConst;
|
||||
GFXShaderConstHandle *mWorldToObjConst;
|
||||
GFXShaderConstHandle *mVEyeConst;
|
||||
|
||||
GFXStateBlockRef stateBlock;
|
||||
GFXStateBlockRef wireframeStateBlock;
|
||||
GFXStateBlockRef reflectionStateBlock;
|
||||
GFXShaderConstHandle *mLayerSizeConst;
|
||||
GFXShaderConstHandle *mLightParamsConst;
|
||||
GFXShaderConstHandle *mLightInfoBufferConst;
|
||||
|
||||
GFXShaderConstHandle *modelViewProjConst;
|
||||
GFXShaderConstHandle *worldViewOnly;
|
||||
GFXShaderConstHandle *viewToObj;
|
||||
GFXShaderConstHandle *mBaseTexMapConst;
|
||||
GFXShaderConstHandle *mLayerTexConst;
|
||||
|
||||
GFXShaderConstHandle *eyePosWorldConst;
|
||||
GFXShaderConstHandle *eyePosConst;
|
||||
GFXShaderConstHandle *mLightMapTexConst;
|
||||
|
||||
GFXShaderConstHandle *objTransConst;
|
||||
GFXShaderConstHandle *worldToObjConst;
|
||||
GFXShaderConstHandle *vEyeConst;
|
||||
GFXShaderConstHandle *mSquareSizeConst;
|
||||
GFXShaderConstHandle *mOneOverTerrainSizeConst;
|
||||
|
||||
GFXShaderConstHandle *layerSizeConst;
|
||||
GFXShaderConstHandle *lightParamsConst;
|
||||
GFXShaderConstHandle *lightInfoBufferConst;
|
||||
GFXShaderConstHandle* mDetailInfoVArrayConst;
|
||||
GFXShaderConstHandle* mDetailInfoPArrayConst;
|
||||
GFXShaderConstHandle* mMacroInfoVArrayConst;
|
||||
GFXShaderConstHandle* mMacroInfoPArrayConst;
|
||||
|
||||
GFXShaderConstHandle *baseTexMapConst;
|
||||
GFXShaderConstHandle *layerTexConst;
|
||||
GFXShaderConstHandle *mFogDataConst;
|
||||
GFXShaderConstHandle *mFogColorConst;
|
||||
|
||||
GFXShaderConstHandle *lightMapTexConst;
|
||||
|
||||
GFXShaderConstHandle *squareSize;
|
||||
GFXShaderConstHandle *oneOverTerrainSize;
|
||||
|
||||
GFXShaderConstHandle *fogDataConst;
|
||||
GFXShaderConstHandle *fogColorConst;
|
||||
};
|
||||
GFXShaderConstHandle *mDetailTexArrayConst;
|
||||
GFXShaderConstHandle *mMacroTexArrayConst;
|
||||
GFXShaderConstHandle *mNormalTexArrayConst;
|
||||
GFXShaderConstHandle *mOrmTexArrayConst;
|
||||
|
||||
TerrainBlock *mTerrain;
|
||||
|
||||
U64 mMaterials;
|
||||
|
||||
Vector<Pass> mPasses;
|
||||
|
||||
U32 mCurrPass;
|
||||
|
||||
U64 mMaterials;
|
||||
Vector<MaterialInfo*> mMaterialInfos;
|
||||
|
||||
static const Vector<String> mSamplerNames;
|
||||
|
||||
GFXTexHandle mBaseMapTexture;
|
||||
|
|
@ -175,14 +140,11 @@ protected:
|
|||
/// A vector of all terrain cell materials loaded in the system.
|
||||
static Vector<TerrainCellMaterial*> smAllMaterials;
|
||||
|
||||
bool _createPass( Vector<MaterialInfo*> *materials,
|
||||
Pass *pass,
|
||||
bool firstPass,
|
||||
bool deferredMat,
|
||||
bool _initShader( bool deferredMat,
|
||||
bool reflectMat,
|
||||
bool baseOnly );
|
||||
|
||||
void _updateMaterialConsts( Pass *pass );
|
||||
void _updateMaterialConsts();
|
||||
|
||||
public:
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue