What to do in case of Implicit surfaces? The work is presented in two parts:
- Store Transfer in UV-space instead of Vertex attributes
- Using Implicit Surfaces for Precomputed Radiance Transfer
Part 1 - Unnecessary tessellations
The the naive approach of the using vertex attributes to store the transfer usually causes the following issues:
Earlier methods mostly concentrated on the using the high-tessellations
[PRT Sloan et al. 2002] else it causes artefacts like one show in the results in 2nd left. Use of the UV-mapped space to store the Transfer is more appropriate option. In case of the Glossy surfaces it requires a storage of the a matrix which increases memory requirement. But we used Triple product formulations to allevate the problem and stored a vector instead of matrix as now we can store the vectors in the UV-mapped texture.
We also incorporated the secondary bounce information in the setting:
But this suffer from the problem of accurate UV Mapped Texturing requirement, else you see the results as show below: We have used the multiple textures for each sub-geometry and it occupies same memory
Here are some results
Still requires a good UV preserving mapping.
Part 2 - Use Neural Transfer Approximator
Implicit surfaces do not have any UV locations As the surface representation does not have a storage schema, how can we store transfer values?
- It does not have a Vertex Position
- It does not have UV mapping
What we do then?
1) Sample points, calculate the visibility.
2) Fit a small shallow MLP which can regress a transfer from the surface parameters? (normal and position)
3) Once fit extract weights into mat4 ops rather than serial for loops
4) Extract the MLP weights into GLSL for a forward evaluation
5) In case network is big CUDA based implementation helps. Refer to the paper for more info
6) Large scence