| 209 | } |
| 210 | |
| 211 | void PathTracer::parseProperties(const Properties& props) |
| 212 | { |
| 213 | for (const auto& [key, value] : props) |
| 214 | { |
| 215 | // Rendering parameters |
| 216 | if (key == kSamplesPerPixel) mStaticParams.samplesPerPixel = value; |
| 217 | else if (key == kMaxSurfaceBounces) mStaticParams.maxSurfaceBounces = value; |
| 218 | else if (key == kMaxDiffuseBounces) mStaticParams.maxDiffuseBounces = value; |
| 219 | else if (key == kMaxSpecularBounces) mStaticParams.maxSpecularBounces = value; |
| 220 | else if (key == kMaxTransmissionBounces) mStaticParams.maxTransmissionBounces = value; |
| 221 | |
| 222 | // Sampling parameters |
| 223 | else if (key == kSampleGenerator) mStaticParams.sampleGenerator = value; |
| 224 | else if (key == kFixedSeed) { mParams.fixedSeed = value; mParams.useFixedSeed = true; } |
| 225 | else if (key == kUseBSDFSampling) mStaticParams.useBSDFSampling = value; |
| 226 | else if (key == kUseRussianRoulette) mStaticParams.useRussianRoulette = value; |
| 227 | else if (key == kUseNEE) mStaticParams.useNEE = value; |
| 228 | else if (key == kUseMIS) mStaticParams.useMIS = value; |
| 229 | else if (key == kMISHeuristic) mStaticParams.misHeuristic = value; |
| 230 | else if (key == kMISPowerExponent) mStaticParams.misPowerExponent = value; |
| 231 | else if (key == kEmissiveSampler) mStaticParams.emissiveSampler = value; |
| 232 | else if (key == kLightBVHOptions) mLightBVHOptions = value; |
| 233 | else if (key == kUseRTXDI) mStaticParams.useRTXDI = value; |
| 234 | else if (key == kRTXDIOptions) mRTXDIOptions = value; |
| 235 | |
| 236 | // Material parameters |
| 237 | else if (key == kUseAlphaTest) mStaticParams.useAlphaTest = value; |
| 238 | else if (key == kAdjustShadingNormals) mStaticParams.adjustShadingNormals = value; |
| 239 | else if (key == kMaxNestedMaterials) mStaticParams.maxNestedMaterials = value; |
| 240 | else if (key == kUseLightsInDielectricVolumes) mStaticParams.useLightsInDielectricVolumes = value; |
| 241 | else if (key == kDisableCaustics) mStaticParams.disableCaustics = value; |
| 242 | else if (key == kSpecularRoughnessThreshold) mParams.specularRoughnessThreshold = value; |
| 243 | else if (key == kPrimaryLodMode) mStaticParams.primaryLodMode = value; |
| 244 | else if (key == kLODBias) mParams.lodBias = value; |
| 245 | |
| 246 | // Denoising parameters |
| 247 | else if (key == kUseNRDDemodulation) mStaticParams.useNRDDemodulation = value; |
| 248 | |
| 249 | // Scheduling parameters |
| 250 | else if (key == kUseSER) mStaticParams.useSER = value; |
| 251 | |
| 252 | // Output parameters |
| 253 | else if (key == kOutputSize) mOutputSizeSelection = value; |
| 254 | else if (key == kFixedOutputSize) mFixedOutputSize = value; |
| 255 | else if (key == kColorFormat) mStaticParams.colorFormat = value; |
| 256 | |
| 257 | else logWarning("Unknown property '{}' in PathTracer properties.", key); |
| 258 | } |
| 259 | |
| 260 | if (props.has(kMaxSurfaceBounces)) |
| 261 | { |
| 262 | // Initialize bounce counts to 'maxSurfaceBounces' if they weren't explicitly set. |
| 263 | if (!props.has(kMaxDiffuseBounces)) mStaticParams.maxDiffuseBounces = mStaticParams.maxSurfaceBounces; |
| 264 | if (!props.has(kMaxSpecularBounces)) mStaticParams.maxSpecularBounces = mStaticParams.maxSurfaceBounces; |
| 265 | if (!props.has(kMaxTransmissionBounces)) mStaticParams.maxTransmissionBounces = mStaticParams.maxSurfaceBounces; |
| 266 | } |
| 267 | else |
| 268 | { |
nothing calls this directly
no test coverage detected