I created a real-time approximation of a microfacet BSDF, and used it as a shader for a ray-marched surface to create this procedurally generated BayMax .  I used an SDF-approximated ambient occlusion formula discussed  to evaluate the thinness of the a surface, given a point on that surface and the direction from which light would travel through the object. This allowed me to create the plastic, inflatable surface that makes BayMax become BayMax!
Key Features:
Raymarching Engine:
Implemented sphere tracing to render SDF-based geometry, allowing efficient real-time rendering of procedurally-defined shapes.
Procedural Modeling:
Designed a custom model (e.g., Baymax-inspired character) using multiple SDF primitives combined via boolean operations (smooth union, subtraction) and transformations (scale, rotate, translate).
Physically-Based Shading:
Adapted my Cook-Torrance shader to raymarched surfaces for realistic lighting, including metallic and plastic materials with variable roughness and albedo.
Subsurface Scattering (SSS):
Implemented approximated SSS using ambient occlusion-based thinness estimation, enabling glowing effects for translucent materials based on scene lighting.
Scene Repetition with Variations:
Replicated models across space with varying position, material properties, and transformations using SDF repetition functions (e.g., Quilez’s opRep).
Back to Top