mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-15 16:44:36 +00:00
Merge remote-tracking branch 'upstream/development' into torquescript-errorPrinting
This commit is contained in:
commit
f82082f59f
15 changed files with 86 additions and 106 deletions
|
|
@ -171,7 +171,7 @@ namespace IBLUtilities
|
||||||
prefilterConsts->setSafe(prefilterRoughnessSC, roughness);
|
prefilterConsts->setSafe(prefilterRoughnessSC, roughness);
|
||||||
prefilterConsts->setSafe(prefilterMipSizeSC, mipSize);
|
prefilterConsts->setSafe(prefilterMipSizeSC, mipSize);
|
||||||
U32 size = prefilterSize * mPow(0.5f, mip);
|
U32 size = prefilterSize * mPow(0.5f, mip);
|
||||||
renderTarget->attachTexture(GFXTextureTarget::Color0, cubemapOut, face, mip);
|
renderTarget->attachTexture(GFXTextureTarget::Color0, cubemapOut, face);
|
||||||
GFX->setActiveRenderTarget(renderTarget, false);//we set the viewport ourselves
|
GFX->setActiveRenderTarget(renderTarget, false);//we set the viewport ourselves
|
||||||
GFX->setViewport(RectI(0, 0, size, size));
|
GFX->setViewport(RectI(0, 0, size, size));
|
||||||
GFX->clear(GFXClearTarget, LinearColorF::BLACK, 1.0f, 0);
|
GFX->clear(GFXClearTarget, LinearColorF::BLACK, 1.0f, 0);
|
||||||
|
|
|
||||||
|
|
@ -33,8 +33,7 @@ GFXD3D11Cubemap::GFXD3D11Cubemap() : mTexture(NULL), mSRView(NULL), mDSView(NULL
|
||||||
mFaceFormat = GFXFormatR8G8B8A8;
|
mFaceFormat = GFXFormatR8G8B8A8;
|
||||||
for (U32 i = 0; i < CubeFaces; i++)
|
for (U32 i = 0; i < CubeFaces; i++)
|
||||||
{
|
{
|
||||||
for(U32 j=0; j < MaxMipMaps; j++)
|
mRTView[i] = NULL;
|
||||||
mRTView[i][j] = NULL;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -50,8 +49,7 @@ void GFXD3D11Cubemap::releaseSurfaces()
|
||||||
|
|
||||||
for (U32 i = 0; i < CubeFaces; i++)
|
for (U32 i = 0; i < CubeFaces; i++)
|
||||||
{
|
{
|
||||||
for (U32 j = 0; j < MaxMipMaps; j++)
|
SAFE_RELEASE(mRTView[i]);
|
||||||
SAFE_RELEASE(mRTView[i][j]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SAFE_RELEASE(mDSView);
|
SAFE_RELEASE(mDSView);
|
||||||
|
|
@ -212,16 +210,16 @@ void GFXD3D11Cubemap::initStatic(DDSFile *dds)
|
||||||
|
|
||||||
void GFXD3D11Cubemap::initDynamic(U32 texSize, GFXFormat faceFormat, U32 mipLevels)
|
void GFXD3D11Cubemap::initDynamic(U32 texSize, GFXFormat faceFormat, U32 mipLevels)
|
||||||
{
|
{
|
||||||
if(!mDynamic)
|
if (!mDynamic)
|
||||||
GFXTextureManager::addEventDelegate(this, &GFXD3D11Cubemap::_onTextureEvent);
|
GFXTextureManager::addEventDelegate(this, &GFXD3D11Cubemap::_onTextureEvent);
|
||||||
|
|
||||||
mDynamic = true;
|
mDynamic = true;
|
||||||
mTexSize = texSize;
|
mTexSize = texSize;
|
||||||
mFaceFormat = faceFormat;
|
mFaceFormat = faceFormat;
|
||||||
if (!mipLevels)
|
if (!mipLevels)
|
||||||
mAutoGenMips = true;
|
mAutoGenMips = true;
|
||||||
|
|
||||||
mMipMapLevels = mipLevels;
|
mMipMapLevels = mipLevels;
|
||||||
|
|
||||||
bool compressed = ImageUtil::isCompressedFormat(mFaceFormat);
|
bool compressed = ImageUtil::isCompressedFormat(mFaceFormat);
|
||||||
|
|
||||||
|
|
@ -233,36 +231,30 @@ void GFXD3D11Cubemap::initDynamic(U32 texSize, GFXFormat faceFormat, U32 mipLeve
|
||||||
miscFlags |= D3D11_RESOURCE_MISC_GENERATE_MIPS;
|
miscFlags |= D3D11_RESOURCE_MISC_GENERATE_MIPS;
|
||||||
}
|
}
|
||||||
|
|
||||||
D3D11_TEXTURE2D_DESC desc;
|
D3D11_TEXTURE2D_DESC desc;
|
||||||
|
|
||||||
desc.Width = mTexSize;
|
desc.Width = mTexSize;
|
||||||
desc.Height = mTexSize;
|
desc.Height = mTexSize;
|
||||||
desc.MipLevels = mMipMapLevels;
|
desc.MipLevels = mMipMapLevels;
|
||||||
desc.ArraySize = 6;
|
desc.ArraySize = 6;
|
||||||
desc.Format = GFXD3D11TextureFormat[mFaceFormat];
|
desc.Format = GFXD3D11TextureFormat[mFaceFormat];
|
||||||
desc.SampleDesc.Count = 1;
|
desc.SampleDesc.Count = 1;
|
||||||
desc.SampleDesc.Quality = 0;
|
desc.SampleDesc.Quality = 0;
|
||||||
desc.Usage = D3D11_USAGE_DEFAULT;
|
desc.Usage = D3D11_USAGE_DEFAULT;
|
||||||
desc.BindFlags = bindFlags;
|
desc.BindFlags = bindFlags;
|
||||||
desc.CPUAccessFlags = 0;
|
desc.CPUAccessFlags = 0;
|
||||||
desc.MiscFlags = miscFlags;
|
desc.MiscFlags = miscFlags;
|
||||||
|
|
||||||
|
|
||||||
HRESULT hr = D3D11DEVICE->CreateTexture2D(&desc, NULL, &mTexture);
|
HRESULT hr = D3D11DEVICE->CreateTexture2D(&desc, NULL, &mTexture);
|
||||||
|
|
||||||
D3D11_SHADER_RESOURCE_VIEW_DESC SMViewDesc;
|
D3D11_SHADER_RESOURCE_VIEW_DESC SMViewDesc;
|
||||||
SMViewDesc.Format = GFXD3D11TextureFormat[mFaceFormat];
|
SMViewDesc.Format = GFXD3D11TextureFormat[mFaceFormat];
|
||||||
SMViewDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURECUBE;
|
SMViewDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURECUBE;
|
||||||
SMViewDesc.TextureCube.MipLevels = mAutoGenMips ? -1 : mMipMapLevels;
|
SMViewDesc.TextureCube.MipLevels = -1;
|
||||||
SMViewDesc.TextureCube.MostDetailedMip = 0;
|
SMViewDesc.TextureCube.MostDetailedMip = 0;
|
||||||
|
|
||||||
hr = D3D11DEVICE->CreateShaderResourceView(mTexture, &SMViewDesc, &mSRView);
|
hr = D3D11DEVICE->CreateShaderResourceView(mTexture, &SMViewDesc, &mSRView);
|
||||||
|
|
||||||
|
|
||||||
if(FAILED(hr))
|
|
||||||
{
|
|
||||||
AssertFatal(false, "GFXD3D11Cubemap::initDynamic - CreateTexture2D call failure");
|
|
||||||
}
|
|
||||||
|
|
||||||
//Generate mips
|
//Generate mips
|
||||||
if (mAutoGenMips && !compressed)
|
if (mAutoGenMips && !compressed)
|
||||||
|
|
@ -274,62 +266,37 @@ void GFXD3D11Cubemap::initDynamic(U32 texSize, GFXFormat faceFormat, U32 mipLeve
|
||||||
mMipMapLevels = viewDesc.TextureCube.MipLevels;
|
mMipMapLevels = viewDesc.TextureCube.MipLevels;
|
||||||
}
|
}
|
||||||
|
|
||||||
D3D11_RENDER_TARGET_VIEW_DESC viewDesc;
|
|
||||||
viewDesc.Format = desc.Format;
|
|
||||||
viewDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2DARRAY;
|
|
||||||
viewDesc.Texture2DArray.ArraySize = 1;
|
|
||||||
|
|
||||||
for (U32 i = 0; i < CubeFaces; i++)
|
if (FAILED(hr))
|
||||||
{
|
{
|
||||||
viewDesc.Texture2DArray.FirstArraySlice = i;
|
AssertFatal(false, "GFXD3D11Cubemap::initDynamic - CreateTexture2D call failure");
|
||||||
for (U32 j = 0; j < mMipMapLevels; j++)
|
|
||||||
{
|
|
||||||
viewDesc.Texture2DArray.MipSlice = j;
|
|
||||||
hr = D3D11DEVICE->CreateRenderTargetView(mTexture, &viewDesc, &mRTView[i][j]);
|
|
||||||
|
|
||||||
if (FAILED(hr))
|
|
||||||
{
|
|
||||||
AssertFatal(false, "GFXD3D11Cubemap::initDynamic - CreateRenderTargetView call failure");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
D3D11_TEXTURE2D_DESC depthTexDesc;
|
D3D11_RENDER_TARGET_VIEW_DESC viewDesc;
|
||||||
depthTexDesc.Width = mTexSize;
|
viewDesc.Format = desc.Format;
|
||||||
depthTexDesc.Height = mTexSize;
|
viewDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2DARRAY;
|
||||||
depthTexDesc.MipLevels = 1;
|
viewDesc.Texture2DArray.ArraySize = 1;
|
||||||
depthTexDesc.ArraySize = 1;
|
viewDesc.Texture2DArray.MipSlice = 0;
|
||||||
depthTexDesc.SampleDesc.Count = 1;
|
for (U32 i = 0; i < CubeFaces; i++)
|
||||||
depthTexDesc.SampleDesc.Quality = 0;
|
{
|
||||||
depthTexDesc.Format = DXGI_FORMAT_D32_FLOAT;
|
viewDesc.Texture2DArray.FirstArraySlice = i;
|
||||||
depthTexDesc.Usage = D3D11_USAGE_DEFAULT;
|
hr = D3D11DEVICE->CreateRenderTargetView(mTexture, &viewDesc, &mRTView[i]);
|
||||||
depthTexDesc.BindFlags = D3D11_BIND_DEPTH_STENCIL;
|
|
||||||
depthTexDesc.CPUAccessFlags = 0;
|
|
||||||
depthTexDesc.MiscFlags = 0;
|
|
||||||
|
|
||||||
ID3D11Texture2D* depthTex = 0;
|
if (FAILED(hr))
|
||||||
hr = D3D11DEVICE->CreateTexture2D(&depthTexDesc, 0, &depthTex);
|
{
|
||||||
|
AssertFatal(false, "GFXD3D11Cubemap::initDynamic - CreateRenderTargetView call failure");
|
||||||
if(FAILED(hr))
|
}
|
||||||
{
|
}
|
||||||
AssertFatal(false, "GFXD3D11Cubemap::initDynamic - CreateTexture2D for depth stencil call failure");
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Create the depth stencil view for the entire cube
|
|
||||||
D3D11_DEPTH_STENCIL_VIEW_DESC dsvDesc;
|
|
||||||
dsvDesc.Format = depthTexDesc.Format; //The format must match the depth texture we created above
|
|
||||||
dsvDesc.Flags = 0;
|
|
||||||
dsvDesc.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2D;
|
|
||||||
dsvDesc.Texture2D.MipSlice = 0;
|
|
||||||
hr = D3D11DEVICE->CreateDepthStencilView(depthTex, &dsvDesc, &mDSView);
|
|
||||||
|
|
||||||
if(FAILED(hr))
|
|
||||||
{
|
|
||||||
AssertFatal(false, "GFXD3D11Cubemap::initDynamic - CreateDepthStencilView call failure");
|
|
||||||
}
|
|
||||||
|
|
||||||
SAFE_RELEASE(depthTex);
|
|
||||||
|
|
||||||
|
void GFXD3D11Cubemap::generateMipMaps()
|
||||||
|
{
|
||||||
|
//Generate mips
|
||||||
|
D3D11DEVICECONTEXT->GenerateMips(mSRView);
|
||||||
|
//get mip level count
|
||||||
|
D3D11_SHADER_RESOURCE_VIEW_DESC viewDesc;
|
||||||
|
mSRView->GetDesc(&viewDesc);
|
||||||
|
mMipMapLevels = viewDesc.TextureCube.MipLevels;
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
@ -359,11 +326,11 @@ ID3D11ShaderResourceView* GFXD3D11Cubemap::getSRView()
|
||||||
return mSRView;
|
return mSRView;
|
||||||
}
|
}
|
||||||
|
|
||||||
ID3D11RenderTargetView* GFXD3D11Cubemap::getRTView(U32 faceIdx, U32 mipIndex)
|
ID3D11RenderTargetView* GFXD3D11Cubemap::getRTView(U32 faceIdx)
|
||||||
{
|
{
|
||||||
AssertFatal(faceIdx < CubeFaces, "GFXD3D11Cubemap::getRTView - face index out of bounds");
|
AssertFatal(faceIdx < CubeFaces, "GFXD3D11Cubemap::getRTView - face index out of bounds");
|
||||||
|
|
||||||
return mRTView[faceIdx][mipIndex];
|
return mRTView[faceIdx];
|
||||||
}
|
}
|
||||||
|
|
||||||
ID3D11DepthStencilView* GFXD3D11Cubemap::getDSView()
|
ID3D11DepthStencilView* GFXD3D11Cubemap::getDSView()
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@ public:
|
||||||
void initStatic( GFXTexHandle *faces ) override;
|
void initStatic( GFXTexHandle *faces ) override;
|
||||||
void initStatic( DDSFile *dds ) override;
|
void initStatic( DDSFile *dds ) override;
|
||||||
void initDynamic( U32 texSize, GFXFormat faceFormat = GFXFormatR8G8B8A8, U32 mipLevels = 0) override;
|
void initDynamic( U32 texSize, GFXFormat faceFormat = GFXFormatR8G8B8A8, U32 mipLevels = 0) override;
|
||||||
|
void generateMipMaps() override;
|
||||||
void setToTexUnit( U32 tuNum ) override;
|
void setToTexUnit( U32 tuNum ) override;
|
||||||
U32 getSize() const override { return mTexSize; }
|
U32 getSize() const override { return mTexSize; }
|
||||||
GFXFormat getFormat() const override { return mFaceFormat; }
|
GFXFormat getFormat() const override { return mFaceFormat; }
|
||||||
|
|
@ -52,7 +53,7 @@ public:
|
||||||
|
|
||||||
// Get functions
|
// Get functions
|
||||||
ID3D11ShaderResourceView* getSRView();
|
ID3D11ShaderResourceView* getSRView();
|
||||||
ID3D11RenderTargetView* getRTView(U32 faceIdx, U32 mipIndex=0);
|
ID3D11RenderTargetView* getRTView(U32 faceIdx);
|
||||||
ID3D11DepthStencilView* getDSView();
|
ID3D11DepthStencilView* getDSView();
|
||||||
ID3D11Texture2D* get2DTex();
|
ID3D11Texture2D* get2DTex();
|
||||||
|
|
||||||
|
|
@ -63,7 +64,7 @@ private:
|
||||||
|
|
||||||
ID3D11Texture2D* mTexture;
|
ID3D11Texture2D* mTexture;
|
||||||
ID3D11ShaderResourceView* mSRView; // for shader resource input
|
ID3D11ShaderResourceView* mSRView; // for shader resource input
|
||||||
ID3D11RenderTargetView* mRTView[CubeFaces][MaxMipMaps]; // for render targets, 6 faces of the cubemap
|
ID3D11RenderTargetView* mRTView[CubeFaces]; // for render targets, 6 faces of the cubemap
|
||||||
ID3D11DepthStencilView* mDSView; //render target view for depth stencil
|
ID3D11DepthStencilView* mDSView; //render target view for depth stencil
|
||||||
|
|
||||||
bool mAutoGenMips;
|
bool mAutoGenMips;
|
||||||
|
|
|
||||||
|
|
@ -217,7 +217,7 @@ void GFXD3D11TextureTarget::attachTexture( RenderSlot slot, GFXCubemap *tex, U32
|
||||||
|
|
||||||
mTargets[slot] = cube->get2DTex();
|
mTargets[slot] = cube->get2DTex();
|
||||||
mTargets[slot]->AddRef();
|
mTargets[slot]->AddRef();
|
||||||
mTargetViews[slot] = cube->getRTView(face, mipLevel);
|
mTargetViews[slot] = cube->getRTView(face);
|
||||||
mTargetViews[slot]->AddRef();
|
mTargetViews[slot]->AddRef();
|
||||||
mTargetSRViews[slot] = cube->getSRView();
|
mTargetSRViews[slot] = cube->getSRView();
|
||||||
mTargetSRViews[slot]->AddRef();
|
mTargetSRViews[slot]->AddRef();
|
||||||
|
|
|
||||||
|
|
@ -162,6 +162,7 @@ public:
|
||||||
void initStatic( GFXTexHandle *faces ) override { };
|
void initStatic( GFXTexHandle *faces ) override { };
|
||||||
void initStatic( DDSFile *dds ) override { };
|
void initStatic( DDSFile *dds ) override { };
|
||||||
void initDynamic( U32 texSize, GFXFormat faceFormat = GFXFormatR8G8B8A8, U32 mipLevels = 0) override { };
|
void initDynamic( U32 texSize, GFXFormat faceFormat = GFXFormatR8G8B8A8, U32 mipLevels = 0) override { };
|
||||||
|
void generateMipMaps() override {}
|
||||||
U32 getSize() const override { return 0; }
|
U32 getSize() const override { return 0; }
|
||||||
GFXFormat getFormat() const override { return GFXFormatR8G8B8A8; }
|
GFXFormat getFormat() const override { return GFXFormatR8G8B8A8; }
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@
|
||||||
#ifndef _H_IES_LOADER_H_
|
#ifndef _H_IES_LOADER_H_
|
||||||
#define _H_IES_LOADER_H_
|
#define _H_IES_LOADER_H_
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -70,6 +70,7 @@ public:
|
||||||
/// Returns the size of the faces.
|
/// Returns the size of the faces.
|
||||||
virtual U32 getSize() const = 0;
|
virtual U32 getSize() const = 0;
|
||||||
|
|
||||||
|
virtual void generateMipMaps() = 0;
|
||||||
/// Returns the face texture format.
|
/// Returns the face texture format.
|
||||||
virtual GFXFormat getFormat() const = 0;
|
virtual GFXFormat getFormat() const = 0;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -225,6 +225,10 @@ void GFXGLCubemap::initDynamic(U32 texSize, GFXFormat faceFormat, U32 mipLevels)
|
||||||
mInitialized = true;
|
mInitialized = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GFXGLCubemap::generateMipMaps()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void GFXGLCubemap::zombify()
|
void GFXGLCubemap::zombify()
|
||||||
{
|
{
|
||||||
glDeleteTextures(1, &mCubemap);
|
glDeleteTextures(1, &mCubemap);
|
||||||
|
|
|
||||||
|
|
@ -43,6 +43,7 @@ public:
|
||||||
void initStatic( GFXTexHandle *faces ) override;
|
void initStatic( GFXTexHandle *faces ) override;
|
||||||
void initStatic( DDSFile *dds ) override;
|
void initStatic( DDSFile *dds ) override;
|
||||||
void initDynamic( U32 texSize, GFXFormat faceFormat = GFXFormatR8G8B8A8, U32 mipLevels = 0) override;
|
void initDynamic( U32 texSize, GFXFormat faceFormat = GFXFormatR8G8B8A8, U32 mipLevels = 0) override;
|
||||||
|
void generateMipMaps() override;
|
||||||
U32 getSize() const override { return mWidth; }
|
U32 getSize() const override { return mWidth; }
|
||||||
GFXFormat getFormat() const override { return mFaceFormat; }
|
GFXFormat getFormat() const override { return mFaceFormat; }
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -329,7 +329,8 @@ void ProcessedShaderMaterial::_determineFeatures( U32 stageNum,
|
||||||
if (String::compare(LIGHTMGR->getId(), "BLM") == 0)
|
if (String::compare(LIGHTMGR->getId(), "BLM") == 0)
|
||||||
{
|
{
|
||||||
fd.features.addFeature(MFT_ForwardShading);
|
fd.features.addFeature(MFT_ForwardShading);
|
||||||
fd.features.addFeature(MFT_ReflectionProbes);
|
if (!mMaterial->mDynamicCubemap)
|
||||||
|
fd.features.addFeature(MFT_ReflectionProbes);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Disabling the InterlacedDeferred feature for now. It is not ready for prime-time
|
// Disabling the InterlacedDeferred feature for now. It is not ready for prime-time
|
||||||
|
|
@ -357,7 +358,8 @@ void ProcessedShaderMaterial::_determineFeatures( U32 stageNum,
|
||||||
if (mMaterial->isTranslucent())
|
if (mMaterial->isTranslucent())
|
||||||
{
|
{
|
||||||
fd.features.addFeature(MFT_RTLighting);
|
fd.features.addFeature(MFT_RTLighting);
|
||||||
fd.features.addFeature(MFT_ReflectionProbes);
|
if (!mMaterial->mDynamicCubemap)
|
||||||
|
fd.features.addFeature(MFT_ReflectionProbes);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( mMaterial->mAnimFlags[stageNum] )
|
if ( mMaterial->mAnimFlags[stageNum] )
|
||||||
|
|
@ -369,7 +371,7 @@ void ProcessedShaderMaterial::_determineFeatures( U32 stageNum,
|
||||||
// cubemaps only available on stage 0 for now - bramage
|
// cubemaps only available on stage 0 for now - bramage
|
||||||
if ( stageNum < 1 && mMaterial->isTranslucent() &&
|
if ( stageNum < 1 && mMaterial->isTranslucent() &&
|
||||||
( ( mMaterial->mCubemapData && mMaterial->mCubemapData->mCubemap ) ||
|
( ( mMaterial->mCubemapData && mMaterial->mCubemapData->mCubemap ) ||
|
||||||
mMaterial->mDynamicCubemap ) && !features.hasFeature(MFT_ReflectionProbes))
|
mMaterial->mDynamicCubemap ) /*&& !features.hasFeature(MFT_ReflectionProbes) */ )
|
||||||
{
|
{
|
||||||
fd.features.addFeature( MFT_CubeMap );
|
fd.features.addFeature( MFT_CubeMap );
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -618,9 +618,10 @@ void RenderProbeMgr::bakeProbe(ReflectionProbe* probe)
|
||||||
clientProbe->mPrefilterMap->mCubemap->initDynamic(resolution, reflectFormat);
|
clientProbe->mPrefilterMap->mCubemap->initDynamic(resolution, reflectFormat);
|
||||||
|
|
||||||
GFXTextureTargetRef renderTarget = GFX->allocRenderToTextureTarget(false);
|
GFXTextureTargetRef renderTarget = GFX->allocRenderToTextureTarget(false);
|
||||||
|
clientProbe->mPrefilterMap->mCubemap = cubeRefl.getCubemap();
|
||||||
|
|
||||||
IBLUtilities::GenerateIrradianceMap(renderTarget, cubeRefl.getCubemap(), clientProbe->mIrridianceMap->mCubemap);
|
IBLUtilities::GenerateIrradianceMap(renderTarget, cubeRefl.getCubemap(), clientProbe->mIrridianceMap->mCubemap);
|
||||||
IBLUtilities::GeneratePrefilterMap(renderTarget, cubeRefl.getCubemap(), prefilterMipLevels, clientProbe->mPrefilterMap->mCubemap);
|
//IBLUtilities::GeneratePrefilterMap(renderTarget, cubeRefl.getCubemap(), prefilterMipLevels, clientProbe->mPrefilterMap->mCubemap);
|
||||||
|
|
||||||
U32 endMSTime = Platform::getRealMilliseconds();
|
U32 endMSTime = Platform::getRealMilliseconds();
|
||||||
F32 diffTime = F32(endMSTime - startMSTime);
|
F32 diffTime = F32(endMSTime - startMSTime);
|
||||||
|
|
|
||||||
|
|
@ -339,6 +339,7 @@ void CubeReflector::updateReflection( const ReflectParams ¶ms, Point3F expli
|
||||||
for ( U32 i = 0; i < 6; i++ )
|
for ( U32 i = 0; i < 6; i++ )
|
||||||
updateFace( params, i, explicitPostion);
|
updateFace( params, i, explicitPostion);
|
||||||
|
|
||||||
|
mCubemap->generateMipMaps();
|
||||||
|
|
||||||
GFX->popActiveRenderTarget();
|
GFX->popActiveRenderTarget();
|
||||||
|
|
||||||
|
|
@ -531,7 +532,7 @@ F32 PlaneReflector::calcScore( const ReflectParams ¶ms )
|
||||||
return score;
|
return score;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PlaneReflector::updateReflection( const ReflectParams ¶ms )
|
void PlaneReflector::updateReflection( const ReflectParams ¶ms, Point3F explicitPostion)
|
||||||
{
|
{
|
||||||
PROFILE_SCOPE(PlaneReflector_updateReflection);
|
PROFILE_SCOPE(PlaneReflector_updateReflection);
|
||||||
GFXDEBUGEVENT_SCOPE( PlaneReflector_updateReflection, ColorI::WHITE );
|
GFXDEBUGEVENT_SCOPE( PlaneReflector_updateReflection, ColorI::WHITE );
|
||||||
|
|
|
||||||
|
|
@ -97,7 +97,7 @@ public:
|
||||||
|
|
||||||
virtual void unregisterReflector();
|
virtual void unregisterReflector();
|
||||||
virtual F32 calcScore( const ReflectParams ¶ms );
|
virtual F32 calcScore( const ReflectParams ¶ms );
|
||||||
virtual void updateReflection( const ReflectParams ¶ms ) {}
|
virtual void updateReflection( const ReflectParams ¶ms, Point3F explicitPostion = Point3F::Max) {}
|
||||||
|
|
||||||
GFXOcclusionQuery* getOcclusionQuery() const { return mOcclusionQuery; }
|
GFXOcclusionQuery* getOcclusionQuery() const { return mOcclusionQuery; }
|
||||||
|
|
||||||
|
|
@ -151,7 +151,7 @@ public:
|
||||||
ReflectorDesc *inDesc );
|
ReflectorDesc *inDesc );
|
||||||
|
|
||||||
void unregisterReflector() override;
|
void unregisterReflector() override;
|
||||||
virtual void updateReflection( const ReflectParams ¶ms, Point3F explicitPostion = Point3F::Max);
|
void updateReflection( const ReflectParams ¶ms, Point3F explicitPostion = Point3F::Max) override;
|
||||||
|
|
||||||
GFXCubemap* getCubemap() const { return mCubemap; }
|
GFXCubemap* getCubemap() const { return mCubemap; }
|
||||||
|
|
||||||
|
|
@ -174,7 +174,7 @@ protected:
|
||||||
U32 faceIdx;
|
U32 faceIdx;
|
||||||
CubeReflector *cube;
|
CubeReflector *cube;
|
||||||
|
|
||||||
void updateReflection( const ReflectParams ¶ms ) override { cube->updateFace( params, faceIdx ); }
|
void updateReflection( const ReflectParams ¶ms, Point3F explicitPostion = Point3F::Max) override { cube->updateFace( params, faceIdx ); }
|
||||||
F32 calcScore( const ReflectParams ¶ms ) override;
|
F32 calcScore( const ReflectParams ¶ms ) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -201,7 +201,7 @@ public:
|
||||||
ReflectorDesc *inDesc );
|
ReflectorDesc *inDesc );
|
||||||
|
|
||||||
F32 calcScore( const ReflectParams ¶ms ) override;
|
F32 calcScore( const ReflectParams ¶ms ) override;
|
||||||
void updateReflection( const ReflectParams ¶ms ) override;
|
void updateReflection( const ReflectParams ¶ms, Point3F explicitPostion = Point3F::Max) override;
|
||||||
|
|
||||||
/// Set up the GFX matrices
|
/// Set up the GFX matrices
|
||||||
void setGFXMatrices( const MatrixF &camTrans );
|
void setGFXMatrices( const MatrixF &camTrans );
|
||||||
|
|
|
||||||
|
|
@ -1922,9 +1922,9 @@ void ReflectCubeFeatGLSL::processPix( Vector<ShaderComponent*> &componentList,
|
||||||
Var* matinfo = (Var*) LangElement::find( getOutputTargetVarName(ShaderFeature::RenderTarget2) );
|
Var* matinfo = (Var*) LangElement::find( getOutputTargetVarName(ShaderFeature::RenderTarget2) );
|
||||||
Var *roughness = (Var*)LangElement::find("roughness");
|
Var *roughness = (Var*)LangElement::find("roughness");
|
||||||
if (roughness) //try to grab roughness directly
|
if (roughness) //try to grab roughness directly
|
||||||
texCube = new GenOp("textureLod( @, @, min((1.0 - @)*@ + 1.0, @))", cubeMap, reflectVec, roughness, cubeMips, cubeMips);
|
texCube = new GenOp("textureLod( @, @, min(@*@ + 1.0, @))", cubeMap, reflectVec, roughness, cubeMips, cubeMips);
|
||||||
else if (glossColor) //failing that, try and find color data
|
else if (glossColor) //failing that, try and find color data
|
||||||
texCube = new GenOp("textureLod( @, @, min((1.0 - @.b)*@ + 1.0, @))", cubeMap, reflectVec, glossColor, cubeMips, cubeMips);
|
texCube = new GenOp("textureLod( @, @, min(@.b*@ + 1.0, @))", cubeMap, reflectVec, glossColor, cubeMips, cubeMips);
|
||||||
else //failing *that*, just draw the cubemap
|
else //failing *that*, just draw the cubemap
|
||||||
texCube = new GenOp("texture( @, @)", cubeMap, reflectVec);
|
texCube = new GenOp("texture( @, @)", cubeMap, reflectVec);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1987,11 +1987,11 @@ void ReflectCubeFeatHLSL::processPix( Vector<ShaderComponent*> &componentList,
|
||||||
|
|
||||||
if (roughness) //try to grab roughness directly
|
if (roughness) //try to grab roughness directly
|
||||||
{
|
{
|
||||||
texCube = new GenOp("@.SampleLevel( @, float3(@).rgb, min((1.0 - @)*@ + 1.0, @))", cubeMapTex, cubeMap, reflectVec, roughness, cubeMips, cubeMips);
|
texCube = new GenOp("@.SampleLevel( @, float3(@).rgb, min(@*@ + 1.0, @))", cubeMapTex, cubeMap, reflectVec, roughness, cubeMips, cubeMips);
|
||||||
}
|
}
|
||||||
else if (glossColor)//failing that, try and find color data
|
else if (glossColor)//failing that, try and find color data
|
||||||
{
|
{
|
||||||
texCube = new GenOp("@.SampleLevel( @, float3(@).rgb, min((1.0 - @.b)*@ + 1.0, @))", cubeMapTex, cubeMap, reflectVec, glossColor, cubeMips, cubeMips);
|
texCube = new GenOp("@.SampleLevel( @, float3(@).rgb, min(@.b*@ + 1.0, @))", cubeMapTex, cubeMap, reflectVec, glossColor, cubeMips, cubeMips);
|
||||||
}
|
}
|
||||||
else //failing *that*, just draw the cubemap
|
else //failing *that*, just draw the cubemap
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue