PRT for Arbitrary Geometries

How to store in transfer signals in implicit surfaces

Contents

Part 1 - Unnecessary tessellations
Part 2 - Use Neural Transfer Approximator

What to do in case of Implicit surfaces? The work is presented in two parts:

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:

(a) Method of calculating secondary irradiance, (b) Results of Interreflections

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

Results of Texture-sets

Here are some results


(left) Results of Transfer Textures, (right) Results of Interreflections
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.

Data Creation

2) Fit a small shallow MLP which can regress a transfer from the surface parameters? (normal and position)

MLP Fit

3) Once fit extract weights into mat4 ops rather than serial for loops

4) Extract the MLP weights into GLSL for a forward evaluation

GLSL Implementation

5) In case network is big CUDA based implementation helps. Refer to the paper for more info

CUDA Implementation

6) Large scence

Large Scenes