diff --git a/Engine/source/gfx/D3D11/gfxD3D11Cubemap.cpp b/Engine/source/gfx/D3D11/gfxD3D11Cubemap.cpp index 38a812228..565fa8173 100644 --- a/Engine/source/gfx/D3D11/gfxD3D11Cubemap.cpp +++ b/Engine/source/gfx/D3D11/gfxD3D11Cubemap.cpp @@ -31,7 +31,6 @@ GFXD3D11Cubemap::GFXD3D11Cubemap() : mTexture(NULL), mSRView(NULL), mDSView(NULL mDynamic = false; mAutoGenMips = false; mFaceFormat = GFXFormatR8G8B8A8; - for (U32 i = 0; i < CubeFaces; i++) { for(U32 j=0; j < MaxMipMaps; j++) @@ -142,7 +141,7 @@ void GFXD3D11Cubemap::initStatic(GFXTexHandle *faces) mSRView->GetDesc(&viewDesc); mMipMapLevels = viewDesc.TextureCube.MipLevels; } - + mInitialized = true; } void GFXD3D11Cubemap::initStatic(DDSFile *dds) @@ -209,6 +208,7 @@ void GFXD3D11Cubemap::initStatic(DDSFile *dds) { AssertFatal(false, "GFXD3D11Cubemap::initStatic(DDSFile *dds) - CreateTexture2D call failure"); } + mInitialized = true; } void GFXD3D11Cubemap::initDynamic(U32 texSize, GFXFormat faceFormat, U32 mipLevels) @@ -331,7 +331,7 @@ void GFXD3D11Cubemap::initDynamic(U32 texSize, GFXFormat faceFormat, U32 mipLeve } SAFE_RELEASE(depthTex); - + mInitialized = true; } //----------------------------------------------------------------------------- diff --git a/Engine/source/gfx/gfxCubemap.cpp b/Engine/source/gfx/gfxCubemap.cpp index 8ca38899d..cf62aadf6 100644 --- a/Engine/source/gfx/gfxCubemap.cpp +++ b/Engine/source/gfx/gfxCubemap.cpp @@ -26,6 +26,13 @@ #include "gfx/gfxTextureManager.h" +GFXCubemap::GFXCubemap() +{ + mPath = ""; + mMipMapLevels = 0; + mInitialized = false; +} + GFXCubemap::~GFXCubemap() { // If we're not dynamic and we were loaded from a diff --git a/Engine/source/gfx/gfxCubemap.h b/Engine/source/gfx/gfxCubemap.h index 95ead55b5..f8ad9e31d 100644 --- a/Engine/source/gfx/gfxCubemap.h +++ b/Engine/source/gfx/gfxCubemap.h @@ -49,6 +49,7 @@ protected: U32 mMipMapLevels; + bool mInitialized; public: /// Create a static cubemap from a list of 6 face textures. @@ -61,7 +62,7 @@ public: virtual void initDynamic( U32 texSize, GFXFormat faceFormat = GFXFormatR8G8B8A8, U32 mipLevels = 0 ) = 0; void initNormalize(U32 size); - + GFXCubemap(); virtual ~GFXCubemap(); /// Returns the size of the faces. @@ -82,6 +83,7 @@ public: /// Get Z up face index of the cubemap. DDS files will be stored Y up static U32 zUpFaceIndex(const U32 index); + bool isInitialised() { return mInitialized; } }; diff --git a/Engine/source/gfx/gl/gfxGLCubemap.cpp b/Engine/source/gfx/gl/gfxGLCubemap.cpp index c7b7dd89a..d615290d7 100644 --- a/Engine/source/gfx/gl/gfxGLCubemap.cpp +++ b/Engine/source/gfx/gl/gfxGLCubemap.cpp @@ -126,6 +126,7 @@ void GFXGLCubemap::initStatic(GFXTexHandle* faces) glGenTextures(1, &mCubemap); fillCubeTextures(faces); } + mInitialized = true; } void GFXGLCubemap::initStatic( DDSFile *dds ) @@ -179,6 +180,7 @@ void GFXGLCubemap::initStatic( DDSFile *dds ) GFXGLTextureFormat[mFaceFormat], GFXGLTextureType[mFaceFormat], dds->mSurfaces[i]->mMips[mip]); } } + mInitialized = true; } void GFXGLCubemap::initDynamic(U32 texSize, GFXFormat faceFormat, U32 mipLevels) @@ -220,6 +222,7 @@ void GFXGLCubemap::initDynamic(U32 texSize, GFXFormat faceFormat, U32 mipLevels) if( !isCompressed ) glGenerateMipmap(GL_TEXTURE_CUBE_MAP); + mInitialized = true; } void GFXGLCubemap::zombify() diff --git a/Engine/source/renderInstance/renderProbeMgr.cpp b/Engine/source/renderInstance/renderProbeMgr.cpp index 6382e9fd4..bbe2ed648 100644 --- a/Engine/source/renderInstance/renderProbeMgr.cpp +++ b/Engine/source/renderInstance/renderProbeMgr.cpp @@ -353,6 +353,9 @@ void RenderProbeMgr::render( SceneRenderState *state ) if (curEntry->mCubemap.isNull() || curEntry->mIrradianceCubemap.isNull()) continue; + if (!curEntry->mCubemap->isInitialised()) + continue; + //Setup const Point3F &probePos = curEntry->getPosition(); probePositions[i] = probePos + curEntry->mProbePosOffset;