mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-13 15:44:36 +00:00
Merge pull request #2034 from rextimmy/dds_cubemaps
DDS CubemapData support
This commit is contained in:
commit
fcd162450e
2 changed files with 50 additions and 17 deletions
|
|
@ -27,13 +27,14 @@
|
||||||
#include "console/consoleTypes.h"
|
#include "console/consoleTypes.h"
|
||||||
#include "gfx/gfxCubemap.h"
|
#include "gfx/gfxCubemap.h"
|
||||||
#include "gfx/gfxDevice.h"
|
#include "gfx/gfxDevice.h"
|
||||||
|
#include "gfx/gfxTextureManager.h"
|
||||||
#include "gfx/gfxTransformSaver.h"
|
#include "gfx/gfxTransformSaver.h"
|
||||||
#include "gfx/gfxDebugEvent.h"
|
#include "gfx/gfxDebugEvent.h"
|
||||||
|
#include "gfx/gfxAPI.h"
|
||||||
#include "scene/sceneManager.h"
|
#include "scene/sceneManager.h"
|
||||||
#include "console/engineAPI.h"
|
#include "console/engineAPI.h"
|
||||||
#include "math/mathUtils.h"
|
#include "math/mathUtils.h"
|
||||||
|
|
||||||
|
|
||||||
IMPLEMENT_CONOBJECT( CubemapData );
|
IMPLEMENT_CONOBJECT( CubemapData );
|
||||||
|
|
||||||
CubemapData::CubemapData()
|
CubemapData::CubemapData()
|
||||||
|
|
@ -76,7 +77,10 @@ void CubemapData::initPersistFields()
|
||||||
" - cubeFace[3] is +Z\n"
|
" - cubeFace[3] is +Z\n"
|
||||||
" - cubeFace[4] is -Y\n"
|
" - cubeFace[4] is -Y\n"
|
||||||
" - cubeFace[5] is +Y\n" );
|
" - cubeFace[5] is +Y\n" );
|
||||||
Parent::initPersistFields();
|
|
||||||
|
addField("cubeMap", TypeStringFilename, Offset(mCubeMapFile, CubemapData),
|
||||||
|
"@brief Cubemap dds file.\n\n");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CubemapData::onAdd()
|
bool CubemapData::onAdd()
|
||||||
|
|
@ -95,21 +99,31 @@ void CubemapData::createMap()
|
||||||
if( !mCubemap )
|
if( !mCubemap )
|
||||||
{
|
{
|
||||||
bool initSuccess = true;
|
bool initSuccess = true;
|
||||||
|
//check mCubeMapFile first
|
||||||
for( U32 i=0; i<6; i++ )
|
if (!mCubeMapFile.isEmpty())
|
||||||
{
|
{
|
||||||
if( !mCubeFaceFile[i].isEmpty() )
|
mCubemap = TEXMGR->createCubemap(mCubeMapFile);
|
||||||
{
|
return;
|
||||||
if(!mCubeFace[i].set(mCubeFaceFile[i], &GFXStaticTextureSRGBProfile, avar("%s() - mCubeFace[%d] (line %d)", __FUNCTION__, i, __LINE__) ))
|
}
|
||||||
{
|
else
|
||||||
|
{
|
||||||
|
for (U32 i = 0; i < 6; i++)
|
||||||
|
{
|
||||||
|
if (!mCubeFaceFile[i].isEmpty())
|
||||||
|
{
|
||||||
|
if (!mCubeFace[i].set(mCubeFaceFile[i], &GFXStaticTextureSRGBProfile, avar("%s() - mCubeFace[%d] (line %d)", __FUNCTION__, i, __LINE__)))
|
||||||
|
{
|
||||||
Con::errorf("CubemapData::createMap - Failed to load texture '%s'", mCubeFaceFile[i].c_str());
|
Con::errorf("CubemapData::createMap - Failed to load texture '%s'", mCubeFaceFile[i].c_str());
|
||||||
initSuccess = false;
|
initSuccess = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( initSuccess )
|
if( initSuccess )
|
||||||
{
|
{
|
||||||
mCubemap = GFX->createCubemap();
|
mCubemap = GFX->createCubemap();
|
||||||
|
if (mCubeFace == NULL || mCubeFace->isNull()) return;
|
||||||
mCubemap->initStatic( mCubeFace );
|
mCubemap->initStatic( mCubeFace );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -121,12 +135,21 @@ void CubemapData::updateFaces()
|
||||||
|
|
||||||
for( U32 i=0; i<6; i++ )
|
for( U32 i=0; i<6; i++ )
|
||||||
{
|
{
|
||||||
if( !mCubeFaceFile[i].isEmpty() )
|
//check mCubeMapFile first
|
||||||
|
if (!mCubeMapFile.isEmpty())
|
||||||
{
|
{
|
||||||
if(!mCubeFace[i].set(mCubeFaceFile[i], &GFXStaticTextureProfile, avar("%s() - mCubeFace[%d] (line %d)", __FUNCTION__, i, __LINE__) ))
|
mCubemap = TEXMGR->createCubemap(mCubeMapFile);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!mCubeFaceFile[i].isEmpty())
|
||||||
{
|
{
|
||||||
initSuccess = false;
|
if (!mCubeFace[i].set(mCubeFaceFile[i], &GFXStaticTextureProfile, avar("%s() - mCubeFace[%d] (line %d)", __FUNCTION__, i, __LINE__)))
|
||||||
Con::errorf("CubemapData::createMap - Failed to load texture '%s'", mCubeFaceFile[i].c_str());
|
{
|
||||||
|
initSuccess = false;
|
||||||
|
Con::errorf("CubemapData::createMap - Failed to load texture '%s'", mCubeFaceFile[i].c_str());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -140,6 +163,14 @@ void CubemapData::updateFaces()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CubemapData::setCubeFaceFile(U32 index, FileName newFaceFile)
|
||||||
|
{
|
||||||
|
if (index >= 6)
|
||||||
|
return;
|
||||||
|
|
||||||
|
mCubeFaceFile[index] = newFaceFile;
|
||||||
|
}
|
||||||
|
|
||||||
DefineEngineMethod( CubemapData, updateFaces, void, (),,
|
DefineEngineMethod( CubemapData, updateFaces, void, (),,
|
||||||
"Update the assigned cubemaps faces." )
|
"Update the assigned cubemaps faces." )
|
||||||
{
|
{
|
||||||
|
|
@ -151,4 +182,4 @@ DefineEngineMethod( CubemapData, getFilename, const char*, (),,
|
||||||
"defined. This is used by the material editor." )
|
"defined. This is used by the material editor." )
|
||||||
{
|
{
|
||||||
return object->getFilename();
|
return object->getFilename();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -63,8 +63,11 @@ public:
|
||||||
// Update a static cubemap @ pos
|
// Update a static cubemap @ pos
|
||||||
void updateFaces();
|
void updateFaces();
|
||||||
|
|
||||||
protected:
|
void setCubeFaceFile(U32 index, FileName newFaceFile);
|
||||||
|
GFXTexHandle* getCubeMapFace(U32 faceIdx) { return &mCubeFace[faceIdx]; }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
FileName mCubeMapFile;
|
||||||
FileName mCubeFaceFile[6];
|
FileName mCubeFaceFile[6];
|
||||||
GFXTexHandle mCubeFace[6];
|
GFXTexHandle mCubeFace[6];
|
||||||
|
|
||||||
|
|
@ -73,4 +76,3 @@ protected:
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // CUBEMAPDATA
|
#endif // CUBEMAPDATA
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue