Flintlock Marmoset Render B

Sunset time-lapse mosaic demonstrating dynamic aesthetic properties of sky shader (UDK).

Flintlock Marmoset Render B

Sunrise time-lapse mosaic demonstrating dynamic aesthetic properties of sky shader (UDK).

Flintlock Marmoset Render B

Midnight shots of dynamic skydome (UDK).

Flintlock Marmoset Render B

Indian lorry asset lit by sky system (UDK).

Flintlock Marmoset Render B

Indian lorry asset lit by sky system (UDK).

Flintlock Marmoset Render B

Spheres lit by sky system (UDK).

Flintlock Marmoset Render B

Modular hill assets lit by sky system (UDK).

Flintlock Marmoset Render B

Modular hill texture sheets.

Flintlock Marmoset Render B

Cubemaps powering shader's lighting system.

Flintlock Marmoset Render B

Overview of skydome shader system, depicting procedural cloud generation & cubemap based lighting function (bottom-centre).

Flintlock Marmoset Render B

Natural environment showcasing procedural terrain (bottom-left & top-left) & mountains - all lit by sky system (UDK).

Flintlock Marmoset Render B

Mosaic depicting lighting variation throughout 24-hour cycle (UDK).

↓ View Description

Personal / Professional Work
Workflow: Maya (Clouds Derived from Fluid Dynamics Simulation) ➞ ZBrush (Clouds Sculpting) ➞ xNormal (Projection of Clouds onto a Plane) ➞ Photoshop (Procedural Maps) ➞ UDK (Development of Sky & Lighting Systems)
Engine: Unreal Development Kit (UDK)
Platform: Windows 8
This project consists of a dynamic 24-hour skydome and image-based lighting system providing fake global illumination. As the sun completes its daily cycle, scene assets (including terrain) are dynamically lit by a series of cubemaps in synchronisation to the sky. It was made for Unreal Development Kit prior to the widespread adoption of physically-based rendering and image-based lighting in realtime engines. At the time, this system was quite advanced.

The position of the sun, stars and moon, and the colouration of the clouds, sky and sun are all driven by a single floating-point number indicating time of day. With the standard Phong shader model, a material’s specular and diffuse intensities derive from two dot product calculations containing light, normal, and camera direction vector terms. My UDK material simply replaces the two dot product calculations with cubemap terms: one set for diffuse reflectence and one set for specular reflectence.

Here is the Phong shader model in mathematical notation:

\sum\limits_{m \in \textbf{lights}} \left (k_{d} { \left ( \vec{L_{m}} \cdot \vec{N} \right ) } i_{m,d} + k_s { \left ( \vec{R_{m}} \cdot \vec{V} \right ) ^{\alpha}} i_{m,s} \right )

The expressions \left ( \vec{L_{m}} \cdot \vec{N} \right )   and \left ( \vec{R_{m}} \cdot \vec{V} \right ) ^{\alpha}   are the ones replaced by cubemap terms.