My name is Erica and I’m a Rendering Engineer currently working at Toptracer with custom rendering pipelines! Before that, I completed my master’s thesis on global illumination at DICE/Frostbite as a part of my studies at KTH Royal Institute of Technology.

Contact information

Email: ericat@telia.com

Links: LinkedIn

Multibounce: Reducing Energy Loss in Two-Level Radiance Caching for Global Illumination

For my master’s thesis, I worked on improving the infinite bounce lighting approximation in AMD GI-1.1, with the goal to improve the glossy reflections in particular. The work I did was added to GI-1.2 and I was given the opportunity to write a blog post about the feature on GPUOpen.

A screenshot from Capsaicin with the multibounce feature.

A video showing the difference between singlebounce and the multibounce feature.

Real-Time Volumetric Clouds in Unity URP

I made these clouds for a sailing game. The clouds are based on Real-time rendering of volumetric clouds by Fredrik Häggström, which is based on the work of Andrew Schneider for Horizon Forbidden West.

  • Custom render pass in Unity
  • 3D noise texture asset generation using a compute shader and Unity’s scripted importer feature
  • Ray-marching in a shader for density evaluation and lighting contributions
  • In/out scattering with the Henyey-Greenstein phase function, and attentuation using Beer’s law
  • Step size optimized to balance visual quality and performance

A screenshot of the clouds with “maximal” visual quality settings

A video showcasing the clouds with a day-and-night cycle to show how the light affects the clouds.

VR asymetric collaboration maze game in Unity URP: “Hedged-in”

Together with a team, I created this asymetric collaboration VR game. The person in VR needs to escape from the maze, and their partner needs to guide them out by opening and closing certain walls, and luring away monsters. In this project I focused on creating the material for the hedge with shell texturing.

  • GPU instancing to group the “shells” (layers) to improve performance
  • Stereo rendering (VR)

image

A picture of a play test of the game. Although it’s a bit blurry, the hedge and the shell texturing which gives it its bushy look can be seen on the TV screen.

Shell texturing bunny

I have also used shell texturing to create fur. Click the link above if you want to read more about it and try out the interactive demo!

  • Fur placement and length based on grayscale texture created in Blender
  • Fur color based on any texture
  • Strands that move when the bunny moves through vertex displacement
  • Blinn-Phong shading
  • Simple controls to move and rotate bunny

A screenshot of a bunny with shell textured fur. Note the lack of fur on the eyes and in the ears.

A screenshot where the layered nature of the technique is visible.

A video from the interactive demo where it can be seen that the fur strands move when the bunny is moved back and forth.

Path-tracer in Unity

I implemented a simple GPU path-tracer using a shader.

  • Axis-aligned bounding volume hierarchy (BVH) to make ray traversal more efficient and improve performance
  • Temporal accumulation that denoises the rendered image over time

A screenshot of the Cornell Box rendered with the path-tracer. Note the bounce-lighting.

A screenshot of how the BVH works.

Bachelor’s thesis: “Comparison between Smoothed-Particle Hydrodynamics and Position Based Dynamics for real-time water simulation”

My bachelor’s thesis was centered around comparing two implementations of two particle-based fluid simulations, in regard to performance and stability. With a partner, I ported existing implementations into Unity to make a more valid comparison.

image3

A screenshot from one of the simulations where water from two directions has crashed into each other.

A video of one of the simulations where it can be seen how water from two directions crashes into each other and dissipates.