# PRT questions

This topic is 4115 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

So I have read some PRT papers, and I think I understand the basic concept, yet it is unclear to me how to implement it (for educational purposes, I know that the DX SDK gives me everything I need to use/implement PRT) This is what I understand so far: - With PRT you decouple the transport from the light complexity, we use basis functions to approximate each, and at runtime we compute the final radiance by integrating the transport with the light representation - Usually both the transport (transfer) function and the light data are encoded on some bases function, the most common being SH, other bases are available: wavelets, zonal harmonics, etc - The core of PRT then is to perform some simulation to compute the transfer vector/matrix for each vertex or pixel - The complexity of what we encode in the transfer function can vary: simple visibility, interreflections, just the cosine weight, albedo, etc - Glossy surfaces use a matrix instead of a vector for transfer - PRT assumes that the environment is static, but lighting can change Some things I do not understand or need clarification on: - I read that for encoding interreflections you need more coefficients, I understand how the simulator changes here and how albedo needs to be encoded in the transfer, but I do not understand why would you need more coefficients? - Why do you need compression when using PRT, what causes the coefficients to grow so much? - What would be the point of doing PRT for glossy objects in games? Can you just use diffuse PRT and handle the glossy aspect independently with traditional methods? Implementation-wise I can write a ray tracer and use monte carlo methods to compute the SH coefficients on the vertices/pixels, I do not understand what dictates the number of coefficients that you need and how to go about that. Any inaccuracies on how I am understanding this technique, any answers to my questions above? Thanks in advance

##### Share on other sites
Hello,

Quote:
 Original post by ldeejSome things I do not understand or need clarification on:- I read that for encoding interreflections you need more coefficients, I understand how the simulator changes here and how albedo needs to be encoded in the transfer, but I do not understand why would you need more coefficients?

You dont need more coefficients at runtime. You need some more memory for coefficients in the preprocessing stage.

Quote:
 - Why do you need compression when using PRT, what causes the coefficients to grow so much?

With three bands of SH coefficients you need 27 values (3 bands gives 9 coefficients, each coefficient is a RGB value so 3*3*3). A usual vertex in CG consists of may 10 or 15 values. Adding another 27 values is a lot of memory and sometimes this memory is not available or fetching the values is costly.

Quote:
 Implementation-wise I can write a ray tracer and use monte carlo methods to compute the SH coefficients on the vertices/pixels, I do not understand what dictates the number of coefficients that you need and how to go about that.

The more coefficients you use, the better the result is. Usually 9 coefficients is sufficient, but you might want to use more, depending on the preprocessing.

I have a more praxis orientated paper, which you might find helpful. Source code for all implementations is available.

##### Share on other sites
Thanks a lot Enrico,

The paper looks interesting, is there a single download for the whole thing? That would be very useful...

Why does the memory footprint increase if you want to take interreflections into account?

Thanks

##### Share on other sites
Quote:
 Original post by ldeejThanks a lot Enrico,The paper looks interesting, is there a single download for the whole thing? That would be very useful...

I can prepare a single download for you. Just send me a PM ;)

Quote:
 Why does the memory footprint increase if you want to take interreflections into account?

Interreflection is computed with several bounces of light. You need to save the previous bounces for the recent bounce.

1. 1
Rutin
29
2. 2
3. 3
4. 4
5. 5

• 13
• 13
• 11
• 10
• 13
• ### Forum Statistics

• Total Topics
632961
• Total Posts
3009482
• ### Who's Online (See full list)

There are no registered users currently online

×