mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-02-17 21:53:47 +00:00
Merge branch 'PBR_PR' of https://github.com/rextimmy/Torque3D into PBR_PR
This commit is contained in:
commit
e4eff8a7ec
52 changed files with 1318 additions and 592 deletions
|
|
@ -616,7 +616,7 @@ bool ReflectionProbe::createClientResources()
|
|||
//brdf lookup resources
|
||||
//make the brdf lookup texture the same size as the prefilter texture
|
||||
|
||||
String brdfPath = Con::getVariable("$Core::BRDFTexture", "core/art/brdfTexture.DDS");
|
||||
String brdfPath = Con::getVariable("$Core::BRDFTexture", "core/art/brdfTexture.dds");
|
||||
|
||||
mBrdfTexture = TEXMGR->createTexture(brdfPath, &GFXTexturePersistentProfile);// TEXMGR->createTexture(mPrefilterSize, mPrefilterSize, GFXFormatR16G16B16A16F, &GFXRenderTargetProfile, 1, 0);
|
||||
|
||||
|
|
|
|||
|
|
@ -619,6 +619,7 @@ namespace dds
|
|||
//float
|
||||
case D3DFMT_R16F: return GFXFormatR16F;
|
||||
case D3DFMT_R32F: return GFXFormatR32F;
|
||||
case D3DFMT_G16R16F: return GFXFormatR16G16F;
|
||||
case D3DFMT_A16B16G16R16F: return GFXFormatR16G16B16A16F;
|
||||
case D3DFMT_A32B32G32R32F: return GFXFormatR32G32B32A32F;
|
||||
//compressed
|
||||
|
|
@ -655,6 +656,7 @@ namespace dds
|
|||
//float
|
||||
case DXGI_FORMAT_R16_FLOAT: return GFXFormatR16F;
|
||||
case DXGI_FORMAT_R32_FLOAT: return GFXFormatR32F;
|
||||
case DXGI_FORMAT_R16G16_FLOAT: return GFXFormatR16G16F;
|
||||
case DXGI_FORMAT_R16G16B16A16_FLOAT: return GFXFormatR16G16B16A16F;
|
||||
case DXGI_FORMAT_R32G32B32A32_FLOAT: return GFXFormatR32G32B32A32F;
|
||||
//compressed
|
||||
|
|
@ -731,6 +733,7 @@ namespace dds
|
|||
case D3DFMT_ATI2: return GFXFormatBC5;
|
||||
case D3DFMT_A16B16G16R16F: return GFXFormatR16G16B16A16F;
|
||||
case D3DFMT_A32B32G32R32F: return GFXFormatR32G32B32A32F;
|
||||
case D3DFMT_G16R16F: return GFXFormatR16G16F;
|
||||
default:
|
||||
{
|
||||
Con::errorf("dds::getGFXFormatFourcc: unknown format");
|
||||
|
|
|
|||
|
|
@ -592,7 +592,7 @@ ProbeManager::SkylightMaterialInfo* ProbeManager::getSkylightMaterial()
|
|||
if (!mSkylightMaterial)
|
||||
|
||||
// Now create the material info object.
|
||||
mSkylightMaterial = new SkylightMaterialInfo("SklyightMaterial",
|
||||
mSkylightMaterial = new SkylightMaterialInfo("SkyLightMaterial",
|
||||
getGFXVertexFormat<GFXVertexPC>());
|
||||
|
||||
return mSkylightMaterial;
|
||||
|
|
@ -896,62 +896,35 @@ void ProbeManager::ReflectProbeMaterialInfo::setProbeParameters(const ProbeRende
|
|||
matParams->setSafe(attenuation, attenParams);
|
||||
|
||||
NamedTexTarget* deferredTexTarget = NamedTexTarget::find("deferred");
|
||||
NamedTexTarget* matInfoTexTarget = NamedTexTarget::find("matinfo");
|
||||
NamedTexTarget* colorTexTarget = NamedTexTarget::find("color");
|
||||
|
||||
GFXTextureObject *deferredTexObject = deferredTexTarget->getTexture();
|
||||
if (!deferredTexObject) return;
|
||||
if (!deferredTexTarget || !matInfoTexTarget || !colorTexTarget)
|
||||
{
|
||||
Con::errorf("ProbeManager::ReflectProbeMaterialInfo::setProbeParameters: Could not retrieve gbuffer");
|
||||
return;
|
||||
}
|
||||
|
||||
GFX->setTexture(0, deferredTexObject);
|
||||
|
||||
NamedTexTarget* matInfoTexTarget = NamedTexTarget::find("matinfo");
|
||||
|
||||
GFXTextureObject *matInfoTexObject = matInfoTexTarget->getTexture();
|
||||
if (!matInfoTexObject) return;
|
||||
|
||||
GFX->setTexture(1, matInfoTexObject);
|
||||
|
||||
if (probeInfo->mCubemap && !probeInfo->mCubemap->isNull())
|
||||
{
|
||||
GFX->setCubeTexture(2, probeInfo->mCubemap->getPointer());
|
||||
}
|
||||
else
|
||||
{
|
||||
GFX->setCubeTexture(2, NULL);
|
||||
}
|
||||
|
||||
if (probeInfo->mIrradianceCubemap && !probeInfo->mIrradianceCubemap->isNull())
|
||||
{
|
||||
GFX->setCubeTexture(3, probeInfo->mIrradianceCubemap->getPointer());
|
||||
}
|
||||
else
|
||||
{
|
||||
GFX->setCubeTexture(3, NULL);
|
||||
}
|
||||
|
||||
if (probeInfo->mBRDFTexture && !probeInfo->mBRDFTexture->isNull())
|
||||
{
|
||||
GFX->setTexture(4, probeInfo->mBRDFTexture->getPointer());
|
||||
}
|
||||
else
|
||||
{
|
||||
GFX->setTexture(4, NULL);
|
||||
}
|
||||
|
||||
if (probeInfo->mCubemap->isValid())
|
||||
matParams->setSafe(cubeMips, mPow(probeInfo->mCubemap->getPointer()->getMipMapLevels(), 2.0f));
|
||||
else
|
||||
matParams->setSafe(cubeMips, F32(0.0));
|
||||
//set textures
|
||||
GFX->setTexture(0, deferredTexTarget->getTexture());
|
||||
GFX->setTexture(1, matInfoTexTarget->getTexture());
|
||||
GFX->setTexture(2, colorTexTarget->getTexture());
|
||||
GFX->setCubeTexture(3, probeInfo->mCubemap->getPointer());
|
||||
GFX->setCubeTexture(4, probeInfo->mIrradianceCubemap->getPointer());
|
||||
GFX->setTexture(5, probeInfo->mBRDFTexture->getPointer());
|
||||
|
||||
//set material params
|
||||
matParams->setSafe(cubeMips, mPow(probeInfo->mCubemap->getPointer()->getMipMapLevels(), 2.0f));
|
||||
matParams->setSafe(eyePosWorld, renderState->getCameraPosition());
|
||||
matParams->setSafe(bbMin, probeInfo->mBounds.minExtents);
|
||||
matParams->setSafe(bbMax, probeInfo->mBounds.maxExtents);
|
||||
|
||||
matParams->setSafe(useSphereMode, probeInfo->mProbeShapeType == ProbeRenderInst::Sphere ? 1.0f : 0.0f);
|
||||
|
||||
//SH Terms
|
||||
//static AlignedArray<Point3F> shTermsArray(9, sizeof(Point3F));
|
||||
//dMemset(shTermsArray.getBuffer(), 0, shTermsArray.getBufferSize());
|
||||
|
||||
for (U32 i = 0; i < 9; i++)
|
||||
/*for (U32 i = 0; i < 9; i++)
|
||||
{
|
||||
matParams->setSafe(shTerms[i], probeInfo->mSHTerms[i]);
|
||||
}
|
||||
|
|
@ -959,7 +932,7 @@ void ProbeManager::ReflectProbeMaterialInfo::setProbeParameters(const ProbeRende
|
|||
for (U32 i = 0; i < 5; i++)
|
||||
{
|
||||
matParams->setSafe(shConsts[i], probeInfo->mSHConstants[i]);
|
||||
}
|
||||
}*/
|
||||
|
||||
const MatrixF worldToObjectXfm = probeInfo->mTransform;
|
||||
MaterialParameterHandle *worldToObjMat = matInstance->getMaterialParameterHandle("$worldToObj");
|
||||
|
|
@ -996,11 +969,11 @@ ProbeManager::SkylightMaterialInfo::SkylightMaterialInfo(const String &matName,
|
|||
|
||||
eyePosWorld = matInstance->getMaterialParameterHandle("$eyePosWorld");
|
||||
|
||||
for (U32 i = 0; i < 9; i++)
|
||||
/*for (U32 i = 0; i < 9; i++)
|
||||
shTerms[i] = matInstance->getMaterialParameterHandle(String::ToString("$SHTerms%d", i));
|
||||
|
||||
for (U32 i = 0; i < 5; i++)
|
||||
shConsts[i] = matInstance->getMaterialParameterHandle(String::ToString("$SHConsts%d", i));
|
||||
shConsts[i] = matInstance->getMaterialParameterHandle(String::ToString("$SHConsts%d", i));*/
|
||||
}
|
||||
|
||||
ProbeManager::SkylightMaterialInfo::~SkylightMaterialInfo()
|
||||
|
|
|
|||
|
|
@ -309,7 +309,8 @@ PostEffect::PostEffect()
|
|||
mCameraForwardSC( NULL ),
|
||||
mAccumTimeSC( NULL ),
|
||||
mDeltaTimeSC( NULL ),
|
||||
mInvCameraMatSC( NULL )
|
||||
mInvCameraMatSC( NULL ),
|
||||
mMatCameraToWorldSC( NULL)
|
||||
{
|
||||
dMemset( mTexSRGB, 0, sizeof(bool) * NumTextures);
|
||||
dMemset( mActiveTextures, 0, sizeof( GFXTextureObject* ) * NumTextures );
|
||||
|
|
@ -615,6 +616,8 @@ void PostEffect::_setupConstants( const SceneRenderState *state )
|
|||
mDeltaTimeSC = mShader->getShaderConstHandle( "$deltaTime" );
|
||||
|
||||
mInvCameraMatSC = mShader->getShaderConstHandle( "$invCameraMat" );
|
||||
|
||||
mMatCameraToWorldSC = mShader->getShaderConstHandle("$cameraToWorld");
|
||||
}
|
||||
|
||||
// Set up shader constants for source image size
|
||||
|
|
@ -749,6 +752,13 @@ void PostEffect::_setupConstants( const SceneRenderState *state )
|
|||
mShaderConsts->set( mAmbientColorSC, ambientColor );
|
||||
}
|
||||
|
||||
if (mMatCameraToWorldSC->isValid())
|
||||
{
|
||||
MatrixF tempMat = thisFrame.worldToCamera;
|
||||
tempMat.inverse();
|
||||
mShaderConsts->set(mMatCameraToWorldSC, tempMat);
|
||||
}
|
||||
|
||||
mShaderConsts->setSafe( mAccumTimeSC, MATMGR->getTotalTime() );
|
||||
mShaderConsts->setSafe( mDeltaTimeSC, MATMGR->getDeltaTime() );
|
||||
|
||||
|
|
|
|||
|
|
@ -142,6 +142,7 @@ protected:
|
|||
GFXShaderConstHandle *mAccumTimeSC;
|
||||
GFXShaderConstHandle *mDeltaTimeSC;
|
||||
GFXShaderConstHandle *mInvCameraMatSC;
|
||||
GFXShaderConstHandle *mMatCameraToWorldSC;
|
||||
|
||||
bool mAllowReflectPass;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue