mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-02-13 03:33:48 +00:00
DDS cubemap support
This commit is contained in:
parent
e3145d8f5d
commit
8bdccb3ff3
2 changed files with 50 additions and 17 deletions
|
|
@ -27,13 +27,14 @@
|
|||
#include "console/consoleTypes.h"
|
||||
#include "gfx/gfxCubemap.h"
|
||||
#include "gfx/gfxDevice.h"
|
||||
#include "gfx/gfxTextureManager.h"
|
||||
#include "gfx/gfxTransformSaver.h"
|
||||
#include "gfx/gfxDebugEvent.h"
|
||||
#include "gfx/gfxAPI.h"
|
||||
#include "scene/sceneManager.h"
|
||||
#include "console/engineAPI.h"
|
||||
#include "math/mathUtils.h"
|
||||
|
||||
|
||||
IMPLEMENT_CONOBJECT( CubemapData );
|
||||
|
||||
CubemapData::CubemapData()
|
||||
|
|
@ -76,7 +77,10 @@ void CubemapData::initPersistFields()
|
|||
" - cubeFace[3] is +Z\n"
|
||||
" - cubeFace[4] 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()
|
||||
|
|
@ -95,21 +99,31 @@ void CubemapData::createMap()
|
|||
if( !mCubemap )
|
||||
{
|
||||
bool initSuccess = true;
|
||||
|
||||
for( U32 i=0; i<6; i++ )
|
||||
//check mCubeMapFile first
|
||||
if (!mCubeMapFile.isEmpty())
|
||||
{
|
||||
if( !mCubeFaceFile[i].isEmpty() )
|
||||
{
|
||||
if(!mCubeFace[i].set(mCubeFaceFile[i], &GFXStaticTextureSRGBProfile, avar("%s() - mCubeFace[%d] (line %d)", __FUNCTION__, i, __LINE__) ))
|
||||
{
|
||||
mCubemap = TEXMGR->createCubemap(mCubeMapFile);
|
||||
return;
|
||||
}
|
||||
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());
|
||||
initSuccess = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if( initSuccess )
|
||||
{
|
||||
mCubemap = GFX->createCubemap();
|
||||
if (mCubeFace == NULL || mCubeFace->isNull()) return;
|
||||
mCubemap->initStatic( mCubeFace );
|
||||
}
|
||||
}
|
||||
|
|
@ -121,12 +135,21 @@ void CubemapData::updateFaces()
|
|||
|
||||
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;
|
||||
Con::errorf("CubemapData::createMap - Failed to load texture '%s'", mCubeFaceFile[i].c_str());
|
||||
if (!mCubeFace[i].set(mCubeFaceFile[i], &GFXStaticTextureProfile, avar("%s() - mCubeFace[%d] (line %d)", __FUNCTION__, i, __LINE__)))
|
||||
{
|
||||
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, (),,
|
||||
"Update the assigned cubemaps faces." )
|
||||
{
|
||||
|
|
@ -151,4 +182,4 @@ DefineEngineMethod( CubemapData, getFilename, const char*, (),,
|
|||
"defined. This is used by the material editor." )
|
||||
{
|
||||
return object->getFilename();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue