Rendering & Lighting

A Selection of Rendering Tasks

The following items on this page are a selection of rendering and lighting tasks I completed while working at Surgical Science / Mimic.

Click any thumbnail image to see the full-screen image or video.

Physically-based Rendering

I designed a physically-based lighting and shading model for our flagship simulator. The standard entity shader uses a metallic/roughness workflow. The diffuse shading model is based on Disney's diffuse model. The specular model is Trowbridge-Reitz (GGX) for the Normal Distribution Function (D), Smith’s height-correlated masking/shadowing function for the geometry term (G), and a modified version of Schlick's Fresnel (F). Indirect lighting uses pre-filtered mipmapped radiance environment maps (PMREM) and irradiance maps derived from HDR images. The following section of images shows some final results:


The next set of images demonstrate various components of the lighting model. All images were rendered in-engine. The Cerberus pistol asset is courtesy of Andrew Maximov:

Volume Rendering

The following video shows the integration of a volume renderer with a forward renderer in a prototyping environment. The second image is a screenshot of a volumetric texture synthesis tool I developed. The tool uses machine learning to procedurally generate a volume texture based on a given 2D example texture. Notice how the image pattern remains consistent no matter how you slice through the volume.

Rendering for Position Based Dynamics

I developed rendering support for a Position Based Dynamics (PBD) physics system. Three methods of visualizing the PBD objects included billboard rendering, screen-space particle surface rendering, and mesh generation. The following video demonstrates an early prototype of dissection using the billboard rendering method.

Screen-Space Particle Fluid Rendering

The next video shows a physics-based particle system representing blood. A screen-space rendering technique is used to render the blood as a continuous surface. Notice how the surgical instrument can interact with and displace the blood, and the blood flows around the jaws of the instrument.

Segmentation-Mask Rendering for AI Image Recognition

I developed a segmentation-mask rendering mode in C++ and HLSL for synthetic training-data generation and image segmentation, producing the imagery used in the company's MICCAI conference presentation and opening a rendering path for its new medical-AI business. Individual frames were segmented, numbered, and streamed out with the standard rendered frame for correlation. The following images show two matched frames, one segmented and the other rendered as normal.

Exponential Variance Shadow Mapping

For the shadows in the simulator, I implemented Exponential Variance Shadow Maps (EVSM). A few screenshots can be seen below. Also any video on this site showing the simulation can be used to view the EVSM shadows.