Justin Chen, Balaji Veeramani, Michael Wang
In our proposal, we explained that our goal was to render fire by extending the path tracer program. We planned to use a physically accurate, particle-based model to accomplish the task. However, after reading the feedback and investigating how to implement the feature, we pivoted to the less ambitious goal of rendering fire with a non-physically-based algorithm (we still intend to use select physically-based equations).
You can access the slides summarizing our progress here. Note that you may need to log in with your UC Berkeley account.
You can access a minute-long video summarizing our progress here.
We spent the majority of the time for this milestone working on a simple 2D fire animation. The fire animation was implemented using heuristic GLSL shader.
The shader leverages a texture that contains:
The Perlin noise is the red and green channels are used to color the flames, and the Perlin noise in the alpha channel is used to create random pertubations.
The alpha mask is used to create the shape of the flame.
Two parameters we can adjust are noise along the x-axis and noise along the y-axis. The screenshots below illustrate the results of varying the parameters.
More Horizontal Noise | Less Horizontal Noise | More Vertical Noise | Less Vertical Noise |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
As illustrated in the images above, varying the noise in any given direction changes the "fullness" of the flame. In other words, less noise tends to create denser but less fluid animations, while the converse is true for more noise.
This 2D shader leaves a lot to be desired, but we can use aspects of it (for example, noise generation) as we move into the next steps of our project: