[HN Gopher] A Generalized Ray Formulation for Wave-Optics Rendering
       ___________________________________________________________________
        
       A Generalized Ray Formulation for Wave-Optics Rendering
        
       Author : ibobev
       Score  : 68 points
       Date   : 2023-04-04 09:39 UTC (13 hours ago)
        
 (HTM) web link (ssteinberg.xyz)
 (TXT) w3m dump (ssteinberg.xyz)
        
       | itronitron wrote:
       | I'm really looking forward to the next Pikmin now.
        
       | amluto wrote:
       | This is very neat, but I'm a bit surprised by their headline
       | examples:
       | 
       | > Materials admitting diffractive optical phenomena are visible:
       | (a) a Bornite ore with a layer of copper oxide causing
       | interference; (b) a Brazilian Rainbow Boa, whose scales are
       | biological diffraction grated surfaces; and (c) a Chrysomelidae
       | beetle, whose colour arises due to naturally-occurring
       | multilayered interference reflectors in its elytron.
       | 
       | These are all local surface properties, in the sense that light
       | hits a surface, does something wave-like, and interferes _with
       | itself_ on the way out. I would expect a shader could do a
       | credible job of emulating all of these.
       | 
       | I would be more excited to see examples of interference between
       | _adjacent_ rays, like diffraction from the edge of an object. For
       | example, if you close your eyes part way and look through you
       | eyelashes on a bright sunny day, you see blurring and colors due
       | to diffraction.
       | 
       | edit: My inner pedant feels obligated to clarify: by "interferes
       | with itself" I mean interferes with slightly displaced versions
       | of itself that are propagating in the same direction. If a plane
       | wave is incident on an oil slick or a beetle, multiple
       | reflections of the plane wave interfere with each other, but the
       | result is, at least over distance scales comparable to the
       | feature size of the surface (many wavelengths), a plane wave. And
       | you can treat the reflected wave as a bundle or parallel (or not-
       | quite-parallel) rays just like you treat the incident wave.
       | 
       | When edges are involved, the surface varies abruptly on a scale
       | that is small compared to the wavelength, and the resulting wave
       | is no longer a plane wave that propagates in roughly one
       | direction.
        
         | mattpharr wrote:
         | > I would expect a shader could do a credible job of emulating
         | all of these.
         | 
         | The key is that it is necessary to know the coherence of the
         | light arriving at the surface in order for a shader to
         | accurately model reflection. (See Figure 13 in the paper for an
         | example that shows how this matters.) Otherwise a shader would
         | have to make up a guess about the light's coherence.
         | 
         | The main contribution of the paper is a much more efficient
         | approach than was known before for finding light's coherence,
         | even in the presence of complex light transport (multiple
         | reflections, etc), and one that further allows the application
         | of traditional ray-optics computer graphics techniques for
         | sampling light paths through the scene. (For example,
         | previously if one wanted to track coherence, it was necessary
         | to sample light paths starting from the light sources rather
         | than from the camera, as is done in path tracing.)
        
         | amelius wrote:
         | > I would expect a shader could do a credible job of emulating
         | all of these.
         | 
         | Yeah, but shaders are not known for their physical correctness
         | which is a different goal.
        
           | amluto wrote:
           | The interaction of light with multiple thin layers of
           | dielectric material is first-year physics -- you can compute
           | all the reflections at the interfaces and the phase shifts
           | through the layers as a function of wavelength and angle, and
           | you can reassemble the result into a reflection coefficient.
           | It depends only on angle of incidence and wavelength, and the
           | angle of reflection equals the angle of incidence just like
           | for a specular reflector.
           | 
           | So a shader should be able to handle this, in a physics-based
           | way, as long as the path tracer can handle the wavelength
           | dependence in a reasonable manner.
        
             | amelius wrote:
             | Perhaps in the middle of the object. Near the edges it
             | probably breaks down.
             | 
             | Anyway, if someone asks you to make a physically correct
             | rendering of a scene, would you reach for a shader?
        
               | amluto wrote:
               | > Perhaps in the middle of the object. Near the edges it
               | probably breaks down.
               | 
               | How so? The results from Maxwell's equations are valid at
               | any angle of incidence. And, as noted, even the algorithm
               | in this paper can't model the edges of an object.
               | 
               | > Anyway, if someone asks you to make a physically
               | correct rendering of a scene, would you reach for a
               | shader?
               | 
               | Yes, absolutely.
               | 
               | To be clear, I'm not talking about a fragment shader in a
               | traditional rasterizer. I'm taking about a shader that
               | executes when a ray hits an object. As I recall, POV-Ray
               | was fixed-function, albeit a rather flexible fixed
               | function. Modern ray tracers, path tracers, etc have
               | shaders.
               | 
               | Here's a very modern one. Search for "shader":
               | 
               | https://openmoonray.org/about
        
         | wbrbr wrote:
         | I think this kind of effect is not supported by their
         | algorithm. See the limitations section on page 10:
         | 
         | > The second assumption above is worth further discussion. When
         | a generalized ray is partially occluded by matter, or falls
         | upon the boundary between different matter (i.e., objects with
         | different materials), interference between the different
         | interactions arises. For example, on partial occlusion,
         | interference between the matter interaction (of the partially
         | occluded energy) and free-space propagation (of the unoccluded
         | energy) results in free-space diffraction: diffracted lobes
         | that "bend" around the matter. We ignore these edge effects in
         | this work, and leave these for future work.
        
           | amluto wrote:
           | Aha, I missed that sentence. I'm not surprised, but that's
           | too bad.
        
         | pcwalton wrote:
         | Yes, it's possible to do physically based diffraction grating
         | effects in the traditional pipeline. Here's a tutorial on it:
         | https://www.alanzucconi.com/2017/07/15/the-nature-of-light/ (I
         | actually implemented this effect recently: the article is great
         | overall, but you can get rid of the loop by using some simple
         | algebra.)
         | 
         | However, as pointed out in sibling comments, this makes
         | assumptions about the coherence of the light coming in.
        
       | timmg wrote:
       | I can't wait for someone to write the equivalent of "ray tracing
       | in one weekend" for this stuff.
        
       ___________________________________________________________________
       (page generated 2023-04-04 23:01 UTC)