One small thing that we discussed privately: should we disable the "minimal mip of filtered cubemap should be 16x16" thing for IblSpecular?
For people who are interested, dark_sylinc said:
"Regarding the mipmap thing: I limited them to 16x16 because that's what latest Filamente (git) was doing by default. I don't what's the 'proper' or 'default' behavior. Perhaps limiting it to 16x16 is a regression in filament, or 1x1 was a bug."
And I replied:
"I think limiting to 16x16 is not good because when you have a row of spheres as I do, the visual roughness is "clampped" i.e. there is no difference between spheres with high roughness! that's clearly not what I want..."
In short: if you want the visual appreance "varies linearly when you change roughness linearly", disable the limit by commenting out a single line:
Code: Select all
diff --git a/Components/Hlms/Pbs/src/Cubemaps/OgreParallaxCorrectedCubemapBase.cpp b/Components/Hlms/Pbs/src/Cubemaps/OgreParallaxCorrectedCubemapBase.cpp
index 2e7e0a25..3ada3e3d 100644
--- a/Components/Hlms/Pbs/src/Cubemaps/OgreParallaxCorrectedCubemapBase.cpp
+++ b/Components/Hlms/Pbs/src/Cubemaps/OgreParallaxCorrectedCubemapBase.cpp
@@ -123,7 +123,7 @@ namespace Ogre
uint8 ParallaxCorrectedCubemapBase::getIblNumMipmaps( uint32 width, uint32 height )
{
uint8 numMipmaps = PixelFormatGpuUtils::getMaxMipmapCount( width, height );
- numMipmaps = std::max<uint8>( numMipmaps, 5u ) - 4u;
+ //numMipmaps = std::max<uint8>( numMipmaps, 5u ) - 4u;
return numMipmaps;
}

