When processing very high dynamic range environments, the importance
sampling code falls appart, it becomes a user choice to decide if
prefilter importance sampling is better or worse than just regular
importance sampling -- both are usually bad.
--ibl-no-prefilter gives the user this choice.
Clamping is now disabled by default in cmgen, there is a new option
to enable it "--clamp".
Automatic SH windowing is also enabled by default and can be controled
with the "--sh-window" option. Accepted parameters are "no" to disable
windowing, "auto" for automatic windowing or a number to specify the
cutoff band.
auto windowing only works for 1, 2, and 3 bands.
--sh-window=band, -w band : this low-pass-filters the environment
such that bands above 'band' are zero. This can be used to reduce ringing
when the source environment has high frequencies
--noclamp : turns off clamping before processing the cube map
This is still work in progress.
The conversion factors from radiance to irradiance where wrong.
The bug above was found while refactoring the code to be clearer. Now
the method that computes the coefficients for the shader calls the
regular SH code and applies all the appropriate factors on that.
With this change the options "--sh-shader" and "-sh=3 -i" won't
produce the same result because --sh-shader includes the lambertian
diffuse. "--sh" now always produces actual SH coefficients.
- RGB_11_11_10 is exported in a RGBA PNG file where the 4 channels are
used as a uint32 storing a RGB_10_11_11_REV pixel.
We use the .rgb32f extension, and those PNG files contain garbage
when seen in a PNG viewer.
- This is now the default for the -x option.
- compressed KTX files don't encode RGBM, which means they can't
support HDR, unless an HDR compression scheme is used.
By removing the Fresnel term (often ommitted from fabric/cloth BRDFs)
we can store the DG term for the cloth BRDF in the 3rd channel of the
existing DFG LUT.
this adds a new --type (-t) parameter that is
used to specify cmgen’s output.
faces: outputs cube maps separate faces (default
and current behavior)
equirect: outputs an equirectangular image
ktx: outputs a ktx file
--format=ktx now implies —type=ktx
- internal cross storage is now always horizontal
and seamless.
- source cross images are now always converted to
internal format, conversion includes rescaling
and sampling if scaling down.
- vertical cross is supported again
- fixes#283
- replace hardcoded constants
- cmgen now creates reflections maps for all input
assets by default instead of just for equirectangular
images.
- equirectangular decode doesn't mirror -- that's
done by the mirroring code now.
- mirroring can be turned of with --no-mirror
- option --mirror is gone
- faster mirroring code (do it before generating
mipmaps)
- added labels to faces of debug.png environment
- added a debug equirectangular image in third_party
(creative commons license)
- KTX / OpenGL are PX,NX,PY,NZ,PZ,NZ.
- Cubemap::Face is NX,PX,NY,PY,NZ,PZ.
I considered changing the Cubemap::Face enum, but applying ^1 upon
export seems less intrusive.
For each envmap/skybox pair, this will reduce the number of downloads
from 61 files to 3 files.
Note that we are still using sh.txt for coefficients, I'll see if it
would be easy to embed that in the KTX metadata.
Also, I will add KTX support to roughness-prefilter soon.
This remapping can be confused with roughness, because
linear_roughness = roughness*roughness and
lod = sqrt(linear_roughness)
so the value of lod is roughness, but conceptually
it’s not.
-—ibl-irradiance generates the diffuse irradiance as
a cubemap using importance sampling.
It can be used in place of the SH version (—-sh-irradiance)
which sometimes presents some ringing artifacts.