mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-11 06:34:36 +00:00
shift pbrconfig to ORM
This commit is contained in:
parent
22b0785c73
commit
0c7811bd1a
54 changed files with 879 additions and 680 deletions
|
|
@ -633,16 +633,16 @@ void ProcessedDeferredMaterial::_determineFeatures( U32 stageNum,
|
|||
}
|
||||
newFeatures.addFeature( MFT_DiffuseColor );
|
||||
|
||||
if (mMaterial->mInvertSmoothness[stageNum])
|
||||
newFeatures.addFeature(MFT_InvertSmoothness);
|
||||
if (mMaterial->mInvertRoughness[stageNum])
|
||||
newFeatures.addFeature(MFT_InvertRoughness);
|
||||
|
||||
// Deferred Shading : PBR Config
|
||||
if( mStages[stageNum].getTex( MFT_PBRConfigMap ) )
|
||||
if( mStages[stageNum].getTex( MFT_OrmMap ) )
|
||||
{
|
||||
newFeatures.addFeature( MFT_PBRConfigMap );
|
||||
newFeatures.addFeature( MFT_OrmMap );
|
||||
}
|
||||
else
|
||||
newFeatures.addFeature( MFT_PBRConfigVars );
|
||||
newFeatures.addFeature( MFT_ORMConfigVars );
|
||||
|
||||
if (mStages[stageNum].getTex(MFT_GlowMap))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -204,7 +204,8 @@ RenderProbeMgr::RenderProbeMgr()
|
|||
mHasSkylight(false),
|
||||
mSkylightCubemapIdx(-1),
|
||||
mCubeMapCount(0),
|
||||
mDefaultSkyLight(nullptr)
|
||||
mDefaultSkyLight(nullptr),
|
||||
mBakeRenderTarget(nullptr)
|
||||
{
|
||||
mEffectiveProbeCount = 0;
|
||||
mMipCount = 0;
|
||||
|
|
@ -462,7 +463,7 @@ void RenderProbeMgr::_setupStaticParameters()
|
|||
continue;
|
||||
|
||||
U32 mips = mRegisteredProbes[i].mPrefilterCubemap.getPointer()->getMipMapLevels();
|
||||
mMipCount = mips != 0 && mips >= mMipCount ? mips : 0;
|
||||
mMipCount = (mips != 0 && mips >= mMipCount) ? mips : 0;
|
||||
|
||||
if (curEntry.mIsSkylight)
|
||||
{
|
||||
|
|
@ -853,7 +854,7 @@ void RenderProbeMgr::render( SceneRenderState *state )
|
|||
//PROFILE_END();
|
||||
}
|
||||
|
||||
void RenderProbeMgr::bakeProbe(ReflectionProbe *probe, bool writeFiles)
|
||||
void RenderProbeMgr::bakeProbe(ReflectionProbe* probe, bool writeFiles)
|
||||
{
|
||||
GFXDEBUGEVENT_SCOPE(RenderProbeMgr_Bake, ColorI::WHITE);
|
||||
|
||||
|
|
@ -862,7 +863,7 @@ void RenderProbeMgr::bakeProbe(ReflectionProbe *probe, bool writeFiles)
|
|||
|
||||
String path = Con::getVariable("$pref::ReflectionProbes::CurrentLevelPath", "levels/");
|
||||
U32 resolution = Con::getIntVariable("$pref::ReflectionProbes::BakeResolution", 64);
|
||||
U32 prefilterMipLevels = mLog2(F32(resolution));
|
||||
U32 prefilterMipLevels = mLog2(F32(resolution))+1;
|
||||
bool renderWithProbes = Con::getIntVariable("$pref::ReflectionProbes::RenderWithProbes", false);
|
||||
|
||||
ReflectionProbe* clientProbe = nullptr;
|
||||
|
|
@ -957,12 +958,13 @@ void RenderProbeMgr::bakeProbe(ReflectionProbe *probe, bool writeFiles)
|
|||
clientProbe->mIrridianceMap->mCubemap->initDynamic(resolution, reflectFormat);
|
||||
clientProbe->mPrefilterMap->mCubemap->initDynamic(resolution, reflectFormat);
|
||||
|
||||
GFXTextureTargetRef renderTarget = GFX->allocRenderToTextureTarget(false);
|
||||
if (mBakeRenderTarget == nullptr)
|
||||
mBakeRenderTarget = GFX->allocRenderToTextureTarget(false);
|
||||
else
|
||||
mBakeRenderTarget->resurrect();
|
||||
|
||||
IBLUtilities::GenerateIrradianceMap(renderTarget, cubeRefl.getCubemap(), clientProbe->mIrridianceMap->mCubemap);
|
||||
IBLUtilities::GeneratePrefilterMap(renderTarget, cubeRefl.getCubemap(), prefilterMipLevels, clientProbe->mPrefilterMap->mCubemap);
|
||||
|
||||
renderTarget->destroySelf();
|
||||
IBLUtilities::GenerateIrradianceMap(mBakeRenderTarget, cubeRefl.getCubemap(), clientProbe->mIrridianceMap->mCubemap);
|
||||
IBLUtilities::GeneratePrefilterMap(mBakeRenderTarget, cubeRefl.getCubemap(), prefilterMipLevels, clientProbe->mPrefilterMap->mCubemap);
|
||||
|
||||
U32 endMSTime = Platform::getRealMilliseconds();
|
||||
F32 diffTime = F32(endMSTime - startMSTime);
|
||||
|
|
@ -975,12 +977,15 @@ void RenderProbeMgr::bakeProbe(ReflectionProbe *probe, bool writeFiles)
|
|||
IBLUtilities::SaveCubeMap(clientProbe->getIrradianceMapPath(), clientProbe->mIrridianceMap->mCubemap);
|
||||
IBLUtilities::SaveCubeMap(clientProbe->getPrefilterMapPath(), clientProbe->mPrefilterMap->mCubemap);
|
||||
}
|
||||
|
||||
mBakeRenderTarget->zombify();
|
||||
}
|
||||
else
|
||||
{
|
||||
Con::errorf("RenderProbeMgr::bake() - Didn't generate a valid scene capture cubemap, unable to generate prefilter and irradiance maps!");
|
||||
}
|
||||
|
||||
|
||||
if (!renderWithProbes)
|
||||
RenderProbeMgr::smRenderReflectionProbes = probeRenderState;
|
||||
|
||||
|
|
|
|||
|
|
@ -280,6 +280,8 @@ private:
|
|||
|
||||
GFXTexHandle mBRDFTexture;
|
||||
|
||||
GFXTextureTargetRef mBakeRenderTarget;
|
||||
|
||||
public:
|
||||
RenderProbeMgr();
|
||||
RenderProbeMgr(RenderInstType riType, F32 renderOrder, F32 processAddOrder);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue