I’m curious what your guys ideas are on creating a thermal vision shader like the one found in Splinter Cell.
I was thinking you might use a separate texture for certain objects to map the hot and cool areas onto the surface, but as for the rest of the scene I suppose you would have to use the light intensity, or something.
For most surfaces it’s probably enough to use the light intensity to fake heat reflection.
For objects that emit heat, you could use a low-res “heat emission” map, multiplied with the fresnel. (which is probably what most games do) This should also take game design into consideration, because probably only want gameplay relevant objects to emit heat.
In the end you map some fancy gradient to the the “heat” value (preferably not just a rainbow like in splinter cell) and boom, you’re done.
I worked on a military training game that had a thermal rendering mode. We used artist-created textures to define where things were hot/cold, then switched to that texture set on-the-fly when entering thermal mode. We used the red green and blue channels to store different effects, so red was thermal. Then a 1D lookup texture to apply the thermal gradient. More here. http://ericchadwick.com/img/gmts_styles.html
I’d love to see a shader that looks at the screenspace and finds the maximum and minimum value temperature and creates a scale from that… just like regular Thermal Cameras.
I’m not terribly experienced, but to me that sounds like the return on investment wouldn’t be there at all.
Sascha’s method, on the other hand, would allow you to get a baseline shader in really quick, and then the only by hand work required would be to get the objects that don’t already look right in compliance (both visually and for gameplay). In effect it would allow you to have a ‘sketch’ of the final look that you could go in and refine, instead of going in and doing individual pieces from the start.
giving every object specific temperatures would be cool, but it seems like any increase in the experience of the player would be far outstripped by the time spent making it work.