MCPcopy Create free account
hub / github.com/TheRealMJP/BakingLab / GenerateGaussianIrradianceTable

Function GenerateGaussianIrradianceTable

BakingLab/BakingLab.cpp:911–937  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

909}
910
911static void GenerateGaussianIrradianceTable(float sharpness, const wchar* filePath)
912{
913 std::string output;
914
915 const uint64 NumPoints = 50;
916 for(uint64 pointIdx = 0; pointIdx < NumPoints; ++pointIdx)
917 {
918 float theta = Pi * pointIdx / (NumPoints - 1.0f);
919 Float3 localSGDir = Float3(std::sin(-theta), 0.0f, std::cos(-theta));
920
921 const uint64 SqrtNumSamples = 64;
922 const uint64 NumSamples = SqrtNumSamples * SqrtNumSamples;
923 float sum = 0.0f;
924 for(uint64 sampleIdx = 0; sampleIdx < NumSamples; ++sampleIdx)
925 {
926 Float2 samplePoint = SampleCMJ2D(int32(sampleIdx), int32(SqrtNumSamples), int32(SqrtNumSamples), int32(pointIdx));
927 Float3 sampleDir = SampleCosineHemisphere(samplePoint.x, samplePoint.y);
928 sum += std::exp(sharpness * (Float3::Dot(sampleDir, localSGDir) - 1.0f));
929 }
930
931 sum *= (Pi / NumSamples);
932
933 output += MakeAnsiString("%f,%f\n", theta, sum);
934 }
935
936 WriteStringAsFile(filePath, output);
937}
938
939static void GenerateSGInnerProductIrradianceTable(float sharpness, const wchar* filePath)
940{

Callers

nothing calls this directly

Calls 8

Float3Class · 0.85
sinFunction · 0.85
cosFunction · 0.85
SampleCMJ2DFunction · 0.85
SampleCosineHemisphereFunction · 0.85
expFunction · 0.85
MakeAnsiStringFunction · 0.85
WriteStringAsFileFunction · 0.85

Tested by

no test coverage detected